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

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

[elpa] externals/parser-generator f07939a440 76/82: Added example from W


From: Christian Johansson
Subject: [elpa] externals/parser-generator f07939a440 76/82: Added example from Wikipedia and passing test
Date: Thu, 12 May 2022 13:28:20 -0400 (EDT)

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

    Added example from Wikipedia and passing test
---
 test/parser-generator-ll-test.el | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/test/parser-generator-ll-test.el b/test/parser-generator-ll-test.el
index da731424ba..7de01ef0ca 100644
--- a/test/parser-generator-ll-test.el
+++ b/test/parser-generator-ll-test.el
@@ -406,6 +406,46 @@
     (parser-generator-ll-parse)))
   (message "Passed example 5.12 p. 346-347")
 
+  (parser-generator-set-eof-identifier '$)
+  (parser-generator-set-e-identifier 'e)
+  (parser-generator-set-look-ahead-number 1)
+  (parser-generator-set-grammar
+   '(
+     (S F)
+     ("(" "a" ")" "+")
+     (
+      (S F)
+      (S ("(" S "+" F ")"))
+      (F "a")
+      )
+     S
+     )
+   )
+  (parser-generator-process-grammar)
+  (parser-generator-ll-generate-table)
+  (setq
+   parser-generator-lex-analyzer--function
+   (lambda (index)
+     (let* ((string '(("(" 1 . 2) ("a" 2 . 3) ("+" 3 . 4) ("a" 4 . 5) (")" 5 . 
6)))
+            (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))))
+  (setq
+   parser-generator-lex-analyzer--get-function
+   (lambda (token)
+     (car token)))
+  (should
+   (equal
+    '(1 0 2 2) ;; Example is 1 indexed '(2 1 3 3)
+    (parser-generator-ll-parse)))
+  (message "Passed example from Wikipedia")
+
   (message "Passed tests for (parser-generator-ll-parse)"))
 
 (defun parser-generator-ll-test-translate ()



reply via email to

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