You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-03 00:45:53 +08:00
Revert most of last change
This commit is contained in:
@@ -75,7 +75,7 @@ class Python27Parser(Python2Parser):
|
||||
|
||||
ret_and ::= expr JUMP_IF_FALSE_OR_POP ret_expr_or_cond COME_FROM
|
||||
ret_or ::= expr JUMP_IF_TRUE_OR_POP ret_expr_or_cond COME_FROM
|
||||
ret_cond ::= expr POP_JUMP_IF_FALSE expr RETURN_VALUE COME_FROM ret_expr_or_cond
|
||||
ret_cond ::= expr POP_JUMP_IF_FALSE expr RETURN_END_IF COME_FROM ret_expr_or_cond
|
||||
|
||||
or ::= expr JUMP_IF_TRUE_OR_POP expr COME_FROM
|
||||
and ::= expr JUMP_IF_FALSE_OR_POP expr COME_FROM
|
||||
@@ -136,16 +136,8 @@ class Python27Parser(Python2Parser):
|
||||
ifelsestmtl ::= testexpr c_stmts_opt JUMP_BACK else_suitel
|
||||
ifelsestmtl ::= testexpr c_stmts_opt CONTINUE else_suitel
|
||||
|
||||
# These below rules in 2.6 and before use RETURN_IF_THEN.. insead
|
||||
# of RETURN_VALUE.. However since our "if" non-if detection in
|
||||
# 2.7 is weak, we allow RETURN_VALUE as well as RETURN_IF_THEN
|
||||
|
||||
return_if_lambda ::= RETURN_VALUE_LAMBDA COME_FROM
|
||||
conditional_lambda ::= expr jmp_false expr return_lambda
|
||||
return_stmt_lambda LAMBDA_MARKER
|
||||
return_if_stmt ::= ret_expr RETURN_VALUE
|
||||
|
||||
# Common with 2.6
|
||||
return_if_lambda ::= RETURN_END_IF_LAMBDA COME_FROM
|
||||
stmt ::= conditional_lambda
|
||||
conditional_lambda ::= expr jmp_false expr return_if_lambda
|
||||
return_stmt_lambda LAMBDA_MARKER
|
||||
|
@@ -26,9 +26,7 @@ from collections import namedtuple
|
||||
from array import array
|
||||
|
||||
from xdis.code import iscode
|
||||
from xdis.bytecode import (
|
||||
Bytecode, op_has_argument, op_size,
|
||||
instruction_size, get_jump_targets)
|
||||
from xdis.bytecode import Bytecode, op_has_argument, op_size, instruction_size
|
||||
from xdis.util import code2num
|
||||
|
||||
from uncompyle6.scanner import Scanner
|
||||
@@ -144,7 +142,6 @@ class Scanner2(Scanner):
|
||||
self.load_asserts.add(i+3)
|
||||
|
||||
jump_targets = self.find_jump_targets(show_asm)
|
||||
self.xdis_jump_targets = get_jump_targets(co, self.opc)
|
||||
# contains (code, [addrRefToCode])
|
||||
|
||||
last_stmt = self.next_stmt[0]
|
||||
@@ -970,18 +967,9 @@ class Scanner2(Scanner):
|
||||
'start': start,
|
||||
'end': rtarget})
|
||||
self.thens[start] = rtarget
|
||||
if ((self.version == 2.7 and target > offset)
|
||||
or (self.version < 2.7 and
|
||||
(code[pre_rtarget+1] != self.opc.JUMP_FORWARD))):
|
||||
if self.version == 2.7 or code[pre_rtarget+1] != self.opc.JUMP_FORWARD:
|
||||
self.fixed_jumps[offset] = rtarget
|
||||
|
||||
# We need more sophistication in
|
||||
# determining whether this is an end if in
|
||||
# 2.7. For now, skip here, but we have
|
||||
# jiggered the grammar (parse27.py) to
|
||||
# treat the two more alike.
|
||||
if self.version < 2.7:
|
||||
self.return_end_ifs.add(pre_rtarget)
|
||||
self.return_end_ifs.add(pre_rtarget)
|
||||
pass
|
||||
pass
|
||||
pass
|
||||
|
Reference in New Issue
Block a user