[pypy-commit] pypy pyparser-improvements-3: yet a slightly different interface to fix the parser module

cfbolz pypy.commits at gmail.com
Tue Jun 5 17:32:37 EDT 2018


Author: Carl Friedrich Bolz-Tereick <cfbolz at gmx.de>
Branch: pyparser-improvements-3
Changeset: r94726:c6dd81b203df
Date: 2018-06-05 23:12 +0200
http://bitbucket.org/pypy/pypy/changeset/c6dd81b203df/

Log:	yet a slightly different interface to fix the parser module

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
@@ -138,11 +138,16 @@
 
 class Terminal(Node):
     __slots__ = ("value", "lineno", "column")
-    def __init__(self, token):
-        Node.__init__(self, token.token_type)
-        self.value = token.value
-        self.lineno = token.lineno
-        self.column = token.column
+    def __init__(self, type, value, lineno, column):
+        Node.__init__(self, type)
+        self.value = value
+        self.lineno = lineno
+        self.column = column
+
+    @staticmethod
+    def fromtoken(token):
+        return Terminal(
+            token.token_type, token.value, token.lineno, token.column)
 
     def __repr__(self):
         return "Terminal(type=%s, value=%r)" % (self.type, self.value)
@@ -335,7 +340,7 @@
 
     def shift(self, next_state, token):
         """Shift a non-terminal and prepare for the next state."""
-        new_node = Terminal(token)
+        new_node = Terminal.fromtoken(token)
         self.stack.node_append_child(new_node)
         self.stack.state = next_state
 
diff --git a/pypy/interpreter/pyparser/test/test_parser.py b/pypy/interpreter/pyparser/test/test_parser.py
--- a/pypy/interpreter/pyparser/test/test_parser.py
+++ b/pypy/interpreter/pyparser/test/test_parser.py
@@ -58,7 +58,7 @@
                 value = "\n"
             else:
                 value = ""
-            n = parser.Terminal(parser.Token(tp, value, 0, 0, ''))
+            n = parser.Terminal(tp, value, 0, 0)
         else:
             tp = gram.symbol_ids[data[0]]
             n = parser.Nonterminal(tp)


More information about the pypy-commit mailing list