diff --git a/uncompyle6/parsers/parse3.py b/uncompyle6/parsers/parse3.py index ca01a021..f6c2736e 100644 --- a/uncompyle6/parsers/parse3.py +++ b/uncompyle6/parsers/parse3.py @@ -277,9 +277,6 @@ class Python3Parser(PythonParser): for_block ::= l_stmts_opt come_from_loops JUMP_BACK for_block ::= l_stmts iflaststmtl ::= testexpr c_stmts_opt - - expr ::= conditionalTrue - conditionalTrue ::= expr JUMP_FORWARD expr COME_FROM """ def p_def_annotations3(self, args): @@ -409,12 +406,6 @@ class Python3Parser(PythonParser): # a JUMP_FORWARD to another JUMP_FORWARD can get turned into # a JUMP_ABSOLUTE with no COME_FROM conditional ::= expr jmp_false expr jump_absolute_else expr - - return_if_lambda ::= RETURN_END_IF_LAMBDA - conditional_lambda ::= expr jmp_false return_stmt_lambda - return_stmt_lambda LAMBDA_MARKER - conditional_lambda ::= expr jmp_false expr return_if_lambda - return_stmt_lambda LAMBDA_MARKER """ @staticmethod @@ -623,6 +614,9 @@ class Python3Parser(PythonParser): stmt ::= assign2_pypy assign3_pypy ::= expr expr expr store store store assign2_pypy ::= expr expr store store + return_if_lambda ::= RETURN_END_IF_LAMBDA + conditional_lambda ::= expr jmp_false expr return_if_lambda + return_stmt_lambda LAMBDA_MARKER """, nop_func) has_get_iter_call_function1 = False diff --git a/uncompyle6/parsers/parse36.py b/uncompyle6/parsers/parse36.py index f134abb0..a0e0a08e 100644 --- a/uncompyle6/parsers/parse36.py +++ b/uncompyle6/parsers/parse36.py @@ -18,7 +18,11 @@ class Python36Parser(Python35Parser): def p_36misc(self, args): """ # 3.6 redoes how return_closure works - return_closure ::= LOAD_CLOSURE DUP_TOP STORE_NAME RETURN_VALUE RETURN_LAST + return_closure ::= LOAD_CLOSURE DUP_TOP STORE_NAME RETURN_VALUE RETURN_LAST + + conditional_lambda ::= expr jmp_false expr return_if_lambda + return_stmt_lambda LAMBDA_MARKER + return_if_lambda ::= RETURN_END_IF_LAMBDA fstring_multi ::= fstring_expr_or_strs BUILD_STRING fstring_expr_or_strs ::= fstring_expr_or_str+