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

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

[elpa] externals/parser-generator 6845262 243/434: Passed GOTO-tables k=


From: ELPA Syncer
Subject: [elpa] externals/parser-generator 6845262 243/434: Passed GOTO-tables k=2
Date: Mon, 29 Nov 2021 15:59:50 -0500 (EST)

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

    Passed GOTO-tables k=2
---
 test/parser-generator-lr-test.el | 190 ++++++++++++++++++++-------------------
 1 file changed, 97 insertions(+), 93 deletions(-)

diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index 1b35c2d..310ef17 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -421,62 +421,62 @@
       (parser-generator--hash-to-list
        lr-items)))
 
-;;     (1)
-;;     S' -> .S   [$$]  // Go to 10
-;;     S  -> .R   [$$]  // Go to 8
-;;     S  -> .RS  [$$]  // Go to 8
-;;     R  -> .abT [$$]  // Shift  on ab, go to (2)
-;;     R  -> .abT [ab]  // Shift  on ab, go to (2)
-
-;; (2)
-;;     R  -> a.bT [$$]  // Shift  on ba, bc, b$, go to (3)
-;;     R  -> a.bT [ab]  // Shift  on ba, bc,     go to (3)
-
-;; (3)
-;;     R  -> ab.T [$$] // Go to 7
-;;     R  -> ab.T [ab] // Go to 7
-;;     T  -> .aT  [$$] // Shift  on aa, ac, a$, go to (4)
-;;     T  -> .c   [$$] // Shift  on c$,         go to (5)
-;;     T  -> .    [$$] // Reduce on $$
-;;     T  -> .aT  [ab] // Shift  on aa, ac,     go to (4)
-;;     T  -> .c   [ab] // Shift  on ca,         go to (5)
-;;     T  -> .    [ab] // Reduce on ab
-
-;; (4)
-;;     T  -> a.T  [$$] // Go to 6
-;;     T  -> a.T  [ab] // Go to 6
-;;     T  -> .    [$$] // Reduce on $$
-;;     T  -> .aT  [$$] // Shift  on aa, ac, a$, go to (4)
-;;     T  -> .c   [$$] // Shift  on c$,         go to (5)
-;;     T  -> .    [ab] // Reduce on ab
-;;     T  -> .aT  [ab] // Shift  on aa, ac,     go to (4)
-;;     T  -> .c   [ab] // Shift  on ca,         go to (5)
-
-;; (5)
-;;     T  -> c.   [$$] // Reduce on $$
-;;     T  -> c.   [ab] // Reduce on ab
-
-;; (6)
-;;     T  -> aT.  [$$] // Reduce on $$ 
-;;     T  -> aT.  [ab] // Reduce on ab
-
-;; (7)
-;;     R  -> abT. [$$] // Reduce on $$
-;;     R  -> abT. [ab] // Reduce on ab
-
-;; (8)
-;;     S  -> R.   [$$] // Reduce on $$
-;;     S  -> R.S  [$$] // Go to 9
-;;     S  -> .RS  [$$] // Go to 8
-;;     S  -> .R   [$$] // Go to 8
-;;     R  -> .abT [$$] // Shift  on ab, go to (2)
-;;     R  -> .abT [ab] // Shift  on ab, go to (2)
-
-;; (9)
-;;     S  -> RS.  [$$] // Reduce on $$
-
-;; (10)
-;;     S' -> S.   [$$] // Accept on $$
+    ;;     (1)
+    ;;     S' -> .S   [$$]  // Go to 10
+    ;;     S  -> .R   [$$]  // Go to 8
+    ;;     S  -> .RS  [$$]  // Go to 8
+    ;;     R  -> .abT [$$]  // Shift  on ab, go to (2)
+    ;;     R  -> .abT [ab]  // Shift  on ab, go to (2)
+
+    ;; (2)
+    ;;     R  -> a.bT [$$]  // Shift  on ba, bc, b$, go to (3)
+    ;;     R  -> a.bT [ab]  // Shift  on ba, bc,     go to (3)
+
+    ;; (3)
+    ;;     R  -> ab.T [$$] // Go to 7
+    ;;     R  -> ab.T [ab] // Go to 7
+    ;;     T  -> .aT  [$$] // Shift  on aa, ac, a$, go to (4)
+    ;;     T  -> .c   [$$] // Shift  on c$,         go to (5)
+    ;;     T  -> .    [$$] // Reduce on $$
+    ;;     T  -> .aT  [ab] // Shift  on aa, ac,     go to (4)
+    ;;     T  -> .c   [ab] // Shift  on ca,         go to (5)
+    ;;     T  -> .    [ab] // Reduce on ab
+
+    ;; (4)
+    ;;     T  -> a.T  [$$] // Go to 6
+    ;;     T  -> a.T  [ab] // Go to 6
+    ;;     T  -> .    [$$] // Reduce on $$
+    ;;     T  -> .aT  [$$] // Shift  on aa, ac, a$, go to (4)
+    ;;     T  -> .c   [$$] // Shift  on c$,         go to (5)
+    ;;     T  -> .    [ab] // Reduce on ab
+    ;;     T  -> .aT  [ab] // Shift  on aa, ac,     go to (4)
+    ;;     T  -> .c   [ab] // Shift  on ca,         go to (5)
+
+    ;; (5)
+    ;;     T  -> c.   [$$] // Reduce on $$
+    ;;     T  -> c.   [ab] // Reduce on ab
+
+    ;; (6)
+    ;;     T  -> aT.  [$$] // Reduce on $$ 
+    ;;     T  -> aT.  [ab] // Reduce on ab
+
+    ;; (7)
+    ;;     R  -> abT. [$$] // Reduce on $$
+    ;;     R  -> abT. [ab] // Reduce on ab
+
+    ;; (8)
+    ;;     S  -> R.   [$$] // Reduce on $$
+    ;;     S  -> R.S  [$$] // Go to 9
+    ;;     S  -> .RS  [$$] // Go to 8
+    ;;     S  -> .R   [$$] // Go to 8
+    ;;     R  -> .abT [$$] // Shift  on ab, go to (2)
+    ;;     R  -> .abT [ab] // Shift  on ab, go to (2)
+
+    ;; (9)
+    ;;     S  -> RS.  [$$] // Reduce on $$
+
+    ;; (10)
+    ;;     S' -> S.   [$$] // Accept on $$
 
     (should
      (equal
@@ -538,51 +538,55 @@
     (message "Passed LR-items k = 2")
 
     (parser-generator--debug
-     (message "GOTO-tables: %s"
+     (message "GOTO-tables k = 2: %s"
               (parser-generator--hash-to-list
                parser-generator-lr--goto-tables
                t)))
 
+    ;; state |  a  |  b  |  c  |  $  |  S  |  R  |  T
+    ;; -------+-----+-----+-----+-----+-----+-----+-----
+    ;;    1   |  2  |     |     |     |  10 |  8  |
+    ;; -------+-----+-----+-----+-----+-----+-----+-----
+    ;;    2   |     |  3  |     |     |     |     |
+    ;; -------+-----+-----+-----+-----+-----+-----+-----
+    ;;    3   |  4  |     |  5  |     |     |     |  7
+    ;; -------+-----+-----+-----+-----+-----+-----+-----
+    ;;    4   |  4  |     |  5  |     |     |     |  6
+    ;; -------+-----+-----+-----+-----+-----+-----+-----
+    ;;    5   |     |     |     |     |     |     |
+    ;; -------+-----+-----+-----+-----+-----+-----+-----
+    ;;    6   |     |     |     |     |     |     |
+    ;; -------+-----+-----+-----+-----+-----+-----+-----
+    ;;    7   |     |     |     |     |     |     |
+    ;; -------+-----+-----+-----+-----+-----+-----+-----
+    ;;    8   |  2  |     |     |     |  9  |  8  |
+    ;; -------+-----+-----+-----+-----+-----+-----+-----
+    ;;    9   |     |     |     |     |     |     |
+    ;; -------+-----+-----+-----+-----+-----+-----+-----
+    ;;    10  |     |     |     |     |     |     |
+
     (should
-      (equal
-       '((0 ((R 2) (S 1) (a 3)))
-         (1 nil)
-         (2 ((R 10) (S 9) (a 11)))
-         (3 ((b 4)))
-         (4 ((T 5) (a 6) (c 7)))
-         (5 nil)
-         (6 ((T 8) (a 6) (c 7)))
-         (7 nil)
-         (8 nil)
-         (9 nil)
-         (10 ((R 10) (S 14) (a 11)))
-         (11 ((b 12)))
-         (12 ((T 13) (a 6) (c 7)))
-         (13 nil)
-         (14 nil))
-       (parser-generator--hash-to-list
-        parser-generator-lr--goto-tables)))
+     (equal
+      '((0 ((R 1) (S 2) (a 3)))
+        (1 ((R 1) (S 9) (a 3)))
+        (2 nil)
+        (3 ((b 4)))
+        (4 ((T 5) (a 6) (c 7)))
+        (5 nil)
+        (6 ((T 8) (a 6) (c 7)))
+        (7 nil)
+        (8 nil)
+        (9 nil))
+      (parser-generator--hash-to-list
+       parser-generator-lr--goto-tables)))
     (message "Passed GOTO-tables k = 2")
 
-    ;; TODO Validate lr-items here
-
-    ;; (should
-    ;;  (equal
-    ;;   '((0 (((S) nil (S "a" S "b") ("a" e)) ((S) nil (S "a" S "b") ("a" 
"a")) ((S) nil (S "a" S "b") (e e)) ((S) nil nil ("a" e)) ((S) nil nil ("a" 
"a")) ((S) nil nil (e e)) ((Sp) nil (S) (e e))))
-    ;;     (1 (((S) (S) ("a" S "b") ("a" "a")) ((S) (S) ("a" S "b") ("a" e)) 
((S) (S) ("a" S "b") (e e)) ((Sp) (S) nil (e e))))
-    ;;     (2 (((S) (S "a") (S "b") ("a" e)) ((S) (S "a") (S "b") ("a" "a")) 
((S) (S "a") (S "b") (e e)) ((S) nil (S "a" S "b") ("a" e)) ((S) nil (S "a" S 
"b") ("a" "a")) ((S) nil (S "a" S "b") ("b" e)) ((S) nil nil ("a" e)) ((S) nil 
nil ("a" "a")) ((S) nil nil ("b" e))))
-    ;;     (3 (((S) (S) ("a" S "b") ("a" "a")) ((S) (S) ("a" S "b") ("a" e)) 
((S) (S) ("a" S "b") ("b" e)) ((S) (S "a" S) ("b") ("a" "a")) ((S) (S "a" S) 
("b") ("a" e)) ((S) (S "a" S) ("b") (e e))))
-    ;;     (4 (((S) (S "a") (S "b") ("a" e)) ((S) (S "a") (S "b") ("a" "a")) 
((S) (S "a") (S "b") ("b" e)) ((S) nil (S "a" S "b") ("a" e)) ((S) nil (S "a" S 
"b") ("a" "a")) ((S) nil (S "a" S "b") ("b" e)) ((S) nil nil ("a" e)) ((S) nil 
nil ("a" "a")) ((S) nil nil ("b" e))))
-    ;;     (5 (((S) (S "a" S "b") nil ("a" e)) ((S) (S "a" S "b") nil ("a" 
"a")) ((S) (S "a" S "b") nil (e e))))
-    ;;     (6 (((S) (S) ("a" S "b") ("a" "a")) ((S) (S) ("a" S "b") ("a" e)) 
((S) (S) ("a" S "b") ("b" e)) ((S) (S "a" S) ("b") ("a" "a")) ((S) (S "a" S) 
("b") ("a" e)) ((S) (S "a" S) ("b") ("b" e))))
-    ;;     (7 (((S) (S "a" S "b") nil ("a" e)) ((S) (S "a" S "b") nil ("a" 
"a")) ((S) (S "a" S "b") nil ("b" e)))))
-    ;;   (parser-generator--hash-to-list
-    ;;    lr-items)))
-    ;; (message "Passed LR-items k = 2")
-
-    (parser-generator-lr--generate-action-tables lr-items)
+    (parser-generator-lr--generate-action-tables
+     lr-items)
     (parser-generator--debug
-     (message "action-tables: %s" (parser-generator--hash-values-to-list 
parser-generator-lr--action-tables t)))
+     (message
+      "Action-tables k = 2: %s"
+      (parser-generator--hash-values-to-list 
parser-generator-lr--action-tables t)))
 
     ;; TODO Validate action-table here, should be able to reduce at look-ahead 
("a" "b") as well
 



reply via email to

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