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

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

[elpa] externals/parser-generator 7f3c384b6d 55/82: Passing more LLk tes


From: Christian Johansson
Subject: [elpa] externals/parser-generator 7f3c384b6d 55/82: Passing more LLk tests
Date: Thu, 12 May 2022 13:28:17 -0400 (EDT)

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

    Passing more LLk tests
---
 parser-generator-ll.el           |   3 +-
 parser-generator.el              |   2 +-
 test/parser-generator-ll-test.el | 171 ++++++++++++++++++++++-----------------
 3 files changed, 99 insertions(+), 77 deletions(-)

diff --git a/parser-generator-ll.el b/parser-generator-ll.el
index 63c3088f28..4dbd6bdfbe 100644
--- a/parser-generator-ll.el
+++ b/parser-generator-ll.el
@@ -76,7 +76,8 @@
           (list
            (list
             (parser-generator--get-grammar-start))
-           (list
+           (parser-generator--generate-list-of-symbol
+            parser-generator--look-ahead-number
             parser-generator--eof-identifier))
           parser-generator--eof-identifier))
         (output)
diff --git a/parser-generator.el b/parser-generator.el
index dfd698663e..4b749f7f31 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 70ecb06606..1061e0fc60 100644
--- a/test/parser-generator-ll-test.el
+++ b/test/parser-generator-ll-test.el
@@ -330,7 +330,7 @@
   (let ((parser-tables
          (parser-generator-ll--generate-parsing-table
           (parser-generator-ll--generate-tables))))
-    (message "parser-tables: %S" parser-tables)
+    ;; (message "parser-tables: %S" parser-tables)
     (should
      (equal
       '(
@@ -383,15 +383,15 @@
           (parser-tables
            (parser-generator-ll--generate-parsing-table
             tables)))
-    (message "tables: %S" tables)
-    (message "parser-tables: %S" parser-tables)
+    ;; (message "tables: %S" tables)
+    ;; (message "parser-tables: %S" parser-tables)
     (should
      (equal
       '(
         (
          ((S) ($ $)) ;; T0
          (
-          ((a b) reduce (a b ((A) ($))) 1)
+          ((a b) reduce (a b ((A) (($ $)))) 1)
           (($ $) reduce (e) 0)
           )
          )
@@ -399,51 +399,31 @@
          ((A) ($ $)) ;; T1
          (
           ((b $) reduce (b) 3)
-          ((a a) reduce (((S) (a a)) a a) 2)
-          ((a b) reduce (((S) (a a)) a a) 2)
+          ((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 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) pop)
-          ((a a) pop)
-          ((a $) pop)
-          )
-         )
-        (
-         $
-         (
-          (($ $) accept)
+          ((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) pop) ((a a) pop) ((a $) pop)))
+        ($ ((($ $) accept)))
         )
       parser-tables)))
   (message "Passed Example 5.17 p. 356")
-  ;; TODO Make this pass
 
   (parser-generator-set-eof-identifier '$)
   (parser-generator-set-e-identifier 'e)
@@ -464,68 +444,121 @@
    )
   (parser-generator-process-grammar)
   (parser-generator-process-grammar)
-  (let ((parser-tables
-         (parser-generator-ll--generate-parsing-table
-          (parser-generator-ll--generate-tables))))
-    (message "parser-tables: %S" parser-tables)
+  (let* ((tables
+          (parser-generator-ll--generate-tables))
+          (parser-tables
+           (parser-generator-ll--generate-parsing-table
+            tables)))
+    ;; (message "tables: %S" tables)
+    ;; (message "parser-tables: %S" parser-tables)
     (should
      (equal
       '(
         (
          ((E) ($))
          (
-          (("a") reduce (((T) ("+")) ((E2) nil)) 0) ;; TODO Verify this
-          (("(") reduce (((T) ("+")) ((E2) nil)) 0) ;; TODO Verify this
+          (("a") reduce (((T) (($) ("+"))) ((E2) (($)))) 0)
+          (("(") reduce (((T) (($) ("+"))) ((E2) (($)))) 0)
           )
          )
         (
          ((E2) ($))
          (
-          (("+") reduce ("+" ((T) ("+")) ((E2) nil)) 1)
+          (("+") reduce ("+" ((T) (($) ("+"))) ((E2) (($)))) 1)
           (($) reduce (e) 2)
           )
          )
         (
          ((T) ("+"))
          (
-          (("a") reduce (((F) ("*")) ((T2) nil)) 3)
-          (("(") reduce (((F) ("*")) ((T2) nil)) 3)
+          (("a") reduce (((F) (("*") ("+"))) ((T2) (("+")))) 3)
+          (("(") reduce (((F) (("*") ("+"))) ((T2) (("+")))) 3)
           )
          )
         (
          ((T2) ("+"))
          (
           (("+") reduce (e) 5)
-          (("*") reduce ("*" ((F) ("*")) ((T2) nil)) 4)
+          (("*") reduce ("*" ((F) (("*") ("+"))) ((T2) (("+")))) 4)
           )
          )
         (
-         ((F) ("*"))
+         ((F) ("+"))
          (
           (("a") reduce ("a") 7)
-          (("(") reduce ("(" ((E) (")")) ")") 6)
+          (("(") reduce ("(" ((E) ((")"))) ")") 6)
           )
          )
         (
          ((E) (")"))
          (
-          (("a") reduce (((T) ("+")) ((E2) nil)) 0)
-          (("(") reduce (((T) ("+")) ((E2) nil)) 0)
+          (("a") reduce (((T) ((")") ("+"))) ((E2) ((")")))) 0)
+          (("(") reduce (((T) ((")") ("+"))) ((E2) ((")")))) 0)
           )
          )
         (
          ((E2) (")"))
          (
-          (("+") reduce ("+" ((T) ("+")) ((E2) nil)) 1)
+          (("+") reduce ("+" ((T) ((")") ("+"))) ((E2) ((")")))) 1)
           ((")") reduce (e) 2)
           )
          )
+        (
+         ((T) (")"))
+         (
+          (("a") reduce (((F) ((")") ("*"))) ((T2) ((")")))) 3)
+          (("(") reduce (((F) ((")") ("*"))) ((T2) ((")")))) 3)
+          )
+         )
+        (
+         ((T2) (")"))
+         (
+          (("*") reduce ("*" ((F) ((")") ("*"))) ((T2) ((")")))) 4)
+          ((")") reduce (e) 5)
+          )
+         )
+        (
+         ((F) (")"))
+         (
+          (("a") reduce ("a") 7)
+          (("(") reduce ("(" ((E) ((")"))) ")") 6)
+          )
+         )
+        (
+         ((F) ("*"))
+         (
+          (("a") reduce ("a") 7)
+          (("(") reduce ("(" ((E) ((")"))) ")") 6)
+          )
+         )
+        (
+         ((T) ($))
+         (
+          (("a") reduce (((F) (($) ("*"))) ((T2) (($)))) 3)
+          (("(") reduce (((F) (($) ("*"))) ((T2) (($)))) 3)
+          )
+         )
+        (
+         ((T2) ($))
+         (
+          (("*") reduce ("*" ((F) (($) ("*"))) ((T2) (($)))) 4)
+          (($) reduce (e) 5)
+          )
+         )
+        (
+         ((F) ($))
+         (
+          (("a") reduce ("a") 7)
+          (("(") reduce ("(" ((E) ((")"))) ")") 6)
+          )
+         )
         ("a" ((("a") pop)))
         ("+" ((("+") pop)))
         ("*" ((("*") pop)))
         (")" (((")") pop)))
         ("(" ((("(") pop)))
-        ($ ((($) accept))))
+        ($ ((($) accept)))
+        )
       parser-tables)))
   ;; TODO Verify above
   (message "Passed Example 5.12 p. 346-347")
@@ -569,6 +602,9 @@
    parser-generator-lex-analyzer--get-function
    (lambda (token)
      (car token)))
+  (message "parsing-table: %S" (parser-generator--hash-to-list
+     parser-generator-ll--parsing-table
+     t))
   (should
    (equal
     '(1 3) ;; Example is indexed from 1 so that is why they have '(2 4)
@@ -720,54 +756,39 @@
    )
   (parser-generator-process-grammar)
   (parser-generator-ll-generate-parser-tables)
+  ;; (message "parsing-table: %S" (parser-generator--hash-to-list 
parser-generator-ll--parsing-table t))
   (should
    (equal
     '(
-      ("((S) ($))"
+      ("((S) ($ $))"
        (
-        ("(a b)" (reduce (a b ((A) ($))) 1))
+        ("(a b)" (reduce (a b ((A) (($ $)))) 1))
         ("($ $)" (reduce (e) 0))
         )
        )
-      ("((A) ($))"
+      ("((A) ($ $))"
        (
         ("(b $)" (reduce (b) 3))
-        ("(a a)" (reduce (((S) (a a)) a a) 2))
-        ("(a b)" (reduce (((S) (a a)) a a) 2))
+        ("(a a)" (reduce (((S) ((a a))) a a) 2))
+        ("(a b)" (reduce (((S) ((a a))) a a) 2))
         )
        )
       ("((S) (a a))"
        (
         ("(a a)" (reduce (e) 0))
-        ("(a b)" (reduce (a b ((A) (a a))) 1))
+        ("(a b)" (reduce (a b ((A) ((a a)))) 1))
         )
        )
       ("((A) (a a))"
        (
         ("(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)" pop)
-        ("(a a)" pop)
-        ("(a $)" pop)
-        )
-       )
-      ("$"
-       (
-        ("($ $)" accept)
+        ("(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)" pop) ("(a a)" pop) ("(a $)" pop)))
+      ("$" (("($ $)" accept)))
       )
     (parser-generator--hash-to-list
      parser-generator-ll--parsing-table



reply via email to

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