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

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

[elpa] externals/parser-generator 4c93e895b3 49/82: Added TODO item


From: Christian Johansson
Subject: [elpa] externals/parser-generator 4c93e895b3 49/82: Added TODO item
Date: Thu, 12 May 2022 13:28:17 -0400 (EDT)

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

    Added TODO item
---
 test/parser-generator-ll-test.el | 148 ++++++++++++++++++++++++++++-----------
 1 file changed, 106 insertions(+), 42 deletions(-)

diff --git a/test/parser-generator-ll-test.el b/test/parser-generator-ll-test.el
index 08fa9f4c9d..d767d76bde 100644
--- a/test/parser-generator-ll-test.el
+++ b/test/parser-generator-ll-test.el
@@ -118,6 +118,71 @@
     )
   (message "Passed Example 5.17 p. 354")
 
+  (parser-generator-set-eof-identifier '$)
+  (parser-generator-set-e-identifier 'e)
+  (parser-generator-set-look-ahead-number 1)
+  (parser-generator-set-grammar
+   '(
+     (S A)
+     (a b)
+     (
+      (S (a A S) b)
+      (A a (b S A))
+      )
+     S
+     )
+   )
+  (parser-generator-process-grammar)
+  (let* ((tables
+          (parser-generator-ll--generate-tables)))
+    (message "tables: %S" tables)
+    (should
+     (equal
+      tables
+      '(
+        (
+         ((A) (a))
+         (
+          ((a) (a) nil)
+          ((b) (b S A) ((a) (b) (a)))
+          )
+         )
+        (
+         ((S) (a))
+         (
+          ((a) (a A S) ((a) (b) (a)))
+          ((b) (b) nil)
+          )
+         )
+        (
+         ((S) (b))
+         (
+          ((a) (a A S) ((b) (b) (a)))
+          ((b) (b) nil)
+          )
+         )
+        (
+         ((A) (b))
+         (
+          ((a) (a) nil)
+          ((b) (b S A) ((b) (b) (a)))
+          )
+         )
+        (
+         ((S) ($))
+         (
+          ((a) (a A S) (($) (b) (a))) ;; WEIRD?
+          ((b) (b) nil)
+          )
+         )
+        )
+      ))
+    )
+  ;; TODO Verify above
+  (message "Passed Example 5.5 p. 340")
+
+  ;; TODO Example 5.12 p. 346-347
+
   (message "Passed tests for (parser-generator-ll--generate-tables)"))
 
 (defun parser-generator-ll-test--generate-parsing-table ()
@@ -356,6 +421,47 @@
     (parser-generator-ll-parse)))
   (message "Passed example 5.17 p. 355")
 
+  (parser-generator-set-eof-identifier '$)
+  (parser-generator-set-e-identifier 'e)
+  (parser-generator-set-look-ahead-number 1)
+  (parser-generator-set-grammar
+   '(
+     (S A)
+     (a b)
+     (
+      (S (a A S) b)
+      (A a (b S A))
+      )
+     S
+     )
+   )
+  (parser-generator-process-grammar)
+  (parser-generator-ll-generate-parser-tables)
+  (setq
+   parser-generator-lex-analyzer--function
+   (lambda (index)
+     (let* ((string '((a 1 . 2) (b 2 . 3) (b 3 . 4) (a 4 . 5) (b 5 . 6)))
+            (string-length (length string))
+            (max-index index)
+            (tokens))
+       (while (and
+               (< (1- index) string-length)
+               (< (1- index) max-index))
+         (push (nth (1- index) string) tokens)
+         (setq index (1+ index)))
+       (nreverse tokens))))
+  (setq
+   parser-generator-lex-analyzer--get-function
+   (lambda (token)
+     (car token)))
+  (parser-generator-ll-parse)
+  (should
+   (equal
+    '(0 3 1 2 1) ;; Example is indexed from 1 so that is why they have '(1 4 2 
3 2)
+    (parser-generator-ll-parse)))
+  (message "Passed example 5.5 p. 340")
+  ;; TODO Make this pass
+
   (parser-generator-set-eof-identifier '$)
   (parser-generator-set-e-identifier 'e)
   (parser-generator-set-look-ahead-number 1)
@@ -427,7 +533,6 @@
         )
        )
       ))
-
   (parser-generator-ll-generate-parser-tables)
   (message
    "parser-generator-ll--parsing-table: %S"
@@ -511,47 +616,6 @@
   (message "Passed example 5.12 p. 346-347")
   ;; TODO Make this pass
 
-  (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 S) b)
-      (A a (b S A))
-      )
-     S
-     )
-   )
-  (parser-generator-process-grammar)
-  (parser-generator-ll-generate-parser-tables)
-  (setq
-   parser-generator-lex-analyzer--function
-   (lambda (index)
-     (let* ((string '((a 1 . 2) (b 2 . 3) (b 3 . 4) (a 4 . 5) (b 5 . 6)))
-            (string-length (length string))
-            (max-index index)
-            (tokens))
-       (while (and
-               (< (1- index) string-length)
-               (< (1- index) max-index))
-         (push (nth (1- index) string) tokens)
-         (setq index (1+ index)))
-       (nreverse tokens))))
-  (setq
-   parser-generator-lex-analyzer--get-function
-   (lambda (token)
-     (car token)))
-  (parser-generator-ll-parse)
-  (should
-   (equal
-    '(0 3 1 2 1) ;; Example is indexed from 1 so that is why they have '(1 4 2 
3 2)
-    (parser-generator-ll-parse)))
-  (message "Passed example 5.5 p. 340")
-  ;; TODO Make this pass
-
   (message "Passed tests for (parser-generator-ll-parse)"))
 
 (defun parser-generator-ll-test--generate-parser-tables ()



reply via email to

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