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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/parser-generator e6f9ac545f 37/82: Cleanup after byte-c


From: Christian Johansson
Subject: [elpa] externals/parser-generator e6f9ac545f 37/82: Cleanup after byte-compilation
Date: Thu, 12 May 2022 13:28:15 -0400 (EDT)

branch: externals/parser-generator
commit e6f9ac545f64f140908c42901be4bd9d12e1cf1f
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>

    Cleanup after byte-compilation
---
 parser-generator-ll.el           |  27 ++++------
 parser-generator.el              |   2 +-
 test/parser-generator-ll-test.el | 114 +++++++++++++++++++++++----------------
 3 files changed, 79 insertions(+), 64 deletions(-)

diff --git a/parser-generator-ll.el b/parser-generator-ll.el
index c31b8ec216..4df259ef93 100644
--- a/parser-generator-ll.el
+++ b/parser-generator-ll.el
@@ -28,10 +28,11 @@
 (defun parser-generator-ll-generate-parser-tables ()
   "Generate parsing tables for grammar."
   (message "\n;; Starting generation of LL(k) parser-tables..\n")
-  (unless (parser-generator-ll--valid-llk-p parser-generator--grammar)
+  (unless (parser-generator-ll--valid-grammar-p)
     (error "Invalid grammar specified!"))
-  (let* ((tables (parser-generator-ll--generate-tables))
-         (parsing-table (parser-generator-ll--generate-parsing-table)))
+  (let ((parsing-table
+         (parser-generator-ll--generate-parsing-table
+          (parser-generator-ll--generate-tables))))
     (setq
      parser-generator-ll--parsing-table
      parsing-table)
@@ -48,16 +49,13 @@
         (distinct-item-p (make-hash-table :test 'equal))
         (stack)
         (distinct-stack-item-p (make-hash-table :test 'equal))
-        (stack-item)
-        (k (max 1 parser-generator--look-ahead-number)))
+        (stack-item))
 
     ;; (1) Construct T_0, the LL(k) table associated with S {e}
     (let* ((start (parser-generator--get-grammar-start))
            (start-rhss (parser-generator--get-grammar-rhs start)))
       (dolist (start-rhs start-rhss)
-        (let* ((production
-                (list (list start) start-rhs))
-               (initial-stack-item
+        (let* ((initial-stack-item
                 (list
                  (list start)
                  start-rhs
@@ -122,7 +120,7 @@
             first-parent-follow)))
          (t (error
              "Unexpected empty FIRST for production: %S and parent-follow: %S"
-             production
+             (list production-lhs production-rhs)
              parent-follow)))
 
         (parser-generator--debug
@@ -185,9 +183,7 @@
                      local-follow
                      sets)
                     (dolist (sub-symbol-rhs sub-symbol-rhss)
-                      (let* ((sub-symbol-production
-                              (list (list sub-symbol) sub-symbol-rhs))
-                             (new-stack-item
+                      (let* ((new-stack-item
                               (list
                                (list sub-symbol)
                                sub-symbol-rhs
@@ -328,8 +324,6 @@
     (dolist (table tables)
       (let* ((key (nth 0 table))
              (value (nth 1 table))
-             (key-stack-symbol (car (nth 0 key)))
-             (key-parent-follow-set (nth 1 key))
              (left-hand-side (nth 0 key))
              (parse-table))
         (dolist (look-ahead-row value)
@@ -388,7 +382,6 @@
   "Test for LL(k)-ness.  Output t if grammar is LL(k).  nil otherwise."
   (let ((stack)
         (stack-item)
-        (k (max 1 parser-generator--look-ahead-number))
         (distinct-production-p (make-hash-table :test 'equal))
         (valid t))
 
@@ -412,9 +405,7 @@
             stack
             valid)
       (setq stack-item (pop stack))
-      (let ((production-lhs
-             (nth 0 stack-item))
-            (production-rhs
+      (let ((production-rhs
              (nth 1 stack-item)))
 
         ;; For each non-terminal in the production right-hand side
diff --git a/parser-generator.el b/parser-generator.el
index 2b0b760717..8425475186 100644
--- a/parser-generator.el
+++ b/parser-generator.el
@@ -45,7 +45,7 @@
 
 (defvar
   parser-generator--debug
-  t
+  nil
   "Whether to print debug messages or not.")
 
 (defvar
diff --git a/test/parser-generator-ll-test.el b/test/parser-generator-ll-test.el
index fd6f70c598..58829b2f18 100644
--- a/test/parser-generator-ll-test.el
+++ b/test/parser-generator-ll-test.el
@@ -31,7 +31,6 @@
    )
   (parser-generator-process-grammar)
   (let ((tables (parser-generator-ll--generate-tables)))
-    ;; (message "tables 1: %S" tables)
     (should
      (equal
       tables
@@ -126,44 +125,29 @@
   "Test `parser-generator-ll--generate-parsing-table'."
   (message "Started tests for (parser-generator-ll--generate-parsing-table)")
 
-  (parser-generator-set-eof-identifier '$)
   (parser-generator-set-e-identifier 'e)
   (parser-generator-set-look-ahead-number 2)
+  (parser-generator-set-grammar
+   '(
+     (S A)
+     (a b)
+     (
+      (S (a A a a) (b A b a))
+      (A b e)
+      )
+     S
+     )
+   )
   (parser-generator-process-grammar)
-  (let* ((tables
-          '(
-            (
-             ((A) (b a))
-             (
-              ((b b) (b) nil)
-              ((b a) (e) nil)
-              )
-             )
-            (
-             ((A) (a a))
-             (
-              ((a a) (e) nil)
-              ((b a) (b) nil)
-              )
-             )
-            (
-             ((S) nil)
-             (
-              ((a b) (a A a a) ((a a)))
-              ((a a) (a A a a) ((a a)))
-              ((b b) (b A b a) ((b a)))
-              )
-             )
-            )
-          )
-         (parser-tables
-          (parser-generator-ll--generate-parsing-table
-           tables)))
+  (let ((parser-tables
+         (parser-generator-ll--generate-parsing-table
+          (parser-generator-ll--generate-tables))))
+    ;; (message "parser-tables: %S" parser-tables)
     (should
      (equal
       '(
         (
-         ((S) nil) ;; T0
+         ((S) ($)) ;; T0
          (
           ((b b) reduce (b ((A) (b a)) b a) 1)
           ((a a) reduce (a ((A) (a a)) a a) 0)
@@ -178,7 +162,7 @@
           )
          )
         (
-         ((A) (b a));; T2
+         ((A) (b a)) ;; T2
          (
           ((b a) reduce (e) 3)
           ((b b) reduce (b) 2)
@@ -206,9 +190,8 @@
          )
         )
       parser-tables)))
-  (message "Passed Example 5.16 p. 352")
+  (message "Passed Example 5.15 p. 351 and 5.16 p. 352")
 
-  ;; TODO Make this pass
   (parser-generator-set-eof-identifier '$)
   (parser-generator-set-e-identifier 'e)
   (parser-generator-set-look-ahead-number 2)
@@ -224,25 +207,66 @@
      )
    )
   (parser-generator-process-grammar)
-  (let* ((tables
-          (parser-generator-ll--generate-tables)) ;; TODO Replace with 
hard-coded value here
-         (parser-tables
-          (parser-generator-ll--generate-parsing-table
-           tables)))
-    (message "parser-tables: %S" parser-tables)
+  (let ((parser-tables
+         (parser-generator-ll--generate-parsing-table
+          (parser-generator-ll--generate-tables))))
+    ;; (message "parser-tables: %S" parser-tables)
     (should
      (equal
       '(
         (
-         ((S) nil)
+         ((S) ($)) ;; T0
+         (
+          ((a b) reduce (a b ((A) ($))) 1)
+          (($ $) reduce (e) 0)
+          )
+         )
+        (
+         ((A) ($)) ;; T1
+         (
+          ((b $) reduce (b) 3)
+          ((a a) reduce (((S) (a a)) a a) 2)
+          ((a b) reduce (((S) (a a)) a a) 2)
+          )
+         )
+        (
+         ((S) (a a)) ;; T2
+         (
+          ((a a) reduce (e) 0)
+          ((a b) reduce (a b ((A) (a a))) 1)
+          )
+         )
+        (
+         ((A) (a a)) ;; T3
+         (
+          ((b a) reduce (b) 3)
+          ((a a) reduce (((S) (a a)) a a) 2)
+          ((a b) reduce (((S) (a a)) a a) 2)
+          )
+         )
+        (
+         b
+         (
+          ((b b) pop)
+          ((b a) pop)
+          ((b $) pop)
+          )
+         )
+        (
+         a
          (
-          ((a b) reduce ()
-           )
+          ((a b) pop)
+          ((a a) pop)
+          ((a $) pop)
           )
          )
+        (
+         $
+         (($ $) accept)
+         )
         )
       parser-tables)))
-  (message "Passed example 5.17 p. 354")
+  (message "Passed example 5.17 p. 356")
 
   (message "Passed tests for (parser-generator-ll--generate-parsing-table)"))
 



reply via email to

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