[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 1818b9d 199/434: Added error in action
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 1818b9d 199/434: Added error in action-tables generation if no accept action is found |
Date: |
Mon, 29 Nov 2021 15:59:40 -0500 (EST) |
branch: externals/parser-generator
commit 1818b9daacb88af7441241bb581a5ab94b805240
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Added error in action-tables generation if no accept action is found
---
parser-generator-lr.el | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index c6078bd..b5b9896 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -40,7 +40,8 @@
(let ((action-tables)
(states '(shift reduce error))
(added-actions (make-hash-table :test 'equal))
- (goto-tables (parser-generator--hash-to-list
parser-generator-lr--goto-tables)))
+ (goto-tables (parser-generator--hash-to-list
parser-generator-lr--goto-tables))
+ (found-accept))
(dolist (goto-table goto-tables)
(let ((goto-index (car goto-table))
(found-action nil)
@@ -103,11 +104,13 @@
(unless (gethash hash-key added-actions)
(puthash hash-key t added-actions)
(let ((production (list A B)))
- (let ((production-number
(parser-generator--get-grammar-production-number production)))
+ (let ((production-number
+
(parser-generator--get-grammar-production-number production)))
(unless production-number
(error "Expecting production number for %s
from LR-item %s!" production lr-item))
(if (and
+ (= production-number 0)
(>= (length u) 1)
(parser-generator--valid-e-p
(nth (1- (length u)) u)))
@@ -116,6 +119,7 @@
;; of empty look-ahead means grammar
has been accepted
(message "accept of %s" u)
(push (list u 'accept) action-table)
+ (setq found-accept t)
(setq found-action t))
(message "no accept of %s, p: %s" u
production-number)
@@ -133,6 +137,8 @@
(message "%s actions %s" goto-index action-table))
(when action-table
(push (list goto-index (sort action-table
'parser-generator--sort-list)) action-tables))))
+ (unless found-accept
+ (error "Failed to find a accept action in generated action-tables: %s
from goto-tabbles: %s" action-tables goto-tables))
(setq action-tables (nreverse action-tables))
(setq parser-generator-lr--action-tables (make-hash-table :test 'equal))
(let ((table-length (length action-tables))
- [elpa] externals/parser-generator ba8e501 194/434: Added failing first test with complex case, (continued)
- [elpa] externals/parser-generator ba8e501 194/434: Added failing first test with complex case, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 71d213b 201/434: More work on Canonical LR(k) Parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d7ad86c 200/434: Added TODO item for LRk Canonical Parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 7a175a8 205/434: Passed first unit test for grammar prefixes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 517ed12 212/434: Passing some more unit tests after refactor, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator f4ba363 031/434: Improved README.md, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 744fdf6 174/434: Added TODO item, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d360e8a 176/434: Added failing unit test for FIRST function with starting e-identifier, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c1cdf20 197/434: Fixed issue with lex analyzer reached end of input, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 446cbe9 217/434: Refactored unit tests and separated k=2 case, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1818b9d 199/434: Added error in action-tables generation if no accept action is found,
ELPA Syncer <=
- [elpa] externals/parser-generator 54857e4 220/434: Added failing unit test for translation via LRk, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a96ab3a 222/434: More debugging LR k > 1, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 783ea61 227/434: Added translation-symbol-table to incremental parser and translater, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 439d894 228/434: Passed all LR k=1 tests with more work on generalized solution, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 47fb35e 229/434: More work on a more generalized LR Parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 9b6e076 231/434: Using lowercase epsilon for e-identifier comment, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 01173e2 230/434: Added EOF identifier, passing all unit tests, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a76bb98 240/434: Added comments, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3807a72 237/434: Added failing unit test for LR-items k=2, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 40473d3 252/434: Fixed bug with data in full look-ahead in parse function, ELPA Syncer, 2021/11/29