Revert most of last change

This commit is contained in:
rocky
2018-02-04 15:08:23 -05:00
parent 4cbba3d46e
commit a8051f049f
3 changed files with 5 additions and 25 deletions

View File

@@ -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

View File

@@ -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