[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 5c8a7a5 147/434: Preparations for SDT
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 5c8a7a5 147/434: Preparations for SDT support |
Date: |
Mon, 29 Nov 2021 15:59:29 -0500 (EST) |
branch: externals/parser-generator
commit 5c8a7a54f5b7a620870bb344cd6444113195b879
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Preparations for SDT support
---
parser-generator-lr.el | 16 ++++++++--------
test/parser-generator-lr-test.el | 4 ++--
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index b1f55f3..9b68e2f 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -487,12 +487,11 @@
lr-new-item))
;; Algorithm 5.7, p. 375
-;; TODO Add support for lex-analyzer
-;; TODO Add support for SDT
-;; TODO Add support for semantic-actions
+;; TODO Test incremental usage of this function
+;; TODO Add support for Syntax-directed-translations and semantic-actions
;; TODO Consider case with 2 character look-ahead
-(defun parser-generator-lr--parse (&optional input-tape-index pushdown-list
output)
- "Perform a LR-parse via lex-analyzer, optionally at INPUT-TAPE-INDEX with
PUSHDOWN-LIST and OUTPUT."
+(defun parser-generator-lr--parse (&optional input-tape-index pushdown-list
output translation)
+ "Perform a LR-parse via lex-analyzer, optionally at INPUT-TAPE-INDEX with
PUSHDOWN-LIST, OUTPUT and TRANSLATION."
(unless input-tape-index
(setq input-tape-index 0))
(unless pushdown-list
@@ -568,7 +567,8 @@
;; there is no next input symbol or g(a) is undefined, halt
;; and declare error.
- (let ((a (car look-ahead)))
+ (let ((a (car look-ahead))
+ (a-full (car look-ahead-full)))
(let ((goto-table (gethash table-index
parser-generator-lr--goto-tables)))
(let ((goto-table-length (length goto-table))
(goto-index 0)
@@ -597,7 +597,7 @@
table-index
possible-look-aheads)))
- (push a pushdown-list)
+ (push a-full pushdown-list)
(push next-index pushdown-list)
(parser-generator-lex-analyzer--pop-token)))))
@@ -657,7 +657,7 @@
(t (error (format "Invalid action-match: %s!"
action-match)))))))))
(unless accept
(error "Parsed entire string without getting accepting! Output: %s"
(nreverse output)))
- (nreverse output)))
+ (list (nreverse output) translation)))
(provide 'parser-generator-lr)
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index 82e9d3a..f7150b5 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -280,7 +280,7 @@
(should
(equal
- '(2 2 2 1 1)
+ '((2 2 2 1 1) nil)
(parser-generator-lr--parse)))
(setq
@@ -323,7 +323,7 @@
(should
(equal
- '(2 2 2 1 1)
+ '((2 2 2 1 1) nil)
(parser-generator-lr--parse)))
(setq
- [elpa] externals/parser-generator ef60d96 204/434: Added failing test for new function the generates grammar prefixes, (continued)
- [elpa] externals/parser-generator ef60d96 204/434: Added failing test for new function the generates grammar prefixes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 76e30f1 210/434: Sorted lines in test file, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e88abf0 117/434: More work on parser, added error-handling, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 8328ab3 130/434: Added unit test for failing LRk Grammar Parse, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e89a740 138/434: Fixed bug with goto-table generation were tokens were strings, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c667e18 121/434: Work on shift action in parsing algorithm, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator fab7e46 128/434: Fixed link to LRk grammar, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator bd06863 132/434: LR-parser now uses lex-analyzer for parsing, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d14d427 140/434: Moved more about lex-analysis to separate document, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1613e89 146/434: Added lex-analyzer get function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 5c8a7a5 147/434: Preparations for SDT support,
ELPA Syncer <=
- [elpa] externals/parser-generator 0e54a88 148/434: Optimized away one global variable, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 60e9c8a 153/434: Preparations for translation-support in LR-parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 7ba32ff 154/434: Only save translation if it produces anything, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator f621e77 161/434: Preparations for testing incremental parse, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 944819d 163/434: More debugging incremental parsing, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 668e738 164/434: More work on tests for incremental parse, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ac7a9ab 168/434: Added TODO items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a18a23d 172/434: Updated info about SDT and SA, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d6afd0b 180/434: Added TODO items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator bbcb22f 182/434: Optimized memory usage for f-sets, ELPA Syncer, 2021/11/29