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_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_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
|
or ::= expr JUMP_IF_TRUE_OR_POP expr COME_FROM
|
||||||
and ::= expr JUMP_IF_FALSE_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 JUMP_BACK else_suitel
|
||||||
ifelsestmtl ::= testexpr c_stmts_opt CONTINUE 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
|
# Common with 2.6
|
||||||
|
return_if_lambda ::= RETURN_END_IF_LAMBDA COME_FROM
|
||||||
stmt ::= conditional_lambda
|
stmt ::= conditional_lambda
|
||||||
conditional_lambda ::= expr jmp_false expr return_if_lambda
|
conditional_lambda ::= expr jmp_false expr return_if_lambda
|
||||||
return_stmt_lambda LAMBDA_MARKER
|
return_stmt_lambda LAMBDA_MARKER
|
||||||
|
@@ -26,9 +26,7 @@ from collections import namedtuple
|
|||||||
from array import array
|
from array import array
|
||||||
|
|
||||||
from xdis.code import iscode
|
from xdis.code import iscode
|
||||||
from xdis.bytecode import (
|
from xdis.bytecode import Bytecode, op_has_argument, op_size, instruction_size
|
||||||
Bytecode, op_has_argument, op_size,
|
|
||||||
instruction_size, get_jump_targets)
|
|
||||||
from xdis.util import code2num
|
from xdis.util import code2num
|
||||||
|
|
||||||
from uncompyle6.scanner import Scanner
|
from uncompyle6.scanner import Scanner
|
||||||
@@ -144,7 +142,6 @@ class Scanner2(Scanner):
|
|||||||
self.load_asserts.add(i+3)
|
self.load_asserts.add(i+3)
|
||||||
|
|
||||||
jump_targets = self.find_jump_targets(show_asm)
|
jump_targets = self.find_jump_targets(show_asm)
|
||||||
self.xdis_jump_targets = get_jump_targets(co, self.opc)
|
|
||||||
# contains (code, [addrRefToCode])
|
# contains (code, [addrRefToCode])
|
||||||
|
|
||||||
last_stmt = self.next_stmt[0]
|
last_stmt = self.next_stmt[0]
|
||||||
@@ -970,18 +967,9 @@ class Scanner2(Scanner):
|
|||||||
'start': start,
|
'start': start,
|
||||||
'end': rtarget})
|
'end': rtarget})
|
||||||
self.thens[start] = rtarget
|
self.thens[start] = rtarget
|
||||||
if ((self.version == 2.7 and target > offset)
|
if self.version == 2.7 or code[pre_rtarget+1] != self.opc.JUMP_FORWARD:
|
||||||
or (self.version < 2.7 and
|
|
||||||
(code[pre_rtarget+1] != self.opc.JUMP_FORWARD))):
|
|
||||||
self.fixed_jumps[offset] = rtarget
|
self.fixed_jumps[offset] = rtarget
|
||||||
|
self.return_end_ifs.add(pre_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)
|
|
||||||
pass
|
pass
|
||||||
pass
|
pass
|
||||||
pass
|
pass
|
||||||
|
Reference in New Issue
Block a user