[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 53c09f7 119/434: Added hash-table for
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 53c09f7 119/434: Added hash-table for productions indexed by production-number |
Date: |
Mon, 29 Nov 2021 15:59:21 -0500 (EST) |
branch: externals/parser-generator
commit 53c09f755b637e07687ba99676c870e8a95cdc3e
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Added hash-table for productions indexed by production-number
---
parser.el | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/parser.el b/parser.el
index 4e6ca78..dd7df4a 100644
--- a/parser.el
+++ b/parser.el
@@ -53,6 +53,10 @@
nil
"Hash-table indexed by production and value is production-number.")
+(defvar parser--table-productions-number-reverse
+ nil
+ "Hash-table indexed by production-number and value is production.")
+
(defvar parser--table-terminal-p
nil
"Hash-table of non-terminals for quick checking.")
@@ -153,9 +157,15 @@
(defun parser--get-grammar-production-number (production)
"If PRODUCTION exist, return it's number."
(unless parser--table-productions-number
- (error "Table for production numbers is undefined!"))
+ (error "Table for production-numbers is undefined!"))
(gethash production parser--table-productions-number))
+(defun parser--get-grammar-production-by-number (production-number)
+ "If PRODUCTION-NUMBER exist, return it's production."
+ (unless parser--table-productions-number-reverse
+ (error "Table for reverse production-numbers is undefined!"))
+ (gethash production-number parser--table-productions-number-reverse))
+
(defun parser--get-grammar-productions (&optional G)
"Return productions of grammar G."
(unless G
@@ -237,6 +247,7 @@
(puthash lhs (nreverse new-value) parser--table-productions-rhs))))
(setq parser--table-productions-number (make-hash-table :test 'equal))
+ (setq parser--table-productions-number-reverse (make-hash-table :test
'equal))
(let ((production-index 0))
(dolist (p productions)
(let ((lhs (car p))
@@ -249,6 +260,7 @@
(parser--debug
(message "Production %s: %s" production-index production))
(puthash production production-index
parser--table-productions-number)
+ (puthash production-index production
parser--table-productions-number-reverse)
(setq production-index (1+ production-index)))))))
(let ((look-aheads (parser--get-grammar-look-aheads)))
- [elpa] externals/parser-generator 98ab0e4 377/434: More work on precedence logic in unit tests, (continued)
- [elpa] externals/parser-generator 98ab0e4 377/434: More work on precedence logic in unit tests, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1b8f025 016/434: More work on validating a grammar structure, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1ae36fc 029/434: Added support for calculating first of a sentential form, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 38c2040 032/434: Improved markdown code examples, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e463bae 041/434: Passing tests for sorting lists, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 840c418 044/434: Improved comment about follow function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2a3a02d 083/434: Removed cache for LR-items for prefixes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3ba5250 090/434: Removed debugging stuff, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 83298fe 099/434: Passing test for function that generates possible look-ahead permutations, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e9697ea 100/434: Added function that tests if a look-ahead is valid or not, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 53c09f7 119/434: Added hash-table for productions indexed by production-number,
ELPA Syncer <=
- [elpa] externals/parser-generator 58e5806 129/434: Renamed plugin from parser to parser-generator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0695275 143/434: More updates to docs, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1b17ef8 159/434: Added another unit tests for translations, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 04fdc96 167/434: Added unit-test for incremental translations, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator fa6237a 170/434: Added TODO items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 71f03cc 171/434: Updated example, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0b72792 177/434: Added failing unit tests for FIRST, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 181b499 178/434: Fixed bug in FIRST generation where multiple equal LHS:s, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c4455db 179/434: Added TODO-item, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 84ffb4e 181/434: f-set max index is now set depending on if all non-terminals have been expanded or not, ELPA Syncer, 2021/11/29