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

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

[elpa] externals/parser-generator 19667b3 158/434: Added failing unit te


From: ELPA Syncer
Subject: [elpa] externals/parser-generator 19667b3 158/434: Added failing unit test for translation
Date: Mon, 29 Nov 2021 15:59:31 -0500 (EST)

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

    Added failing unit test for translation
---
 test/parser-generator-lr-test.el | 54 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index 8c21eea..0a3215b 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -355,6 +355,60 @@
       (parser-generator-lr--parse)))
 
     (kill-buffer buffer))
+  (message "Passed test with translation 1")
+
+  (let ((buffer (generate-new-buffer "*a*")))
+    (switch-to-buffer buffer)
+    (insert "if (a) { b; }")
+
+    (parser-generator-set-grammar '((Sp S) (";" OPEN_ROUND_BRACKET 
CLOSE_ROUND_BRACKET IF OPEN_CURLY_BRACKET CLOSE_CURLY_BRACKET VARIABLE) ((Sp S) 
(S (IF OPEN_ROUND_BRACKET VARIABLE CLOSE_ROUND_BRACKET OPEN_CURLY_BRACKET 
VARIABLE CLOSE_CURLY_BRACKET (lambda(args) (nreverse args))))) Sp))
+    (parser-generator-set-look-ahead-number 1)
+    (parser-generator-process-grammar)
+    (parser-generator-lr-generate-parser-tables)
+
+    (setq
+     parser-generator-lex-analyzer--function
+     (lambda (index)
+       (with-current-buffer buffer
+         (goto-char index)
+         (unless (looking-at "[^ \n\t]")
+           (search-forward-regexp "[^ \n\t]")
+           (forward-char -1))
+         (let ((token))
+           (cond
+            ((looking-at "if")
+             (setq token `(IF ,(match-beginning 0) . ,(match-end 0))))
+            ((looking-at "(")
+             (setq token `(OPEN_ROUND_BRACKET ,(match-beginning 0) . 
,(match-end 0))))
+            ((looking-at ")")
+             (setq token `(CLOSE_ROUND_BRACKET ,(match-beginning 0) . 
,(match-end 0))))
+            ((looking-at "{")
+             (setq token `(OPEN_CURLY_BRACKET ,(match-beginning 0) . 
,(match-end 0))))
+            ((looking-at "}")
+             (setq token `(CLOSE_CURLY_BRACKET ,(match-beginning 0) . 
,(match-end 0))))
+            ((looking-at ";")
+             (setq token `(";" ,(match-beginning 0) . ,(match-end 0))))
+            ((looking-at "[a-zA-Z]+")
+             (setq token `(VARIABLE ,(match-beginning 0) . ,(match-end 0)))))
+           (message "Token: %s, index: %s, point: %s" token index (point))
+           token))))
+
+    (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
+      '((2 2 2 1 1) ("b" "a" "b" "a"))
+      (parser-generator-lr--parse)))
+
+    (kill-buffer buffer))
+  (message "Passed test with translation 2")
 
   (message "Passed tests for (parser-generator-lr--parse)"))
 



reply via email to

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