Merge branch 'python-3.3-to-3.5' into python-3.0-to-3.2

This commit is contained in:
rocky
2022-11-05 00:28:40 -04:00

View File

@@ -32,6 +32,7 @@ from uncompyle6.semantics.helper import (
flatten_list, flatten_list,
) )
class NonterminalActions: class NonterminalActions:
""" """
Methods here all start with n_ and the remaining portion should be a nonterminal Methods here all start with n_ and the remaining portion should be a nonterminal
@@ -43,6 +44,12 @@ class NonterminalActions:
node is the subtree of the parse tree the that nonterminal name as the root. node is the subtree of the parse tree the that nonterminal name as the root.
""" """
def __init__(self):
# Precedence is used to determine when an expression needs
# parenthesis surrounding it. A high value indicates no
# parenthesis are needed.
self.prec = 1000
def n_alias(self, node): def n_alias(self, node):
if self.version <= (2, 1): if self.version <= (2, 1):
if len(node) == 2: if len(node) == 2:
@@ -65,6 +72,7 @@ class NonterminalActions:
else: else:
self.write(iname, " as ", sname) self.write(iname, " as ", sname)
self.prune() # stop recursing self.prune() # stop recursing
n_alias37 = n_alias n_alias37 = n_alias
def n_assign(self, node): def n_assign(self, node):
@@ -123,7 +131,6 @@ class NonterminalActions:
self.prec = p self.prec = p
self.prune() # stop recursing self.prune() # stop recursing
def n_build_slice3(self, node): def n_build_slice3(self, node):
p = self.prec p = self.prec
self.prec = 100 self.prec = 100
@@ -1055,7 +1062,7 @@ class NonterminalActions:
else: else:
self.n_expr(node) self.n_expr(node)
# Python 3.x can have be dead code as a result of its optimization? # Python 3.x can have dead code as a result of its optimization?
# So we'll add a # at the end of the return lambda so the rest is ignored # So we'll add a # at the end of the return lambda so the rest is ignored
def n_return_expr_lambda(self, node): def n_return_expr_lambda(self, node):
if 1 <= len(node) <= 2: if 1 <= len(node) <= 2:
@@ -1195,7 +1202,7 @@ class NonterminalActions:
self.write("...") self.write("...")
elif attr is None: elif attr is None:
# LOAD_CONST 'None' only occurs, when None is # LOAD_CONST 'None' only occurs, when None is
# implicit eg. in 'return' w/o params # implicit e.g. in 'return' w/o params
# pass # pass
self.write("None") self.write("None")
elif isinstance(data, tuple): elif isinstance(data, tuple):