emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/parser-generator e1f3fb4042 18/29: More work on FIRST


From: Christian Johansson
Subject: [elpa] externals/parser-generator e1f3fb4042 18/29: More work on FIRST
Date: Sat, 12 Feb 2022 02:24:44 -0500 (EST)

branch: externals/parser-generator
commit e1f3fb404272168b72ad67586d1b2ff633a55126
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>

    More work on FIRST
---
 parser-generator.el           | 12 ++++++++++--
 test/parser-generator-test.el |  2 +-
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/parser-generator.el b/parser-generator.el
index a1ae0b8114..876cd44f5e 100644
--- a/parser-generator.el
+++ b/parser-generator.el
@@ -1346,13 +1346,15 @@
           (let ((leading-terminals-count
                  (length leading-terminals))
                 (leading-symbols-count
-                 (length leading-symbols)))
+                 (length leading-symbols))
+                (keep-iterating t))
             (parser-generator--debug
              (message
               "leading-terminals-count: %s"
               leading-terminals-count))
 
             (while (and
+                    keep-iterating
                     (< input-tape-index input-tape-length)
                     (< leading-terminals-count k))
               (let ((rhs-element (nth input-tape-index input-tape))
@@ -1416,6 +1418,9 @@
                            (list rhs-element))
                           (setq
                            expanded-all
+                           nil)
+                          (setq
+                           keep-iterating
                            nil))
 
                         (if sub-terminal-sets
@@ -1531,7 +1536,10 @@
                      nil)
                     (setq
                      unexpanded-non-terminal
-                     (list rhs-element))))
+                     (list rhs-element))
+                    (setq
+                     keep-iterating
+                     nil)))
 
                  ((equal rhs-type 'E-IDENTIFIER)
                   (setq
diff --git a/test/parser-generator-test.el b/test/parser-generator-test.el
index 5713e0b557..aded3527c5 100644
--- a/test/parser-generator-test.el
+++ b/test/parser-generator-test.el
@@ -202,7 +202,7 @@
   (parser-generator--generate-f-sets)
   (should
    (equal
-    '(t ((e a)))
+    '(t ((e a) (e)))
     (gethash
      (list 'S)
      parser-generator--f-sets)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]