You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-04 09:22:40 +08:00
NT genexpr -> generate_exp to match AST
This commit is contained in:
@@ -294,9 +294,9 @@ class PythonParser(GenericASTBuilder):
|
|||||||
load_closure ::= LOAD_CLOSURE
|
load_closure ::= LOAD_CLOSURE
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def p_genexpr(self, args):
|
def p_generator_exp(self, args):
|
||||||
'''
|
'''
|
||||||
expr ::= genexpr
|
expr ::= generator_exp
|
||||||
stmt ::= genexpr_func
|
stmt ::= genexpr_func
|
||||||
|
|
||||||
genexpr_func ::= LOAD_FAST FOR_ITER designator comp_iter JUMP_BACK
|
genexpr_func ::= LOAD_FAST FOR_ITER designator comp_iter JUMP_BACK
|
||||||
|
@@ -169,9 +169,9 @@ class Python2Parser(PythonParser):
|
|||||||
jmp_abs ::= JUMP_BACK
|
jmp_abs ::= JUMP_BACK
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def p_genexpr2(self, args):
|
def p_generator_exp2(self, args):
|
||||||
'''
|
'''
|
||||||
genexpr ::= LOAD_GENEXPR MAKE_FUNCTION_0 expr GET_ITER CALL_FUNCTION_1
|
generator_exp ::= LOAD_GENEXPR MAKE_FUNCTION_0 expr GET_ITER CALL_FUNCTION_1
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def p_expr2(self, args):
|
def p_expr2(self, args):
|
||||||
@@ -375,7 +375,7 @@ class Python2Parser(PythonParser):
|
|||||||
prev_tok = tokens[i-1]
|
prev_tok = tokens[i-1]
|
||||||
if prev_tok == 'LOAD_GENEXPR':
|
if prev_tok == 'LOAD_GENEXPR':
|
||||||
self.add_unique_rules([
|
self.add_unique_rules([
|
||||||
('genexpr ::= %s load_closure LOAD_GENEXPR %s expr'
|
('generator_exp ::= %s load_closure LOAD_GENEXPR %s expr'
|
||||||
' GET_ITER CALL_FUNCTION_1' %
|
' GET_ITER CALL_FUNCTION_1' %
|
||||||
('expr '*v, opname))], customize)
|
('expr '*v, opname))], customize)
|
||||||
pass
|
pass
|
||||||
|
@@ -213,7 +213,7 @@ class Python26Parser(Python2Parser):
|
|||||||
genexpr_func ::= setup_loop_lf FOR_ITER designator comp_iter jb_bp_come_from
|
genexpr_func ::= setup_loop_lf FOR_ITER designator comp_iter jb_bp_come_from
|
||||||
genexpr_func ::= setup_loop_lf FOR_ITER designator comp_iter JUMP_BACK come_from_pop
|
genexpr_func ::= setup_loop_lf FOR_ITER designator comp_iter JUMP_BACK come_from_pop
|
||||||
jb_bp_come_from
|
jb_bp_come_from
|
||||||
genexpr ::= LOAD_GENEXPR MAKE_FUNCTION_0 expr GET_ITER CALL_FUNCTION_1 COME_FROM
|
generator_exp ::= LOAD_GENEXPR MAKE_FUNCTION_0 expr GET_ITER CALL_FUNCTION_1 COME_FROM
|
||||||
list_if ::= list_if ::= expr jmp_false_then list_iter
|
list_if ::= list_if ::= expr jmp_false_then list_iter
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
@@ -74,7 +74,7 @@ class Python3Parser(PythonParser):
|
|||||||
expr ::= dictcomp
|
expr ::= dictcomp
|
||||||
stmt ::= dictcomp_func
|
stmt ::= dictcomp_func
|
||||||
dictcomp_func ::= BUILD_MAP_0 LOAD_FAST FOR_ITER designator
|
dictcomp_func ::= BUILD_MAP_0 LOAD_FAST FOR_ITER designator
|
||||||
comp_iter JUMP_BACK RETURN_VALUE RETURN_LAST
|
comp_iter JUMP_BACK RETURN_VALUE RETURN_LAST
|
||||||
dictcomp ::= LOAD_DICTCOMP LOAD_CONST MAKE_FUNCTION_0 expr GET_ITER CALL_FUNCTION_1
|
dictcomp ::= LOAD_DICTCOMP LOAD_CONST MAKE_FUNCTION_0 expr GET_ITER CALL_FUNCTION_1
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -408,7 +408,7 @@ class Python3Parser(PythonParser):
|
|||||||
COME_FROM_LOOP
|
COME_FROM_LOOP
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def p_genexpr3(self, args):
|
def p_generator_exp3(self, args):
|
||||||
'''
|
'''
|
||||||
load_genexpr ::= LOAD_GENEXPR
|
load_genexpr ::= LOAD_GENEXPR
|
||||||
load_genexpr ::= BUILD_TUPLE_1 LOAD_GENEXPR LOAD_CONST
|
load_genexpr ::= BUILD_TUPLE_1 LOAD_GENEXPR LOAD_CONST
|
||||||
@@ -596,9 +596,9 @@ class Python3Parser(PythonParser):
|
|||||||
dictcomp ::= LOAD_DICTCOMP [LOAD_CONST] MAKE_FUNCTION_0 expr
|
dictcomp ::= LOAD_DICTCOMP [LOAD_CONST] MAKE_FUNCTION_0 expr
|
||||||
GET_ITER CALL_FUNCTION_1
|
GET_ITER CALL_FUNCTION_1
|
||||||
|
|
||||||
genexpr ::= {pos_arg}^n load_genexpr [LOAD_CONST] MAKE_FUNCTION_n expr
|
generator_exp ::= {pos_arg}^n load_genexpr [LOAD_CONST] MAKE_FUNCTION_n expr
|
||||||
GET_ITER CALL_FUNCTION_1
|
GET_ITER CALL_FUNCTION_1
|
||||||
genexpr ::= {expr}^n load_closure LOAD_GENEXPR [LOAD_CONST]
|
generator_exp ::= {expr}^n load_closure LOAD_GENEXPR [LOAD_CONST]
|
||||||
MAKE_CLOSURE_n expr GET_ITER CALL_FUNCTION_1
|
MAKE_CLOSURE_n expr GET_ITER CALL_FUNCTION_1
|
||||||
listcomp ::= {pos_arg}^n LOAD_LISTCOMP [LOAD_CONST] MAKE_CLOSURE_n expr
|
listcomp ::= {pos_arg}^n LOAD_LISTCOMP [LOAD_CONST] MAKE_CLOSURE_n expr
|
||||||
GET_ITER CALL_FUNCTION_1
|
GET_ITER CALL_FUNCTION_1
|
||||||
@@ -835,7 +835,7 @@ class Python3Parser(PythonParser):
|
|||||||
self.add_make_function_rule(rule_pat, opname, token.attr, customize)
|
self.add_make_function_rule(rule_pat, opname, token.attr, customize)
|
||||||
|
|
||||||
if has_get_iter_call_function1:
|
if has_get_iter_call_function1:
|
||||||
rule_pat = ("genexpr ::= %sload_closure load_genexpr %%s%s expr "
|
rule_pat = ("generator_exp ::= %sload_closure load_genexpr %%s%s expr "
|
||||||
"GET_ITER CALL_FUNCTION_1" % ('pos_arg '* args_pos, opname))
|
"GET_ITER CALL_FUNCTION_1" % ('pos_arg '* args_pos, opname))
|
||||||
self.add_make_function_rule(rule_pat, opname, token.attr, customize)
|
self.add_make_function_rule(rule_pat, opname, token.attr, customize)
|
||||||
if seen_LOAD_LISTCOMP:
|
if seen_LOAD_LISTCOMP:
|
||||||
@@ -890,7 +890,7 @@ class Python3Parser(PythonParser):
|
|||||||
self.add_unique_rule(rule, opname, token.attr, customize)
|
self.add_unique_rule(rule, opname, token.attr, customize)
|
||||||
|
|
||||||
if has_get_iter_call_function1:
|
if has_get_iter_call_function1:
|
||||||
rule_pat = ("genexpr ::= %sload_closure load_genexpr %%s%s expr "
|
rule_pat = ("generator_exp ::= %sload_closure load_genexpr %%s%s expr "
|
||||||
"GET_ITER CALL_FUNCTION_1" % ('pos_arg '* args_pos, opname))
|
"GET_ITER CALL_FUNCTION_1" % ('pos_arg '* args_pos, opname))
|
||||||
self.add_make_function_rule(rule_pat, opname, token.attr, customize)
|
self.add_make_function_rule(rule_pat, opname, token.attr, customize)
|
||||||
|
|
||||||
@@ -910,7 +910,7 @@ class Python3Parser(PythonParser):
|
|||||||
args_pos, args_kw, annotate_args, closure = token.attr
|
args_pos, args_kw, annotate_args, closure = token.attr
|
||||||
|
|
||||||
if has_get_iter_call_function1:
|
if has_get_iter_call_function1:
|
||||||
rule_pat = ("genexpr ::= %sload_genexpr %%s%s expr "
|
rule_pat = ("generator_exp ::= %sload_genexpr %%s%s expr "
|
||||||
"GET_ITER CALL_FUNCTION_1" % ('pos_arg '* args_pos, opname))
|
"GET_ITER CALL_FUNCTION_1" % ('pos_arg '* args_pos, opname))
|
||||||
self.add_make_function_rule(rule_pat, opname, token.attr, customize)
|
self.add_make_function_rule(rule_pat, opname, token.attr, customize)
|
||||||
rule_pat = ('mklambda ::= %s%sLOAD_LAMBDA %%s%s' %
|
rule_pat = ('mklambda ::= %s%sLOAD_LAMBDA %%s%s' %
|
||||||
|
@@ -305,7 +305,7 @@ PRECEDENCE = {
|
|||||||
'dictcomp': 0,
|
'dictcomp': 0,
|
||||||
'setcomp': 0,
|
'setcomp': 0,
|
||||||
'list_compr': 0,
|
'list_compr': 0,
|
||||||
'genexpr': 0,
|
'generator_exp': 0,
|
||||||
|
|
||||||
'load_attr': 2,
|
'load_attr': 2,
|
||||||
'binary_subscr': 2,
|
'binary_subscr': 2,
|
||||||
|
@@ -570,7 +570,7 @@ class FragmentsWalker(pysource.SourceWalker, object):
|
|||||||
# FIXME: clean this up
|
# FIXME: clean this up
|
||||||
if self.version > 3.0 and node == 'dictcomp':
|
if self.version > 3.0 and node == 'dictcomp':
|
||||||
cn = node[1]
|
cn = node[1]
|
||||||
elif self.version > 3.0 and node == 'genexpr':
|
elif self.version > 3.0 and node == 'generator_exp':
|
||||||
if node[0] == 'load_genexpr':
|
if node[0] == 'load_genexpr':
|
||||||
load_genexpr = node[0]
|
load_genexpr = node[0]
|
||||||
elif node[1] == 'load_genexpr':
|
elif node[1] == 'load_genexpr':
|
||||||
@@ -769,7 +769,7 @@ class FragmentsWalker(pysource.SourceWalker, object):
|
|||||||
|
|
||||||
self.prec = p
|
self.prec = p
|
||||||
|
|
||||||
def n_genexpr(self, node):
|
def n_generator_exp(self, node):
|
||||||
start = len(self.f.getvalue())
|
start = len(self.f.getvalue())
|
||||||
self.write('(')
|
self.write('(')
|
||||||
code_index = -6 if self.version > 3.2 else -5
|
code_index = -6 if self.version > 3.2 else -5
|
||||||
|
@@ -1161,13 +1161,13 @@ class SourceWalker(GenericASTTraversal, object):
|
|||||||
# FIXME: clean this up
|
# FIXME: clean this up
|
||||||
if self.version > 3.0 and node == 'dictcomp':
|
if self.version > 3.0 and node == 'dictcomp':
|
||||||
cn = node[1]
|
cn = node[1]
|
||||||
elif self.version < 2.7 and node == 'genexpr':
|
elif self.version < 2.7 and node == 'generator_exp':
|
||||||
if node[0] == 'LOAD_GENEXPR':
|
if node[0] == 'LOAD_GENEXPR':
|
||||||
cn = node[0]
|
cn = node[0]
|
||||||
elif node[0] == 'load_closure':
|
elif node[0] == 'load_closure':
|
||||||
cn = node[1]
|
cn = node[1]
|
||||||
|
|
||||||
elif self.version > 3.0 and node == 'genexpr':
|
elif self.version > 3.0 and node == 'generator_exp':
|
||||||
if node[0] == 'load_genexpr':
|
if node[0] == 'load_genexpr':
|
||||||
load_genexpr = node[0]
|
load_genexpr = node[0]
|
||||||
elif node[1] == 'load_genexpr':
|
elif node[1] == 'load_genexpr':
|
||||||
@@ -1221,7 +1221,7 @@ class SourceWalker(GenericASTTraversal, object):
|
|||||||
self.preorder(ast[iter_index])
|
self.preorder(ast[iter_index])
|
||||||
self.prec = p
|
self.prec = p
|
||||||
|
|
||||||
def n_genexpr(self, node):
|
def n_generator_exp(self, node):
|
||||||
self.write('(')
|
self.write('(')
|
||||||
code_index = -6 if self.version > 3.2 else -5
|
code_index = -6 if self.version > 3.2 else -5
|
||||||
self.comprehension_walk(node, iter_index=3, code_index=code_index)
|
self.comprehension_walk(node, iter_index=3, code_index=code_index)
|
||||||
|
Reference in New Issue
Block a user