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

[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)



reply via email to

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