diff --git a/.gitignore b/.gitignore index 195e4cfa..752d3a7e 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ /dist /how-to-make-a-release.txt /nose-*.egg +/pycharm-venv /tmp /uncompyle6.egg-info /unpyc diff --git a/uncompyle6/parsers/parse38.py b/uncompyle6/parsers/parse38.py index 7ce4e93c..0aee3fa1 100644 --- a/uncompyle6/parsers/parse38.py +++ b/uncompyle6/parsers/parse38.py @@ -80,8 +80,8 @@ class Python38Parser(Python37Parser): JUMP_BACK COME_FROM_FINALLY END_ASYNC_FOR - # FIXME: come froms after the else_suite or END_ASYNC_FOR distinguish which of - # for / forelse is used. Add come froms and check of add up control-flow detection phase. + # FIXME: "come_froms" after the "else_suite" or END_ASYNC_FOR distinguish which of + # for / forelse is used. Add "come_froms" and check of add up control-flow detection phase. async_forelse_stmt38 ::= expr GET_AITER SETUP_FINALLY diff --git a/uncompyle6/parsers/reducecheck/for_block_check.py b/uncompyle6/parsers/reducecheck/for_block_check.py index cf9a22a5..28d67ddd 100644 --- a/uncompyle6/parsers/reducecheck/for_block_check.py +++ b/uncompyle6/parsers/reducecheck/for_block_check.py @@ -4,7 +4,6 @@ from uncompyle6.scanners.tok import Token def for_block_invalid(self, lhs, n, rule, tree, tokens, first: int, last: int) -> bool: - # print("XXX", first, last) # for t in range(first, last): # print(tokens[t]) @@ -51,8 +50,8 @@ def for_block_invalid(self, lhs, n, rule, tree, tokens, first: int, last: int) - pop_jump_index -= 1 # FIXME: something is fishy when and EXTENDED ARG is needed before the - # pop_jump_index instruction to get the argment. In this case, the - # _ifsmtst_jump can jump to a spot beyond the come_froms. + # pop_jump_index instruction to get the argument. In this case, the + # _ifsmtst_jump can jump to a spot beyond the ``come_froms``. # That is going on in the non-EXTENDED_ARG case is that the POP_JUMP_IF # jumps to a JUMP_(FORWARD) which is changed into an EXTENDED_ARG POP_JUMP_IF # to the jumped forwarded address diff --git a/uncompyle6/parsers/reducecheck/ifelsestmt2.py b/uncompyle6/parsers/reducecheck/ifelsestmt2.py index c7ef9042..750c522a 100644 --- a/uncompyle6/parsers/reducecheck/ifelsestmt2.py +++ b/uncompyle6/parsers/reducecheck/ifelsestmt2.py @@ -44,7 +44,6 @@ IFELSE_STMT_RULES = frozenset( def ifelsestmt2(self, lhs, n, rule, tree, tokens, first, last): - if (last + 1) < n and tokens[last + 1] == "COME_FROM_LOOP" and lhs != "ifelsestmtc": # ifelsestmt jumped outside of loop. No good. return True @@ -66,7 +65,7 @@ def ifelsestmt2(self, lhs, n, rule, tree, tokens, first, last): if raise_stmt1 == "raise_stmt1" and raise_stmt1[0] in ("LOAD_ASSERT",): return True - # Make sure all of the "come froms" offset at the + # Make sure all of the "come_froms" offset at the # end of the "if" come from somewhere inside the "if". # Since the come_froms are ordered so that lowest # offset COME_FROM is last, it is sufficient to test diff --git a/uncompyle6/parsers/reducecheck/ifstmts_jump.py b/uncompyle6/parsers/reducecheck/ifstmts_jump.py index d5446905..ec85d625 100644 --- a/uncompyle6/parsers/reducecheck/ifstmts_jump.py +++ b/uncompyle6/parsers/reducecheck/ifstmts_jump.py @@ -4,7 +4,6 @@ from uncompyle6.scanners.tok import Token def ifstmts_jump(self, lhs, n, rule, ast, tokens, first, last): - if len(rule[1]) <= 1 or not ast: return False @@ -24,7 +23,7 @@ def ifstmts_jump(self, lhs, n, rule, ast, tokens, first, last): pop_jump_index -= 1 # FIXME: something is fishy when and EXTENDED ARG is needed before the - # pop_jump_index instruction to get the argment. In this case, the + # pop_jump_index instruction to get the argument. In this case, the # _ifsmtst_jump can jump to a spot beyond the come_froms. # That is going on in the non-EXTENDED_ARG case is that the POP_JUMP_IF # jumps to a JUMP_(FORWARD) which is changed into an EXTENDED_ARG POP_JUMP_IF @@ -34,16 +33,11 @@ def ifstmts_jump(self, lhs, n, rule, ast, tokens, first, last): pop_jump_offset = tokens[pop_jump_index].off2int(prefer_last=False) if isinstance(come_froms, Token): - if ( - tokens[pop_jump_index].attr < pop_jump_offset and ast[0] != "pass" - ): + if tokens[pop_jump_index].attr < pop_jump_offset and ast[0] != "pass": # This is a jump backwards to a loop. All bets are off here when there the # unless statement is "pass" which has no instructions associated with it. return False - return ( - come_froms.attr is not None - and pop_jump_offset > come_froms.attr - ) + return come_froms.attr is not None and pop_jump_offset > come_froms.attr elif len(come_froms) == 0: return False diff --git a/uncompyle6/scanners/scanner37base.py b/uncompyle6/scanners/scanner37base.py index 2cbc3290..6c3e22d9 100644 --- a/uncompyle6/scanners/scanner37base.py +++ b/uncompyle6/scanners/scanner37base.py @@ -54,8 +54,13 @@ class Scanner37Base(Scanner): super(Scanner37Base, self).__init__(version, show_asm, is_pypy) self.offset2tok_index = None self.debug = debug + + # True is code is from PyPy self.is_pypy = is_pypy + # Bytecode converted into instruction + self.insts = [] + # Create opcode classification sets # Note: super initialization above initializes self.opc diff --git a/uncompyle6/semantics/gencomp.py b/uncompyle6/semantics/gencomp.py index f15b632d..932556c9 100644 --- a/uncompyle6/semantics/gencomp.py +++ b/uncompyle6/semantics/gencomp.py @@ -471,7 +471,7 @@ class ComprehensionMixin: assert store, "Couldn't find store in list/set comprehension" # A problem created with later Python code generation is that there - # is a lamda set up with a dummy argument name that is then called + # is a lambda set up with a dummy argument name that is then called # So we can't just translate that as is but need to replace the # dummy name. Below we are picking out the variable name as seen # in the code. And trying to generate code for the other parts diff --git a/uncompyle6/semantics/make_function2.py b/uncompyle6/semantics/make_function2.py index 43f87057..789e4291 100644 --- a/uncompyle6/semantics/make_function2.py +++ b/uncompyle6/semantics/make_function2.py @@ -43,7 +43,7 @@ def make_function2(self, node, is_lambda, nested=1, code_node=None): - handle defaults - handle format tuple parameters """ - # if formal parameter is a tuple, the paramater name + # if formal parameter is a tuple, the parameter name # starts with a dot (eg. '.1', '.2') if name.startswith("."): # replace the name with the tuple-string