[pypy-svn] r13193 - pypy/branch/pycompiler/module/recparser

adim at codespeak.net adim at codespeak.net
Wed Jun 8 18:51:10 CEST 2005


Author: adim
Date: Wed Jun  8 18:51:09 2005
New Revision: 13193

Modified:
   pypy/branch/pycompiler/module/recparser/grammar.py
Log:
fixed tiny bug in lookahead algorithm

Modified: pypy/branch/pycompiler/module/recparser/grammar.py
==============================================================================
--- pypy/branch/pycompiler/module/recparser/grammar.py	(original)
+++ pypy/branch/pycompiler/module/recparser/grammar.py	Wed Jun  8 18:51:09 2005
@@ -69,6 +69,7 @@
             if new_size != size:
                 changed = True
     for r in rules:
+        assert len(r.first_set) > 0, "Error: ot Empty firstset for %s" % r
         r.reorder_rule()
 
 
@@ -165,7 +166,8 @@
             return self._match(source, builder, level)
         
         token = source.peek()
-        pos1 = source.get_pos()
+        if self._trace:
+            pos1 = source.get_pos()
         in_first_set = self.match_first_set(token)
         if not in_first_set: # and not EmptyToken in self.first_set:
             if EmptyToken in self.first_set:
@@ -395,8 +397,11 @@
             LAH(S) = LAH(A)
         """
         for rule in self.args:
+            if not rule.first_set:
+                break
             if EmptyToken in self.first_set:
                 self.first_set.remove( EmptyToken )
+
                 # del self.first_set[EmptyToken]
             # while we're in this loop, keep agregating possible tokens
             for t in rule.first_set:



More information about the Pypy-commit mailing list