[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)
- [elpa] externals/parser-generator 96f128f 155/434: More various stuff, (continued)
- [elpa] externals/parser-generator 96f128f 155/434: More various stuff, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a586a0e 162/434: More work on incremental parsing, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 6d323a4 120/434: Implemented reduce action of LR-parser algorithm, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 9b44827 124/434: Optimized LR-parser with hash-tables, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 01fc56f 127/434: Updated list of grammars, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 4ef0430 133/434: White-space fix, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b2fd896 136/434: Added support for indexed tokens, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 4746c64 137/434: Updated example for LR parse with indexed tokens, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 04a3ec5 141/434: Added separate file for syntax analysis, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 71e4eaa 145/434: Merge branch 'master' of git.cvj.se:/home/git/emacs-parser-generator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 173fe94 152/434: Preparations for translation,
ELPA Syncer <=
- [elpa] externals/parser-generator be557ba 013/434: More work on refactor, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator fdbdff7 157/434: Added unit test for SDT in LR-parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2d56ab0 160/434: Made separate functions for parse and translate in LR-parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 7cfdea2 165/434: Passing tests for incremental lexer, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b072fdd 175/434: Passed test for trailing e-identifier in EFF function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d435e50 122/434: Passing unit test for LR-parse, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a31da28 173/434: Updated Parser WIP items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator aaec6fa 189/434: Work on e-free first tests, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 922033f 198/434: Various stuff, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator fe10d4a 196/434: Passed tests for first 3 and first 4 of complex grammar, ELPA Syncer, 2021/11/29