summaryrefslogtreecommitdiff
path: root/src/wasm-s-parser.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-11-04 14:52:45 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-11-04 14:52:45 -0800
commit0ee26b62aa9a0a957f61c338ff4d9f8f0a1efdf2 (patch)
tree474b81afded14cfe1acbbeae433e9b221b588a60 /src/wasm-s-parser.h
parent76cd27e2e25db7d08578a261d29730b10491d1b5 (diff)
downloadbinaryen-0ee26b62aa9a0a957f61c338ff4d9f8f0a1efdf2.tar.gz
binaryen-0ee26b62aa9a0a957f61c338ff4d9f8f0a1efdf2.tar.bz2
binaryen-0ee26b62aa9a0a957f61c338ff4d9f8f0a1efdf2.zip
parse import
Diffstat (limited to 'src/wasm-s-parser.h')
-rw-r--r--src/wasm-s-parser.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h
index 005483420..fe84b0098 100644
--- a/src/wasm-s-parser.h
+++ b/src/wasm-s-parser.h
@@ -21,6 +21,7 @@ IString MODULE("module"),
RESULT("result"),
MEMORY("memory"),
EXPORT("export"),
+ IMPORT("import"),
TABLE("table"),
LOCAL("local"),
TYPE("type"),
@@ -194,6 +195,7 @@ private:
if (id == FUNC) return parseFunction(curr);
if (id == MEMORY) return parseMemory(curr);
if (id == EXPORT) return parseExport(curr);
+ if (id == IMPORT) return parseImport(curr);
if (id == TABLE) return parseTable(curr);
if (id == TYPE) return parseType(curr);
std::cerr << "bad module element " << id.str << '\n';
@@ -612,6 +614,23 @@ private:
wasm.exports.push_back(ex);
}
+ void parseImport(Element& s) {
+ Import im;
+ im.name = s[1]->str();
+ im.module = s[2]->str();
+ im.base = s[3]->str();
+ Element& params = *s[4];
+ if (params[0]->str() == PARAM) {
+ for (size_t i = 1; i < params.size(); i++) {
+ im.type.params.push_back(stringToWasmType(params[i]->str()));
+ }
+ } else {
+ abort();
+ }
+ assert(s.size() == 5);
+ wasm.imports[im.name] = im;
+ }
+
void parseTable(Element& s) {
for (size_t i = 1; i < s.size(); i++) {
wasm.table.names.push_back(s[i]->str());