From 56dc270145142a366cd22582becc165cf683fef2 Mon Sep 17 00:00:00 2001 From: rocky Date: Sun, 15 May 2016 06:40:12 -0400 Subject: [PATCH] Fix verify bug in 3.2 --- uncompyle6/parser.py | 7 +++++++ uncompyle6/parsers/parse3.py | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/uncompyle6/parser.py b/uncompyle6/parser.py index 89f249c0..01ecc28f 100644 --- a/uncompyle6/parser.py +++ b/uncompyle6/parser.py @@ -460,6 +460,7 @@ def get_python_parser(version, debug_parser, compile_mode='exec'): explanation of the different modes. """ + # FIXME: there has to be a better way... if version < 3.0: import uncompyle6.parsers.parse2 as parse2 if compile_mode == 'exec': @@ -473,6 +474,11 @@ def get_python_parser(version, debug_parser, compile_mode='exec'): p = parse3.Python32Parser(debug_parser) else: p = parse3.Python32ParserSingle(debug_parser) + elif version == 3.4: + if compile_mode == 'exec': + p = parse3.Python34Parser(debug_parser) + else: + p = parse3.Python34ParserSingle(debug_parser) elif version >= 3.5: if compile_mode == 'exec': p = parse3.Python35onParser(debug_parser) @@ -484,6 +490,7 @@ def get_python_parser(version, debug_parser, compile_mode='exec'): else: p = parse3.Python3ParserSingle(debug_parser) p.version = version + # p.dumpGrammar() # debug return p class PythonParserSingle(PythonParser): diff --git a/uncompyle6/parsers/parse3.py b/uncompyle6/parsers/parse3.py index 0b947ba8..dd53e208 100644 --- a/uncompyle6/parsers/parse3.py +++ b/uncompyle6/parsers/parse3.py @@ -243,7 +243,6 @@ class Python3Parser(PythonParser): testtrue ::= expr jmp_true _ifstmts_jump ::= return_if_stmts - _ifstmts_jump ::= c_stmts_opt JUMP_FORWARD _come_from _ifstmts_jump ::= c_stmts_opt iflaststmt ::= testexpr c_stmts_opt JUMP_ABSOLUTE @@ -588,6 +587,13 @@ class Python32Parser(Python3Parser): """ # Store locals is only used in Python 3.2 designator ::= STORE_LOCALS + _ifstmts_jump ::= c_stmts_opt JUMP_FORWARD COME_FROM + """ + +class Python34Parser(Python3Parser): + def p_34(self, args): + """ + _ifstmts_jump ::= c_stmts_opt JUMP_FORWARD _come_from """ class Python3ParserSingle(Python3Parser, PythonParserSingle): @@ -596,6 +602,9 @@ class Python3ParserSingle(Python3Parser, PythonParserSingle): class Python32ParserSingle(Python32Parser, PythonParserSingle): pass +class Python34ParserSingle(Python34Parser, PythonParserSingle): + pass + class Python35onParser(Python3Parser): def p_35on(self, args): """