[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator c1d3707 150/434: Passing test for incl
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator c1d3707 150/434: Passing test for including SDT in Produductions |
Date: |
Mon, 29 Nov 2021 15:59:29 -0500 (EST) |
branch: externals/parser-generator
commit c1d37073efd1ff1cb997763a6826bedb96a44580
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Passing test for including SDT in Produductions
---
parser-generator.el | 32 ++++++++++++++++++++++++++------
test/parser-generator-test.el | 16 ++++++++++++++++
2 files changed, 42 insertions(+), 6 deletions(-)
diff --git a/parser-generator.el b/parser-generator.el
index 6a37f3a..d06f568 100644
--- a/parser-generator.el
+++ b/parser-generator.el
@@ -475,12 +475,32 @@
(cond
((stringp rhs-element))
((symbolp rhs-element))
- ((listp rhs-element)
- (dolist (rhs-sub-element rhs-element)
- (unless (or
- (stringp rhs-sub-element)
- (symbolp rhs-sub-element))
- (setq is-valid nil))))
+ ((and (functionp rhs-element)
+ (= rhs-index (1- rhs-length))))
+ ((and
+ (listp rhs-element)
+ (not (functionp rhs-element)))
+ (let ((rhs-sub-index 0)
+ (rhs-sub-element)
+ (rhs-sub-length (length rhs-element)))
+ (while (and is-valid
+ (< rhs-sub-index rhs-sub-length))
+ (setq rhs-sub-element (nth rhs-sub-index rhs-element))
+ (cond
+ ((and
+ (listp rhs-sub-element)
+ (not (functionp rhs-sub-element)))
+ (unless (and
+ (or (stringp (car rhs-sub-element))
+ (symbolp (car rhs-sub-element)))
+ (functionp (car (cdr rhs-sub-element))))
+ (setq is-valid nil)))
+ ((and (functionp rhs-sub-element)
+ (= rhs-sub-index (1- rhs-sub-length))))
+ ((or (stringp rhs-sub-element)
+ (symbolp rhs-sub-element)))
+ (t (setq is-valid nil)))
+ (setq rhs-sub-index (1+ rhs-sub-index)))))
(t (setq is-valid nil)))
(setq rhs-index (1+ rhs-index)))))))
is-valid))
diff --git a/test/parser-generator-test.el b/test/parser-generator-test.el
index 2699ebc..d9c02d0 100644
--- a/test/parser-generator-test.el
+++ b/test/parser-generator-test.el
@@ -422,6 +422,10 @@
(parser-generator--valid-production-p '(A a))))
(should (equal
+ t
+ (parser-generator--valid-production-p '(A (a)))))
+
+ (should (equal
nil
(parser-generator--valid-production-p "A")))
@@ -429,6 +433,18 @@
nil
(parser-generator--valid-production-p '((A a)))))
+ (should (equal
+ t
+ (parser-generator--valid-production-p '(A a (lambda(a) (message
"Here 1 %s"))))))
+
+ (should (equal
+ t
+ (parser-generator--valid-production-p '(A (a (lambda(a) (message
"Here 2 %s")))))))
+
+ (should (equal
+ t
+ (parser-generator--valid-production-p '(A (a (lambda(a) (message
"Here 3 %s"))) b))))
+
(message "Passed tests for (parser-generator--valid-production-p)"))
(defun parser-generator-test--get-grammar-rhs ()
- [elpa] externals/parser-generator 53980d4 102/434: More documentation, (continued)
- [elpa] externals/parser-generator 53980d4 102/434: More documentation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 882d725 105/434: Added TODO item, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 65d9ce2 106/434: Fixed a bug with E-FREE-FIRST function and function that validates a set of LR-items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 343fd72 104/434: Some parts of the action-table is generated, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b2a0d71 112/434: Passed test for action-table generation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1c1177f 116/434: More work on LR-parser algorithm, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 9db14cd 118/434: Added TODO items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 5784f3f 126/434: Updated README with link to separate document for grammar, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator edfb7b4 131/434: Moved lex-analyzer to separate file, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 8cda060 149/434: Made some functions public, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c1d3707 150/434: Passing test for including SDT in Produductions,
ELPA Syncer <=
- [elpa] externals/parser-generator d36051c 103/434: Parser now creates hash table over productions to their production number, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e3d3007 109/434: Tweaking of action-table generation for canonical LR-parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d7daabf 111/434: Fixed bug with e-free-first function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2be434c 114/434: Removed obsolete debug messages, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 89d128c 123/434: Added TODO item, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 044f33a 151/434: Added more support for SDT, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 96f128f 155/434: More various stuff, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a586a0e 162/434: More work on incremental parsing, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 6d323a4 120/434: Implemented reduce action of LR-parser algorithm, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 9b44827 124/434: Optimized LR-parser with hash-tables, ELPA Syncer, 2021/11/29