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

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

[elpa] externals/parser-generator ee78a6c 430/434: LR-parser now passes


From: ELPA Syncer
Subject: [elpa] externals/parser-generator ee78a6c 430/434: LR-parser now passes terminal data to SDT for non-terminals containing only one symbol
Date: Mon, 29 Nov 2021 16:00:31 -0500 (EST)

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

    LR-parser now passes terminal data to SDT for non-terminals containing only 
one symbol
---
 parser-generator-lr.el | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 5ac531d..e68fe5f 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -2015,10 +2015,10 @@
                                           (let ((symbol-translation
                                                  (pop symbol-translations)))
                                             (push
-                                             symbol-translation
+                                             (car symbol-translation)
                                              popped-items-meta-contents)
                                             (push
-                                             nil
+                                             (car (cdr symbol-translation))
                                              popped-items-terminals)
                                             (puthash
                                              temp-hash-key
@@ -2072,7 +2072,9 @@
                                               temp-hash-key
                                               translation-symbol-table)))
                                         (push
-                                         partial-translation
+                                         (list
+                                          partial-translation
+                                          (if (= (length 
popped-items-terminals) 1) popped-items-terminals nil))
                                          symbol-translations)
                                         (puthash
                                          temp-hash-key
@@ -2084,7 +2086,9 @@
 
                                 ;; When no translation is specified just use 
popped contents as translation
                                 (let ((partial-translation
-                                       popped-items-meta-contents))
+                                       (list
+                                        popped-items-meta-contents
+                                        popped-items-terminals)))
                                   (parser-generator--debug
                                    (message
                                     "translation-symbol-table: %S = %S 
(generic)"
@@ -2107,7 +2111,7 @@
                                        translation-symbol-table)
                                       (setq
                                        translation
-                                       partial-translation)))))))
+                                       (car partial-translation))))))))
 
                           (let ((new-table-index (car pushdown-list)))
                             (let ((goto-table-distinct-index



reply via email to

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