[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 72bbadddc0 51/82: Added TODO items
From: |
Christian Johansson |
Subject: |
[elpa] externals/parser-generator 72bbadddc0 51/82: Added TODO items |
Date: |
Thu, 12 May 2022 13:28:17 -0400 (EDT) |
branch: externals/parser-generator
commit 72bbadddc0e65f6f472d6ce361c9e793dbcaa091
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Added TODO items
---
test/parser-generator-ll-test.el | 273 +++++++++++++++++++++++----------------
1 file changed, 161 insertions(+), 112 deletions(-)
diff --git a/test/parser-generator-ll-test.el b/test/parser-generator-ll-test.el
index f2267255bf..c06e25a076 100644
--- a/test/parser-generator-ll-test.el
+++ b/test/parser-generator-ll-test.el
@@ -181,7 +181,82 @@
)
(message "Passed Example 5.5 p. 340")
- ;; TODO 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
+ '(
+ (E E2 T T2 F)
+ ("a" "(" ")" "+" "*")
+ (
+ (E (T E2))
+ (E2 ("+" T E2) e)
+ (T (F T2))
+ (T2 ("*" F T2) e)
+ (F ("(" E ")") "a")
+ )
+ E
+ )
+ )
+ (parser-generator-process-grammar)
+ (let ((tables (parser-generator-ll--generate-tables)))
+ (message "tables: %S" tables)
+ (should
+ (equal
+ '(
+ (
+ ((E2) (")"))
+ (
+ ((")") (e) nil)
+ (("+") ("+" T E2) (("+")))
+ )
+ )
+ (
+ ((E) (")"))
+ (
+ (("(") (T E2) (("+")))
+ (("a") (T E2) (("+")))
+ )
+ )
+ (
+ ((F) ("*"))
+ (
+ (("(") ("(" E ")") ((")")))
+ (("a") ("a") nil)
+ )
+ )
+ (
+ ((T2) ("+"))
+ (
+ (("*") ("*" F T2) (("*")))
+ (("+") (e) nil)
+ )
+ )
+ (
+ ((T) ("+"))
+ (
+ (("(") (F T2) (("*")))
+ (("a") (F T2) (("*")))
+ )
+ )
+ (
+ ((E2) ($))
+ (
+ (($) (e) nil)
+ (("+") ("+" T E2) (("+")))
+ )
+ )
+ (
+ ((E) ($))
+ (
+ (("(") (T E2) (("+")))
+ (("a") (T E2) (("+")))
+ )
+ )
+ )
+ tables)))
+ ;; TODO Verify above
+ (message "Passed Example 5.12 p. 346-347")
(message "Passed tests for (parser-generator-ll--generate-tables)"))
@@ -336,6 +411,91 @@
parser-tables)))
(message "Passed example 5.17 p. 356")
+ (parser-generator-set-eof-identifier '$)
+ (parser-generator-set-e-identifier 'e)
+ (parser-generator-set-look-ahead-number 1)
+ (parser-generator-set-grammar
+ '(
+ (E E2 T T2 F)
+ ("a" "(" ")" "+" "*")
+ (
+ (E (T E2))
+ (E2 ("+" T E2) e)
+ (T (F T2))
+ (T2 ("*" F T2) e)
+ (F ("(" E ")") "a")
+ )
+ E
+ )
+ )
+ (parser-generator-process-grammar)
+ (parser-generator-process-grammar)
+ (let ((parser-tables
+ (parser-generator-ll--generate-parsing-table
+ (parser-generator-ll--generate-tables))))
+ (message "parser-tables: %S" parser-tables)
+ (should
+ (equal
+ '(
+ (
+ ((E) ($))
+ (
+ (("a") reduce (((T) ("+")) ((E2) nil)) 0) ;; TODO Verify this
+ (("(") reduce (((T) ("+")) ((E2) nil)) 0) ;; TODO Verify this
+ )
+ )
+ (
+ ((E2) ($))
+ (
+ (("+") reduce ("+" ((T) ("+")) ((E2) nil)) 1)
+ (($) reduce (e) 2)
+ )
+ )
+ (
+ ((T) ("+"))
+ (
+ (("a") reduce (((F) ("*")) ((T2) nil)) 3)
+ (("(") reduce (((F) ("*")) ((T2) nil)) 3)
+ )
+ )
+ (
+ ((T2) ("+"))
+ (
+ (("+") reduce (e) 5)
+ (("*") reduce ("*" ((F) ("*")) ((T2) nil)) 4)
+ )
+ )
+ (
+ ((F) ("*"))
+ (
+ (("a") reduce ("a") 7)
+ (("(") reduce ("(" ((E) (")")) ")") 6)
+ )
+ )
+ (
+ ((E) (")"))
+ (
+ (("a") reduce (((T) ("+")) ((E2) nil)) 0)
+ (("(") reduce (((T) ("+")) ((E2) nil)) 0)
+ )
+ )
+ (
+ ((E2) (")"))
+ (
+ (("+") reduce ("+" ((T) ("+")) ((E2) nil)) 1)
+ ((")") reduce (e) 2)
+ )
+ )
+ ("a" ((("a") pop)))
+ ("+" ((("+") pop)))
+ ("*" ((("*") pop)))
+ (")" (((")") pop)))
+ ("(" ((("(") pop)))
+ ($ ((($) accept))))
+ parser-tables)))
+ ;; TODO Verify above
+ (message "Passed Example 5.12 p. 346-347")
+
(message "Passed tests for (parser-generator-ll--generate-parsing-table)"))
(defun parser-generator-ll-test--parse ()
@@ -479,117 +639,7 @@
)
)
(parser-generator-process-grammar)
- (let ((tables (parser-generator-ll--generate-tables)))
- (message "tables: %S" tables)
- '(
- (
- ((E2) (")"))
- (
- ((")") (e) nil)
- (("+") ("+" T E2) ((")") ("+")))
- )
- )
- (
- ((E) (")"))
- (
- (("(") (T E2) ((")") ("+")))
- (("a") (T E2) ((")") ("+")))
- )
- )
- (
- ((F) ("*"))
- (
- (("(") ("(" E ")") ((")")))
- (("a") ("a") nil)
- )
- )
- (
- ((T2) ("+"))
- (
- (("*") ("*" F T2) (("+") ("*")))
- (("+") (e) nil)
- )
- )
- (
- ((T) ("+"))
- (
- (("(") (F T2) (("+") ("*")))
- (("a") (F T2) (("+") ("*")))
- )
- )
- (
- ((E2) ($))
- (
- (($) (e) nil)
- (("+") ("+" T E2) (($) ("+")))
- )
- )
- (
- ((E) ($))
- (
- (("(") (T E2) (($) ("+")))
- (("a") (T E2) (($) ("+")))
- )
- )
- ))
(parser-generator-ll-generate-parser-tables)
- (message
- "parser-generator-ll--parsing-table: %S"
- (parser-generator--hash-to-list
- parser-generator-ll--parsing-table
- t))
- ;; Local-follow-should exceed k
- '(
- ("((E) ($))"
- (
- ("(\"a\")" (reduce (((T) ($)) ((E2) ("+"))) 0))
- ("(\"(\")" (reduce (((T) ($)) ((E2) ("+"))) 0))
- )
- )
- ("((E2) ($))"
- (
- ("(\"+\")" (reduce ("+" ((T) ($)) ((E2) ("+"))) 1))
- ("($)" (reduce (e) 2))
- )
- )
- ("((T) (\"+\"))"
- (
- ("(\"a\")" (reduce (((F) ("+")) ((T2) ("*"))) 3))
- ("(\"(\")" (reduce (((F) ("+")) ((T2) ("*"))) 3))
- )
- )
- ("((T2) (\"+\"))"
- (
- ("(\"+\")" (reduce (e) 5))
- ("(\"*\")" (reduce ("*" ((F) ("+")) ((T2) ("*"))) 4))
- )
- )
- ("((F) (\"*\"))"
- (
- ("(\"a\")" (reduce ("a") 7))
- ("(\"(\")" (reduce ("(" ((E) (")")) ")") 6))
- )
- )
- ("((E) (\")\"))"
- (
- ("(\"a\")" (reduce (((T) (")")) ((E2) ("+"))) 0))
- ("(\"(\")" (reduce (((T) (")")) ((E2) ("+"))) 0))
- )
- )
- ("((E2) (\")\"))"
- (
- ("(\"+\")" (reduce ("+" ((T) (")")) ((E2) ("+"))) 1))
- ("(\")\")" (reduce (e) 2))
- )
- )
- ("\"a\""(("(\"a\")" pop)))
- ("\"+\"" (("(\"+\")" pop)))
- ("\"*\"" (("(\"*\")" pop)))
- ("\")\"" (("(\")\")" pop)))
- ("\"(\"" (("(\"(\")" pop)))
- ("$" (("($)" accept)))
- )
- ;; (message "parser-generator-ll--parsing-table: %S"
parser-generator-ll--parsing-table)
(setq
parser-generator-lex-analyzer--function
(lambda (index)
@@ -607,7 +657,6 @@
parser-generator-lex-analyzer--get-function
(lambda (token)
(car token)))
- (parser-generator-ll-parse)
(should
(equal
'(0 3 6 0 3 7 5 2 5) ;; Example is 1-indexed '(1 4 7 1 4 8 5 8 6 3 6 3)
- [elpa] externals/parser-generator 3b9977b51b 28/82: More work on LLk test, (continued)
- [elpa] externals/parser-generator 3b9977b51b 28/82: More work on LLk test, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator f23bc217d8 30/82: More wrestling, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 6e91a4b498 32/82: More work on helper functions, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 80dd506b65 33/82: More work on LL-helper functions, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator e6f9ac545f 37/82: Cleanup after byte-compilation, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator cf4332ef0e 40/82: Started on LLk parsing algorithm, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator f5f7b2c82b 41/82: Added TODO items, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 2e76c4b57e 42/82: Added TODO items, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 8f9e4d4537 46/82: Passing 2 parse examples with k=2, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator fe0decba88 50/82: Passed one test for LLk where k=1, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 72bbadddc0 51/82: Added TODO items,
Christian Johansson <=
- [elpa] externals/parser-generator 2e2496d51f 54/82: Added notes, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 2598402cc7 56/82: Added TODO item, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 7f3c384b6d 55/82: Passing more LLk tests, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 0856bb7784 58/82: Started on refactor were k=1 will be treated with different algorithm, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 2181545d26 64/82: Implemented test for validation of LL(1) grammar, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 4051737aeb 65/82: Added TODO item for LL(k) translation, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 08af836006 69/82: More work on SDT for LL grammar, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 7d87a2d154 79/82: Implemented exported LL(k) and LL(1) parser, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 75323b10e5 81/82: Merge branch 'feature/llk-parser', Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator db91a5f203 82/82: Removed unused function, Christian Johansson, 2022/05/12