[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 0d6d46d 294/434: Debugging incremental
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 0d6d46d 294/434: Debugging incremental issue with exported translator |
Date: |
Mon, 29 Nov 2021 16:00:01 -0500 (EST) |
branch: externals/parser-generator
commit 0d6d46d69a7c2fcffd5eefe402c89e4b1dc661dd
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Debugging incremental issue with exported translator
---
parser-generator-lr.el | 31 +++++++++++++++++--------
test/parser-generator-lr-export-test.el | 41 ++++++++++++++++++++++-----------
2 files changed, 48 insertions(+), 24 deletions(-)
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 8e23c9b..1b625f4 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -954,16 +954,27 @@
(>
parser-generator-lex-analyzer--index
pre-index)
- (push
- `(,parser-generator-lex-analyzer--index
- ,pushdown-list
- ,output
- ,translation
- ,translation-symbol-table)
- history)
- (setq
- pre-index
- parser-generator-lex-analyzer--index))
+ ;; We make a copy of the hash-table here to avoid passing same
+ ;; hash-table every-time with pointer
+ (let ((translation-symbol-table-copy
+ (make-hash-table :test 'equal)))
+ (maphash
+ (lambda (key value)
+ (puthash
+ key
+ value
+ translation-symbol-table-copy))
+ translation-symbol-table)
+ (push
+ `(,parser-generator-lex-analyzer--index
+ ,pushdown-list
+ ,output
+ ,translation
+ ,translation-symbol-table-copy)
+ history)
+ (setq
+ pre-index
+ parser-generator-lex-analyzer--index)))
;; (1) The look-ahead string u, consisting of the next k input symbols,
is determined.
(let ((look-ahead
diff --git a/test/parser-generator-lr-export-test.el
b/test/parser-generator-lr-export-test.el
index 487c4e8..11b644c 100644
--- a/test/parser-generator-lr-export-test.el
+++ b/test/parser-generator-lr-export-test.el
@@ -44,33 +44,43 @@
(should
(equal
+ '(2 2 2 1 1)
+ (parser-generator-lr-parse)))
+ (should
+ (equal
"bbaaba"
(parser-generator-lr-translate)))
;; Export parser
- (let ((export (parser-generator-lr-export-to-elisp "fa")))
+ (let ((export (parser-generator-lr-export-to-elisp "ba")))
+ (message "export:\n%s\n" export)
(with-temp-buffer
(insert export)
(eval-buffer)
(should
(equal
t
- (fboundp 'fa-translate))))
+ (fboundp 'ba-translate))))
- (when (fboundp 'fa-translate)
+ (when (fboundp 'pa-translate)
+ (should
+ (equal
+ '(2 2 2 1 1)
+ (ba-parse))))
+
+ (when (fboundp 'ba-translate)
(should
(equal
"bbaaba"
- (fa-translate))))))
+ (ba-translate))))))
(should
(equal
t
- (fboundp 'fa--parse)))
+ (fboundp 'ba--parse)))
- (when (fboundp 'fa--parse)
- (let ((regular-parse (fa--parse)))
- ;; (message "regular-parse: %s" regular-parse)
+ (when (fboundp 'ba--parse)
+ (let ((regular-parse (ba--parse)))
(let ((regular-parse-history (nth 3 regular-parse)))
;; (message "regular-parse-history: %s" regular-parse-history)
(let ((history-length (length regular-parse-history))
@@ -86,14 +96,17 @@
(translation-symbol-table (nth 4 history))
(history-list iterated-history))
- ;; (message "input-tape-index: %s" input-tape-index)
- ;; (message "pushdown-list: %s" pushdown-list)
- ;; (message "output: %s" output)
- ;; (message "translation: %s" translation)
- ;; (message "history-list: %s" history-list)
+ (message "\nIncremental %s" history-index)
+ (message "regular-parse: %s" regular-parse)
+ (message "input-tape-index: %s" input-tape-index)
+ (message "pushdown-list: %s" pushdown-list)
+ (message "output: %s" output)
+ (message "translation: %s" translation)
+ (message "translation-symbol-table: %s" translation-symbol-table)
+ (message "history-list: %s\n" history-list)
(let ((incremental-parse
- (fa--parse
+ (ba--parse
input-tape-index
pushdown-list
output
- [elpa] externals/parser-generator 3a0d4cd 255/434: Added translation test for LRk=2, (continued)
- [elpa] externals/parser-generator 3a0d4cd 255/434: Added translation test for LRk=2, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 03ca2e9 247/434: Look-ahead generation now supports EOF symbol, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3563720 266/434: Updated docs about lexical analysis, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 412fd2a 273/434: Passing generation of GOTO-table for LR(0) grammar, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator bc23604 274/434: Fixed look-ahead, first and e-free-first with k = 0, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1879cb0 271/434: Merge branch 'master' of git.cvj.se:/home/git/emacs-parser-generator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 16bb2d8 262/434: Added translation example LRk parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d173c1e 281/434: More work on exporting parser as code function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator bd887ff 277/434: LR(0) Parser passing translation test, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 852f969 283/434: Merge branch 'master' of git.cvj.se:/home/git/emacs-parser-generator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0d6d46d 294/434: Debugging incremental issue with exported translator,
ELPA Syncer <=
- [elpa] externals/parser-generator c4c68b2 302/434: Added progress-indicator to goto-table generation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 586789d 308/434: Added cache to first calculation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 236a124 322/434: More work on resolving conflicts, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 04c360b 318/434: LR-items set validation now supports symbols with attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ea02245 325/434: Improved debug output, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e56bcff 324/434: Improved output of productions and action-tables, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator fb29641 337/434: Passing old context-sensitive precedence example with new structure, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 928b31d 343/434: More work on infix calculator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 6a4b353 344/434: More work on translations, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 85d1b49 345/434: Infix calculator translation passing some tests, ELPA Syncer, 2021/11/29