branch: externals/parser-generator
commit 3807a72274a7573b2e63b5f97e4cd6089feff5fd
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>
Added failing unit test for LR-items k=2
---
parser-generator-lr.el | 7 +++++--
test/parser-generator-lr-test.el | 16 +++++++++++++---
2 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 275cc55..a050204 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -544,7 +544,10 @@
(defun parser-generator-lr--items-for-goto (previous-lr-item x)
"Calculate LR-items for GOTO(PREVIOUS-LR-ITEM, X)."
(let ((lr-new-item)
- (lr-item-exists (make-hash-table :test 'equal)))
+ (lr-item-exists (make-hash-table :test 'equal))
+ (eof-list (parser-generator--generate-list-of-symbol
+ parser-generator--look-ahead-number
+ parser-generator--eof-identifier)))
(parser-generator--debug (message "x: %s" x))
(dolist (lr-item previous-lr-item)
@@ -615,7 +618,7 @@
(parser-generator--first
lr-item-suffix-rest)))
(unless lr-item-suffix-rest-first
- (setq lr-item-suffix-rest-first (list nil)))
+ (setq lr-item-suffix-rest-first (list eof-list)))
;; TODO Verify this
(parser-generator--debug
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index e257b4d..524300d 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -418,9 +418,19 @@
(parser-generator--debug
(message
"LR-items: %s"
- (parser-generator--hash-values-to-list
- lr-items
- t)))
+ (parser-generator--hash-to-list
+ lr-items)))
+
+ (should
+ (equal
+ '(
+ (0 (((R) nil (a b T) ($ $))((R) nil (a b T) (a b))((S) nil (R) ($
$))((S) nil (R S) ($ $))((Sp) nil (S) ($ $))))
+ (1 (((R) (a) (b T) ($ $)) ((R) (a) (b T) (a b))))
+ (2 (((R) (a b) (T) ($ $)) ((R) (a b) (T) (a b)) ((T) nil (a T) ($ $))
((T) nil (a T) (a b)) ((T) nil (c) ($ $)) ((T) nil (c) (a b)) ((T) nil nil ($
$)) ((T) nil nil (a b)))))
+ (parser-generator--hash-to-list
+ lr-items)))
+ (message "Passed LR-items k = 2")
+
(parser-generator--debug
(message "GOTO-tables: %s"
(parser-generator--hash-to-list