branch: externals/parser-generator commit 5da1b2824e9fd903b6b94d23dc50d218b455fac0 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Added TODO item --- parser.el | 1 + test/parser-test.el | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/parser.el b/parser.el index a2a6811..e13a305 100644 --- a/parser.el +++ b/parser.el @@ -652,6 +652,7 @@ (setq follow-set (parser--distinct follow-set))) follow-set)) +;; TODO Don't check for distincts prefixes but LR-items ;; Algorithm 5.9, p. 389 (defun parser--lr-items-for-grammar () "Calculate set of valid LR(k) items for grammar." diff --git a/test/parser-test.el b/test/parser-test.el index fe8d099..caed787 100644 --- a/test/parser-test.el +++ b/test/parser-test.el @@ -304,6 +304,41 @@ (parser--lr-items-for-prefix '(S b)))) (message "Passed V(Sb)") + ;; a3 p. 390 + (should + (equal + '((S (S) (a S b) (a)) + (S (S) (a S b) (b)) + (S (S a S) (b) (a)) + (S (S a S) (b) (e))) + (parser--lr-items-for-prefix '(S a S)))) + (message "Passed V(SaS)") + + (should + (equal + nil + (parser--lr-items-for-prefix '(S a a)))) + (message "Passed V(Saa)") + + (should + (equal + nil + (parser--lr-items-for-prefix '(S a b)))) + (message "Passed V(Sab)") + + ;; a4 p. 390 + (should + (equal + '((S (S a) (S b) (a)) + (S (S a) (S b) (e)) + (S nil (S a S b) (a)) + (S nil (S a S b) (b)) + (S nil nil (a)) + (S nil nil (e))) + (parser--lr-items-for-prefix '(S a S b)))) + (message "Passed V(SaSb)") + + (message "Passed tests for (parser--lr-items-for-prefix)")) (defun parser-test--valid-grammar-p ()