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

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

[elpa] externals/parser-generator 6f524ed 108/434: Various stuff


From: ELPA Syncer
Subject: [elpa] externals/parser-generator 6f524ed 108/434: Various stuff
Date: Mon, 29 Nov 2021 15:59:19 -0500 (EST)

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

    Various stuff
---
 parser-lr.el | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/parser-lr.el b/parser-lr.el
index 87fb667..ed1f8dd 100644
--- a/parser-lr.el
+++ b/parser-lr.el
@@ -56,8 +56,11 @@
               ;; Where u is in (T U e)*k
               (dolist (state states)
                 (let ((lr-item)
-                      (lr-item-index 0))
-                  (while (< lr-item-index lr-items-length)
+                      (lr-item-index 0)
+                      (continue-loop t))
+                  (while (and
+                          (< lr-item-index lr-items-length)
+                          continue-loop)
                     (setq lr-item (nth lr-item-index lr-items))
                     ;; (message "lr-item: %s" lr-item)
                     (cond
@@ -102,6 +105,7 @@
                      ((eq state 'reduce)
                       ;; (b) f(u) = reduce i if [A -> B ., u] is in a and A -> 
B is production i in P, i > 1
                       (when (and
+                             (nth 0 lr-item)
                              (nth 1 lr-item)
                              (not (nth 2 lr-item)))
                         (let ((u (nth 3 lr-item)))
@@ -129,14 +133,16 @@
                             (puthash hash-key t added-actions)
                             ;; TODO Save in action table accept action for e
                             (push (list (parser--e-identifier) 'accept) 
action-table)
-                            (setq found-action t)))))
+                            (setq found-action t)
+                            (setq continue-loop nil)))))
 
                      ((eq state 'error)
                       (unless found-action
                         (message "%s -> 'error" lr-item)
                         ;; TODO Save error action here?
                         ;; TODO (d) f(u) = error otherwise
-                        ))
+                        )
+                      (setq continue-loop nil))
 
                      )
                     (setq lr-item-index (1+ lr-item-index)))))))



reply via email to

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