emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/parser-generator 60e9c8a 153/434: Preparations for tran


From: ELPA Syncer
Subject: [elpa] externals/parser-generator 60e9c8a 153/434: Preparations for translation-support in LR-parser
Date: Mon, 29 Nov 2021 15:59:30 -0500 (EST)

branch: externals/parser-generator
commit 60e9c8ad5a145511ff07a5bd622c992ec8be2310
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@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)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]