branch: externals/parser-generator commit fd2f90dd81317ac40a8483c86904cd2cde1e2b94 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Added TODO-item --- test/parser-generator-ll-test.el | 111 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/test/parser-generator-ll-test.el b/test/parser-generator-ll-test.el index 0ad363b268..f8b92b2562 100644 --- a/test/parser-generator-ll-test.el +++ b/test/parser-generator-ll-test.el @@ -374,7 +374,117 @@ ) ) (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 @@ -399,6 +509,7 @@ '(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) (parser-generator-ll-parse))) (message "Passed example 5.12 p. 346-347") + ;; TODO Make this pass (parser-generator-set-eof-identifier '$) (parser-generator-set-e-identifier 'e)