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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/parser-generator 57c6fdda2f 43/82: Passing test for gen


From: Christian Johansson
Subject: [elpa] externals/parser-generator 57c6fdda2f 43/82: Passing test for generating LL-parser hash-table
Date: Thu, 12 May 2022 13:28:16 -0400 (EDT)

branch: externals/parser-generator
commit 57c6fdda2fcc5c6f0288c3f1a64c0a16ed922926
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>

    Passing test for generating LL-parser hash-table
---
 parser-generator-ll.el           |  2 +-
 parser-generator.el              |  5 ++++-
 test/parser-generator-ll-test.el | 15 +++++++++++----
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/parser-generator-ll.el b/parser-generator-ll.el
index 7ce053e521..d22a23fb3a 100644
--- a/parser-generator-ll.el
+++ b/parser-generator-ll.el
@@ -99,7 +99,7 @@
              state-action-table)
             (setq
              possible-look-aheads
-             (sort state-action-table))
+             (sort state-action-table 'string>))
             (signal
              'error
              (format
diff --git a/parser-generator.el b/parser-generator.el
index 8425475186..7ee5f722d6 100644
--- a/parser-generator.el
+++ b/parser-generator.el
@@ -367,7 +367,10 @@
     (if (hash-table-p hash-table)
         (progn
           (maphash
-           (lambda (k v) (push (list k v) result))
+           (lambda (k v)
+             (if (hash-table-p v)
+                 (push (list k (parser-generator--hash-to-list v un-sorted)) 
result)
+               (push (list k v) result)))
            hash-table)
           (if un-sorted
               (nreverse result)
diff --git a/test/parser-generator-ll-test.el b/test/parser-generator-ll-test.el
index f2c6f0554d..8e0277a8e0 100644
--- a/test/parser-generator-ll-test.el
+++ b/test/parser-generator-ll-test.el
@@ -305,12 +305,19 @@
    )
   (parser-generator-process-grammar)
   (parser-generator-ll-generate-parser-tables)
-  (message "parser-generator-ll--parsing-table: %S" 
parser-generator-ll--parsing-table)
   (should
    (equal
-    #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 
data (((S) ($)) #s(hash-table size 65 test equal rehash-size 1.5 
rehash-threshold 0.8125 data ((a b) (reduce (a b ((A) ($))) 1) ($ $) (reduce 
(e) 0))) ((A) ($)) #s(hash-table size 65 test equal rehash-size 1.5 
rehash-threshold 0.8125 data ((b $) (reduce (b) 3) (a a) (reduce (((S) (a a)) a 
a) 2) (a b) (reduce (((S) (a a)) a a) 2))) ((S) (a a)) #s(hash-table size 65 
test equal rehash-size 1.5 rehash-threshold 0.81 [...]
-    parser-generator-ll--parsing-table))
-  ;; TODO Make this pass
+    '(
+      (((S) ($)) (((a b) (reduce (a b ((A) ($))) 1)) (($ $) (reduce (e) 0))))
+      (((A) ($)) (((b $) (reduce (b) 3)) ((a a) (reduce (((S) (a a)) a a) 2)) 
((a b) (reduce (((S) (a a)) a a) 2))))
+      (((S) (a a)) (((a a) (reduce (e) 0)) ((a b) (reduce (a b ((A) (a a))) 
1))))
+      (((A) (a a)) (((b a) (reduce (b) 3)) ((a a) (reduce (((S) (a a)) a a) 
2)) ((a b) (reduce (((S) (a a)) a a) 2))))
+      (b (((b b) pop) ((b a) pop) ((b $) pop)))
+      (a (((a b) pop) ((a a) pop) ((a $) pop)))
+      ($ ((($ $) accept))))
+    (parser-generator--hash-to-list
+     parser-generator-ll--parsing-table
+     t)))
 
   (message "Passed tests for (parser-generator-ll-generate-parser-tables)"))
 



reply via email to

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