diff --git a/uncompyle6/parsers/parse35.py b/uncompyle6/parsers/parse35.py index c1119b6a..221d63a4 100644 --- a/uncompyle6/parsers/parse35.py +++ b/uncompyle6/parsers/parse35.py @@ -39,8 +39,11 @@ class Python35Parser(Python34Parser): return_if_stmt ::= ret_expr RETURN_END_IF POP_BLOCK ifelsestmtc ::= testexpr c_stmts_opt JUMP_FORWARD else_suitec + ifelsestmtc ::= testexpr c_stmts_opt jf_else else_suitec + # ifstmt ::= testexpr c_stmts_opt + iflaststmt ::= testexpr c_stmts_opt JUMP_FORWARD # Python 3.3+ also has yield from. 3.5 does it # differently than 3.3, 3.4 diff --git a/uncompyle6/scanners/scanner3.py b/uncompyle6/scanners/scanner3.py index 0fa97de1..b895b326 100644 --- a/uncompyle6/scanners/scanner3.py +++ b/uncompyle6/scanners/scanner3.py @@ -324,11 +324,12 @@ class Scanner3(Scanner): if (inst.offset in self.stmts and (next_opname not in ('END_FINALLY', 'POP_BLOCK', # Python 3.0 only uses POP_TOP - 'POP_TOP') - and inst.offset not in self.not_continue) or - (tokens[-1].type == 'RETURN_VALUE' and - self.version < 3.5)): - opname = 'CONTINUE' + 'POP_TOP'))): + if (self.version == 3.5 or + (inst.offset not in self.not_continue) or + (tokens[-1].type == 'RETURN_VALUE')): + opname = 'CONTINUE' + pass else: opname = 'JUMP_BACK' # FIXME: this is a hack to catch stuff like: