[pypy-svn] r44027 - pypy/dist/pypy/lang/prolog/interpreter

cfbolz at codespeak.net cfbolz at codespeak.net
Mon Jun 4 16:41:33 CEST 2007


Author: cfbolz
Date: Mon Jun  4 16:41:32 2007
New Revision: 44027

Modified:
   pypy/dist/pypy/lang/prolog/interpreter/parsing.py
Log:
rewrite very strange code used for parsing lists


Modified: pypy/dist/pypy/lang/prolog/interpreter/parsing.py
==============================================================================
--- pypy/dist/pypy/lang/prolog/interpreter/parsing.py	(original)
+++ pypy/dist/pypy/lang/prolog/interpreter/parsing.py	Mon Jun  4 16:41:32 2007
@@ -323,16 +323,21 @@
         return Term(name, children)
 
     def build_list(self, node):
+        result = []
+        while node is not None:
+            node = self._build_list(node, result)
+        return result
+
+    def _build_list(self, node, result):
         node = self.find_first_interesting(node)
         if isinstance(node, Nonterminal):
             child = node.children[1]
             if (isinstance(child, Symbol) and
                 node.children[1].additional_info == ","):
                 element = self.visit(node.children[0])
-                l = self.build_list(node.children[2])
-                l.insert(0, element)
-                return l
-        return [self.visit(node)]
+                result.append(element)
+                return node.children[2]
+        result.append(self.visit(node))
 
     def find_first_interesting(self, node):
         if isinstance(node, Nonterminal) and len(node.children) == 1:


More information about the pypy-svn mailing list