branch: externals/parser-generator commit 80cf73d3b6ea32e78eaf426cfad7de9d39efae5d Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Passing tests for valid-grammar syntax --- parser.el | 1 + test/parser-test.el | 99 ++++++++++++++++++++++++++++++++++------------------- 2 files changed, 65 insertions(+), 35 deletions(-) diff --git a/parser.el b/parser.el index 987ead7..074b0c4 100644 --- a/parser.el +++ b/parser.el @@ -234,6 +234,7 @@ (listp (car (cdr production))) (symbolp (car (cdr production))) (stringp (car (cdr production)))))) + (message "RHS is invalid") (setq is-valid nil)) ;; Validate right-hand-side (RHS) of production diff --git a/test/parser-test.el b/test/parser-test.el index ed7f1dd..7544cc8 100644 --- a/test/parser-test.el +++ b/test/parser-test.el @@ -201,25 +201,41 @@ "Test function `parser--valid-grammar-p'." (message "Starting tests for (parser--valid-grammar-p)") - (should - (equal + (should (equal + t + (parser--valid-grammar-p '((A B C) ("a" "b" "c") ((A "a")) A)))) + + (should (equal nil - (parser--valid-grammar-p 'B))) + (parser--valid-grammar-p '((A B C) ("a" "b" "c") ((A "a")) (A))))) - (should - (equal + (should (equal + nil + (parser--valid-grammar-p '((A B C) (("a" "b") "c") ((A "a")) A)))) + + (should (equal + nil + (parser--valid-grammar-p '(((A B) C) ("a" "b" "c") ((A "a")) A)))) + + (should (equal + nil + (parser--valid-grammar-p '(((A B) C) ("a" "b" "c") ((A)) A)))) + + (should (equal nil (parser--valid-grammar-p "A"))) - (should - (equal + (should (equal nil (parser--valid-grammar-p '(A B C)))) - (should - (equal - t - (parser--valid-grammar-p '((A B C) (a b c) ((A ab a)(B b)(C c)) A)))) + (should (equal + nil + (parser--valid-grammar-p '((A B))))) + + (should (equal + nil + (parser--valid-grammar-p '((A B C) (a (b c) "c") (A ("a" "b") (a b)) (B b) (C "c"))))) (message "Passed tests for (parser--valid-grammar-p)")) @@ -227,35 +243,29 @@ "Test function `parser--valid-look-ahead-number-p'." (message "Starting tests for (parser--valid-look-ahead-number-p)") - (should - (equal - nil - (parser--valid-look-ahead-number-p 'A))) + (should (equal + nil + (parser--valid-look-ahead-number-p 'A))) - (should - (equal - nil - (parser--valid-look-ahead-number-p "A"))) + (should (equal + nil + (parser--valid-look-ahead-number-p "A"))) - (should - (equal - nil - (parser--valid-look-ahead-number-p -2))) + (should (equal + nil + (parser--valid-look-ahead-number-p -2))) - (should - (equal - nil - (parser--valid-look-ahead-number-p 3.3))) + (should (equal + nil + (parser--valid-look-ahead-number-p 3.3))) - (should - (equal - t - (parser--valid-look-ahead-number-p 2))) + (should (equal + t + (parser--valid-look-ahead-number-p 2))) - (should - (equal - t - (parser--valid-look-ahead-number-p 1))) + (should (equal + t + (parser--valid-look-ahead-number-p 1))) (message "Passed tests for (parser--valid-look-ahead-number-p)")) @@ -265,9 +275,28 @@ (message "Passed tests for (parser--valid-sentential-form-p)")) +(defun parser-test--valid-production-p () + "Test `parser--valid-production-p'." + (message "Starting tests for (parser--valid-production-p)") + + (should (equal + t + (parser--valid-production-p '(A a)))) + + (should (equal + nil + (parser--valid-production-p "A"))) + + (should (equal + nil + (parser--valid-production-p '((A a))))) + + (message "Passed tests for (parser--valid-production-p)")) + (defun parser-test () "Run test." (parser-test--valid-look-ahead-number-p) + (parser-test--valid-production-p) (parser-test--valid-grammar-p) (parser-test--distinct) (parser-test--valid-sentential-form-p)