[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 1199586dad 11/82: More work on generat
From: |
Christian Johansson |
Subject: |
[elpa] externals/parser-generator 1199586dad 11/82: More work on generating LL item |
Date: |
Thu, 12 May 2022 13:28:13 -0400 (EDT) |
branch: externals/parser-generator
commit 1199586dad2784e8369e74669a2ebd8e24711ba4
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
More work on generating LL item
---
parser-generator-ll.el | 54 +++++++++++++++++++++++++++++++++-----------------
1 file changed, 36 insertions(+), 18 deletions(-)
diff --git a/parser-generator-ll.el b/parser-generator-ll.el
index 5e5fde8122..4cb6f5e268 100644
--- a/parser-generator-ll.el
+++ b/parser-generator-ll.el
@@ -48,7 +48,8 @@
(let ((tables (make-hash-table :test 'equal))
(table-count 0)
- (distinct-table-p (make-hash-table :test 'equal))
+ (distinct-table-number (make-hash-table :test 'equal))
+ (distinct-item-p (make-hash-table :test 'equal))
(stack)
(stack-item)
(k (max 1 parser-generator--look-ahead-number)))
@@ -169,29 +170,46 @@
look-ahead
production-rhs
production-number))
+ (item-hash-key
+ (format
+ "%S-%S-%S"
+ production-lhs
+ dot-look-ahead
+ look-ahead))
(table-hash-key
(format
"%S-%S"
production-lhs
dot-look-ahead)))
- (if (gethash table-hash-key distinct-table-p)
- (let ((existing-table-key
- (gethash table-hash-key distinct-table-p)))
- (puthash
- existing-table-key
- (push
- table
- (gethash existing-table-key tables))
- tables))
+ (unless (gethash item-hash-key distinct-item-p)
(puthash
- table-hash-key
- table-count
- distinct-table-p)
- (puthash
- table-count
- (list table)
- tables)
- (setq table-count (1+ table-count))))))
+ item-hash-key
+ t
+ distinct-item-p)
+ (let ((existing-table-number
+ (gethash
+ table-hash-key
+ distinct-table-number)))
+ (if existing-table-number
+ (puthash
+ existing-table-number
+ (push
+ table
+ (gethash
+ existing-table-number
+ tables))
+ tables)
+ (puthash
+ table-hash-key
+ table-count
+ distinct-table-number)
+ (puthash
+ table-count
+ (list table)
+ tables)
+ (setq
+ table-count
+ (1+ table-count))))))))
(parser-generator--debug
(message "\nproduction-lhs: %S" production-lhs)
- [elpa] externals/parser-generator updated (bf7229332f -> db91a5f203), Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 8c467b1bb1 07/82: Added another test for merge max terminal sets, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 1199586dad 11/82: More work on generating LL item,
Christian Johansson <=
- [elpa] externals/parser-generator 89105668e8 01/82: Started on LL(k) implementation, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 878b2900f2 05/82: Improved calculation of merged max terminals when one of the set is undefined, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator d397a1d48e 12/82: Improved variable naming, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator b09b22c0be 13/82: Passing test for LL(k) table Example 5.15, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 7c10be74b8 06/82: Added TODO items, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 1d1e4e4bf8 03/82: More work on LL(k) parser, Christian Johansson, 2022/05/12
- [elpa] externals/parser-generator 4cb0a0b941 08/82: More work on LL table generation, Christian Johansson, 2022/05/12
- [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