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

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

[elpa] externals/parser-generator a796d8d 253/434: Added another passing


From: ELPA Syncer
Subject: [elpa] externals/parser-generator a796d8d 253/434: Added another passing unit test for k=2
Date: Mon, 29 Nov 2021 15:59:52 -0500 (EST)

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

    Added another passing unit test for k=2
---
 test/parser-generator-lr-test.el | 53 +++++++++++++++++++++++++++++++++++++++-
 1 file changed, 52 insertions(+), 1 deletion(-)

diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index ad7b446..69ae4c6 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -630,7 +630,58 @@
 
     )
 
-  ;; TODO Test parse and 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)) (T ("a" 
T) ("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
+      '(5 4 3 2)
+      (parser-generator-lr-parse)))
+
+    (message "Passed parse with k = 2 # 1")
+
+    (switch-to-buffer buffer)
+    (kill-region (point-min) (point-max))
+    (insert "aba")
+
+    (should
+     (equal
+      '(6 4 3 2)
+      (parser-generator-lr-parse)))
+
+    (message "Passed parse with k = 2 # 2")
+
+    (kill-buffer))
+
+  ;; TODO Test translate here
+
 
   (message "Passed tests for (parser-generator-lr--parse-k-2)"))
 



reply via email to

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