[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 2c262a4 362/434: Added new error when
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 2c262a4 362/434: Added new error when there is grammar conflict in action-table generation and no precedence comparison function is defined |
Date: |
Mon, 29 Nov 2021 16:00:16 -0500 (EST) |
branch: externals/parser-generator
commit 2c262a4a13c8002d498168501b3c1e6bacb76718
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Added new error when there is grammar conflict in action-table generation
and no precedence comparison function is defined
---
parser-generator-lr.el | 83 +++++++++++++++++++++++++++++---------------------
1 file changed, 48 insertions(+), 35 deletions(-)
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 12128fa..f23e348 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -398,48 +398,61 @@
goto-index
(parser-generator--get-symbols-without-attributes
u))))
+
(when
(gethash
index-hash-key
index-symbols)
- (let ((a u)
- (b
+ (if
+
parser-generator-lr--precedence-comparison-function
+ (let ((a u)
+ (b
+ (gethash
+ index-hash-key
+ index-symbols)))
+ (if
+
(parser-generator-lr--symbol-takes-precedence-p
+ (car a)
+ (car b))
+ (progn
+ (parser-generator--debug
+ (message
+ "'%s' takes precedence
over '%s'"
+ a
+ b))
+ ;; Remove b from
added-actions
+ (let ((new-action-table))
+ (dolist (action-item
action-table)
+ (unless
+ (equal
+ action-item
+ b)
+ (push
+ action-item
+ new-action-table)))
+ (setq
+ action-table
+ (reverse
+ new-action-table))))
+ (parser-generator--debug
+ (message
+ "'%s' takes precedence over
'%s'"
+ b
+ a))
+ ;; Skip rest of this iteration
+ (setq
+ skip-symbol
+ t)))
+ (let ((conflicted-item
(gethash
index-hash-key
index-symbols)))
- (if
-
(parser-generator-lr--symbol-takes-precedence-p
- (car a)
- (car b))
- (progn
- (parser-generator--debug
- (message
- "'%s' takes precedence over
'%s'"
- a
- b))
- ;; Remove b from added-actions
- (let ((new-action-table))
- (dolist (action-item
action-table)
- (unless
- (equal
- action-item
- b)
- (push
- action-item
- new-action-table)))
- (setq
- action-table
- (reverse
- new-action-table))))
- (parser-generator--debug
- (message
- "'%s' takes precedence over '%s'"
- b
- a))
- ;; Skip rest of this iteration
- (setq
- skip-symbol
- t))))
+ (error
+ "Reduce/%S conflict for %S in state
%S"
+ (car (cdr conflicted-item))
+ u
+ goto-index
+ ))))
(unless
(or
- [elpa] externals/parser-generator 4d60ed4 328/434: Added validation to context-sensitive attributes, (continued)
- [elpa] externals/parser-generator 4d60ed4 328/434: Added validation to context-sensitive attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ce9ae69 329/434: Improved comment, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b8a81c5 330/434: Added failing test, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 06d23f5 340/434: More debugging, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator f213255 348/434: Passed all old unit tests again after translation refactor, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 886af5c 349/434: Uncommented export tests until refactor is ok, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 99aa5b6 350/434: Added more unit tests for calculator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d8fb2da 354/434: Just white-space fixes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3964649 359/434: Added more failing unit tests, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 6e0e781 360/434: More debugging, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2c262a4 362/434: Added new error when there is grammar conflict in action-table generation and no precedence comparison function is defined,
ELPA Syncer <=
- [elpa] externals/parser-generator a7a9506 366/434: Refactored structure of context-sensitive attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 98ab0e4 377/434: More work on precedence logic in unit tests, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1b8f025 016/434: More work on validating a grammar structure, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1ae36fc 029/434: Added support for calculating first of a sentential form, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 38c2040 032/434: Improved markdown code examples, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e463bae 041/434: Passing tests for sorting lists, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 840c418 044/434: Improved comment about follow function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2a3a02d 083/434: Removed cache for LR-items for prefixes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3ba5250 090/434: Removed debugging stuff, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 83298fe 099/434: Passing test for function that generates possible look-ahead permutations, ELPA Syncer, 2021/11/29