[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator a586a0e 162/434: More work on incremen
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator a586a0e 162/434: More work on incremental parsing |
Date: |
Mon, 29 Nov 2021 15:59:32 -0500 (EST) |
branch: externals/parser-generator
commit a586a0eb5d3318267b605d90190d9feaf7512c11
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
More work on incremental parsing
---
parser-generator-lr.el | 22 +++++++++++-----------
test/parser-generator-lr-test.el | 31 +++++++++++++++++++++----------
2 files changed, 32 insertions(+), 21 deletions(-)
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index fe29519..4ad5cf1 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -480,14 +480,14 @@
pushdown-list
output
translation
- pushdown-list-history)
- "Perform a LR-parse via lex-analyzer, optionally at INPUT-TAPE-INDEX with
PUSHDOWN-LIST, OUTPUT, TRANSLATION and PUSHDOWN-LIST-HISTORY."
+ history)
+ "Perform a LR-parse via lex-analyzer, optionally at INPUT-TAPE-INDEX with
PUSHDOWN-LIST, OUTPUT, TRANSLATION and HISTORY."
(let ((result (parser-generator-lr--parse
input-tape-index
pushdown-list
output
translation
- pushdown-list-history)))
+ history)))
(nth 0 result)))
(defun parser-generator-lr-translate
@@ -496,14 +496,14 @@
pushdown-list
output
translation
- pushdown-list-history)
- "Perform a LR-parse via lex-analyzer, optionally at INPUT-TAPE-INDEX with
PUSHDOWN-LIST, OUTPUT, TRANSLATION and PUSHDOWN-LIST-HISTORY."
+ history)
+ "Perform a LR-parse via lex-analyzer, optionally at INPUT-TAPE-INDEX with
PUSHDOWN-LIST, OUTPUT, TRANSLATION and HISTORY."
(let ((result (parser-generator-lr--parse
input-tape-index
pushdown-list
output
translation
- pushdown-list-history)))
+ history)))
(nth 1 result)))
;; Algorithm 5.7, p. 375
@@ -514,8 +514,8 @@
pushdown-list
output
translation
- pushdown-list-history)
- "Perform a LR-parse via lex-analyzer, optionally at INPUT-TAPE-INDEX with
PUSHDOWN-LIST, OUTPUT, TRANSLATION and PUSHDOWN-LIST-HISTORY."
+ history)
+ "Perform a LR-parse via lex-analyzer, optionally at INPUT-TAPE-INDEX with
PUSHDOWN-LIST, OUTPUT, TRANSLATION and HISTORY."
(unless input-tape-index
(setq input-tape-index 0))
(unless pushdown-list
@@ -703,8 +703,8 @@
(push next-index pushdown-list)
(push
- `(,parser-generator-lex-analyzer--index
,pushdown-list)
- pushdown-list-history)))))))))
+ `(,parser-generator-lex-analyzer--index
,pushdown-list ,output ,translation)
+ history)))))))))
((equal action-match '(accept))
;; (d) If f(u) = accept, we halt and declare the string
@@ -721,7 +721,7 @@
(list
(nreverse output)
translation
- (nreverse pushdown-list-history))))
+ (nreverse history))))
(provide 'parser-generator-lr)
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index cc02538..49581ac 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -338,16 +338,27 @@
(let ((history (nth 2 (parser-generator-lr--parse))))
(message "History: %s" history)
- (let ((input-tape-index (car (nth 2 history)))
- (pushdown-list (car (cdr (nth 2 history)))))
- ;; (let ((parser-generator-lr--parse
- ;; input-tape-index
- ;; pushdown-list
- ;; output-history
- ;; translation-history
- ;; pushdown-list-history))
- (message "input-tape-index: %s" input-tape-index)
- (message "pushdown-list: %s" pushdown-list)))
+ (let ((history-state 2))
+ (let ((input-tape-index (nth 0 (nth history-state history)))
+ (pushdown-list (nth 1 (nth history-state history)))
+ (output (nreverse (nth 2 (nth history-state history))))
+ (translation (nth 3 (nth history-state history)))
+ (history-list))
+ (while (< (car (car history)) input-tape-index)
+ (push (car history) history-list)
+ (pop 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)
+ (let ((parse (parser-generator-lr--parse
+ input-tape-index
+ pushdown-list
+ output
+ translation
+ history-list)))
+ (message "parse: %s" parse)))))
(message "Passed tests for (parser-generator-lr--parse)"))
- [elpa] externals/parser-generator edfb7b4 131/434: Moved lex-analyzer to separate file, (continued)
- [elpa] externals/parser-generator edfb7b4 131/434: Moved lex-analyzer to separate file, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 8cda060 149/434: Made some functions public, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator c1d3707 150/434: Passing test for including SDT in Produductions, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d36051c 103/434: Parser now creates hash table over productions to their production number, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e3d3007 109/434: Tweaking of action-table generation for canonical LR-parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator d7daabf 111/434: Fixed bug with e-free-first function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2be434c 114/434: Removed obsolete debug messages, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 89d128c 123/434: Added TODO item, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 044f33a 151/434: Added more support for SDT, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 96f128f 155/434: More various stuff, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator a586a0e 162/434: More work on incremental parsing,
ELPA Syncer <=
- [elpa] externals/parser-generator 6d323a4 120/434: Implemented reduce action of LR-parser algorithm, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 9b44827 124/434: Optimized LR-parser with hash-tables, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 01fc56f 127/434: Updated list of grammars, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 4ef0430 133/434: White-space fix, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b2fd896 136/434: Added support for indexed tokens, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 4746c64 137/434: Updated example for LR parse with indexed tokens, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 04a3ec5 141/434: Added separate file for syntax analysis, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 71e4eaa 145/434: Merge branch 'master' of git.cvj.se:/home/git/emacs-parser-generator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 173fe94 152/434: Preparations for translation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator be557ba 013/434: More work on refactor, ELPA Syncer, 2021/11/29