emacs-elpa-diffs
[Top][All Lists]
Advanced

[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)")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]