[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator cecf8fd 287/434: More TODO items
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator cecf8fd 287/434: More TODO items |
Date: |
Mon, 29 Nov 2021 15:59:59 -0500 (EST) |
branch: externals/parser-generator
commit cecf8fd3e636aabe58ad1e4b1e4ff8676fe2eeb1
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
More TODO items
---
parser-generator-lr.el | 89 +++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 84 insertions(+), 5 deletions(-)
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index e0368a7..75c86d2 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -43,8 +43,8 @@
(error "Missing generated ACTION-tables!"))
(unless parser-generator-lr--goto-tables
(error "Missing generated GOTO-tables!"))
- (unless parser-generator--table-productions-number
- (error "Table for production-numbers is undefined!"))
+ (unless parser-generator--table-productions-number-reverse
+ (error "Table for reverse production-numbers is undefined!"))
(unless parser-generator--table-look-aheads-p
(error "Table for valid look-aheads is undefined!"))
(unless parser-generator--look-ahead-number
@@ -94,9 +94,9 @@
;; Table production-number
(insert
(format
- "(defconst\n %s--table-productions-number\n %s\n \"Hash-table of
productions indexed by production-number.\")\n\n"
+ "(defconst\n %s--table-productions-number-reverse\n %s\n
\"Hash-table indexed by production-number and value is production.\")\n\n"
namespace
- parser-generator--table-productions-number))
+ parser-generator--table-productions-number-reverse))
;; Table look-aheads
(insert
@@ -193,7 +193,7 @@
(insert
(format
"(defun
- %s-lex-analyzer-get-function (token)
+ %s-lex-analyzer--get-function (token)
\"Get information about TOKEN.\"
(unless
%s-lex-analyzer--get-function
@@ -327,6 +327,85 @@
(insert "\n;;; Syntax-Analyzer / Parser:\n\n\n");
+ ;; Get grammar production by number
+ (insert
+ (format "
+(defun
+ %s--get-grammar-production-by-number
+ (production-number)
+ \"If PRODUCTION-NUMBER exist, return it's production.\"
+ (gethash
+ production-number
+ %s--table-productions-number-reverse))\n\n"
+ namespace
+ namespace))
+
+ ;; Valid symbol p
+ (insert
+ (format "
+(defun
+ %s--valid-symbol-p
+ (symbol)
+ \"Return whether SYMBOL is valid or not.\"
+ (let ((is-valid t))
+ (unless (or
+ (%s--valid-e-p symbol)
+ (%s--valid-eof-p symbol)
+ (%s--valid-non-terminal-p symbol)
+ (%s--valid-terminal-p symbol))
+ (setq is-valid nil))
+ is-valid))\n\n"
+ namespace
+ namespace
+ namespace
+ namespace
+ namespace))
+
+ ;; Valid e-p
+ (insert
+ (format "
+(defun
+ %s--valid-e-p
+ (symbol)
+ \"Return whether SYMBOL is the e identifier or not.\"
+ (eq
+ symbol
+ %s--e-identifier))\n\n"
+ namespace
+ namespace))
+
+ ;; Valid EOF-p
+ (insert
+ (format "
+(defun
+ %s--valid-eof-p
+ (symbol)
+ \"Return whether SYMBOL is the EOF identifier or not.\"
+ (eq
+ symbol
+ %s--eof-identifier))\n\n"
+ namespace
+ namespace))
+
+ ;; TODO --valid-non-terminal-p
+ ;; TODO --valid-terminal-p
+
+ ;; Get grammar translation by number
+ (insert
+ (format "
+(defun
+ %s--get-grammar-translation-by-number
+ (production-number)
+ \"If translation for PRODUCTION-NUMBER exist, return it.\"
+ (gethash
+ production-number
+ %s--table-translations))\n\n"
+ namespace
+ namespace))
+
+ ;; TODO Add simple parse and translate function
+
+ ;; Parse / translate function
(insert
(format "
(defun
- [elpa] externals/parser-generator bc817d1 224/434: Passing all tests for k=1 again, (continued)
- [elpa] externals/parser-generator bc817d1 224/434: Passing all tests for k=1 again, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b2f1d7a 236/434: More debugging k > 1, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 16f6586 242/434: Fixed bug in lr-item generation were look-ahead was disregarded, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 36701c0 238/434: Optimized closure algorithm to only use possible next-symbols instead of iterating all symbols, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3e096f7 258/434: Improved translation handling for each production, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 96cd5de 259/434: Improved validation of grammar structure, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator bbdbd18 269/434: Started on test for LR Parse k=0, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 56363c1 263/434: Fixed last TODO items, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 175a579 275/434: Passed test for generation action-table LR(0) grammar, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ecbbf21 290/434: Added test for exported translator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator cecf8fd 287/434: More TODO items,
ELPA Syncer <=
- [elpa] externals/parser-generator 688e685 291/434: Lex-analyzer index is now buffer-local variable, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0702765 293/434: Added incremental unit test for exported parser/translator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 552c0c5 304/434: Using better hash-key for goto-tables generation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d0d3201 299/434: FIRST calculation now handles cyclic productions, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 5145cda 306/434: Improved hash-key integrity for LRk Parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2227cae 313/434: Moved validation of valid lr-item set to generation of goto-tables, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a86c658 305/434: Improved output, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator dcbbdee 315/434: Started on support for symbol attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0c1b8b6 316/434: Passing tests for symbol attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c886537 311/434: Using references for distinct goto-tables to optimize memory usage, ELPA Syncer, 2021/11/29