[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 1613e2e 096/434: Byte-compilation and
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 1613e2e 096/434: Byte-compilation and unit tests working after refactor |
Date: |
Mon, 29 Nov 2021 15:59:16 -0500 (EST) |
branch: externals/parser-generator
commit 1613e2e2b2e49257f845f21028cabb9f58292994
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Byte-compilation and unit tests working after refactor
---
parser-lr.el | 25 +++++++++++++++++++------
test/parser-lr-test.el | 13 ++++++++-----
test/parser-test.el | 41 -----------------------------------------
3 files changed, 27 insertions(+), 52 deletions(-)
diff --git a/parser-lr.el b/parser-lr.el
index 5562ad8..0aa54d4 100644
--- a/parser-lr.el
+++ b/parser-lr.el
@@ -12,16 +12,29 @@
;;; Variables:
+(defvar parser-lr--action-tables
+ nil
+ "Action-tables for grammar.")
(defvar parser-lr--goto-tables
nil
- "GOTO-tables for grammar.")
+ "Goto-tables for grammar.")
(defvar parser-lr--items
nil
"Hash-table for distinct LR-items in grammar.")
+;; Functions
+
+
+(defun parser-lr--reset ()
+ "Reset variables."
+ (setq parser-lr--action-tables nil)
+ (setq parser-lr--goto-tables nil)
+ (setq parser-lr--items nil))
+
+
;; Main Algorithms
;; Algorithm 5.9, p. 389
@@ -30,8 +43,8 @@
(unless (or
parser-lr--goto-tables
parser-lr--items)
- (setq parser--goto-table nil)
- (setq parser--table-lr-items (make-hash-table :test 'equal))
+ (setq parser-lr--goto-tables nil)
+ (setq parser-lr--items (make-hash-table :test 'equal))
(let ((lr-item-set-new-index 0)
(goto-table)
(unmarked-lr-item-sets)
@@ -62,7 +75,7 @@
;; (2) Mark a
(puthash lr-items lr-item-set-index marked-lr-item-sets)
- (puthash lr-item-set-index lr-items parser--table-lr-items)
+ (puthash lr-item-set-index lr-items parser-lr--items)
(setq goto-table-table nil)
;; (2) By computing for each X in N u E, GOTO (a, X). (Algorithm 5.8
can be used here.)
@@ -100,10 +113,10 @@
(setq goto-table-table (sort goto-table-table 'parser--sort-list))
(push `(,lr-item-set-index ,goto-table-table) goto-table)))
- (setq parser--goto-table (sort goto-table 'parser--sort-list)))
+ (setq parser-lr--goto-tables (sort goto-table 'parser--sort-list)))
(unless
(parser-lr--items-valid-p
- (parser--hash-values-to-list parser--table-lr-items t))
+ (parser--hash-values-to-list parser-lr--items t))
(error "Inconsistent grammar!")))
t)
diff --git a/test/parser-lr-test.el b/test/parser-lr-test.el
index d2483f0..8988a3b 100644
--- a/test/parser-lr-test.el
+++ b/test/parser-lr-test.el
@@ -14,13 +14,14 @@
(message "Starting tests for (parser-lr--generate-goto-tables)")
;; Example 5.30, p. 389
+ (parser-lr--reset)
(parser--set-grammar '((Sp S) (a b) ((Sp S) (S (S a S b)) (S e)) Sp))
(parser--set-look-ahead-number 1)
(parser-lr--generate-goto-tables)
- ;; (message "GOTO-table: %s" parser--goto-table)
- ;; (message "LR-items: %s" (parser--hash-to-list parser--table-lr-items))
+ ;; (message "GOTO-table: %s" parser-lr--goto-tables)
+ ;; (message "LR-items: %s" (parser--hash-to-list parser-lr--items))
(should
(equal
@@ -32,7 +33,7 @@
(5 nil)
(6 ((a 4) (b 7)))
(7 nil))
- parser--goto-table))
+ parser-lr--goto-tables))
(should
(equal
@@ -44,7 +45,7 @@
(5 ((S (S a S b) nil (a)) (S (S a S b) nil (e))))
(6 ((S (S) (a S b) (a)) (S (S) (a S b) (b)) (S (S a S) (b) (a)) (S (S a
S) (b) (b))))
(7 ((S (S a S b) nil (a)) (S (S a S b) nil (b)))))
- (parser--hash-to-list parser--table-lr-items)))
+ (parser--hash-to-list parser-lr--items)))
(message "Passed LR-items for example 5.30")
@@ -55,6 +56,7 @@
(message "Starting tests for (parser-lr--items-for-prefix)")
;; Example 5.29 p 387
+ (parser-lr--reset)
(parser--set-grammar '((Sp S) (a b) ((Sp S) (S (S a S b)) (S e)) Sp))
(parser--set-look-ahead-number 1)
@@ -139,13 +141,14 @@
"Test `parser-lr--items-valid-p'."
(message "Started tests for (parser-lr--items-valid-p)")
+ (parser-lr--reset)
(parser--set-grammar '((Sp S) (a b) ((Sp S) (S (S a S b)) (S e)) Sp))
(parser--set-look-ahead-number 1)
(parser-lr--generate-goto-tables)
(should
(equal
t
- (parser-lr--items-valid-p (parser--hash-values-to-list
parser--table-lr-items t))))
+ (parser-lr--items-valid-p (parser--hash-values-to-list parser-lr--items
t))))
(message "Passed first")
diff --git a/test/parser-test.el b/test/parser-test.el
index a8467b3..bfe3f07 100644
--- a/test/parser-test.el
+++ b/test/parser-test.el
@@ -223,47 +223,6 @@
(message "Passed tests for (parser--empty-free-first)"))
-(defun parser-test--generate-tables-for-lr ()
- "Test `parser--generate-tables-for-lr'."
- (message "Starting tests for (parser--generate-tables-for-lr)")
-
- ;; Example 5.30, p. 389
- (parser--set-grammar '((Sp S) (a b) ((Sp S) (S (S a S b)) (S e)) Sp))
- (parser--set-look-ahead-number 1)
-
- (parser--generate-tables-for-lr)
-
- ;; (message "GOTO-table: %s" parser--goto-table)
- ;; (message "LR-items: %s" (parser--hash-to-list parser--table-lr-items))
-
- (should
- (equal
- '((0 ((S 1)))
- (1 ((a 2)))
- (2 ((S 3)))
- (3 ((a 4) (b 5)))
- (4 ((S 6)))
- (5 nil)
- (6 ((a 4) (b 7)))
- (7 nil))
- parser--goto-table))
-
- (should
- (equal
- '((0 ((S nil (S a S b) (a)) (S nil (S a S b) (e)) (S nil nil (a)) (S nil
nil (e)) (Sp nil (S) (e))))
- (1 ((S (S) (a S b) (a)) (S (S) (a S b) (e)) (Sp (S) nil (e))))
- (2 ((S (S a) (S b) (a)) (S (S a) (S b) (e)) (S nil (S a S b) (a)) (S nil
(S a S b) (b)) (S nil nil (a)) (S nil nil (b))))
- (3 ((S (S) (a S b) (a)) (S (S) (a S b) (b)) (S (S a S) (b) (a)) (S (S a
S) (b) (e))))
- (4 ((S (S a) (S b) (a)) (S (S a) (S b) (b)) (S nil (S a S b) (a)) (S nil
(S a S b) (b)) (S nil nil (a)) (S nil nil (b))))
- (5 ((S (S a S b) nil (a)) (S (S a S b) nil (e))))
- (6 ((S (S) (a S b) (a)) (S (S) (a S b) (b)) (S (S a S) (b) (a)) (S (S a
S) (b) (b))))
- (7 ((S (S a S b) nil (a)) (S (S a S b) nil (b)))))
- (parser--hash-to-list parser--table-lr-items)))
-
- (message "Passed LR-items for example 5.30")
-
- (message "Passed tests for (parser--generate-tables-for-lr)"))
-
(defun parser-test--valid-grammar-p ()
"Test function `parser--valid-grammar-p'."
(message "Starting tests for (parser--valid-grammar-p)")
- [elpa] externals/parser-generator daf93e0 097/434: Added failing unit test for action tables generation, (continued)
- [elpa] externals/parser-generator daf93e0 097/434: Added failing unit test for action tables generation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 32263b7 074/434: Added cache to function which calculates LR-items for prefix, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 21164b6 064/434: Added documentation for (lr-items), ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ccaf4b5 080/434: More stuff, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator bdbedf4 078/434: Suffixes in LR-items that only contain e-identifier are now set as nil, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0e075d7 081/434: Fixed issue with algorithm 5.9, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator fe6037b 088/434: Generating valid GOTO-table, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d5284b5 091/434: Added algorithm 5.10, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0304b78 092/434: Added a unit-test to invalidate LR-items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 69bfe16 006/434: Removed white-space, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1613e2e 096/434: Byte-compilation and unit tests working after refactor,
ELPA Syncer <=
- [elpa] externals/parser-generator 31c7ba7 098/434: Work on function that generates all possible look-aheads, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 53980d4 102/434: More documentation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 882d725 105/434: Added TODO item, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 65d9ce2 106/434: Fixed a bug with E-FREE-FIRST function and function that validates a set of LR-items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 343fd72 104/434: Some parts of the action-table is generated, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b2a0d71 112/434: Passed test for action-table generation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1c1177f 116/434: More work on LR-parser algorithm, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 9db14cd 118/434: Added TODO items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 5784f3f 126/434: Updated README with link to separate document for grammar, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator edfb7b4 131/434: Moved lex-analyzer to separate file, ELPA Syncer, 2021/11/29