[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 640feed 216/434: Passing all tests for
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 640feed 216/434: Passing all tests for canonical LRk Parser with k = 1 |
Date: |
Mon, 29 Nov 2021 15:59:44 -0500 (EST) |
branch: externals/parser-generator
commit 640feedf7db29aff62fdf9806a70481dc37623cd
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Passing all tests for canonical LRk Parser with k = 1
---
parser-generator-lr.el | 23 ++++++++++---
parser-generator.el | 2 +-
test/parser-generator-lr-test.el | 70 ++++++++++++++++++++--------------------
3 files changed, 54 insertions(+), 41 deletions(-)
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index ce50525..3f03e1f 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -124,7 +124,7 @@
production
lr-item))
(parser-generator--debug
- (message "production-number: %s"
production-number)
+ (message "production: %s (%s)" production
production-number)
(message "u: %s" u))
(if (and
@@ -272,11 +272,16 @@
(let ((table-length (length goto-table))
(table-index 0))
(while (< table-index table-length)
- (puthash table-index (car (cdr (nth table-index goto-table)))
parser-generator-lr--goto-tables)
+ (puthash
+ table-index
+ (car (cdr (nth table-index goto-table)))
+ parser-generator-lr--goto-tables)
(setq table-index (1+ table-index))))
(unless
(parser-generator-lr--items-valid-p
- (parser-generator--hash-values-to-list table-lr-items t)) ;; TODO
Should not use this debug function
+ (parser-generator--hash-values-to-list
+ table-lr-items
+ t)) ;; TODO Should not use this debug function
(error "Inconsistent grammar!"))
table-lr-items))
@@ -861,8 +866,16 @@
(popped-item))
(while (< popped-items pop-items)
(setq popped-item (pop pushdown-list))
- (when (listp popped-item)
- (push popped-item popped-items-contents))
+ (parser-generator--debug
+ (message "popped-item: %s" popped-item))
+ (when (and
+ (listp popped-item)
+ (listp (car popped-item))
+ (parser-generator--valid-terminal-p
+ (car (car popped-item))))
+ (push
+ (car popped-item)
+ popped-items-contents))
(setq popped-items (1+ popped-items)))))
(push production-number output)
diff --git a/parser-generator.el b/parser-generator.el
index 87ee3e3..c47252c 100644
--- a/parser-generator.el
+++ b/parser-generator.el
@@ -11,7 +11,7 @@
(defvar parser-generator--debug
- t
+ nil
"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 4580b89..629a052 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -400,41 +400,41 @@
(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 "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)"))
- [elpa] externals/parser-generator 732cd78 282/434: Constants and variables are exported correctly, (continued)
- [elpa] externals/parser-generator 732cd78 282/434: Constants and variables are exported correctly, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator cbf9e07 278/434: Added documentation about LR(0) Parser, ELPA Syncer, 2021/11/29
- [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 <=
- [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, 2021/11/29
- [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