From 8cfecff9c4e1b13486817e4b446f425237d802fa Mon Sep 17 00:00:00 2001 From: rocky Date: Mon, 25 Jul 2016 16:03:56 -0400 Subject: [PATCH] Clean up PyPy load_attr grammar rules --- test/bytecode_2.7/05_abc_class.pyc | Bin 0 -> 502 bytes .../{05_abc_class.pyc-notyet => 05_abc_class.pyc} | Bin uncompyle6/parsers/parse2.py | 6 ++---- uncompyle6/parsers/parse3.py | 6 ++---- 4 files changed, 4 insertions(+), 8 deletions(-) create mode 100644 test/bytecode_2.7/05_abc_class.pyc rename test/bytecode_pypy3.2/{05_abc_class.pyc-notyet => 05_abc_class.pyc} (100%) diff --git a/test/bytecode_2.7/05_abc_class.pyc b/test/bytecode_2.7/05_abc_class.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b102a340d9d2d8ae25b273ea9e55bb6b927fd049 GIT binary patch literal 502 zcmZutO-sZu5S_H^>Q+4|2!aQ10m1d+O}u#DLst-sFr;aUg>+k*^dNZCKc~OJf8if+ zCaE6>12dUq-n{pc>~lZ+csRS$Fs*dj-7ysvfB~olR03WBUI6Y3IwY``jPnPSRO$Sn zwAWTS*BbxWRX=2c`U!Tap2_+BkEC2=ggtgyN zKE4YOG#=+xa>h7Lx5H@sAr**?`!*H*Ao?w8xUn~b--(b-;}IoGhG}PP9a>sht4eDm zbs!{vN|kHc-Wqh>IB2u1Ouf9gL{(}G&pz*;a`v#tNG?Dugk;T0ZlhX5E;717Y`bbC vF3kDmIa>(Bzlx#Cx4A(93yQ!x7xQElJ@3-ppC1pn{|JKqRaCqVM9laFPcT;F literal 0 HcmV?d00001 diff --git a/test/bytecode_pypy3.2/05_abc_class.pyc-notyet b/test/bytecode_pypy3.2/05_abc_class.pyc similarity index 100% rename from test/bytecode_pypy3.2/05_abc_class.pyc-notyet rename to test/bytecode_pypy3.2/05_abc_class.pyc diff --git a/uncompyle6/parsers/parse2.py b/uncompyle6/parsers/parse2.py index c47ae621..d500382f 100644 --- a/uncompyle6/parsers/parse2.py +++ b/uncompyle6/parsers/parse2.py @@ -248,7 +248,7 @@ class Python2Parser(PythonParser): expr ::= expr {expr}^n CALL_FUNCTION_KW_n POP_TOP For PYPY: - load_attr ::= LOAD_FAST LOOKUP_METHOD + load_attr ::= expr LOOKUP_METHOD call_function ::= expr CALL_METHOD ''' for opname, v in list(customize.items()): @@ -268,9 +268,7 @@ class Python2Parser(PythonParser): 'expr32 '*thirty32s + 'expr '*(v%32) + opname) elif opname == 'LOOKUP_METHOD': # A PyPy speciality - DRY with parse3 - self.add_unique_rule("load_attr ::= LOAD_FAST LOOKUP_METHOD", - opname, v, customize) - self.add_unique_rule("load_attr ::= LOAD_NAME LOOKUP_METHOD", + self.add_unique_rule("load_attr ::= expr LOOKUP_METHOD", opname, v, customize) continue elif opname == 'JUMP_IF_NOT_DEBUG': diff --git a/uncompyle6/parsers/parse3.py b/uncompyle6/parsers/parse3.py index 95dc38e1..7e53ab38 100644 --- a/uncompyle6/parsers/parse3.py +++ b/uncompyle6/parsers/parse3.py @@ -433,7 +433,7 @@ class Python3Parser(PythonParser): mklambda ::= {pos_arg}^n LOAD_LAMBDA [LOAD_CONST] MAKE_FUNCTION_n For PYPY: - load_attr ::= LOAD_FAST LOOKUP_METHOD + load_attr ::= expr LOOKUP_METHOD call_function ::= expr CALL_METHOD """ for i, token in enumerate(tokens): @@ -464,9 +464,7 @@ class Python3Parser(PythonParser): self.add_unique_rule(rule, opname, token.attr, customize) elif opname == 'LOOKUP_METHOD': # A PyPy speciality - DRY with parse2 - self.add_unique_rule("load_attr ::= LOAD_FAST LOOKUP_METHOD", - opname, token.attr, customize) - self.add_unique_rule("load_attr ::= LOAD_NAME LOOKUP_METHOD", + self.add_unique_rule("load_attr ::= expr LOOKUP_METHOD", opname, token.attr, customize) continue elif opname == 'JUMP_IF_NOT_DEBUG':