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

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

[elpa] externals/parser-generator f621e77 161/434: Preparations for test


From: ELPA Syncer
Subject: [elpa] externals/parser-generator f621e77 161/434: Preparations for testing incremental parse
Date: Mon, 29 Nov 2021 15:59:32 -0500 (EST)

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

    Preparations for testing incremental parse
---
 parser-generator-lr.el           |  8 +++----
 test/parser-generator-lr-test.el | 49 ++++++++++++++++++++++++++++++++++++----
 2 files changed, 48 insertions(+), 9 deletions(-)

diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 39b1ea4..fe29519 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -700,11 +700,11 @@
 
                             (when next-index
                               (push production-lhs pushdown-list)
-                              (push next-index pushdown-list)))))
+                              (push next-index pushdown-list)
 
-                      (push
-                       `(,parser-generator-lex-analyzer--index ,pushdown-list)
-                       pushdown-list-history)))))
+                              (push
+                               `(,parser-generator-lex-analyzer--index 
,pushdown-list)
+                               pushdown-list-history)))))))))
 
                ((equal action-match '(accept))
                 ;;    (d) If f(u) = accept, we halt and declare the string
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index 4d6aae2..cc02538 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -223,9 +223,9 @@
 
   (message "Passed tests for (parser-generator-lr--items-valid-p)"))
 
-(defun parser-generator-lr-test--parse ()
-  "Test `parser-generator-lr--parse'."
-  (message "Started tests for (parser-generator-lr--parse)")
+(defun parser-generator-lr-test-parse ()
+  "Test `parser-generator-lr-parse'."
+  (message "Started tests for (parser-generator-lr-parse)")
 
   (parser-generator-set-grammar '((Sp S) (a b) ((Sp S) (S (S a S b)) (S e)) 
Sp))
   (parser-generator-set-look-ahead-number 1)
@@ -319,6 +319,42 @@
 
   (message "Passed test with terminals as string, invalid syntax")
 
+  ;; TODO Add incremental parse here
+
+  (setq
+   parser-generator-lex-analyzer--function
+   (lambda (index)
+     (let* ((string '(("a" 1 . 2) ("a" 2 . 3) ("b" 3 . 4) ("b" 4 . 5)))
+            (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))))
+
+  (let ((history (nth 2 (parser-generator-lr--parse))))
+    (message "History: %s" history)
+
+    (let ((input-tape-index (car (nth 2 history)))
+          (pushdown-list (car (cdr (nth 2 history)))))
+      ;; (let ((parser-generator-lr--parse
+      ;;        input-tape-index
+      ;;        pushdown-list
+      ;;        output-history
+      ;;        translation-history
+      ;;        pushdown-list-history))
+      (message "input-tape-index: %s" input-tape-index)
+      (message "pushdown-list: %s" pushdown-list)))
+
+  (message "Passed tests for (parser-generator-lr--parse)"))
+
+(defun parser-generator-lr-test-translate ()
+  "Test `parser-generator-lr-translate'."
+  (message "Started tests for (parser-generator-lr-translate)")
+
   ;; Test translation with terminals as strings here
 
   (let ((buffer (generate-new-buffer "*a*")))
@@ -418,7 +454,9 @@
     (kill-buffer buffer))
   (message "Passed test with translation 2")
 
-  (message "Passed tests for (parser-generator-lr--parse)"))
+  ;; TODO Add incremental translation here
+
+  (message "Passed tests for (parser-generator-lr-translate)"))
 
 (defun parser-generator-lr-test ()
   "Run test."
@@ -428,7 +466,8 @@
   (parser-generator-lr-test--items-valid-p)
   (parser-generator-lr-test--generate-goto-tables)
   (parser-generator-lr-test--generate-action-tables)
-  (parser-generator-lr-test--parse))
+  (parser-generator-lr-test-parse)
+  (parser-generator-lr-test-translate))
 
 
 (provide 'parser-generator-lr-test)



reply via email to

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