branch: externals/parser-generator commit 62f54f1c9df42925235a0c80108dadac5f5edd02 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Added failing unit test for e-free-first function --- parser.el | 16 +++++++++------- test/parser-test.el | 9 +++++++++ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/parser.el b/parser.el index f025db9..0121699 100644 --- a/parser.el +++ b/parser.el @@ -665,11 +665,13 @@ (let ((i-max (length productions))) ;; Generate F-sets only once per grammar - (unless (or - (and (not disallow-e-first) - parser--f-sets) - (and disallow-e-first - parser--f-free-sets)) + (when (or + (and + (not disallow-e-first) + (not parser--f-sets)) + (and + disallow-e-first + (not parser--f-free-sets))) (let ((f-sets (make-hash-table :test 'equal)) (i 0)) (while (< i i-max) @@ -706,8 +708,8 @@ (puthash i f-set f-sets) (setq i (+ i 1)))) (if disallow-e-first - (setq parser--f-free-sets f-sets)) - (setq parser--f-sets f-sets))) + (setq parser--f-free-sets f-sets) + (setq parser--f-sets f-sets)))) (parser--debug (message "Generated F-sets")) diff --git a/test/parser-test.el b/test/parser-test.el index 681709c..1ebe13b 100644 --- a/test/parser-test.el +++ b/test/parser-test.el @@ -321,6 +321,15 @@ (parser--e-free-first '(S b a)))) (message "Passed empty-free-first 1 with complex grammar") + (parser--set-grammar '((Sp S) (a b) ((Sp S) (S (S a S b)) (S e)) Sp)) + (parser--set-look-ahead-number 1) + (parser--process-grammar) + (should + (equal + nil + (parser--e-free-first '(S b a)))) + (message "Passed empty-free-first 1 with complex grammar 2") + (message "Passed tests for (parser--empty-free-first)")) (defun parser-test--valid-grammar-p ()