[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 4c93e895b3 49/82: Added TODO item
From: |
Christian Johansson |
Subject: |
[elpa] externals/parser-generator 4c93e895b3 49/82: Added TODO item |
Date: |
Thu, 12 May 2022 13:28:17 -0400 (EDT) |
branch: externals/parser-generator
commit 4c93e895b3ebed3e18ebedf568b9f6acea78a46f
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Added TODO item
---
test/parser-generator-ll-test.el | 148 ++++++++++++++++++++++++++++-----------
1 file changed, 106 insertions(+), 42 deletions(-)
diff --git a/test/parser-generator-ll-test.el b/test/parser-generator-ll-test.el
index 08fa9f4c9d..d767d76bde 100644
--- a/test/parser-generator-ll-test.el
+++ b/test/parser-generator-ll-test.el
@@ -118,6 +118,71 @@
)
(message "Passed Example 5.17 p. 354")
+ (parser-generator-set-eof-identifier '$)
+ (parser-generator-set-e-identifier 'e)
+ (parser-generator-set-look-ahead-number 1)
+ (parser-generator-set-grammar
+ '(
+ (S A)
+ (a b)
+ (
+ (S (a A S) b)
+ (A a (b S A))
+ )
+ S
+ )
+ )
+ (parser-generator-process-grammar)
+ (let* ((tables
+ (parser-generator-ll--generate-tables)))
+ (message "tables: %S" tables)
+ (should
+ (equal
+ tables
+ '(
+ (
+ ((A) (a))
+ (
+ ((a) (a) nil)
+ ((b) (b S A) ((a) (b) (a)))
+ )
+ )
+ (
+ ((S) (a))
+ (
+ ((a) (a A S) ((a) (b) (a)))
+ ((b) (b) nil)
+ )
+ )
+ (
+ ((S) (b))
+ (
+ ((a) (a A S) ((b) (b) (a)))
+ ((b) (b) nil)
+ )
+ )
+ (
+ ((A) (b))
+ (
+ ((a) (a) nil)
+ ((b) (b S A) ((b) (b) (a)))
+ )
+ )
+ (
+ ((S) ($))
+ (
+ ((a) (a A S) (($) (b) (a))) ;; WEIRD?
+ ((b) (b) nil)
+ )
+ )
+ )
+ ))
+ )
+ ;; TODO Verify above
+ (message "Passed Example 5.5 p. 340")
+
+ ;; TODO Example 5.12 p. 346-347
+
(message "Passed tests for (parser-generator-ll--generate-tables)"))
(defun parser-generator-ll-test--generate-parsing-table ()
@@ -356,6 +421,47 @@
(parser-generator-ll-parse)))
(message "Passed example 5.17 p. 355")
+ (parser-generator-set-eof-identifier '$)
+ (parser-generator-set-e-identifier 'e)
+ (parser-generator-set-look-ahead-number 1)
+ (parser-generator-set-grammar
+ '(
+ (S A)
+ (a b)
+ (
+ (S (a A S) b)
+ (A a (b S A))
+ )
+ S
+ )
+ )
+ (parser-generator-process-grammar)
+ (parser-generator-ll-generate-parser-tables)
+ (setq
+ parser-generator-lex-analyzer--function
+ (lambda (index)
+ (let* ((string '((a 1 . 2) (b 2 . 3) (b 3 . 4) (a 4 . 5) (b 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)))
+ (parser-generator-ll-parse)
+ (should
+ (equal
+ '(0 3 1 2 1) ;; Example is indexed from 1 so that is why they have '(1 4 2
3 2)
+ (parser-generator-ll-parse)))
+ (message "Passed example 5.5 p. 340")
+ ;; TODO Make this pass
+
(parser-generator-set-eof-identifier '$)
(parser-generator-set-e-identifier 'e)
(parser-generator-set-look-ahead-number 1)
@@ -427,7 +533,6 @@
)
)
))
-
(parser-generator-ll-generate-parser-tables)
(message
"parser-generator-ll--parsing-table: %S"
@@ -511,47 +616,6 @@
(message "Passed example 5.12 p. 346-347")
;; TODO Make this pass
- (parser-generator-set-eof-identifier '$)
- (parser-generator-set-e-identifier 'e)
- (parser-generator-set-look-ahead-number 2)
- (parser-generator-set-grammar
- '(
- (S A)
- (a b)
- (
- (S (a A S) b)
- (A a (b S A))
- )
- S
- )
- )
- (parser-generator-process-grammar)
- (parser-generator-ll-generate-parser-tables)
- (setq
- parser-generator-lex-analyzer--function
- (lambda (index)
- (let* ((string '((a 1 . 2) (b 2 . 3) (b 3 . 4) (a 4 . 5) (b 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)))
- (parser-generator-ll-parse)
- (should
- (equal
- '(0 3 1 2 1) ;; Example is indexed from 1 so that is why they have '(1 4 2
3 2)
- (parser-generator-ll-parse)))
- (message "Passed example 5.5 p. 340")
- ;; TODO Make this pass
-
(message "Passed tests for (parser-generator-ll-parse)"))
(defun parser-generator-ll-test--generate-parser-tables ()
- [elpa] externals/parser-generator b41b2dbffe 68/82: Removed debug output, (continued)
- [elpa] externals/parser-generator b41b2dbffe 68/82: Removed debug output, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 566228f16c 71/82: More work on LLk translation, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 234a6ca2db 70/82: More work on LLk SDT, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator ff261d9a4e 75/82: Using stack for symbols value in SDT, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator de7c45c511 78/82: Started with LL-export functions, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 5be162966b 80/82: Fixed byte-compilation issue in exported LL parser, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 2869417d78 31/82: Made new helper functions to make LL-parsing easier, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 23805731c1 34/82: More work on LL-parser, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 8cc2a5b315 44/82: More work on LLk parsing, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 5aeee49bd0 48/82: Added another todo note, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 4c93e895b3 49/82: Added TODO item,
Christian Johansson <=
- [elpa] externals/parser-generator ec0711fa84 53/82: Tweaks on internal functions of LLk parsing, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator ed9933eeba 57/82: Passing a lot of LLk tests, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 87ded78c28 63/82: LL(1) parser passes test for generating tables and parsing, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 1ccc742678 72/82: LLk parser passes translation tests, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 1f36aeafdd 74/82: Updated documentation with translate example for LL(1) grammar, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 5e6ee66f1f 77/82: Added failing parse tests, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 0a86c69ef1 19/82: More work on LL-table generation, Christian Johansson, 2022/05/12