[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 80f99cf 241/434: Added failing unit te
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 80f99cf 241/434: Added failing unit test for lr-items set k=2 |
Date: |
Mon, 29 Nov 2021 15:59:49 -0500 (EST) |
branch: externals/parser-generator
commit 80f99cfac85791dca2d2243eedf9c35f3a74d0ec
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Added failing unit test for lr-items set k=2
---
parser-generator-lr.el | 37 ++++++++++++++++++++-----------
test/parser-generator-lr-test.el | 47 ++++++++++++++++++++++++++++++++++------
2 files changed, 64 insertions(+), 20 deletions(-)
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 13cd8be..886f3eb 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -188,15 +188,19 @@
(make-hash-table :test 'equal))
(next-symbols)
(next-symbols-found (make-hash-table :test 'equal))
- (table-lr-items (make-hash-table :test 'equal))
- (e-list parser-generator--e-identifier))
+ (table-lr-items (make-hash-table :test 'equal)))
(let ((e-set
(parser-generator-lr--items-for-prefix
- e-list)))
+ parser-generator--e-identifier)))
+
;;(1) Place V(e) in S. The set V(e) is initially unmarked.
- (push `(,lr-item-set-new-index ,e-set) unmarked-lr-item-sets)
- (setq lr-item-set-new-index (1+ lr-item-set-new-index)))
+ (push
+ `(,lr-item-set-new-index ,e-set)
+ unmarked-lr-item-sets)
+ (setq
+ lr-item-set-new-index
+ (1+ lr-item-set-new-index)))
;; (2) If a set of items a in S is unmarked
;; (3) Repeat step (2) until all sets of items in S are marked.
@@ -215,21 +219,29 @@
(message "popped-item: %s" popped-item))
;; (2) Mark a
- (puthash lr-items lr-item-set-index marked-lr-item-sets)
+ (puthash
+ lr-items
+ lr-item-set-index
+ marked-lr-item-sets)
- (puthash lr-item-set-index lr-items table-lr-items)
+ (puthash
+ lr-item-set-index
+ lr-items
+ table-lr-items)
(setq goto-table-table nil)
- ;; Build list of possible next-symbols here that follows lr-items set
+ ;; Build list of possible next-symbols
+ ;; here that follows current set
(setq next-symbols nil)
(dolist (lr-item lr-items)
(let ((symbols (nth 2 lr-item)))
(when symbols
(let ((next-symbol (car symbols)))
- (when (and
- (or
- (parser-generator--valid-terminal-p next-symbol)
- (parser-generator--valid-non-terminal-p next-symbol))
+ (when
+ (and
+ (or
+ (parser-generator--valid-terminal-p next-symbol)
+ (parser-generator--valid-non-terminal-p next-symbol))
(not
(gethash
(list
@@ -253,7 +265,6 @@
(sort
next-symbols
'string-lessp)))))
-
(parser-generator--debug
(message "next-symbols: %s" next-symbols))
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index c5b32bd..1b35c2d 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -480,18 +480,27 @@
(should
(equal
- '(
- (0 (
+ '((0 (
((R) nil (a b T) ($ $))
((R) nil (a b T) (a b))
((S) nil (R) ($ $))
((S) nil (R S) ($ $))
- ((Sp) nil (S) ($ $)))
- )
+ ((Sp) nil (S) ($ $))
+ ))
(1 (
- ((R) (a) (b T) ($ $))
- ((R) (a) (b T) (a b))))
+ ((R) nil (a b T) ($ $))
+ ((R) nil (a b T) (a b))
+ ((S) (R) (S) ($ $))
+ ((S) (R) nil ($ $))
+ ((S) nil (R) ($ $))
+ ((S) nil (R S) ($ $))))
(2 (
+ ((Sp) (S) nil ($ $))))
+ (3 (
+ ((R) (a) (b T) ($ $))
+ ((R) (a) (b T) (a b))
+ ))
+ (4 (
((R) (a b) (T) ($ $))
((R) (a b) (T) (a b))
((T) nil (a T) ($ $))
@@ -499,7 +508,31 @@
((T) nil (c) ($ $))
((T) nil (c) (a b))
((T) nil nil ($ $))
- ((T) nil nil (a b)))))
+ ((T) nil nil (a b))
+ ))
+ (5 (
+ ((R) (a b T) nil ($ $))
+ ((R) (a b T) nil (a b))
+ ))
+ (6 (
+ ((T) (a) (T) ($ $))
+ ((T) (a) (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))
+ ))
+ (7 (
+ ((T) (c) nil ($ $))
+ ((T) (c) nil (a b))
+ ))
+ (8 (
+ ((T) (a T) nil ($ $))
+ ((T) (a T) nil (a b))))
+ (9 (
+ ((S) (R S) nil ($ $)))))
(parser-generator--hash-to-list
lr-items)))
(message "Passed LR-items k = 2")
- [elpa] externals/parser-generator fa7089e 144/434: Re-factored lex analyzer function to not use length argument, (continued)
- [elpa] externals/parser-generator fa7089e 144/434: Re-factored lex analyzer function to not use length argument, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 7eb9a4a 156/434: Fixed issue with indexing productions when they have SDT, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 19667b3 158/434: Added failing unit test for translation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a8a4e7f 166/434: Minor fix, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c0310bf 169/434: Added error-handling to lexical analyser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator dfbd97f 184/434: More tweaking of f-set generation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 13d76ae 207/434: Passed tests for generating list permutations of length k, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 06f8d37 211/434: More work on debugging LRk parser with k > 1, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 069bf34 209/434: Added test for new helper function list of symbol, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c8c130e 226/434: Improved error messages, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 80f99cf 241/434: Added failing unit test for lr-items set k=2,
ELPA Syncer <=
- [elpa] externals/parser-generator 5032a77 233/434: Fixed typo in Lex Analyzer error, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 07320b9 249/434: Updated test-case k=2, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d49f74f 244/434: Added failing test for action-tables LRk parser k=2, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator fe05328 250/434: Passed unit tests for LRk parser k=2, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d1f4682 248/434: Added a function that converts a FIRST-item to a look-ahead item, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 6845262 243/434: Passed GOTO-tables k=2, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3a0d4cd 255/434: Added translation test for LRk=2, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 03ca2e9 247/434: Look-ahead generation now supports EOF symbol, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3563720 266/434: Updated docs about lexical analysis, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 412fd2a 273/434: Passing generation of GOTO-table for LR(0) grammar, ELPA Syncer, 2021/11/29