You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-04 01:09:52 +08:00
Merge pull request #236 from x0ret/master
Python 3.7 decompiling full 3.7.3 library without error #235
This commit is contained in:
BIN
test/bytecode_3.7/01_chained_compare.pyc
Normal file
BIN
test/bytecode_3.7/01_chained_compare.pyc
Normal file
Binary file not shown.
@@ -11,9 +11,16 @@ def chained_compare_b(a, obj):
|
|||||||
if -0x80000000 <= obj <= 0x7fffffff:
|
if -0x80000000 <= obj <= 0x7fffffff:
|
||||||
return 5
|
return 5
|
||||||
|
|
||||||
|
def chained_compare_c(a, d):
|
||||||
|
for i in len(d):
|
||||||
|
if a == d[i] != 2:
|
||||||
|
return 5
|
||||||
|
|
||||||
chained_compare_a(3)
|
chained_compare_a(3)
|
||||||
try:
|
try:
|
||||||
chained_compare_a(8)
|
chained_compare_a(8)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
chained_compare_b(True, 0x0)
|
chained_compare_b(True, 0x0)
|
||||||
|
|
||||||
|
chained_compare_c(3, [3])
|
||||||
|
@@ -89,6 +89,7 @@ class Python37Parser(Python36Parser):
|
|||||||
compare_chained37 ::= expr compare_chained1a_37
|
compare_chained37 ::= expr compare_chained1a_37
|
||||||
compare_chained37 ::= expr compare_chained1b_37
|
compare_chained37 ::= expr compare_chained1b_37
|
||||||
compare_chained37_false ::= expr compare_chained1_false_37
|
compare_chained37_false ::= expr compare_chained1_false_37
|
||||||
|
compare_chained37_false ::= expr compare_chained2_false_37
|
||||||
|
|
||||||
compare_chained1a_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
compare_chained1a_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
||||||
compare_chained1a_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
compare_chained1a_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
||||||
@@ -98,6 +99,8 @@ class Python37Parser(Python36Parser):
|
|||||||
|
|
||||||
compare_chained1_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
compare_chained1_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
||||||
compare_chained2c_37 POP_TOP JUMP_FORWARD COME_FROM
|
compare_chained2c_37 POP_TOP JUMP_FORWARD COME_FROM
|
||||||
|
compare_chained2_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
||||||
|
compare_chained2a_false_37 ELSE POP_TOP JUMP_BACK COME_FROM
|
||||||
|
|
||||||
compare_chained2a_37 ::= expr COMPARE_OP POP_JUMP_IF_TRUE JUMP_FORWARD
|
compare_chained2a_37 ::= expr COMPARE_OP POP_JUMP_IF_TRUE JUMP_FORWARD
|
||||||
compare_chained2a_false_37 ::= expr COMPARE_OP POP_JUMP_IF_FALSE JUMP_FORWARD
|
compare_chained2a_false_37 ::= expr COMPARE_OP POP_JUMP_IF_FALSE JUMP_FORWARD
|
||||||
|
@@ -45,6 +45,9 @@ def customize_for_version37(self, version):
|
|||||||
'compare_chained1_false_37': (
|
'compare_chained1_false_37': (
|
||||||
' %[3]{pattr.replace("-", " ")} %p %p',
|
' %[3]{pattr.replace("-", " ")} %p %p',
|
||||||
(0, 19), (-4, 19)),
|
(0, 19), (-4, 19)),
|
||||||
|
'compare_chained2_false_37': (
|
||||||
|
' %[3]{pattr.replace("-", " ")} %p %p',
|
||||||
|
(0, 19), (-5, 19)),
|
||||||
'compare_chained1b_37': (
|
'compare_chained1b_37': (
|
||||||
' %[3]{pattr.replace("-", " ")} %p %p',
|
' %[3]{pattr.replace("-", " ")} %p %p',
|
||||||
(0, 19), (-4, 19)),
|
(0, 19), (-4, 19)),
|
||||||
|
@@ -1439,7 +1439,7 @@ class SourceWalker(GenericASTTraversal, object):
|
|||||||
i = n - (len(kwargs)+1)
|
i = n - (len(kwargs)+1)
|
||||||
j = 1 + n - node[n].attr
|
j = 1 + n - node[n].attr
|
||||||
else:
|
else:
|
||||||
start = n-2
|
i = start = n-2
|
||||||
for i in range(start, 0, -1):
|
for i in range(start, 0, -1):
|
||||||
if not node[i].kind in ['expr', 'call', 'LOAD_CLASSNAME']:
|
if not node[i].kind in ['expr', 'call', 'LOAD_CLASSNAME']:
|
||||||
break
|
break
|
||||||
|
Reference in New Issue
Block a user