[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
- [elpa] externals/parser-generator 13d76ae 207/434: Passed tests for generating list permutations of length k, (continued)
- [elpa] externals/parser-generator 13d76ae 207/434: Passed tests for generating list permutations of length k, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 06f8d37 211/434: More work on debugging LRk parser with k > 1, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 069bf34 209/434: Added test for new helper function list of symbol, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c8c130e 226/434: Improved error messages, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 80f99cf 241/434: Added failing unit test for lr-items set k=2, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 5032a77 233/434: Fixed typo in Lex Analyzer error, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 07320b9 249/434: Updated test-case k=2, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d49f74f 244/434: Added failing test for action-tables LRk parser k=2, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator fe05328 250/434: Passed unit tests for LRk parser k=2, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d1f4682 248/434: Added a function that converts a FIRST-item to a look-ahead item, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 6845262 243/434: Passed GOTO-tables k=2,
ELPA Syncer <=
- [elpa] externals/parser-generator 3a0d4cd 255/434: Added translation test for LRk=2, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 03ca2e9 247/434: Look-ahead generation now supports EOF symbol, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3563720 266/434: Updated docs about lexical analysis, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 412fd2a 273/434: Passing generation of GOTO-table for LR(0) grammar, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator bc23604 274/434: Fixed look-ahead, first and e-free-first with k = 0, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1879cb0 271/434: Merge branch 'master' of git.cvj.se:/home/git/emacs-parser-generator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 16bb2d8 262/434: Added translation example LRk parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d173c1e 281/434: More work on exporting parser as code function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator bd887ff 277/434: LR(0) Parser passing translation test, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 852f969 283/434: Merge branch 'master' of git.cvj.se:/home/git/emacs-parser-generator, ELPA Syncer, 2021/11/29