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

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

[elpa] externals/parser-generator d49f74f 244/434: Added failing test fo


From: ELPA Syncer
Subject: [elpa] externals/parser-generator d49f74f 244/434: Added failing test for action-tables LRk parser k=2
Date: Mon, 29 Nov 2021 15:59:50 -0500 (EST)

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

    Added failing test for action-tables LRk parser k=2
---
 test/parser-generator-lr-test.el | 78 ++++++++++++++++++++++------------------
 1 file changed, 43 insertions(+), 35 deletions(-)

diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index 310ef17..ee37e3c 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -581,48 +581,56 @@
        parser-generator-lr--goto-tables)))
     (message "Passed GOTO-tables k = 2")
 
+    ;; state | aa | ab | ac | a$ | ba | bb | bc | b$ | ca | cb | cc | c$ | $$ 
+    ;; ------+----+----+----+----+----+----+----+----+----+----+----+----+----
+    ;;   1   |    | S  |    |    |    |    |    |    |    |    |    |    |
+    ;; ------+----+----+----+----+----+----+----+----+----+----+----+----+----
+    ;;   2   |    |    |    |    | S  |    | S  | S  |    |    |    |    |
+    ;; ------+----+----+----+----+----+----+----+----+----+----+----+----+----
+    ;;   3   | S  | R  | S  | S  |    |    |    |    | S  |    |    | S  | R
+    ;; ------+----+----+----+----+----+----+----+----+----+----+----+----+----
+    ;;   4   | S  | R  | S  | S  |    |    |    |    | S  |    |    | S  | R
+    ;; ------+----+----+----+----+----+----+----+----+----+----+----+----+----
+    ;;   5   |    | R  |    |    |    |    |    |    |    |    |    |    | R
+    ;; ------+----+----+----+----+----+----+----+----+----+----+----+----+----
+    ;;   6   |    | R  |    |    |    |    |    |    |    |    |    |    | R
+    ;; ------+----+----+----+----+----+----+----+----+----+----+----+----+----
+    ;;   7   |    | R  |    |    |    |    |    |    |    |    |    |    | R
+    ;; ------+----+----+----+----+----+----+----+----+----+----+----+----+----
+    ;;   8   |    | S  |    |    |    |    |    |    |    |    |    |    | R
+    ;; ------+----+----+----+----+----+----+----+----+----+----+----+----+----
+    ;;   9   |    |    |    |    |    |    |    |    |    |    |    |    | R
+    ;; ------+----+----+----+----+----+----+----+----+----+----+----+----+----
+    ;;   10  |    |    |    |    |    |    |    |    |    |    |    |    | A
+
     (parser-generator-lr--generate-action-tables
      lr-items)
     (parser-generator--debug
      (message
       "Action-tables k = 2: %s"
-      (parser-generator--hash-values-to-list 
parser-generator-lr--action-tables t)))
-
-    ;; TODO Validate action-table here, should be able to reduce at look-ahead 
("a" "b") as well
-
-    ;; (should
-    ;;  (equal
-    ;;   '((0 ((("a" "a") reduce 2) (("a" e) reduce 2) ((e e) reduce 2)))
-    ;;     (1 ((("a" "b") shift) ((e e) accept)))
-    ;;     (2 ((("a" "a") reduce 2) (("a" e) reduce 2) (("b" e) reduce 2)))
-    ;;     (3 ((("a" "b") shift) (("b" e) shift) (("b" "a") shift)))
-    ;;     (4 ((("a" "a") reduce 2) (("a" e) reduce 2) (("b" e) reduce 2)))
-    ;;     (5 ((("a" "a") reduce 1) (("a" e) reduce 1) ((e e) reduce 1)))
-    ;;     (6 ((("a" "b") shift) (("b" "b") shift) (("b" "a") shift)))
-    ;;     (7 ((("a" "a") reduce 1) (("a" e) reduce 1) (("b" e) reduce 1))))
-    ;;   (parser-generator--hash-to-list
-    ;;    parser-generator-lr--action-tables)))
-    ;; (message "Passed ACTION-tables k = 2")
+      (parser-generator--hash-to-list parser-generator-lr--action-tables)))
+
+    (should
+     (equal
+      '(
+        (0 (((a b) shift)))
+        (1 ((($ $) reduce 2) ((a b) shift)))
+        (2 ((($ $) accept)))
+        (3 (((b $) shift) ((b c) shift) ((b a) shift)))
+        (4 ((($ $) reduce 6) ((a b) reduce 6) ((a c) shift) ((a a) shift) ((c 
$) shift) ((c a) shift)))
+        (5 ((($ $) reduce 3) ((a b) reduce 3)))
+        (6 ((($ $) reduce 6) ((a b) reduce 6) ((a c) shift) ((a a) shift) ((c 
$) shift) ((c a) shift)))
+        (7 ((($ $) reduce 5) ((a b) reduce 5)))
+        (8 ((($ $) reduce 4) ((a b) reduce 4)))
+        (9 ((($ $) reduce 1)))
+        )
+      (parser-generator--hash-to-list
+       parser-generator-lr--action-tables)))
+    (message "Passed ACTION-tables k = 2")
 
     )
-  (setq
-   parser-generator-lex-analyzer--function
-   (lambda (index)
-     (let* ((string '(("a" 1 . 2) ("b" 2 . 3)))
-            (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))))
-  (should
-   (equal
-    '(2 2 2 1 1)
-    (parser-generator-lr-parse)))
-  (message "Passed test with terminals as string with look-ahead-number 2")
+
+  ;; TODO Test parse and translate here
 
   (message "Passed tests for (parser-generator-lr--parse-k-2)"))
 



reply via email to

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