diff --git a/uncompyle6/parser.py b/uncompyle6/parser.py index 856130c7..6ef2670f 100644 --- a/uncompyle6/parser.py +++ b/uncompyle6/parser.py @@ -401,7 +401,6 @@ class PythonParser(GenericASTBuilder): importlist ::= importlist import_as importlist ::= import_as import_as ::= IMPORT_NAME designator - import_as ::= IMPORT_NAME load_attrs designator import_as ::= IMPORT_FROM designator importstmt ::= LOAD_CONST LOAD_CONST import_as @@ -411,8 +410,6 @@ class PythonParser(GenericASTBuilder): imports_cont ::= import_cont+ import_cont ::= LOAD_CONST LOAD_CONST import_as - - load_attrs ::= LOAD_ATTR+ """ def p_list_comprehension(self, args): diff --git a/uncompyle6/parsers/parse2.py b/uncompyle6/parsers/parse2.py index 81a3f5dc..52750f9d 100644 --- a/uncompyle6/parsers/parse2.py +++ b/uncompyle6/parsers/parse2.py @@ -360,9 +360,10 @@ class Python2Parser(PythonParser): rule = 'mkfunc ::= %s LOAD_CONST %s' % ('expr '*v, opname) elif opname_base == 'MAKE_CLOSURE': # FIXME: use add_unique_rules to tidy this up. + if i > 0 and tokens[i-1] == 'LOAD_LAMBDA': + self.addRule('mklambda ::= %s load_closure LOAD_LAMBDA %s' % + ('expr '*v, opname), nop_func) self.add_unique_rules([ - ('mklambda ::= %s load_closure LOAD_LAMBDA %s' % - ('expr '*v, opname)), ('genexpr ::= %s load_closure LOAD_GENEXPR %s expr' ' GET_ITER CALL_FUNCTION_1' % ('expr '*v, opname)), diff --git a/uncompyle6/parsers/parse24.py b/uncompyle6/parsers/parse24.py index 3997a084..2a904a15 100644 --- a/uncompyle6/parsers/parse24.py +++ b/uncompyle6/parsers/parse24.py @@ -33,6 +33,9 @@ class Python24Parser(Python25Parser): importmultiple ::= filler LOAD_CONST import_as imports_cont import_cont ::= filler LOAD_CONST import_as + import_as ::= IMPORT_NAME load_attrs designator + load_attrs ::= LOAD_ATTR+ + # Python 2.5+ omits POP_TOP POP_BLOCK while1stmt ::= SETUP_LOOP l_stmts JUMP_BACK POP_TOP POP_BLOCK COME_FROM while1stmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK POP_TOP POP_BLOCK COME_FROM