You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-04 09:22:40 +08:00
Add grammar for PyPy 2-arg assert
This commit is contained in:
@@ -274,10 +274,16 @@ class Python2Parser(PythonParser):
|
||||
elif opname == 'JUMP_IF_NOT_DEBUG':
|
||||
self.add_unique_rule(
|
||||
"stmt ::= assert_pypy", opname_base, v, customize)
|
||||
self.add_unique_rule(
|
||||
"stmt ::= assert2_pypy", opname_base, v, customize)
|
||||
self.add_unique_rule(
|
||||
"assert_pypy ::= JUMP_IF_NOT_DEBUG assert_expr jmp_true "
|
||||
"LOAD_ASSERT RAISE_VARARGS_1 COME_FROM",
|
||||
opname_base, v, customize)
|
||||
self.add_unique_rule(
|
||||
"assert2_pypy ::= JUMP_IF_NOT_DEBUG assert_expr jmp_true "
|
||||
"LOAD_ASSERT expr CALL_FUNCTION_1 RAISE_VARARGS_1 COME_FROM",
|
||||
opname_base, v, customize)
|
||||
continue
|
||||
elif opname_base == 'BUILD_MAP':
|
||||
if opname == 'BUILD_MAP_n':
|
||||
|
@@ -470,10 +470,16 @@ class Python3Parser(PythonParser):
|
||||
elif opname == 'JUMP_IF_NOT_DEBUG':
|
||||
self.add_unique_rule(
|
||||
"stmt ::= assert_pypy", opname, v, customize)
|
||||
self.add_unique_rule(
|
||||
"stmt ::= assert2_pypy", opname_base, v, customize)
|
||||
self.add_unique_rule(
|
||||
"assert_pypy ::= JUMP_IF_NOT_DEBUG assert_expr jmp_true "
|
||||
"LOAD_ASSERT RAISE_VARARGS_1 COME_FROM",
|
||||
opname, token.attr, customize)
|
||||
self.add_unique_rule(
|
||||
"assert2_pypy ::= JUMP_IF_NOT_DEBUG assert_expr jmp_true "
|
||||
"LOAD_ASSERT expr CALL_FUNCTION_1 RAISE_VARARGS_1 COME_FROM",
|
||||
opname_base, v, customize)
|
||||
continue
|
||||
elif opname_base == 'BUILD_MAP':
|
||||
kvlist_n = "kvlist_%s" % token.attr
|
||||
|
@@ -385,6 +385,7 @@ TABLE_DIRECT = {
|
||||
# PyPy Additions
|
||||
#######################
|
||||
'assert_pypy': ( '%|assert %c\n' , 1 ),
|
||||
'assert2_pypy': ( '%|assert %c, %c\n' , 1, 4 )
|
||||
}
|
||||
|
||||
|
||||
@@ -1066,9 +1067,16 @@ class SourceWalker(GenericASTTraversal, object):
|
||||
"""
|
||||
p = self.prec
|
||||
self.prec = 27
|
||||
n = node[-2] if self.is_pypy and node[-1] == 'JUMP_BACK' else node[-1]
|
||||
if node[-1].type == 'list_iter':
|
||||
n = node[-1]
|
||||
elif self.is_pypy and node[-1] == 'JUMP_BACK':
|
||||
n = node[-2]
|
||||
list_expr = node[0]
|
||||
|
||||
if len(node) >= 3:
|
||||
designator = node[3]
|
||||
elif self.is_pypy and n[0] == 'list_for':
|
||||
designator = n[0][2]
|
||||
|
||||
assert n == 'list_iter'
|
||||
assert designator == 'designator'
|
||||
|
Reference in New Issue
Block a user