aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralon@honor <none@none>2010-09-09 23:22:10 -0700
committeralon@honor <none@none>2010-09-09 23:22:10 -0700
commita224d9f4cc00fd8a1cf8f4e6ea53cce29e4eb088 (patch)
tree95ad14bc89a1f561e721085bf099e71b177e5eb4
parente337bf1f8a729861f9a1d054c08108e9cb1b156f (diff)
Allow overriding compiler settings.js
-rwxr-xr-xemscripten.py12
-rw-r--r--src/parser.js18
2 files changed, 16 insertions, 14 deletions
diff --git a/emscripten.py b/emscripten.py
index 3bbbb8c9..ce1bc48f 100755
--- a/emscripten.py
+++ b/emscripten.py
@@ -4,18 +4,16 @@ import os, sys, subprocess
COMPILER = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'src', 'parser.js')
-def emscripten(filename, output_filename, js_engine):
+def emscripten(filename, js_engine, settings):
+ data = open(filename, 'r').read()
cwd = os.getcwd()
os.chdir(os.path.dirname(COMPILER))
- if output_filename is not None:
- subprocess.Popen([js_engine] + [COMPILER], stdin=open(filename, 'r'), stdout=open(output_filename, 'w'), stderr=subprocess.STDOUT).communicate()[0]
- else:
- subprocess.Popen([js_engine] + [COMPILER], stdin=open(filename, 'r')).communicate()[0]
+ subprocess.Popen([js_engine, COMPILER], stdin=subprocess.PIPE).communicate(settings+'\n'+data)[0]
os.chdir(cwd)
if __name__ == '__main__':
if sys.argv.__len__() != 3:
- print '''\nEmscripten usage: emscripten.py INFILE PATH-TO-JS-ENGINE\n'''
+ print '''\nEmscripten usage: emscripten.py INFILE PATH-TO-JS-ENGINE [SETTINGS]\n'''
else:
- emscripten(sys.argv[1], None, sys.argv[2])
+ emscripten(sys.argv[1], sys.argv[2], sys.argv[3] if len(sys.argv) == 4 else "{}")
diff --git a/src/parser.js b/src/parser.js
index 6d74deff..aa91b60b 100644
--- a/src/parser.js
+++ b/src/parser.js
@@ -2488,8 +2488,17 @@ function JSify(data) {
// return finalCombiner(substrate.solve());
}
+//===============================
// Main
+//===============================
+// Override settings
+var settings = JSON.parse(readline());
+for (setting in settings) {
+ this[setting] = settings[setting];
+}
+
+// Read llvm
var lines = [];
var line;
do {
@@ -2499,11 +2508,6 @@ do {
} while(true);
var data = lines.join("\n");
-//print('zz prepared')
-data = intertyper(data);
-//print('zz intertyped')
-data = analyzer(data);
-//print('zz analyzed')
-data = JSify(data);
-print(data);
+// Do it
+print(JSify(analyzer(intertyper(data))));