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

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

[elpa] externals/parser-generator 173fe94 152/434: Preparations for tran


From: ELPA Syncer
Subject: [elpa] externals/parser-generator 173fe94 152/434: Preparations for translation
Date: Mon, 29 Nov 2021 15:59:30 -0500 (EST)

branch: externals/parser-generator
commit 173fe946dd398f38378830b9c88b08623f573af4
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>

    Preparations for translation
---
 parser-generator-lr.el | 14 +++++++++++---
 parser-generator.el    |  6 ++++++
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 4447d81..e12b139 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -604,15 +604,23 @@
                 (let ((production-number (car (cdr action-match))))
                   (let ((production 
(parser-generator--get-grammar-production-by-number production-number)))
                     (let ((production-lhs (car production))
-                          (production-rhs (car (cdr production))))
+                          (production-rhs (car (cdr production)))
+                          (popped-items-contents))
                       (unless (equal production-rhs (list 
parser-generator--e-identifier))
                         (let ((pop-items (* 2 (length production-rhs)))
-                              (popped-items 0))
+                              (popped-items 0)
+                              (popped-item))
                           (while (< popped-items pop-items)
-                            (pop pushdown-list)
+                            (setq popped-item (pop pushdown-list))
+                            (when (listp popped-item)
+                              (push popped-item popped-items-contents))
                             (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))
+
                       (let ((new-table-index (car pushdown-list)))
                         (let ((goto-table (gethash new-table-index 
parser-generator-lr--goto-tables)))
                           (let ((goto-table-length (length goto-table))
diff --git a/parser-generator.el b/parser-generator.el
index 27c522b..c151273 100644
--- a/parser-generator.el
+++ b/parser-generator.el
@@ -201,6 +201,12 @@
       (error "No grammar G defined!")))
   (nth 1 G))
 
+(defun parser-generator--get-grammar-translation-by-number (production-number)
+  "If translation for PRODUCTION-NUMBER exist, return it."
+  (unless parser-generator--table-translations
+    (error "Table for translations by production-number is undefined!"))
+  (gethash production-number parser-generator--table-translations))
+
 (defun parser-generator--hash-to-list (hash-table &optional un-sorted)
   "Return a list that represent the HASH-TABLE.  Each element is a list: (list 
key value), optionally UN-SORTED."
   (let (result)



reply via email to

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