diff options
Diffstat (limited to 'unrpyc')
-rw-r--r-- | unrpyc/Makefile | 11 | ||||
-rw-r--r-- | unrpyc/decompiler.py | 22 |
2 files changed, 12 insertions, 21 deletions
diff --git a/unrpyc/Makefile b/unrpyc/Makefile index 6e28df4..77a0838 100644 --- a/unrpyc/Makefile +++ b/unrpyc/Makefile @@ -1,4 +1,6 @@ -all: script.json.gz +all: script.json.gz imachine.json.gz + +imachine.json.gz: imachine.json script.json.gz: script.json gzip -9c script.json > script.json.gz @@ -8,15 +10,15 @@ script.json: $(patsubst %.rpyc,%.json,$(wildcard *.rpyc)) cat script-*.json > script.json sed -i -e 's/^/{/;s/,$$/}/' script.json -script-%.json.o: script-%.rpyc *.py +%.json.o: %.rpyc *.py python unrpyc.py --clobber $< $@ -script-%.json: script-%.json.o +%.json: %.json.o node fix.js $< $@ sed -i -e 's/^{//;s/}$$/,/' $@ clean: - rm -f *.json.o *.json script.json.gz + rm -f *.json.o *.json *.gz test: all jshint --show-non-errors *.json @@ -25,3 +27,4 @@ install: all install -t ../www/scripts script.json script.json.gz .PHONY: all clean test install +.PRECIOUS: imachine.json.o diff --git a/unrpyc/decompiler.py b/unrpyc/decompiler.py index 5a9b3bb..c66e280 100644 --- a/unrpyc/decompiler.py +++ b/unrpyc/decompiler.py @@ -63,7 +63,6 @@ def print_atl(f, atl_block, indent_level): return if not atl_block.statements: indent(f, indent_level) - f.write('pass\n') for stmt in atl_block.statements: indent(f, indent_level) @@ -380,21 +379,19 @@ def print_Menu(f, stmt, indent_level): f.write('}]\n') def print_Pass(f, stmt, indent_level): - f.write("pass\n") + f.write("\n") def print_Call(f, stmt, indent_level): - f.write("call ") + f.write("[") if stmt.expression: f.write("expression %s" % (stmt.label, )) else: - f.write(stmt.label) + f.write('"%s"' % stmt.label) if stmt.arguments is not None: - if stmt.expression: - f.write("pass ") print_args(f, stmt.arguments) - f.write('\n') + f.write('],\n') def print_If(f, stmt, indent_level): f.write("if %s:\n" % (stmt.entries[0][0], )) @@ -429,21 +426,12 @@ def print_args(f, arginfo): if arginfo is None: return - f.write("(") - - first = True for (name, val) in arginfo.arguments: - if first: - first = False - else: - f.write(", ") - + f.write(', ') if name is not None: f.write("%s = " % (name, )) f.write(val) - f.write(")") - # TODO positional? def print_params(f, paraminfo): f.write("(") |