[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 2a9a23e 219/434: More debugging
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 2a9a23e 219/434: More debugging |
Date: |
Mon, 29 Nov 2021 15:59:44 -0500 (EST) |
branch: externals/parser-generator
commit 2a9a23e0fe3a262ca7a36b31f11a7cb8582ddfc2
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
More debugging
---
parser-generator-lex-analyzer.el | 2 +-
parser-generator-lr.el | 17 ++++++++----
parser-generator.el | 2 +-
test/parser-generator-lr-test.el | 57 ++--------------------------------------
4 files changed, 16 insertions(+), 62 deletions(-)
diff --git a/parser-generator-lex-analyzer.el b/parser-generator-lex-analyzer.el
index 5af5a62..16d4714 100644
--- a/parser-generator-lex-analyzer.el
+++ b/parser-generator-lex-analyzer.el
@@ -102,7 +102,7 @@
(error "Missing look-ahead-number!"))
(let ((iteration 0)
(tokens))
- (while (< iteration parser-generator--look-ahead-number)
+ (while (< iteration 1)
(condition-case error
(progn
(let ((token
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 1d18665..031215a 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -718,6 +718,12 @@
table-index
parser-generator-lr--action-tables)))
+ (unless action-table
+ (error
+ "Action-table with index %s is empty! Push-down-list: %s"
+ table-index
+ pushdown-list))
+
(let ((action-match nil)
(action-table-length (length action-table))
(action-index 0)
@@ -740,10 +746,11 @@
(error
(format
- "Invalid syntax! Expected one of %s found %s at index %s "
+ "Invalid syntax! Expected one of %s found %s at index %s,
push-down-list: %s"
possible-look-aheads
look-ahead
- parser-generator-lex-analyzer--index)
+ parser-generator-lex-analyzer--index
+ pushdown-list)
possible-look-aheads
look-ahead
parser-generator-lex-analyzer--index))
@@ -763,8 +770,8 @@
;; there is no next input symbol or g(a) is undefined, halt
;; and declare error.
- (let ((a look-ahead)
- (a-full look-ahead-full))
+ (let ((a (list (car look-ahead)))
+ (a-full (list (car look-ahead-full))))
(let ((goto-table
(gethash
table-index
@@ -822,7 +829,7 @@
(message "production-rhs: %s" production-rhs))
(unless (equal
production-rhs
- e-list)
+ (list parser-generator--e-identifier))
(let ((pop-items (* 2 (length production-rhs)))
(popped-items 0)
(popped-item))
diff --git a/parser-generator.el b/parser-generator.el
index c47252c..87ee3e3 100644
--- a/parser-generator.el
+++ b/parser-generator.el
@@ -11,7 +11,7 @@
(defvar parser-generator--debug
- nil
+ t
"Whether to print debug messages or not.")
(defvar parser-generator--e-identifier
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index 18b1946..acaff6a 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -400,65 +400,12 @@
(parser-generator-lr-test--parse-incremental-vs-regular)
(message "Passed incremental-tests")
- ;; (message "Starting test 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-lr--generate-goto-tables)))
- ;; (parser-generator--debug
- ;; (message "lr-items: %s" (parser-generator--hash-values-to-list
lr-items t)))
-
- ;; ;; TODO Fix so that there is an accept path in look-ahead number 2
-
- ;; (parser-generator--debug
- ;; (message "goto-tables: %s" (parser-generator--hash-values-to-list
parser-generator-lr--goto-tables t)))
- ;; (parser-generator-lr--generate-action-tables lr-items)
- ;; ;; TODO Should generate accept somewhere in this action-table
- ;; (parser-generator--debug
- ;; (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)"))
(defun parser-generator-lr-test-parse-k-2 ()
"Test `parser-generator-lr-parse' with k = 2."
(message "Started tests for (parser-generator-lr-parse) k = 2")
- (setq
- parser-generator-lex-analyzer--function
- (lambda (index)
- (let* ((string '(("a" 1 . 2) ("a" 2 . 3) ("b" 3 . 4) ("b" 4 . 5)))
- (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))))
-
- (message "Starting test 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)
@@ -477,7 +424,7 @@
(setq
parser-generator-lex-analyzer--function
(lambda (index)
- (let* ((string '(("a" 1 . 2) ("a" 2 . 3) ("b" 3 . 4)))
+ (let* ((string '(("a" 1 . 2) ("a" 2 . 3) ("b" 3 . 4) ("b" 4 . 5)))
(string-length (length string))
(max-index index)
(tokens))
@@ -662,7 +609,7 @@
(parser-generator-lr-test--generate-action-tables)
(parser-generator-lr-test-parse)
(parser-generator-lr-test-translate)
- ;; (parser-generator-lr-test-parse-k-2)
+ (parser-generator-lr-test-parse-k-2)
)
- [elpa] externals/parser-generator af71d8b 285/434: Lex-analyzer is now exported, (continued)
- [elpa] externals/parser-generator af71d8b 285/434: Lex-analyzer is now exported, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 500d082 284/434: Added Lex-Analyzer Rest Function to export, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator cf42e67 288/434: Exported parser passes test, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1e0418d 295/434: Incremental parse and translate of exported parser passes tests, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 7584880 298/434: Added failing unit test for calculating FIRST in grammar with cycles, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator f338734 303/434: Improved output of progress, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 98c9d94 213/434: Debugging parse with look-ahead > 1, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2b0d5b8 215/434: More debugging, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 640feed 216/434: Passing all tests for canonical LRk Parser with k = 1, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e5aa179 218/434: Some fixes for LRk parser k > 1, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2a9a23e 219/434: More debugging,
ELPA Syncer <=
- [elpa] externals/parser-generator ddd5967 221/434: Passed test for nested translations, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator bc817d1 224/434: Passing all tests for k=1 again, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b2f1d7a 236/434: More debugging k > 1, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 16f6586 242/434: Fixed bug in lr-item generation were look-ahead was disregarded, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 36701c0 238/434: Optimized closure algorithm to only use possible next-symbols instead of iterating all symbols, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3e096f7 258/434: Improved translation handling for each production, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 96cd5de 259/434: Improved validation of grammar structure, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator bbdbd18 269/434: Started on test for LR Parse k=0, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 56363c1 263/434: Fixed last TODO items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 175a579 275/434: Passed test for generation action-table LR(0) grammar, ELPA Syncer, 2021/11/29