branch: externals/parser-generator commit 03a11c4369fb560b016930f9354668e0a5b940f7 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Started test for LL(k) parser-table generation --- parser-generator-ll.el | 6 +++--- test/parser-generator-ll-test.el | 34 ++++++++++++++++++++++++---------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/parser-generator-ll.el b/parser-generator-ll.el index 6578d57639..e6b24069a8 100644 --- a/parser-generator-ll.el +++ b/parser-generator-ll.el @@ -223,9 +223,9 @@ ;; TODO ;; Algorithm 5.3 p. 351 -(defun parser-generator-ll--generate-parsing-table () - "A parsing table for an LL(k) grammar G. Output M, a valid parsing table for G." - ) +(defun parser-generator-ll--generate-parsing-table (tables) + "Generate a parsing table for an LL(k) grammar G and TABLES. Output M, a valid parsing table for G." + nil) ;; TODO diff --git a/test/parser-generator-ll-test.el b/test/parser-generator-ll-test.el index 3d2b8b9be3..9d8aeb7479 100644 --- a/test/parser-generator-ll-test.el +++ b/test/parser-generator-ll-test.el @@ -16,15 +16,7 @@ "Test `parser-generator-ll--generate-tables'." (message "Started tests for (parser-generator-ll--generate-tables)") - - (message "Passed tests for (parser-generator-ll--generate-tables)")) - -(defun parser-generator-ll-test--generate-parsing-table () - "Test `parser-generator-ll--generate-parsing-table'." - (message "Started tests for (parser-generator-ll--generate-parsing-table)") - - ;; TODO Example 5.14 p. 350 here - + ;; Example 5.14 p. 350 ;; Example 5.15 p. 351 (parser-generator-set-e-identifier 'e) (parser-generator-set-look-ahead-number 2) @@ -49,7 +41,29 @@ (0 (((S) nil (a b) (a A a a)) ((S) nil (a a) (a A a a)) ((S) nil (b b) (b A b a)))) (1 (((A) (a a) (a a) (e)) ((A) (a a) (b a) (b)))) (2 (((A) (b a) (b b) (b)) ((A) (b a) (b a) (e)))) - )))) + ))) + tables + ) + + (message "Passed tests for (parser-generator-ll--generate-tables)")) + +(defun parser-generator-ll-test--generate-parsing-table () + "Test `parser-generator-ll--generate-parsing-table'." + (message "Started tests for (parser-generator-ll--generate-parsing-table)") + + (let* ((tables + '( + (0 (((S) nil (a b) (a A a a)) ((S) nil (a a) (a A a a)) ((S) nil (b b) (b A b a)))) + (1 (((A) (a a) (a a) (e)) ((A) (a a) (b a) (b)))) + (2 (((A) (b a) (b b) (b)) ((A) (b a) (b a) (e)))))) + (parser-tables + (parser-generator-ll--generate-parsing-table + tables))) + (message "parser-tables: %S" parser-tables) + + ;; TODO Add test here + + ) (message "Passed tests for (parser-generator-ll--generate-parsing-table)"))