diff options
Diffstat (limited to 'src/binaryen-c.cpp')
-rw-r--r-- | src/binaryen-c.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index 842d96f69..36b2abbe7 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -27,6 +27,7 @@ #include "wasm-builder.h" #include "wasm-interpreter.h" #include "wasm-printing.h" +#include "wasm-s-parser.h" #include "wasm-validator.h" #include "cfg/Relooper.h" #include "shell-interface.h" @@ -905,6 +906,23 @@ void BinaryenSetStart(BinaryenModuleRef module, BinaryenFunctionRef start) { // ========== Module Operations ========== // +BinaryenModuleRef BinaryenModuleParse(const char* text) { + if (tracing) { + std::cout << " // BinaryenModuleRead\n"; + } + + auto* wasm = new Module; + try { + SExpressionParser parser(const_cast<char*>(text)); + Element& root = *parser.root; + SExpressionWasmBuilder builder(*wasm, *root[0]); + } catch (ParseException& p) { + p.dump(std::cerr); + Fatal() << "error in parsing wasm text"; + } + return wasm; +} + void BinaryenModulePrint(BinaryenModuleRef module) { if (tracing) { std::cout << " BinaryenModulePrint(the_module);\n"; |