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

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

[elpa] externals/parser-generator 0304b78 092/434: Added a unit-test to


From: ELPA Syncer
Subject: [elpa] externals/parser-generator 0304b78 092/434: Added a unit-test to invalidate LR-items
Date: Mon, 29 Nov 2021 15:59:15 -0500 (EST)

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

    Added a unit-test to invalidate LR-items
---
 parser.el           | 11 +++++++----
 test/parser-test.el |  8 +++++++-
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/parser.el b/parser.el
index 9644ad2..93dee01 100644
--- a/parser.el
+++ b/parser.el
@@ -774,8 +774,11 @@
 
           (setq goto-table-table (sort goto-table-table 'parser--sort-list))
           (push `(,lr-item-set-index ,goto-table-table) goto-table)))
-      (setq parser--goto-table (sort goto-table 'parser--sort-list))))
-
+      (setq parser--goto-table (sort goto-table 'parser--sort-list)))
+    (unless
+        (parser--lr-items-valid-p
+         (parser--hash-values-to-list parser--table-lr-items t))
+      (error "Inconsistent grammar!")))
   t)
 
 ;; Algorithm 5.10, p. 391
@@ -847,9 +850,9 @@
                (message "b-suffix-follow-eff: %s" b-suffix-follow-eff))
 
               (dolist (b-suffix-follow-eff-item b-suffix-follow-eff)
-                (when (equal a-look-ahead b-suffix-follow-eff-item)
+                (when (equal a-follow b-suffix-follow-eff-item)
                   (parser--debug
-                   (message "Inconsistent grammar!"))
+                   (message "Inconsistent grammar! %s conflicts with %s" a b))
                   (setq valid-p nil))))
             (setq b-index (1+ b-index))))
         (setq a-index (1+ a-index)))
diff --git a/test/parser-test.el b/test/parser-test.el
index 7e662ad..c8fdfed 100644
--- a/test/parser-test.el
+++ b/test/parser-test.el
@@ -479,7 +479,13 @@
     t
     (parser--lr-items-valid-p (parser--hash-values-to-list 
parser--table-lr-items t))))
 
-  ;; TODO Figure out a grammar here that should be inconsistent
+  (message "Passed first")
+
+  (should
+   (equal
+    nil
+    (parser--lr-items-valid-p
+     '(((S nil (S a S b) (a)) (S nil (S a S b) (e)) (S nil nil (a)) (S nil nil 
(e)) (Sp nil (S) (e))) ((S (S) (a S b) (a)) (S (S) (a S b) (e)) (Sp (S) nil 
(e))) ((S (S a) (S b) (a)) (S (S a) (S b) (e)) (S nil (S a S b) (a)) (S nil (S 
a S b) (b)) (S nil nil (a)) (S nil nil (b))) ((S (S) (a S b) (a)) (S (S) (a S 
b) (b)) (S (S a S) (b) (a)) (S (S a S) (b) (e))) ((S (S a S b) nil (a)) (S (S a 
S b) (a) (a)) (S (S a S b) nil (e))) ((S (S a) (S b) (a)) (S (S a) (S b) (b)) 
(S nil (S a S b) (a))  [...]
 
   (message "Passed tests for (parser--lr-items-valid-p)"))
 



reply via email to

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