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

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

[elpa] externals/parser-generator 922033f 198/434: Various stuff


From: ELPA Syncer
Subject: [elpa] externals/parser-generator 922033f 198/434: Various stuff
Date: Mon, 29 Nov 2021 15:59:40 -0500 (EST)

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

    Various stuff
---
 parser-generator-lr.el           | 11 ++++++---
 test/parser-generator-lr-test.el | 53 ++++++++++++++++++++++------------------
 2 files changed, 36 insertions(+), 28 deletions(-)

diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 3ee60f2..c6078bd 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -108,15 +108,18 @@
                                     (error "Expecting production number for %s 
from LR-item %s!" production lr-item))
 
                                   (if (and
-                                       (= production-number 0)
-                                       (= (length u) 1)
-                                       (parser-generator--valid-e-p (car u)))
+                                       (>= (length u) 1)
+                                       (parser-generator--valid-e-p
+                                        (nth (1- (length u)) u)))
                                       (progn
                                         ;; Reduction by first production
                                         ;; of empty look-ahead means grammar 
has been accepted
+                                        (message "accept of %s" u)
                                         (push (list u 'accept) action-table)
                                         (setq found-action t))
 
+                                    (message "no accept of %s, p: %s" u 
production-number)
+
                                     ;; save reduction action in action table
                                     (push (list u 'reduce production-number) 
action-table)
                                     (setq found-action t))))))))))
@@ -592,7 +595,7 @@
                 ;; transfer to an error recovery routine).
 
                 (error (format
-                        "Invalid syntax! Expected one of %s found %s at index 
%s"
+                        "Invalid syntax! Expected one of %s found %s at index 
%s "
                         possible-look-aheads
                         look-ahead
                         parser-generator-lex-analyzer--index)
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index 75c5fef..56f717a 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -312,6 +312,8 @@
   (parser-generator-set-look-ahead-number 1)
   (parser-generator-process-grammar)
   (parser-generator-lr-generate-parser-tables)
+  (message "goto-tables: %s" (parser-generator--hash-values-to-list 
parser-generator-lr--goto-tables t))
+  (message "action-tables: %s" (parser-generator--hash-values-to-list 
parser-generator-lr--action-tables t))
   (setq
    parser-generator-lex-analyzer--function
    (lambda (index)
@@ -365,29 +367,32 @@
   (parser-generator-lr-test--parse-incremental-vs-regular)
   (message "Passed incremental-tests")
 
-  ;; (parser-generator-set-grammar '((Sp S) ("a" "b") ((Sp S) (S (S "a" S 
"b")) (S e)) Sp))
-  ;; (parser-generator-set-look-ahead-number 2)
-  ;; (parser-generator-process-grammar)
-  ;; (let ((lr-items (parser-generator--hash-values-to-list 
(parser-generator-lr-generate-parser-tables) t)))
-  ;;   (message "lr-items: %s" lr-items))
-  ;; (setq
-  ;;  parser-generator-lex-analyzer--function
-  ;;  (lambda (index)
-  ;;    (let* ((string '(("a" 1 . 2) ("a" 2 . 3) ("b" 3 . 4)))
-  ;;           (string-length (length string))
-  ;;           (max-index index)
-  ;;           (tokens))
-  ;;      (while (and
-  ;;              (< (1- index) string-length)
-  ;;              (< (1- index) max-index))
-  ;;        (push (nth (1- index) string) tokens)
-  ;;        (setq index (1+ index)))
-  ;;      (nreverse tokens))))
-  ;; (should
-  ;;  (equal
-  ;;   '(2 2 2 1 1)
-  ;;   (parser-generator-lr-parse)))
-  ;; (message "Passed test with terminals as string with look-ahead-number 2")
+  (parser-generator-set-grammar '((Sp S) ("a" "b") ((Sp S) (S (S "a" S "b")) 
(S e)) Sp))
+  (parser-generator-set-look-ahead-number 2)
+  (parser-generator-process-grammar)
+  (let ((lr-items (parser-generator--hash-values-to-list 
(parser-generator-lr-generate-parser-tables) t)))
+    (message "lr-items: %s" lr-items)
+    (message "goto-tables: %s" (parser-generator--hash-values-to-list 
parser-generator-lr--goto-tables t))
+    ;; TODO Should generate accept somewhere in this action-table
+    (message "action-tables: %s" (parser-generator--hash-values-to-list 
parser-generator-lr--action-tables t)))
+  (setq
+   parser-generator-lex-analyzer--function
+   (lambda (index)
+     (let* ((string '(("a" 1 . 2) ("a" 2 . 3) ("b" 3 . 4)))
+            (string-length (length string))
+            (max-index index)
+            (tokens))
+       (while (and
+               (< (1- index) string-length)
+               (< (1- index) max-index))
+         (push (nth (1- index) string) tokens)
+         (setq index (1+ index)))
+       (nreverse tokens))))
+  (should
+   (equal
+    '(2 2 2 1 1)
+    (parser-generator-lr-parse)))
+  (message "Passed test with terminals as string with look-ahead-number 2")
 
 
   (message "Passed tests for (parser-generator-lr--parse)"))
@@ -551,7 +556,7 @@
 
 (defun parser-generator-lr-test ()
   "Run test."
-  (setq debug-on-error t)
+  ;; (setq debug-on-error t)
 
   (parser-generator-lr-test--items-for-prefix)
   (parser-generator-lr-test--items-valid-p)



reply via email to

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