emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/parser-generator 3e1f2b6 058/434: Passed first for cal


From: ELPA Syncer
Subject: [elpa] externals/parser-generator 3e1f2b6 058/434: Passed first for calculating valid LR-sets for viable prefix γ
Date: Mon, 29 Nov 2021 15:59:08 -0500 (EST)

branch: externals/parser-generator
commit 3e1f2b6875cd23b5a2a75a09fcd4de17ab8bb012
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>

    Passed first for calculating valid LR-sets for viable prefix γ
---
 parser.el           | 21 +++------------------
 test/parser-test.el |  6 +++---
 2 files changed, 6 insertions(+), 21 deletions(-)

diff --git a/parser.el b/parser.el
index 7986fad..af5ac0d 100644
--- a/parser.el
+++ b/parser.el
@@ -663,8 +663,6 @@
           (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)
-
         ;; (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))
@@ -679,22 +677,14 @@
                     (rhs (nth 2 item))
                     (suffix (nth 3 item)))
 
-                (message "item: %s" item)
-                (message "prefix: %s" prefix)
-                (message "rhs: %s" rhs)
-                (message "suffix: %s" suffix)
-
                 ;; Without prefix
                 (unless prefix
 
                   ;; 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)))
-                        (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
@@ -704,16 +694,13 @@
                               (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)
-        (message "V(e) = %s" lr-items-e))
+        (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:
       (let ((prefix-acc)
@@ -723,7 +710,6 @@
             (setq prefix-acc (append prefix-acc prefix))
             (unless (listp prefix-acc)
               (setq prefix-acc (list prefix-acc)))
-            (message "prefix-acc: %s" prefix-acc)
 
             (dolist (lr-item prefix-previous)
               (let ((lr-item-lhs (nth 0 lr-item))
@@ -737,7 +723,8 @@
                   (when (eq lr-item-suffix-first prefix)
 
                     ;; Add [A -> aXi . B, u] to V(X1,...,Xi)
-                    (push `(,lr-item-lhs ,(append lr-item-prefix prefix) 
,lr-item-suffix-rest ,lr-item-look-ahead) lr-new-item)))))
+                    (let ((combined-prefix (append lr-item-prefix (list 
prefix))))
+                      (push `(,lr-item-lhs ,combined-prefix 
,lr-item-suffix-rest ,lr-item-look-ahead) lr-new-item))))))
 
             ;; (c) Repeat step (2b) until no more new items can be added to 
V(X1,...,Xi)
             (let ((added-new t))
@@ -753,7 +740,6 @@
                       (when (parser--valid-non-terminal-p lr-item-suffix-first)
 
                         (let ((lr-item-suffix-rest-first (parser--first 
lr-item-suffix-rest)))
-                          (message "2b FIRST(%s) = %s" lr-item-suffix-first 
lr-item-suffix-rest-first)
                           (let ((sub-production (parser--get-grammar-rhs 
lr-item-suffix-first)))
 
                             ;; For each production with B as LHS
@@ -769,7 +755,6 @@
                                   (puthash `(,prefix-acc ,lr-item-suffix-first 
nil ,sub-rhs ,f) t lr-item-exists)
                                   (push `(,lr-item-suffix-first nil ,sub-rhs 
,f) lr-new-item))))))))))))
 
-            (message "V%s = %s" prefix-acc lr-new-item)
             (setq prefix-previous prefix-acc)
             (puthash prefix-acc lr-new-item lr-items))))
 
diff --git a/test/parser-test.el b/test/parser-test.el
index 50c1e2b..44e31ca 100644
--- a/test/parser-test.el
+++ b/test/parser-test.el
@@ -233,9 +233,9 @@
   (message "Loaded grammar")
   (should
    (equal
-    '((Sp (S) nil nil e)
-      (S (S) nil (a S b) a)
-      (S (S) nil (a S b) e))
+    '((Sp (S) nil (e))
+      (S (S) (a S b) (e))
+      (S (S) (a S b) (a)))
     (parser--lr-items 'S)))
 
   (message "Passed tests for (parser--lr-items)"))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]