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

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

[elpa] externals/parser-generator fe05328 250/434: Passed unit tests for


From: ELPA Syncer
Subject: [elpa] externals/parser-generator fe05328 250/434: Passed unit tests for LRk parser k=2
Date: Mon, 29 Nov 2021 15:59:51 -0500 (EST)

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

    Passed unit tests for LRk parser k=2
---
 parser-generator-lr.el | 51 +++++++++++++++++++++++++++++++++++++-------------
 parser-generator.el    |  2 +-
 2 files changed, 39 insertions(+), 14 deletions(-)

diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 7cc030e..09732a4 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -90,32 +90,57 @@
                                   ;; in that case save in action table a shift 
action here
                                   (let ((eff-index 0)
                                         (eff-item)
-                                        (eff-length (length eff))
-                                        (searching-match t))
-                                    (while (and
-                                            searching-match
-                                            (< eff-index eff-length))
+                                        (eff-length (length eff)))
+                                    (while (< eff-index eff-length)
                                       (setq
                                        eff-item
                                        (parser-generator--first-to-lookahead
                                         (nth eff-index eff)))
+                                      (parser-generator--debug
+                                       (message
+                                        "eff-item: %s"
+                                        eff-item
+                                        ))
                                       (if
                                           (parser-generator--valid-look-ahead-p
                                            eff-item)
                                           (let ((hash-key
                                                  (format "%s-%s-%s" goto-index 
state eff-item)))
-                                            (unless (gethash hash-key 
added-actions)
-                                              (puthash hash-key t 
added-actions)
-                                              (setq searching-match nil)))
+                                            (parser-generator--debug
+                                             (message
+                                              "Valid look-ahead: %s"
+                                              eff-item
+                                              ))
+                                            (if (gethash hash-key 
added-actions)
+                                                (parser-generator--debug
+                                                 (message
+                                                  "Duplicate action: %s"
+                                                  hash-key
+                                                  ))
+                                              (parser-generator--debug
+                                               (message
+                                                "New action: %s"
+                                                hash-key
+                                                ))
+                                              (puthash
+                                               hash-key
+                                               t
+                                               added-actions)
+                                              (push
+                                               (list
+                                                eff-item
+                                                'shift
+                                                )
+                                               action-table)
+                                              (setq
+                                               found-action
+                                               t)
+                                              ))
                                         (parser-generator--debug
                                          (message
                                           "Not valid look-ahead: %s"
                                           eff-item)))
-                                      (setq eff-index (1+ eff-index)))
-
-                                    (unless searching-match
-                                      (push (list eff-item 'shift) 
action-table)
-                                      (setq found-action t)))
+                                      (setq eff-index (1+ eff-index))))
                                 (parser-generator--debug
                                  (message "E-FREE-FIRST is empty for %s" 
Cv)))))))))
 
diff --git a/parser-generator.el b/parser-generator.el
index 9ab4716..b400336 100644
--- a/parser-generator.el
+++ b/parser-generator.el
@@ -11,7 +11,7 @@
 
 
 (defvar parser-generator--debug
-  t
+  nil
   "Whether to print debug messages or not.")
 
 (defvar parser-generator--e-identifier



reply via email to

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