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

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

[elpa] externals/parser-generator 3a0d4cd 255/434: Added translation tes


From: ELPA Syncer
Subject: [elpa] externals/parser-generator 3a0d4cd 255/434: Added translation test for LRk=2
Date: Mon, 29 Nov 2021 15:59:52 -0500 (EST)

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

    Added translation test for LRk=2
---
 test/parser-generator-lr-test.el | 39 ++++++++++++++++++++++++++++++++++++++-
 test/parser-generator-test.el    |  6 ++++++
 2 files changed, 44 insertions(+), 1 deletion(-)

diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index 69ae4c6..f2a3f33 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -680,7 +680,44 @@
 
     (kill-buffer))
 
-  ;; TODO Test translate here
+  (let ((buffer (generate-new-buffer "*a*")))
+    (switch-to-buffer buffer)
+    (kill-region (point-min) (point-max))
+    (insert "abac")
+
+    (parser-generator-set-grammar
+     '((Sp S R T) ("a" "b" "c") ((Sp S) (S (R S) (R)) (R ("a" "b" T 
(lambda(args) (list "begin" (nth 2 args) "end")))) (T ("a" T (lambda() "test")) 
("c") (e))) Sp))
+    (parser-generator-set-look-ahead-number 2)
+    (parser-generator-process-grammar)
+    (parser-generator-lr-generate-parser-tables)
+
+    ;; Setup lex-analyzer
+    (setq
+     parser-generator-lex-analyzer--function
+     (lambda (index)
+       (with-current-buffer buffer
+         (when (<= (+ index 1) (point-max))
+           (let ((start index)
+                 (end (+ index 1)))
+             (let ((token (buffer-substring-no-properties start end)))
+               `(,token ,start . ,end)))))))
+    (setq
+     parser-generator-lex-analyzer--get-function
+     (lambda (token)
+       (with-current-buffer buffer
+         (let ((start (car (cdr token)))
+               (end (cdr (cdr token))))
+           (when (<= end (point-max))
+             (buffer-substring-no-properties start end))))))
+
+    (should
+     (equal
+      '("begin" "test" "end")
+      (parser-generator-lr-translate)))
+
+    (message "Passed translation k=2")
+     
+    (kill-buffer))
 
 
   (message "Passed tests for (parser-generator-lr--parse-k-2)"))
diff --git a/test/parser-generator-test.el b/test/parser-generator-test.el
index 4a880b4..3b4b143 100644
--- a/test/parser-generator-test.el
+++ b/test/parser-generator-test.el
@@ -502,6 +502,12 @@
            t
            (parser-generator--valid-grammar-p '((A B C) ("a" "b" "c") ((A ("a" 
(lambda(a) (message "Was here: %s" a))))) A))))
 
+  (should
+   (equal
+    t
+    (parser-generator--valid-grammar-p
+     '((A B C) ("a" "b" "c") ((A ("a" (lambda(args) (message "a: %s" args))) 
("b" (lambda(args) (message "b: %s" args))) ("c" (lambda(args) (message "c: %s" 
args))))) A))))
+
   (message "Passed tests for (parser-generator--valid-grammar-p)"))
 
 (defun parser-generator-test--valid-look-ahead-number-p ()



reply via email to

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