branch: externals/parser-generator
commit 62f54f1c9df42925235a0c80108dadac5f5edd02
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>
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 ()