branch: externals/parser-generator commit 58548b8e10d06eded8cfcbe9be5c2204bbd197f6 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Passing test for LR-parse with k=2 again --- parser-generator.el | 12 ++++++++++-- test/parser-generator-lr-test.el | 11 +++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/parser-generator.el b/parser-generator.el index e709e6142b..f901b45077 100644 --- a/parser-generator.el +++ b/parser-generator.el @@ -1342,6 +1342,8 @@ (setq rhs-type 'E-IDENTIFIER)) ((parser-generator--valid-terminal-p rhs-element) (setq rhs-type 'TERMINAL)) + ((parser-generator--valid-eof-p rhs-element) + (setq rhs-type 'EOF)) (t (error (format "Invalid symbol %s!" rhs-element)))) (parser-generator--debug (message @@ -1476,7 +1478,9 @@ leading-symbols-count (1+ leading-symbols-count))) - ((equal rhs-type 'TERMINAL) + ((or + (equal rhs-type 'TERMINAL) + (equal rhs-type 'EOF)) (setq leading-symbols (append @@ -1638,9 +1642,13 @@ "expanded-lists after adding: %S" expanded-lists))))) - ;; if input symbol is a terminal or the e-identifier push it to each expanded list + ;; if input symbol is a terminal + ;; or the e-identifier + ;; or the eof-identifier + ;; push it to each expanded list ((or (parser-generator--valid-e-p input-symbol) + (parser-generator--valid-eof-p input-symbol) (parser-generator--valid-terminal-p input-symbol)) (parser-generator--debug (message diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el index 316b1b1f93..3ec3b50fa2 100644 --- a/test/parser-generator-lr-test.el +++ b/test/parser-generator-lr-test.el @@ -1281,7 +1281,6 @@ (message "Passed tests for (parser-generator-lr--parse)")) -;; TODO Make these pass again (defun parser-generator-lr-test-parse-k-2 () "Test `parser-generator-lr-parse' with k = 2." (message "Started tests for (parser-generator-lr-parse) k = 2") @@ -1486,19 +1485,18 @@ lr-items) (parser-generator--debug (message - "Action-tables k = 2: %s" + "Action-tables k = 2: %S" (parser-generator-lr--get-expanded-action-tables))) - (should (equal '( (0 (((a b) shift))) (1 ((($ $) reduce 2) ((a b) shift))) (2 ((($ $) accept))) - (3 (((b $) shift) ((b c) shift) ((b a) shift))) - (4 ((($ $) reduce 6) ((a b) reduce 6) ((a $) shift) ((a c) shift) ((a a) shift) ((c a) shift) ((c $) shift))) + (3 (((b c) shift) ((b a) shift) ((b $) shift))) + (4 ((($ $) reduce 6) ((a b) reduce 6) ((a c) shift) ((a a) shift) ((a $) shift) ((c a) shift) ((c $) shift))) (5 ((($ $) reduce 3) ((a b) reduce 3))) - (6 ((($ $) reduce 6) ((a b) reduce 6) ((a $) shift) ((a c) shift) ((a a) shift) ((c a) shift) ((c $) shift))) + (6 ((($ $) reduce 6) ((a b) reduce 6) ((a c) shift) ((a a) shift) ((a $) shift) ((c a) shift) ((c $) shift))) (7 ((($ $) reduce 5) ((a b) reduce 5))) (8 ((($ $) reduce 4) ((a b) reduce 4))) (9 ((($ $) reduce 1))) @@ -1611,6 +1609,7 @@ (message "Passed tests for (parser-generator-lr--parse-k-2)")) +;; TODO Make this pass again (defun parser-generator-lr-test-parse-k-0 () "Test `parser-generator-lr-parse' with k = 0." (message "Started tests for (parser-generator-lr-parse) k = 0")