branch: externals/parser-generator commit 60e9c8ad5a145511ff07a5bd622c992ec8be2310 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Preparations for translation-support in LR-parser --- parser-generator-lr.el | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/parser-generator-lr.el b/parser-generator-lr.el index e12b139..7409c30 100644 --- a/parser-generator-lr.el +++ b/parser-generator-lr.el @@ -617,9 +617,29 @@ (setq popped-items (1+ popped-items))))) (push production-number output) - (when (parser-generator--get-grammar-translation-by-number production-number) - ;; TODO Perform translation here - (message "Popped-items: %s" popped-items-contents)) + ;; Perform translation at reduction if specified + (when + (parser-generator--get-grammar-translation-by-number + production-number) + (let ((popped-items-meta-contents)) + (dolist (popped-item popped-items-contents) + (push + (parser-generator-lex-analyzer--get-function + popped-item) + popped-items-meta-contents)) + (setq + popped-items-meta-contents + (nreverse popped-items-meta-contents)) + (message "Popped-items: %s" popped-items-contents) + (message "Popped-items-meta-contents: %s" popped-items-meta-contents) + + (let ((partial-translation + (funcall + (parser-generator--get-grammar-translation-by-number + production-number) + popped-items-meta-contents))) + (message "Partial-translation: %s" partial-translation) + (push partial-translation translation)))) (let ((new-table-index (car pushdown-list))) (let ((goto-table (gethash new-table-index parser-generator-lr--goto-tables)))