diff --git a/test/bytecode_3.4/09_yield_from.pyc b/test/bytecode_3.4/09_yield_from.pyc deleted file mode 100644 index 12e5ef24..00000000 Binary files a/test/bytecode_3.4/09_yield_from.pyc and /dev/null differ diff --git a/uncompyle6/parser.py b/uncompyle6/parser.py index 5f80fb19..efc69f68 100644 --- a/uncompyle6/parser.py +++ b/uncompyle6/parser.py @@ -637,10 +637,11 @@ def get_python_parser(version, debug_parser, compile_mode='exec'): else: p = parse3.Python33ParserSingle(debug_parser) elif version == 3.4: + import uncompyle6.parsers.parse34 as parse34 if compile_mode == 'exec': - p = parse3.Python34Parser(debug_parser) + p = parse34.Python34Parser(debug_parser) else: - p = parse3.Python34ParserSingle(debug_parser) + p = parse34.Python34ParserSingle(debug_parser) elif version >= 3.5: if compile_mode == 'exec': p = parse3.Python35onParser(debug_parser) diff --git a/uncompyle6/parsers/parse3.py b/uncompyle6/parsers/parse3.py index 43e17dce..cadb23c1 100644 --- a/uncompyle6/parsers/parse3.py +++ b/uncompyle6/parsers/parse3.py @@ -625,10 +625,6 @@ class Python32ParserSingle(Python32Parser, PythonParserSingle): class Python33ParserSingle(Python33Parser, PythonParserSingle): pass -class Python34ParserSingle(Python34Parser, PythonParserSingle): - pass - - class Python35onParserSingle(Python35onParser, PythonParserSingle): pass @@ -641,8 +637,6 @@ def info(args): arg = args[0] if arg == '3.5': p = Python35onParser() - elif arg == '3.4': - p = Python34Parser() elif arg == '3.3': p = Python33Parser() elif arg == '3.2': diff --git a/uncompyle6/parsers/parse34.py b/uncompyle6/parsers/parse34.py new file mode 100644 index 00000000..917c8baf --- /dev/null +++ b/uncompyle6/parsers/parse34.py @@ -0,0 +1,35 @@ +# Copyright (c) 2016 Rocky Bernstein +""" +spark grammar differences over Python3 for Python 3.4.2. +""" + +from uncompyle6.parser import PythonParserSingle +from spark_parser import DEFAULT_DEBUG as PARSER_DEFAULT_DEBUG +from uncompyle6.parsers.parse3 import Python3Parser + +class Python34Parser(Python3Parser): + + def __init__(self, debug_parser=PARSER_DEFAULT_DEBUG): + super(Python34Parser, self).__init__(debug_parser) + self.customized = {} + + def p_misc34(self, args): + """ + # Python 3.5+ optimizes the trailing two JUMPS away + for_block ::= l_stmts_opt JUMP_ABSOLUTE + """ + +class Python34ParserSingle(Python34Parser, PythonParserSingle): + pass + + +def info(args): + # Check grammar + # Should also add a way to dump grammar + p = Python34Parser() + p.checkGrammar() + + +if __name__ == '__main__': + import sys + info(sys.argv)