[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator a60952c 057/434: More debugging of new
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator a60952c 057/434: More debugging of new algorithm |
Date: |
Mon, 29 Nov 2021 15:59:08 -0500 (EST) |
branch: externals/parser-generator
commit a60952c48277b8ff520479d6d7735ca15c9f825d
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
More debugging of new algorithm
---
parser.el | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/parser.el b/parser.el
index 3e44b1b..7986fad 100644
--- a/parser.el
+++ b/parser.el
@@ -586,6 +586,11 @@
(when (> first-length 0)
(push first first-list))))))
(setq first-list (sort first-list 'parser--sort-list))
+ (when (and
+ (not first-list)
+ (= (length β) 1)
+ (eq (car β) 'e))
+ (setq first-list '((e))))
first-list))))
;; Definition at p. 343
@@ -655,8 +660,8 @@
;; (a)
(dolist (rhs start-productions)
;; Add [S -> . α] to V(e)
- (push `(,start nil ,rhs e) lr-items-e)
- (puthash `(e ,start nil ,rhs e) t lr-item-exists))
+ (push `(,start nil ,rhs (e)) lr-items-e)
+ (puthash `(e ,start nil ,rhs (e)) t lr-item-exists))
(message "V(e): %s" lr-items-e)
@@ -685,25 +690,30 @@
;; Check if RHS starts with a non-terminal
(let ((rhs-first (car rhs)))
(when (parser--valid-non-terminal-p rhs-first)
+ (message "rhs-first: %s" rhs-first)
(let ((rhs-rest (append (cdr rhs) suffix)))
- (let ((rhs-first (parser--first rhs-rest)))
- (message "1b FIRST(%s) = %s" rhs-rest rhs-first)
+ (message "rhs-rest: %s" rhs-rest)
+ (let ((rhs-rest-first (parser--first rhs-rest)))
+ (message "1b FIRST(%s) = %s" rhs-rest rhs-rest-first)
(let ((sub-production (parser--get-grammar-rhs
rhs-first)))
;; For each production with B as LHS
(dolist (sub-rhs sub-production)
;; For each x in FIRST(αu)
- (dolist (f rhs-first)
+ (dolist (f rhs-rest-first)
;; Add [B -> . β, x] to v-set(e), provided it
is not already there
+ (message "f: %s" f)
(unless (gethash `(e ,rhs-first nil ,sub-rhs
,f) lr-item-exists)
+ (message "new-item: %s" `(,rhs-first nil
,sub-rhs ,f))
(puthash `(e ,rhs-first nil ,sub-rhs ,f) t
lr-item-exists)
(push `(,rhs-first nil ,sub-rhs ,f)
lr-items-e)
;; (c) Repeat (b) until no more items can be
added to v-set(e)
(setq found-new t))))))))))))))
- (puthash 'e lr-items-e lr-items))
+ (puthash 'e lr-items-e lr-items)
+ (message "V(e) = %s" lr-items-e))
;; 2 Suppose that we have constructed V(X1,X2,...,Xi-1) we construct
V(X1,X2,...,Xi) as follows:
(let ((prefix-acc)
- [elpa] externals/parser-generator 8e99d0c 035/434: Fixed typo, (continued)
- [elpa] externals/parser-generator 8e99d0c 035/434: Fixed typo, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator bc1ec12 036/434: Improved documentation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator fe94691 048/434: Added hash-table for production RHS, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator afa7cb9 050/434: Added unit tests for retrieving grammar RHS, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 603df44 040/434: Added failing unit tests for (parser--sort-list), ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator aadb31a 042/434: Updated README.md about FOLLOW-sets, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 586a38e 047/434: More work on algorithm 5.8, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 00ffcde 052/434: Added TODO items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 7e051d3 054/434: Algorithm 5.8 completed but not tested, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 8e436df 056/434: More tweaking, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a60952c 057/434: More debugging of new algorithm,
ELPA Syncer <=
- [elpa] externals/parser-generator ab0559d 060/434: More work, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d7f43d7 066/434: Sorting lr-items for prefix before return, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ca85ef4 068/434: Created TODO items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b73c4ed 072/434: Made e-symbol customizable, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 55bf9a9 073/434: Removed references to 'e, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 01df803 051/434: Improved documentation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3e1f2b6 058/434: Passed first for calculating valid LR-sets for viable prefix γ, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 51cab75 061/434: More debugging, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator f940be9 033/434: Added list of functions and usage examples, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b8d6476 038/434: Setting look-ahead-number clears cache storage, ELPA Syncer, 2021/11/29