branch: externals/parser-generator commit 0b727924ff1bb21ff1d6bff1c5ddaacd2b65c1a0 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Added failing unit tests for FIRST --- parser-generator.el | 2 +- test/parser-generator-test.el | 23 +++++++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/parser-generator.el b/parser-generator.el index 020d604..138bd59 100644 --- a/parser-generator.el +++ b/parser-generator.el @@ -632,7 +632,7 @@ (parser-generator--debug (message "Generated F-sets"))))) -;; p. 358 +;; p. 357 (defun parser-generator--f-set (input-tape state stack) "A deterministic push-down transducer (DPDT) for building F-sets from INPUT-TAPE, STATE and STACK." (unless (listp input-tape) diff --git a/test/parser-generator-test.el b/test/parser-generator-test.el index ec13ce4..943606d 100644 --- a/test/parser-generator-test.el +++ b/test/parser-generator-test.el @@ -296,14 +296,33 @@ (parser-generator--first 'S))) (message "Passed first 3 with complex grammar") + (parser-generator-set-grammar '((Sp S) (a b) ((Sp S) (S (S a S b) e)) Sp)) + (parser-generator-set-look-ahead-number 1) + (parser-generator-process-grammar) + (should + (equal + '((a) (e)) + (parser-generator--first 'S))) + (message "Passed first 4 with complex grammar with starting e-identifier variant 1") + + + (parser-generator-set-grammar '((Sp S) (a b) ((Sp S) (S (S a S b) e)) Sp)) + (parser-generator-set-look-ahead-number 2) + (parser-generator-process-grammar) + (should + (equal + '((a) (a a) (a b) (e)) + (parser-generator--first 'S))) + (message "Passed first 5 with complex grammar with starting e-identifier variant 1") + (parser-generator-set-grammar '((Sp S) (a b) ((Sp S) (S (S a S b)) (S e)) Sp)) (parser-generator-set-look-ahead-number 2) (parser-generator-process-grammar) (should (equal - '((a a) (a e) (e)) + '((a) (a a) (a b) (e)) (parser-generator--first 'S))) - (message "Passed first 4 with complex grammar with starting e-identifier") + (message "Passed first 6 with complex grammar with starting e-identifier variant 2") (message "Passed tests for (parser-generator--first)"))