[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)"))
- [elpa] externals/parser-generator 29bad0440f 09/82: More work on LL table generation, (continued)
- [elpa] externals/parser-generator 29bad0440f 09/82: More work on LL table generation, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 87435188dd 15/82: Added function to set EOF-identifier, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator bab123bdda 17/82: Added reference to PHP 8.1, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator a2a629c16d 18/82: More work on data structure for LL-tables, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 542a50d9c1 20/82: Remove usage of a hash-table, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 221446d647 24/82: Started implementation of LLk validation, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator ab4ce4d668 25/82: Tests for validating LLk grammar passing, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 04eb4d066c 27/82: Started on test for Example 5.17, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 5c0bcd5f9a 36/82: Passing test for LL-table generation example 5.17, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 1290048b84 39/82: Improved documentation, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 57c6fdda2f 43/82: Passing test for generating LL-parser hash-table,
Christian Johansson <=
- [elpa] externals/parser-generator b37ba1eddf 52/82: Created TODO item, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator af3740c46a 59/82: More refactoring, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 3d373f4dfa 60/82: Updated docs, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 020969094c 61/82: More refactoring, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 08ed55d35a 62/82: More work on k=1, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 4f85cc5616 66/82: Passes byte-compilation tests, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 7a265c9a84 67/82: LL-tests now runs on make tests command, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator a046c8584d 73/82: Started on documentation for LL(k) and LL(1), Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator f07939a440 76/82: Added example from Wikipedia and passing test, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 03a11c4369 14/82: Started test for LL(k) parser-table generation, Christian Johansson, 2022/05/12