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

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

[elpa] externals/parser-generator 72bbadddc0 51/82: Added TODO items


From: Christian Johansson
Subject: [elpa] externals/parser-generator 72bbadddc0 51/82: Added TODO items
Date: Thu, 12 May 2022 13:28:17 -0400 (EDT)

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

    Added TODO items
---
 test/parser-generator-ll-test.el | 273 +++++++++++++++++++++++----------------
 1 file changed, 161 insertions(+), 112 deletions(-)

diff --git a/test/parser-generator-ll-test.el b/test/parser-generator-ll-test.el
index f2267255bf..c06e25a076 100644
--- a/test/parser-generator-ll-test.el
+++ b/test/parser-generator-ll-test.el
@@ -181,7 +181,82 @@
     )
   (message "Passed Example 5.5 p. 340")
 
-  ;; TODO Example 5.12 p. 346-347
+  (parser-generator-set-eof-identifier '$)
+  (parser-generator-set-e-identifier 'e)
+  (parser-generator-set-look-ahead-number 1)
+  (parser-generator-set-grammar
+   '(
+     (E E2 T T2 F)
+     ("a" "(" ")" "+" "*")
+     (
+      (E (T E2))
+      (E2 ("+" T E2) e)
+      (T (F T2))
+      (T2 ("*" F T2) e)
+      (F ("(" E ")") "a")
+      )
+     E
+     )
+   )
+  (parser-generator-process-grammar)
+  (let ((tables (parser-generator-ll--generate-tables)))
+    (message "tables: %S" tables)
+    (should
+     (equal
+      '(
+        (
+         ((E2) (")"))
+         (
+          ((")") (e) nil)
+          (("+") ("+" T E2) (("+")))
+          )
+         )
+        (
+         ((E) (")"))
+         (
+          (("(") (T E2) (("+")))
+          (("a") (T E2) (("+")))
+          )
+         )
+        (
+         ((F) ("*"))
+         (
+          (("(") ("(" E ")") ((")")))
+          (("a") ("a") nil)
+          )
+         )
+        (
+         ((T2) ("+"))
+         (
+          (("*") ("*" F T2) (("*")))
+          (("+") (e) nil)
+          )
+         )
+        (
+         ((T) ("+"))
+         (
+          (("(") (F T2) (("*")))
+          (("a") (F T2) (("*")))
+          )
+         )
+        (
+         ((E2) ($))
+         (
+          (($) (e) nil)
+          (("+") ("+" T E2) (("+")))
+          )
+         )
+        (
+         ((E) ($))
+         (
+          (("(") (T E2) (("+")))
+          (("a") (T E2) (("+")))
+          )
+         )
+        )
+      tables)))
+  ;; TODO Verify above
+  (message "Passed Example 5.12 p. 346-347")
 
   (message "Passed tests for (parser-generator-ll--generate-tables)"))
 
@@ -336,6 +411,91 @@
       parser-tables)))
   (message "Passed example 5.17 p. 356")
 
+  (parser-generator-set-eof-identifier '$)
+  (parser-generator-set-e-identifier 'e)
+  (parser-generator-set-look-ahead-number 1)
+  (parser-generator-set-grammar
+   '(
+     (E E2 T T2 F)
+     ("a" "(" ")" "+" "*")
+     (
+      (E (T E2))
+      (E2 ("+" T E2) e)
+      (T (F T2))
+      (T2 ("*" F T2) e)
+      (F ("(" E ")") "a")
+      )
+     E
+     )
+   )
+  (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)
+    (should
+     (equal
+      '(
+        (
+         ((E) ($))
+         (
+          (("a") reduce (((T) ("+")) ((E2) nil)) 0) ;; TODO Verify this
+          (("(") reduce (((T) ("+")) ((E2) nil)) 0) ;; TODO Verify this
+          )
+         )
+        (
+         ((E2) ($))
+         (
+          (("+") reduce ("+" ((T) ("+")) ((E2) nil)) 1)
+          (($) reduce (e) 2)
+          )
+         )
+        (
+         ((T) ("+"))
+         (
+          (("a") reduce (((F) ("*")) ((T2) nil)) 3)
+          (("(") reduce (((F) ("*")) ((T2) nil)) 3)
+          )
+         )
+        (
+         ((T2) ("+"))
+         (
+          (("+") reduce (e) 5)
+          (("*") reduce ("*" ((F) ("*")) ((T2) nil)) 4)
+          )
+         )
+        (
+         ((F) ("*"))
+         (
+          (("a") reduce ("a") 7)
+          (("(") reduce ("(" ((E) (")")) ")") 6)
+          )
+         )
+        (
+         ((E) (")"))
+         (
+          (("a") reduce (((T) ("+")) ((E2) nil)) 0)
+          (("(") reduce (((T) ("+")) ((E2) nil)) 0)
+          )
+         )
+        (
+         ((E2) (")"))
+         (
+          (("+") reduce ("+" ((T) ("+")) ((E2) nil)) 1)
+          ((")") reduce (e) 2)
+          )
+         )
+        ("a" ((("a") pop)))
+        ("+" ((("+") pop)))
+        ("*" ((("*") pop)))
+        (")" (((")") pop)))
+        ("(" ((("(") pop)))
+        ($ ((($) accept))))
+      parser-tables)))
+  ;; TODO Verify above
+  (message "Passed Example 5.12 p. 346-347")
+
   (message "Passed tests for (parser-generator-ll--generate-parsing-table)"))
 
 (defun parser-generator-ll-test--parse ()
@@ -479,117 +639,7 @@
      )
    )
   (parser-generator-process-grammar)
-  (let ((tables (parser-generator-ll--generate-tables)))
-    (message "tables: %S" tables)
-    '(
-      (
-       ((E2) (")"))
-       (
-        ((")") (e) nil)
-        (("+") ("+" T E2) ((")") ("+")))
-        )
-       )
-      (
-       ((E) (")"))
-       (
-        (("(") (T E2) ((")") ("+")))
-        (("a") (T E2) ((")") ("+")))
-        )
-       )
-      (
-       ((F) ("*"))
-       (
-        (("(") ("(" E ")") ((")")))
-        (("a") ("a") nil)
-        )
-       )
-      (
-       ((T2) ("+"))
-       (
-        (("*") ("*" F T2) (("+") ("*")))
-        (("+") (e) nil)
-        )
-       )
-      (
-       ((T) ("+"))
-       (
-        (("(") (F T2) (("+") ("*")))
-        (("a") (F T2) (("+") ("*")))
-        )
-       )
-      (
-       ((E2) ($))
-       (
-        (($) (e) nil)
-        (("+") ("+" T E2) (($) ("+")))
-        )
-       )
-      (
-       ((E) ($))
-       (
-        (("(") (T E2) (($) ("+")))
-        (("a") (T E2) (($) ("+")))
-        )
-       )
-      ))
   (parser-generator-ll-generate-parser-tables)
-  (message
-   "parser-generator-ll--parsing-table: %S"
-   (parser-generator--hash-to-list
-    parser-generator-ll--parsing-table
-    t))
-  ;; Local-follow-should exceed k
-  '(
-    ("((E) ($))"
-     (
-      ("(\"a\")" (reduce (((T) ($)) ((E2) ("+"))) 0))
-      ("(\"(\")" (reduce (((T) ($)) ((E2) ("+"))) 0))
-      )
-     )
-    ("((E2) ($))"
-     (
-      ("(\"+\")" (reduce ("+" ((T) ($)) ((E2) ("+"))) 1))
-      ("($)" (reduce (e) 2))
-      )
-     )
-    ("((T) (\"+\"))"
-     (
-      ("(\"a\")" (reduce (((F) ("+")) ((T2) ("*"))) 3))
-      ("(\"(\")" (reduce (((F) ("+")) ((T2) ("*"))) 3))
-      )
-     )
-    ("((T2) (\"+\"))"
-     (
-      ("(\"+\")" (reduce (e) 5))
-      ("(\"*\")" (reduce ("*" ((F) ("+")) ((T2) ("*"))) 4))
-      )
-     )
-    ("((F) (\"*\"))"
-     (
-      ("(\"a\")" (reduce ("a") 7))
-      ("(\"(\")" (reduce ("(" ((E) (")")) ")") 6))
-      )
-     )
-    ("((E) (\")\"))"
-     (
-      ("(\"a\")" (reduce (((T) (")")) ((E2) ("+"))) 0))
-      ("(\"(\")" (reduce (((T) (")")) ((E2) ("+"))) 0))
-      )
-     )
-    ("((E2) (\")\"))"
-     (
-      ("(\"+\")" (reduce ("+" ((T) (")")) ((E2) ("+"))) 1))
-      ("(\")\")" (reduce (e) 2))
-      )
-     )
-    ("\"a\""(("(\"a\")" pop)))
-    ("\"+\"" (("(\"+\")" pop)))
-    ("\"*\"" (("(\"*\")" pop)))
-    ("\")\"" (("(\")\")" pop)))
-    ("\"(\"" (("(\"(\")" pop)))
-    ("$" (("($)" accept)))
-    )
-  ;; (message "parser-generator-ll--parsing-table: %S" 
parser-generator-ll--parsing-table)
   (setq
    parser-generator-lex-analyzer--function
    (lambda (index)
@@ -607,7 +657,6 @@
    parser-generator-lex-analyzer--get-function
    (lambda (token)
      (car token)))
-  (parser-generator-ll-parse)
   (should
    (equal
     '(0 3 6 0 3 7 5 2 5) ;; Example is 1-indexed '(1 4 7 1 4 8 5 8 6 3 6 3)



reply via email to

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