branch: externals/parser-generator
commit ca85ef40d1767da30a0537c2d023bf9c00d45842
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>
Created TODO items
---
parser.el | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/parser.el b/parser.el
index c14f199..10f3db6 100644
--- a/parser.el
+++ b/parser.el
@@ -646,9 +646,28 @@
;; Algorithm 5.9, p. 389
(defun parser-test--lr-items-for-grammar ()
"Calculate set of valid LR(k) items for grammar."
- (let ((lr-items))
+ (let ((S)
+ (marked-sets (make-hash-table :test 'equal))
+ (symbols (append (parser--get-grammar-non-terminals)
(parser--get-grammar-terminals))))
+ (let ((e-set (parser--lr-items-for-prefix 'e)))
+ ;; TODO (1) Place V(e) in S. The set V(e) is initially unmarked.
+ )
+ (let ((found-unmarked t))
+ (while found-unmarked
+ (setq found-unmarked t)
+ ;; TODO (2) If a set of items a in S is unmarked, mark a by computing
+ ;; for each X in N u E, GOTO (a, X). (Algorithm 5.8 can be used here.)
+ ;; If a' = GOTO(a, X) is nonempty and is not already in S,
+ ;; then add a' to S as an unmarked set of items
+
+ ;; TODO (3) Repeat step (2) until all sets of items in S are marked.
+ ))
+
+ ;; Place V(e) in S
+
+
;; TODO Implement this
- lr-items))
+ S))
;; Algorithm 5.8, p. 386
(defun parser--lr-items-for-prefix (γ)