[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 35d6be3 327/434: Added TODO-items
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 35d6be3 327/434: Added TODO-items |
Date: |
Mon, 29 Nov 2021 16:00:08 -0500 (EST) |
branch: externals/parser-generator
commit 35d6be3049520a4e81cd189dd31cb1a5207bfd26
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Added TODO-items
---
parser-generator.el | 40 +++++++++++++++++-----------
test/parser-generator-lr-test.el | 16 ++++--------
test/parser-generator-test.el | 56 +++++++++++++++++++++++-----------------
3 files changed, 63 insertions(+), 49 deletions(-)
diff --git a/parser-generator.el b/parser-generator.el
index 28cefce..16d1e21 100644
--- a/parser-generator.el
+++ b/parser-generator.el
@@ -11,9 +11,9 @@
(defvar
- parser-generator--attributes
+ parser-generator--context-sensitive-attributes
nil
- "List of valid attributes.")
+ "List of valid context-sensitive attributes.")
(defvar
parser-generator--debug
@@ -31,6 +31,11 @@
"The identifier used for end of file identifier. Default value is '$.")
(defvar
+ parser-generator--global-attributes
+ nil
+ "List of valid global attributes.")
+
+(defvar
parser-generator--grammar
nil
"Current grammar used in parser.")
@@ -51,14 +56,14 @@
"Current look-ahead number used.")
(defvar
- parser-generator--table-firsts
+ parser-generator--table-context-sensitive-attributes-p
nil
- "Hash-table of calculated firsts for quicker parser generation.")
+ "Hash-table of context-sensitive-attributes.")
(defvar
- parser-generator--table-attributes-p
+ parser-generator--table-firsts
nil
- "Hash-table of attributes.")
+ "Hash-table of calculated firsts for quicker parser generation.")
(defvar
parser-generator--table-look-aheads-p
@@ -418,6 +423,9 @@
parser-generator--table-translations
(make-hash-table :test 'equal))
+ ;; TODO Should produce hash-tables of valid attributes here
+ ;; TODO and valid global and context-sensitive attributes
+
(let ((production-index 0)
(new-productions))
(dolist (p productions)
@@ -538,13 +546,15 @@
new-productions)))
(setq
- parser-generator--table-attributes-p
+ parser-generator--table-context-sensitive-attributes-p
(make-hash-table :test 'equal))
- (dolist (attribute parser-generator--attributes)
+ (dolist
+ (attribute
+ parser-generator--context-sensitive-attributes)
(puthash
attribute
t
- parser-generator--table-attributes-p))
+ parser-generator--table-context-sensitive-attributes-p))
(let ((look-aheads
(parser-generator--get-grammar-look-aheads)))
@@ -630,14 +640,14 @@
(setq index (1+ index)))
response))
-(defun parser-generator--valid-attribute-p (attribute)
- "Check if ATTRIBUTE is valid."
+(defun parser-generator--valid-context-sensitive-attribute-p (attribute)
+ "Check if ATTRIBUTE is a valid context-sensitive attribute."
(gethash
attribute
- parser-generator--table-attributes-p))
+ parser-generator--table-context-sensitive-attributes-p))
-(defun parser-generator--valid-attributes-p (attributes)
- "Check if all ATTRIBUTES are valid."
+(defun parser-generator--valid-context-sensitive-attributes-p (attributes)
+ "Check if all ATTRIBUTES are valid context-sensitive attributes."
(let ((is-valid t)
(length (length attributes))
(index 0))
@@ -649,7 +659,7 @@
(let ((element
(nth index attributes)))
(unless
- (parser-generator--valid-attribute-p
+ (parser-generator--valid-context-sensitive-attribute-p
element)
(setq
is-valid
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index 36e5b27..ee24d8d 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -58,7 +58,8 @@
(message "Starting tests for (parser-generator-lr--generate-action-tables)")
;; Example 5.32 p. 393
- (parser-generator-set-grammar '((Sp S) (a b) ((Sp S) (S (S a S b)) (S e))
Sp))
+ (parser-generator-set-grammar
+ '((Sp S) (a b) ((Sp S) (S (S a S b)) (S e)) Sp))
(parser-generator-set-look-ahead-number 1)
(parser-generator-process-grammar)
(parser-generator-lr-generate-parser-tables)
@@ -121,6 +122,9 @@
;; Inconsistent grammar! ((A) (a b) nil (c)) (index: 0) with look-ahead (c)
conflicts with ((B) (a b) (c) ($)) (index: 1) with look-ahead (c) in sets:
((((A) (a b) nil (c)) ((B) (a b) (c) ($))))
+ (setq
+ parser-generator--context-sensitive-attributes
+ nil)
(parser-generator-set-grammar
'(
(Sp S A B)
@@ -149,18 +153,8 @@
(let ((table-lr-items
(parser-generator-lr--generate-goto-tables)))
-
- ;; TODO Should be a conflict in state 5
- (message
- "conflict-lr-items: %S"
- table-lr-items)
- (message
- "conflict-goto-tables: %S"
- (parser-generator-lr--get-expanded-goto-tables))
(parser-generator-lr--generate-action-tables
table-lr-items)
- (message
- "conflict-action-tables: %s"
(parser-generator-lr--get-expanded-action-tables))
(should
(equal
'((0 (((a) shift)))
diff --git a/test/parser-generator-test.el b/test/parser-generator-test.el
index 1517347..476dc38 100644
--- a/test/parser-generator-test.el
+++ b/test/parser-generator-test.el
@@ -680,7 +680,7 @@
(parser-generator-set-grammar '((S A B) ("a" "b") ((S A) (S (B)) (B "a") (A
"a") (A ("b" "a"))) S))
(setq
- parser-generator--attributes
+ parser-generator--context-sensitive-attributes
'(%prec))
(parser-generator-process-grammar)
@@ -711,54 +711,61 @@
(message "Passed tests for (parser-generator--valid-non-terminal-p)"))
-(defun parser-generator-test--valid-attribute-p ()
- "Test `parser-generator--valid-attribute-p'."
- (message "Starting tests for (parser-generator--valid-attribute-p)")
+(defun parser-generator-test--valid-context-sensitive-attribute-p ()
+ "Test `parser-generator--valid-context-sensitive-attribute-p'."
+ (message "Starting tests for
(parser-generator--valid-context-sensitive-attribute-p)")
- (parser-generator-set-grammar '((S A B) ("a" "b") ((S A) (S (B)) (B "a") (A
"a") (A ("b" "a"))) S))
+ (parser-generator-set-grammar
+ '((S A B) ("a" "b") ((S A) (S (B)) (B "a") (A "a") (A ("b" "a"))) S))
(setq
- parser-generator--attributes
+ parser-generator--context-sensitive-attributes
'(%abc depth length))
(parser-generator-process-grammar)
- (parser-generator--valid-attribute-p
- '%abc)
-
(should
(equal
t
- (parser-generator--valid-attribute-p
+ (parser-generator--valid-context-sensitive-attribute-p
+ 'depth)))
+
+ (should
+ (equal
+ t
+ (parser-generator--valid-context-sensitive-attribute-p
'%abc)))
+
(should
(equal
nil
- (parser-generator--valid-attribute-p
+ (parser-generator--valid-context-sensitive-attribute-p
'%prec)))
- (message "Passed tests for (parser-generator--valid-attribute-p)"))
+ (message "Passed tests for
(parser-generator--valid-context-sensitive-attribute-p)"))
-(defun parser-generator-test--valid-attributes-p ()
- "Test `parser-generator--valid-attributes-p'."
- (message "Starting tests for (parser-generator--valid-attributes-p)")
+(defun parser-generator-test--valid-context-sensitive-attributes-p ()
+ "Test `parser-generator--valid-context-sensitive-attributes-p'."
+ (message "Starting tests for
(parser-generator--valid-context-sensitive-attributes-p)")
+
+ (parser-generator-set-grammar
+ '((S A B) ("a" "b") ((S A) (S (B)) (B "a") (A "a") (A ("b" "a"))) S))
- (parser-generator-set-grammar '((S A B) ("a" "b") ((S A) (S (B)) (B "a") (A
"a") (A ("b" "a"))) S))
(setq
- parser-generator--attributes
+ parser-generator--context-sensitive-attributes
'(%abc depth length))
(parser-generator-process-grammar)
(should
(equal
t
- (parser-generator--valid-attributes-p
+ (parser-generator--valid-context-sensitive-attributes-p
'(%abc 1 depth 0 length 3))))
(should
(equal
nil
- (parser-generator--valid-attributes-p
+ (parser-generator--valid-context-sensitive-attributes-p
'(%prec 0))))
- (message "Passed tests for (parser-generator--valid-attributes-p)"))
+ (message "Passed tests for
(parser-generator--valid-context-sensitive-attributes-p)"))
(defun parser-generator-test--valid-terminal-p ()
"Test `parser-generator--valid-terminal-p'."
@@ -766,7 +773,7 @@
(parser-generator-set-grammar '((S A B) ("a" "b") ((S A) (S (B)) (B "a") (A
"a") (A ("b" "a"))) S))
(setq
- parser-generator--attributes
+ parser-generator--context-sensitive-attributes
'(%prec))
(parser-generator-process-grammar)
@@ -893,8 +900,8 @@
(parser-generator-test--get-list-permutations)
(parser-generator-test--merge-max-terminals)
(parser-generator-test--sort-list)
- (parser-generator-test--valid-attribute-p)
- (parser-generator-test--valid-attributes-p)
+ (parser-generator-test--valid-context-sensitive-attribute-p)
+ (parser-generator-test--valid-context-sensitive-attributes-p)
(parser-generator-test--valid-grammar-p)
(parser-generator-test--valid-look-ahead-number-p)
(parser-generator-test--valid-look-ahead-p)
@@ -903,6 +910,9 @@
(parser-generator-test--valid-sentential-form-p)
(parser-generator-test--valid-terminal-p)
+ ;; TODO Add tests for process-grammar that validates
+ ;; signals thrown with invalid symbols or attributes
+
;; Algorithms
(parser-generator-test--first)
(parser-generator-test--e-free-first)
- [elpa] externals/parser-generator d0d3201 299/434: FIRST calculation now handles cyclic productions, (continued)
- [elpa] externals/parser-generator d0d3201 299/434: FIRST calculation now handles cyclic productions, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 5145cda 306/434: Improved hash-key integrity for LRk Parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2227cae 313/434: Moved validation of valid lr-item set to generation of goto-tables, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a86c658 305/434: Improved output, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator dcbbdee 315/434: Started on support for symbol attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0c1b8b6 316/434: Passing tests for symbol attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c886537 311/434: Using references for distinct goto-tables to optimize memory usage, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 06bff4b 321/434: Improved validation of conflict-resolution using attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ea898ce 317/434: Fixed code-styling, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ae51103 323/434: Passing test for resolving conflict using precedence attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 35d6be3 327/434: Added TODO-items,
ELPA Syncer <=
- [elpa] externals/parser-generator 4d60ed4 328/434: Added validation to context-sensitive attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ce9ae69 329/434: Improved comment, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b8a81c5 330/434: Added failing test, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 06d23f5 340/434: More debugging, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator f213255 348/434: Passed all old unit tests again after translation refactor, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 886af5c 349/434: Uncommented export tests until refactor is ok, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 99aa5b6 350/434: Added more unit tests for calculator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d8fb2da 354/434: Just white-space fixes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3964649 359/434: Added more failing unit tests, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 6e0e781 360/434: More debugging, ELPA Syncer, 2021/11/29