[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 01df803 051/434: Improved documentatio
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 01df803 051/434: Improved documentation |
Date: |
Mon, 29 Nov 2021 15:59:06 -0500 (EST) |
branch: externals/parser-generator
commit 01df803b3f8a80d19e053a01793b93a4e692e8af
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Improved documentation
---
parser.el | 31 ++++++++++++++++++++-----------
1 file changed, 20 insertions(+), 11 deletions(-)
diff --git a/parser.el b/parser.el
index f773a02..043e661 100644
--- a/parser.el
+++ b/parser.el
@@ -653,16 +653,15 @@
(let ((lr-items-e)
(start-productions (parser--get-grammar-rhs start)))
- ;; a
+ ;; (a)
(dolist (production-rhs start-productions)
(dolist (rhs production-rhs)
;; Add [S -> . α] to V(e)
(push `(,start nil ,rhs e) lr-items-e)
(puthash `(e ,start nil ,rhs e) t lr-item-exists)))
- ;; b, c
- ;; 1.b. iterate every item in v-set(e), if [A -> . Bα, u] is an item
and B -> β is in P
- ;; then foreach x in FIRST(αu) add [B -> . β, x] to v-set(e), provided
it is not already there
+ ;; (b) Iterate every item in v-set(e), if [A -> . Bα, u] is an item
and B -> β is in P
+ ;; then for each x in FIRST(αu) add [B -> . β, x] to v-set(e),
provided it is not already there
(let ((found-new t))
;; Repeat this until no new item is found
@@ -681,7 +680,7 @@
;; Check if RHS starts with a non-terminal
(let ((rhs-first (car rhs)))
- (when (parser--valid-terminal-p rhs-first)
+ (when (parser--valid-non-terminal-p rhs-first)
(let ((rhs-rest (append (cdr rhs) suffix)))
(let ((rhs-first (parser--first rhs-rest)))
(message "FIRST(%s) = %s" rhs-rest rhs-first)
@@ -697,13 +696,23 @@
(unless (gethash `(e ,rhs-first nil ,sub-rhs
,f) lr-item-exists)
(push `(,rhs-first nil ,sub-rhs ,f)
lr-items-e)
- ;; 1.c. repeat b until no more items can be
added to v-set(e)
- (setq found-new t)))))))))))))))
+ ;; (c) Repeat (b) until no more items can be
added to v-set(e)
+ (setq found-new t))))))))))))))
- ;; 2
- ;; a
- ;; b
- ;; c
+ (puthash 'e lr-items-e lr-items))
+
+ ;; 2 Suppose that we have constructed V(X1,X2,...,Xi-1)
+ ;; we construct V(X1,X2,...,Xi) as follows:
+
+ ;; (a) If [A -> a . XiB, u] is in V(X1,...,Xi-1)
+ ;; add [A -> aXi . B, u] to V(X1,...,Xi)
+
+ ;; (b) If [A -> a . Bb, u] has been placed in V(X1,...,Xi)
+ ;; and B -> D is in P
+ ;; then add [B -> . D, x] to V(X1,...,Xi) for each x in FIRST(bu)
+ ;; provided it is not already there
+
+ ;; (c) Repeat step (2b) until no more new items can be added to
V(X1,...,Xi)
lr-items)))
- [elpa] externals/parser-generator 586a38e 047/434: More work on algorithm 5.8, (continued)
- [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, 2021/11/29
- [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 <=
- [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
- [elpa] externals/parser-generator 2829d36 039/434: More work on FOLLOW, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0f8b422 043/434: Added another unit test for follow function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator f8f5fe2 046/434: Started on function to calculate lk-items for a viable prefix, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 8d0a93e 053/434: More work on algorithm, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 6d2e231 059/434: Added two more failing valid LR-set calculation tests, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 15dc472 067/434: Added TODO items, ELPA Syncer, 2021/11/29