branch: externals/parser-generator commit 14711d4f95bf9ccb367df79215339260ad07a489 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Added more debug stuff --- parser-generator-lr.el | 8 +++--- test/parser-generator-lr-test.el | 58 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/parser-generator-lr.el b/parser-generator-lr.el index f23e348..4b9d7d2 100644 --- a/parser-generator-lr.el +++ b/parser-generator-lr.el @@ -648,8 +648,8 @@ lr-items (car (cdr popped-item))) (parser-generator--debug - (message "lr-item-set-index: %s" lr-item-set-index) - (message "marked lr-items: %s" lr-items) + (message "lr-item-set-index: %S" lr-item-set-index) + (message "marked lr-items: %S" lr-items) (message "popped-item: %s" popped-item)) (puthash @@ -960,7 +960,9 @@ (message "b-suffix-follow: %s" b-suffix-follow) (message "b-suffix-follow-eff: %s" b-suffix-follow-eff)) - (dolist (b-suffix-follow-eff-item-full b-suffix-follow-eff) + (dolist + (b-suffix-follow-eff-item-full + b-suffix-follow-eff) (setq b-suffix-follow-eff-item (parser-generator--get-symbols-without-attributes diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el index 19c564b..a27afcd 100644 --- a/test/parser-generator-lr-test.el +++ b/test/parser-generator-lr-test.el @@ -584,14 +584,66 @@ symbol (string-to-number symbol))) symbol)))))) - (parser-generator-process-grammar) - ;; TODO Should error here at GOTO-table generation + (parser-generator-lr-generate-parser-tables) + + ;; LR-items set 14: +;; ( +;; ((exp) (exp) ("*" exp) (" +;; ")) +;; ((exp) (exp) ("*" exp) ("*")) +;; ((exp) (exp) ("*" exp) ("+")) +;; ((exp) (exp) ("*" exp) ("-")) +;; ((exp) (exp) ("*" exp) ("/")) +;; ((exp) (exp) ("*" exp) ("^")) +;; ((exp) (exp) ("+" exp) (" +;; ")) +;; ((exp) (exp) ("+" exp) ("*")) +;; ((exp) (exp) ("+" exp) ("+")) +;; ((exp) (exp) ("+" exp) ("-")) +;; ((exp) (exp) ("+" exp) ("/")) +;; ((exp) (exp) ("+" exp) ("^")) +;; ((exp) (exp) ("-" exp) (" +;; ")) +;; ((exp) (exp) ("-" exp) ("*")) +;; ((exp) (exp) ("-" exp) ("+")) +;; ((exp) (exp) ("-" exp) ("-")) +;; ((exp) (exp) ("-" exp) ("/")) +;; ((exp) (exp) ("-" exp) ("^")) +;; ((exp) (exp) ("/" exp) (" +;; ")) +;; ((exp) (exp) ("/" exp) ("*")) +;; ((exp) (exp) ("/" exp) ("+")) +;; ((exp) (exp) ("/" exp) ("-")) +;; ((exp) (exp) ("/" exp) ("/")) +;; ((exp) (exp) ("/" exp) ("^")) +;; ((exp) (exp) ("^" exp) (" +;; ")) +;; ((exp) (exp) ("^" exp) ("*")) +;; ((exp) (exp) ("^" exp) ("+")) +;; ((exp) (exp) ("^" exp) ("-")) +;; ((exp) (exp) ("^" exp) ("/")) +;; ((exp) (exp) ("^" exp) ("^")) +;; ((exp) (exp "^" exp) nil (" +;; ")) +;; ((exp) (exp "^" exp) nil ("*")) +;; ((exp) (exp "^" exp) nil ("+")) +;; ((exp) (exp "^" exp) nil ("-")) +;; ((exp) (exp "^" exp) nil ("/")) +;; ((exp) (exp "^" exp) nil ("^")) +;; ) + + ;; TODO Should error here in state 14 of GOTO-table generation (should-error - (parser-generator-lr-generate-parser-tables)) + (progn + (parser-generator-lr--prepare-global-declaration) + (parser-generator-lr--generate-goto-tables))) ;; TODO Add global precedence and grammar should now pass + + + ;; TODO Refactor context-sensitive grammar to apply to entire rule instead of specific element (message "Generated parser")