[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator c2d2d0d 239/434: Fixed FIRST calculati
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator c2d2d0d 239/434: Fixed FIRST calculating when building lr-item sets |
Date: |
Mon, 29 Nov 2021 15:59:49 -0500 (EST) |
branch: externals/parser-generator
commit c2d2d0d3e1f8c514861629a19d2bc130c47256b9
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Fixed FIRST calculating when building lr-item sets
---
parser-generator-lr.el | 57 +++++++++++++++++++++++++++++++++++---------------
1 file changed, 40 insertions(+), 17 deletions(-)
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 21e166f..13cd8be 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -400,13 +400,19 @@
(< b-index set-length))
(unless (= a-index b-index)
(setq b (nth b-index set))
+ (parser-generator--debug
+ (message "b: %s" b))
+
(setq b-suffix (nth 2 b))
(setq b-follow (nth 3 b))
- (setq b-suffix-follow (append b-suffix b-follow))
- (setq b-suffix-follow-eff (parser-generator--e-free-first
b-suffix-follow))
+ (setq
+ b-suffix-follow
+ (append b-suffix b-follow))
+ (setq
+ b-suffix-follow-eff
+ (parser-generator--e-free-first b-suffix-follow))
(parser-generator--debug
- (message "b: %s" b)
(message "b-suffix: %s" b-suffix)
(message "b-follow: %s" b-follow)
(message "b-suffix-follow: %s" b-suffix-follow)
@@ -658,32 +664,49 @@
(let ((lr-item-suffix-rest-first
(parser-generator--first
lr-item-suffix-rest)))
+ (parser-generator--debug
+ (message
+ "lr-item-suffix-rest-first (before): %s"
+ lr-item-suffix-rest-first))
+
(unless lr-item-suffix-rest-first
(setq
lr-item-suffix-rest-first
(list eof-list)))
;; When |FIRST| < k add EOF symbols
- (when (
- <
- (length lr-item-suffix-rest-first)
- parser-generator--look-ahead-number)
- (setq
- lr-item-suffix-rest-first
- (reverse lr-item-suffix-rest-first))
- (while (<
- (length lr-item-suffix-rest-first)
- parser-generator--look-ahead-number)
+ (let ((new-first))
+ (dolist
+ (first-item
+ lr-item-suffix-rest-first)
+ (when (
+ <
+ (length first-item)
+ parser-generator--look-ahead-number)
+ (setq
+ first-item
+ (reverse
+ first-item))
+ (while (<
+ (length first-item)
+ parser-generator--look-ahead-number)
+ (push
+ parser-generator--eof-identifier
+ first-item))
+ (setq
+ first-item
+ (reverse first-item)))
(push
- parser-generator--eof-identifier
- lr-item-suffix-rest-first))
+ first-item
+ new-first))
(setq
lr-item-suffix-rest-first
- (reverse lr-item-suffix-rest-first)))
+ (reverse
+ new-first)))
(parser-generator--debug
(message
- "lr-item-suffix-rest-first: %s"
+ "lr-item-suffix-rest-first (after): %s"
lr-item-suffix-rest-first))
(let ((sub-production
(parser-generator--get-grammar-rhs
- [elpa] externals/parser-generator 4aeed22 191/434: Passed tests for e-free first function, (continued)
- [elpa] externals/parser-generator 4aeed22 191/434: Passed tests for e-free first function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 18d7c63 195/434: Added new function to merge lists of terminals, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 60d9968 202/434: Fixed valid look-ahead with k above 1, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 38223d3 206/434: Passed tests for generating grammar prefixes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 8a6b752 208/434: Starting on adding support for LR k > 1 parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d604092 223/434: Added failing unit test for e-free-first function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 172d530 214/434: Improved handling of production LHS to enable multiple symbols, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator fbc8f8b 225/434: Removed dependency of hash-table of terminals for LR parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 870eca2 232/434: Reduced depth of GOTO-table to always use one symbol, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 5b45b2b 235/434: Improved comments, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c2d2d0d 239/434: Fixed FIRST calculating when building lr-item sets,
ELPA Syncer <=
- [elpa] externals/parser-generator a516e3f 234/434: Started on new test for LR(2) Parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 06c09bc 254/434: Removed commented-out code, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a796d8d 253/434: Added another passing unit test for k=2, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b2193b2 251/434: GOTO-items now only contain one symbol in parse function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d147355 256/434: Fixed a bug in processing production RHS when loading symbols, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 8e3084b 270/434: More work LRk parser k = 0, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 58190dc 272/434: LR Parser k=0 building correct LR items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0f8aa1d 265/434: Updated LRk README, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator f0cd9f6 280/434: Started on test for export parser feature, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3e9b4ee 279/434: Improved README, ELPA Syncer, 2021/11/29