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

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

[elpa] externals/parser-generator fce14ea 355/434: Fixed bug with contex


From: ELPA Syncer
Subject: [elpa] externals/parser-generator fce14ea 355/434: Fixed bug with context-sensitive attributes being lost in LR-item generation
Date: Mon, 29 Nov 2021 16:00:14 -0500 (EST)

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

    Fixed bug with context-sensitive attributes being lost in LR-item generation
---
 parser-generator-lr.el           | 16 ++++++++++++++--
 parser-generator.el              |  2 +-
 test/parser-generator-lr-test.el |  3 ++-
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index c2543b6..b84b914 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -1326,6 +1326,7 @@
             (lr-item-suffix (nth 2 lr-item))
             (lr-item-look-ahead (nth 3 lr-item))
             (lr-item-suffix-first)
+            (lr-item-suffix-first-wo-attributes)
             (lr-item-suffix-rest))
         (setq
          lr-item-suffix-first
@@ -1334,25 +1335,36 @@
          lr-item-suffix-rest
          (cdr lr-item-suffix))
 
+        ;; Remove potential attributes from symbol for comparison
+        (if
+            (listp lr-item-suffix-first)
+            (setq
+             lr-item-suffix-first-wo-attributes
+             (car lr-item-suffix-first))
+          (setq
+           lr-item-suffix-first-wo-attributes
+           lr-item-suffix-first))
+
         (parser-generator--debug
          (message "lr-item: %s" lr-item)
          (message "lr-item-prefix: %s" lr-item-prefix)
          (message "lr-item-suffix: %s" lr-item-suffix)
          (message "lr-item-suffix-first: %s" lr-item-suffix-first)
+         (message "lr-item-suffix-first-wo-attributes: %s" 
lr-item-suffix-first-wo-attributes)
          (message "lr-item-suffix-rest: %s" lr-item-suffix-rest)
          (message "lr-item-look-ahead: %s" lr-item-look-ahead))
 
         ;; (a) If [A -> a . XiB, u] is in V(X1,...,Xi-1)
         (when
             (equal
-              lr-item-suffix-first
+              lr-item-suffix-first-wo-attributes
              x)
 
           ;; Add [A -> aXi . B, u] to V(X1,...,Xi)
           (let ((combined-prefix
                  (append
                   lr-item-prefix
-                  (list x))))
+                  (list lr-item-suffix-first))))
             (let ((lr-new-item-1))
               (if
                   (=
diff --git a/parser-generator.el b/parser-generator.el
index e75424f..befa2ca 100644
--- a/parser-generator.el
+++ b/parser-generator.el
@@ -17,7 +17,7 @@
 
 (defvar
   parser-generator--debug
-  nil
+  t
   "Whether to print debug messages or not.")
 
 (defvar
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index 928f9f4..c29132a 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -179,7 +179,8 @@
         (3 ((($) accept)))
         (4 (((b) shift)))
         (5 (((c) shift)))
-        (6 ((($) reduce 1))))
+        (6 ((($) reduce 4)))
+        (7 ((($) reduce 1))))
       (parser-generator-lr--get-expanded-action-tables))))
 
   (message "Passed tests for (parser-generator-lr--generate-action-tables)"))



reply via email to

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