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

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

[elpa] externals/parser-generator 3807a72 237/434: Added failing unit te


From: ELPA Syncer
Subject: [elpa] externals/parser-generator 3807a72 237/434: Added failing unit test for LR-items k=2
Date: Mon, 29 Nov 2021 15:59:48 -0500 (EST)

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

    Added failing unit test for LR-items k=2
---
 parser-generator-lr.el           |  7 +++++--
 test/parser-generator-lr-test.el | 16 +++++++++++++---
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 275cc55..a050204 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -544,7 +544,10 @@
 (defun parser-generator-lr--items-for-goto (previous-lr-item x)
   "Calculate LR-items for GOTO(PREVIOUS-LR-ITEM, X)."
   (let ((lr-new-item)
-        (lr-item-exists (make-hash-table :test 'equal)))
+        (lr-item-exists (make-hash-table :test 'equal))
+        (eof-list (parser-generator--generate-list-of-symbol
+                     parser-generator--look-ahead-number
+                     parser-generator--eof-identifier)))
     (parser-generator--debug (message "x: %s" x))
 
     (dolist (lr-item previous-lr-item)
@@ -615,7 +618,7 @@
                        (parser-generator--first
                         lr-item-suffix-rest)))
                   (unless lr-item-suffix-rest-first
-                    (setq lr-item-suffix-rest-first (list nil)))
+                    (setq lr-item-suffix-rest-first (list eof-list)))
 
                   ;; TODO Verify this
                   (parser-generator--debug
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index e257b4d..524300d 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -418,9 +418,19 @@
     (parser-generator--debug
      (message
       "LR-items: %s"
-      (parser-generator--hash-values-to-list
-       lr-items
-       t)))
+      (parser-generator--hash-to-list
+      lr-items)))
+
+    (should
+     (equal
+      '(
+        (0 (((R) nil (a b T) ($ $))((R) nil (a b T) (a b))((S) nil (R) ($ 
$))((S) nil (R S) ($ $))((Sp) nil (S) ($ $))))
+        (1 (((R) (a) (b T) ($ $)) ((R) (a) (b T) (a b))))
+        (2 (((R) (a b) (T) ($ $)) ((R) (a b) (T) (a b)) ((T) nil (a T) ($ $)) 
((T) nil (a T) (a b)) ((T) nil (c) ($ $)) ((T) nil (c) (a b)) ((T) nil nil ($ 
$)) ((T) nil nil (a b)))))
+      (parser-generator--hash-to-list
+       lr-items)))
+    (message "Passed LR-items k = 2")
+
     (parser-generator--debug
      (message "GOTO-tables: %s"
               (parser-generator--hash-to-list



reply via email to

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