branch: externals/parser-generator commit 5e6ee66f1fe224a877aa52e2b1ece664103286bb Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Added failing parse tests --- test/parser-generator-ll-test.el | 42 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/test/parser-generator-ll-test.el b/test/parser-generator-ll-test.el index 7de01ef0ca..5e927cbf3f 100644 --- a/test/parser-generator-ll-test.el +++ b/test/parser-generator-ll-test.el @@ -286,6 +286,27 @@ (parser-generator-ll-parse))) (message "Passed example 5.16 p. 352") + (setq + parser-generator-lex-analyzer--function + (lambda (index) + (let* ((string '((b 1 . 2) (b 2 . 3))) + (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-error + (parser-generator-ll-parse)) + (message "Passed failing variant of example 5.16 p. 352") + (parser-generator-set-eof-identifier '$) (parser-generator-set-e-identifier 'e) (parser-generator-set-look-ahead-number 2) @@ -446,6 +467,27 @@ (parser-generator-ll-parse))) (message "Passed example from Wikipedia") + (setq + parser-generator-lex-analyzer--function + (lambda (index) + (let* ((string '(("(" 1 . 2) ("a" 2 . 3) ("+" 3 . 4) ("a" 4 . 5))) + (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-error + (parser-generator-ll-parse)) + (message "Passed failing variant of example from Wikipedia") + (message "Passed tests for (parser-generator-ll-parse)")) (defun parser-generator-ll-test-translate ()