[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 234a6ca2db 70/82: More work on LLk SDT
From: |
Christian Johansson |
Subject: |
[elpa] externals/parser-generator 234a6ca2db 70/82: More work on LLk SDT |
Date: |
Thu, 12 May 2022 13:28:19 -0400 (EDT) |
branch: externals/parser-generator
commit 234a6ca2db0bf24758cafa199096e8ed408e36c8
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
More work on LLk SDT
---
parser-generator-ll.el | 31 ++++++++++++++++++++++++++-----
1 file changed, 26 insertions(+), 5 deletions(-)
diff --git a/parser-generator-ll.el b/parser-generator-ll.el
index f7095513a4..dabd26ba94 100644
--- a/parser-generator-ll.el
+++ b/parser-generator-ll.el
@@ -245,6 +245,8 @@
(parser-generator--debug
(message "reduced: %S -> %S" state (nth 1 action)))
+ (pop stack)
+
;; Is it time for SDT?
(when (and
translation-stack
@@ -263,9 +265,6 @@
;; TODO Do something
))
- (pop stack)
-
-
(push
(list
(format "%S" stack)
@@ -296,13 +295,35 @@
(car (nth 0 production)))
(production-rhs
(nth 1 production))
- (translation))
+ (translation)
+ (args))
+
+ ;; Collect arguments for translation
+ (let ((terminal-index 0))
+ (dolist (rhs-item production-rhs)
+ (cond
+
+ ((parser-generator--valid-non-terminal-p
+ rhs-item)
+ (let ((non-terminal-value-list (gethash rhs-item symbol-table))
+ (non-terminal-value))
+ (when non-terminal-value-list
+ (setq non-terminal-value (pop non-terminal-value-list))
+ (puthash rhs-item non-terminal-value-list symbol-table))
+ (push non-terminal-value args)))
+
+ ((parser-generator--valid-terminal-p
+ rhs-item)
+ (push (nth terminal-index terminals) args)
+ (setq terminal-index (1+ terminal-index))))))
+ (setq args (reverse args))
+
(message
"Perform translation %d: %S -> %S via args: %S"
production-number
production-lhs
production-rhs
- terminals)
+ args)
(let ((old-symbol-value
(gethash
production-lhs
- [elpa] externals/parser-generator 315e40eff8 10/82: More work on LL table generation, (continued)
- [elpa] externals/parser-generator 315e40eff8 10/82: More work on LL table generation, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 34ab0f1718 21/82: More various tweaks, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 064bd259ff 26/82: Passing LLk validation tests, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator f0de6698b9 29/82: Added todo item, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 97919972a7 35/82: Improved debug message, added TODO item, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator e55a3f8a37 38/82: Updated TODO items, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 7ee5504003 45/82: More work on LLk parser, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator fd2f90dd81 47/82: Added TODO-item, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator b41b2dbffe 68/82: Removed debug output, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 566228f16c 71/82: More work on LLk translation, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 234a6ca2db 70/82: More work on LLk SDT,
Christian Johansson <=
- [elpa] externals/parser-generator ff261d9a4e 75/82: Using stack for symbols value in SDT, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator de7c45c511 78/82: Started with LL-export functions, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 5be162966b 80/82: Fixed byte-compilation issue in exported LL parser, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 2869417d78 31/82: Made new helper functions to make LL-parsing easier, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 23805731c1 34/82: More work on LL-parser, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 8cc2a5b315 44/82: More work on LLk parsing, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 5aeee49bd0 48/82: Added another todo note, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 4c93e895b3 49/82: Added TODO item, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator ec0711fa84 53/82: Tweaks on internal functions of LLk parsing, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator ed9933eeba 57/82: Passing a lot of LLk tests, Christian Johansson, 2022/05/12