[pypy-commit] pypy pyparser-improvements: Nonterminal again always has children
cfbolz
pypy.commits at gmail.com
Mon Mar 12 12:52:48 EDT 2018
Author: Carl Friedrich Bolz-Tereick <cfbolz at gmx.de>
Branch: pyparser-improvements
Changeset: r93978:8cafe63e849a
Date: 2018-03-12 17:09 +0100
http://bitbucket.org/pypy/pypy/changeset/8cafe63e849a/
Log: Nonterminal again always has children
diff --git a/pypy/interpreter/pyparser/parser.py b/pypy/interpreter/pyparser/parser.py
--- a/pypy/interpreter/pyparser/parser.py
+++ b/pypy/interpreter/pyparser/parser.py
@@ -133,9 +133,11 @@
class Nonterminal(AbstractNonterminal):
__slots__ = ("_children", )
- def __init__(self, type):
+ def __init__(self, type, children=None):
Node.__init__(self, type)
- self._children = None
+ if children is None:
+ children = []
+ self._children = children
def __repr__(self):
return "Nonterminal(type=%s, children=%r)" % (self.type, self._children)
@@ -145,15 +147,10 @@
return self._children[i]
def num_children(self):
- if self._children is None:
- return 0
return len(self._children)
def append_child(self, child):
- if self._children is None:
- self._children = [child]
- else:
- self._children.append(child)
+ self._children.append(child)
class Nonterminal1(AbstractNonterminal):
@@ -211,8 +208,8 @@
if node is None:
self.node = Nonterminal1(self.dfa.symbol_id, child)
elif isinstance(node, Nonterminal1):
- self.node = Nonterminal(self.dfa.symbol_id)
- self.node._children = [node._child, child]
+ newnode = self.node = Nonterminal(
+ self.dfa.symbol_id, [node._child, child])
else:
self.node.append_child(child)
More information about the pypy-commit
mailing list