Start bytecode 3.0 decompiling

This commit is contained in:
rocky
2016-11-06 09:20:46 -05:00
parent 5d10f7a0b0
commit 41f360e3dc
10 changed files with 12 additions and 5 deletions

View File

@@ -66,7 +66,8 @@ check-bytecode-2:
#: Check deparsing bytecode 3.x only #: Check deparsing bytecode 3.x only
check-bytecode-3: check-bytecode-3:
$(PYTHON) test_pythonlib.py --bytecode-3.1 --bytecode-3.2 --bytecode-3.3 \ $(PYTHON) test_pythonlib.py --bytecode-3.0 \
--bytecode-3.1 --bytecode-3.2 --bytecode-3.3 \
--bytecode-3.4 --bytecode-3.5 --bytecode-pypy3.2 --bytecode-3.4 --bytecode-3.5 --bytecode-pypy3.2
#: Check deparsing bytecode that works running Python 2 and Python 3 #: Check deparsing bytecode that works running Python 2 and Python 3
@@ -107,7 +108,7 @@ check-bytecode-2.7:
#: Check deparsing Python 3.0 #: Check deparsing Python 3.0
check-bytecode-3.0: check-bytecode-3.0:
@echo testing not done yet $(PYTHON) test_pythonlib.py --bytecode-3.0
#: Check deparsing Python 3.1 #: Check deparsing Python 3.1
check-bytecode-3.1: check-bytecode-3.1:

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -80,7 +80,7 @@ for vers in (2.7, 3.4, 3.5, 3.6):
for vers in (1.5, for vers in (1.5,
2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7,
3.1, 3.2, 3.3, 3.0, 3.1, 3.2, 3.3,
3.4, 3.5, 3.6, 'pypy3.2', 'pypy2.7'): 3.4, 3.5, 3.6, 'pypy3.2', 'pypy2.7'):
bytecode = "bytecode_%s" % vers bytecode = "bytecode_%s" % vers
key = "bytecode-%s" % vers key = "bytecode-%s" % vers

View File

@@ -11,7 +11,6 @@ class Python30Parser(Python3Parser):
def p_30(self, args): def p_30(self, args):
""" """
# Store locals is only in Python 3.0 to 3.3 # Store locals is only in Python 3.0 to 3.3
stmt ::= store_locals stmt ::= store_locals
store_locals ::= LOAD_FAST STORE_LOCALS store_locals ::= LOAD_FAST STORE_LOCALS
@@ -21,7 +20,14 @@ class Python30Parser(Python3Parser):
# it is 2.7 or 3.1. So we have a number of 2.6ish (and before) rules below # it is 2.7 or 3.1. So we have a number of 2.6ish (and before) rules below
_ifstmts_jump ::= c_stmts_opt JUMP_FORWARD come_froms POP_TOP COME_FROM _ifstmts_jump ::= c_stmts_opt JUMP_FORWARD come_froms POP_TOP COME_FROM
jmp_true ::= JUMP_IF_TRUE POP_TOP jmp_true ::= JUMP_IF_TRUE POP_TOP
jmp_false ::= JUMP_IF_FALSE POP_TOP
withasstmt ::= expr setupwithas designator suite_stmts_opt
POP_BLOCK LOAD_CONST COME_FROM_FINALLY
LOAD_FAST DELETE_FAST WITH_CLEANUP END_FINALLY
setupwithas ::= DUP_TOP LOAD_ATTR STORE_FAST LOAD_ATTR CALL_FUNCTION_0 setup_finally
setup_finally ::= STORE_FAST SETUP_FINALLY LOAD_FAST DELETE_FAST
""" """
class Python30ParserSingle(Python30Parser, PythonParserSingle): class Python30ParserSingle(Python30Parser, PythonParserSingle):