[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator e59baa8 416/434: Added move feature of
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator e59baa8 416/434: Added move feature of lex-analyzer into exported LR lex-analyzer |
Date: |
Mon, 29 Nov 2021 16:00:28 -0500 (EST) |
branch: externals/parser-generator
commit e59baa8c54c49745b5b5d789af0b70a6056abb04
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Added move feature of lex-analyzer into exported LR lex-analyzer
---
parser-generator-lr-export.el | 74 +++++++++++++++++++++++++++++++------------
1 file changed, 53 insertions(+), 21 deletions(-)
diff --git a/parser-generator-lr-export.el b/parser-generator-lr-export.el
index f156c56..3f44be7 100644
--- a/parser-generator-lr-export.el
+++ b/parser-generator-lr-export.el
@@ -62,66 +62,66 @@
;; Action-tables
(insert
(format
- "(defconst\n %s--action-tables\n %S\n \"The generated
action-tables.\")\n\n"
+ "(defvar\n %s--action-tables\n %S\n \"The generated
action-tables.\")\n\n"
namespace
parser-generator-lr--action-tables))
(insert
(format
- "(defconst\n %s--distinct-action-tables\n %S\n \"The generated
distinct action-tables.\")\n\n"
+ "(defvar\n %s--distinct-action-tables\n %S\n \"The generated
distinct action-tables.\")\n\n"
namespace
parser-generator-lr--distinct-action-tables))
;; Goto-tables
(insert
(format
- "(defconst\n %s--goto-tables\n %S\n \"The generated
goto-tables.\")\n\n"
+ "(defvar\n %s--goto-tables\n %S\n \"The generated
goto-tables.\")\n\n"
namespace
parser-generator-lr--goto-tables))
(insert
(format
- "(defconst\n %s--distinct-goto-tables\n %S\n \"The generated
distinct goto-tables.\")\n\n"
+ "(defvar\n %s--distinct-goto-tables\n %S\n \"The generated distinct
goto-tables.\")\n\n"
namespace
parser-generator-lr--distinct-goto-tables))
;; Table production-number
(insert
(format
- "(defconst\n %s--table-productions-number-reverse\n %S\n \"The
hash-table indexed by production-number and value is production.\")\n\n"
+ "(defvar\n %s--table-productions-number-reverse\n %S\n \"The
hash-table indexed by production-number and value is production.\")\n\n"
namespace
parser-generator--table-productions-number-reverse))
;; Table look-aheads
(insert
(format
- "(defconst\n %s--table-look-aheads\n %S\n \"The hash-table of valid
look-aheads.\")\n\n"
+ "(defvar\n %s--table-look-aheads\n %S\n \"The hash-table of valid
look-aheads.\")\n\n"
namespace
parser-generator--table-look-aheads-p))
;; Table terminals
(insert
(format
- "(defconst\n %s--table-terminal-p\n %S\n \"The hash-table of valid
terminals.\")\n\n"
+ "(defvar\n %s--table-terminal-p\n %S\n \"The hash-table of valid
terminals.\")\n\n"
namespace
parser-generator--table-terminal-p))
;; Table non-terminals
(insert
(format
- "(defconst\n %s--table-non-terminal-p\n %S\n \"The hash-table of
valid non-terminals.\")\n\n"
+ "(defvar\n %s--table-non-terminal-p\n %S\n \"The hash-table of
valid non-terminals.\")\n\n"
namespace
parser-generator--table-non-terminal-p))
;; Table translations
(insert
(format
- "(defconst\n %s--table-translations\n %S\n \"The hash-table of
translations.\")\n\n"
+ "(defvar\n %s--table-translations\n %S\n \"The hash-table of
translations.\")\n\n"
namespace
parser-generator--table-translations))
;; Lex-Analyzer Get Function
(insert
(format
- "(defconst\n %s-lex-analyzer--get-function\n (lambda %S %S)\n \"The
lex-analyzer get function.\")\n\n"
+ "(defvar\n %s-lex-analyzer--get-function\n (lambda %S %S)\n \"The
lex-analyzer get function.\")\n\n"
namespace
(nth 2 parser-generator-lex-analyzer--get-function)
(nth 3 parser-generator-lex-analyzer--get-function)))
@@ -129,7 +129,7 @@
;; Lex-Analyzer Function
(insert
(format
- "(defconst\n %s-lex-analyzer--function\n (lambda %S %S)\n \"The
lex-analyzer function.\")\n\n"
+ "(defvar\n %s-lex-analyzer--function\n (lambda %S %S)\n \"The
lex-analyzer function.\")\n\n"
namespace
(nth 2 parser-generator-lex-analyzer--function)
(nth 3 parser-generator-lex-analyzer--function)))
@@ -137,7 +137,7 @@
;; Lex-Analyzer Reset Function
(insert
(format
- "(defconst\n %s-lex-analyzer--reset-function\n "
+ "(defvar\n %s-lex-analyzer--reset-function\n "
namespace))
(if parser-generator-lex-analyzer--reset-function
(insert
@@ -151,21 +151,21 @@
;; E-identifier
(insert
(format
- "(defconst\n %s--e-identifier\n '%S\n \"The e-identifier.\")\n\n"
+ "(defvar\n %s--e-identifier\n '%S\n \"The e-identifier.\")\n\n"
namespace
parser-generator--e-identifier))
;; EOF-identifier
(insert
(format
- "(defconst\n %s--eof-identifier\n '%S\n \"The
end-of-file-identifier.\")\n\n"
+ "(defvar\n %s--eof-identifier\n '%S\n \"The
end-of-file-identifier.\")\n\n"
namespace
parser-generator--eof-identifier))
;; Look-ahead number
(insert
(format
- "(defconst\n %s--look-ahead-number\n %S\n \"The look-ahead
number.\")\n\n"
+ "(defvar\n %s--look-ahead-number\n %S\n \"The look-ahead
number.\")\n\n"
namespace
parser-generator--look-ahead-number))
@@ -177,6 +177,12 @@
"(defvar-local\n %s-lex-analyzer--index\n 0\n \"The current index
of the lex-analyzer.\")\n\n"
namespace))
+ ;; Lex-analyzer move to index flag
+ (insert
+ (format
+ "(defvar-local\n %s-lex-analyzer--move-to-index-flag\n nil\n
\"Non-nil means move index to value.\")\n\n"
+ namespace))
+
(insert "\n;;; Functions:\n\n")
(insert "\n;;; Lex-Analyzer:\n\n")
@@ -244,10 +250,18 @@
k)
(condition-case error
(progn
+ (setq-local
+ %s-lex-analyzer--move-to-index-flag
+ nil)
(let ((next-look-ahead
(funcall
%s-lex-analyzer--function
index)))
+ (if %s-lex-analyzer--move-to-index-flag
+ (progn
+ (setq
+ index
+ parser-generator-lex-analyzer--move-to-index-flag))
(if next-look-ahead
(progn
(unless (listp (car next-look-ahead))
@@ -261,7 +275,9 @@
(setq index (cdr (cdr next-look-ahead-item))))))
(push (list %s--eof-identifier) look-ahead)
(setq look-ahead-length (1+ look-ahead-length))
- (setq index (1+ index)))))"
+ (setq index (1+ index))))))"
+ namespace
+ namespace
namespace
namespace
namespace
@@ -281,15 +297,23 @@
(defun
%s-lex-analyzer--pop-token ()
\"Pop next token via lex-analyzer.\"
- (let ((iteration 0)
+ (let ((continue t)
(tokens))
- (while (< iteration 1)
+ (while continue
(condition-case error
(progn
+ (setq-local
+ %s-lex-analyzer--move-to-index-flag
+ nil)
(let ((token
(funcall
%s-lex-analyzer--function
%s-lex-analyzer--index)))
+ (if %s-lex-analyzer--move-to-index-flag
+ (progn
+ (setq-local
+ %s-lex-analyzer--index
+ %s-lex-analyzer--move-to-index-flag))
(when token
(unless (listp (car token))
(setq token (list token)))
@@ -297,7 +321,16 @@
(setq
%s-lex-analyzer--index
(cdr (cdr first-token)))
- (push first-token tokens)))))"
+ (push
+ first-token
+ tokens)))
+ (setq
+ continue
+ nil))))"
+ namespace
+ namespace
+ namespace
+ namespace
namespace
namespace
namespace
@@ -307,8 +340,7 @@
\"Lex-analyze failed to pop token at %s, error: %s\"")
(insert (format "
%s-lex-analyzer--index
- (car (cdr error)))))
- (setq iteration (1+ iteration)))
+ (car (cdr error))))))
(nreverse tokens)))\n"
namespace))
- [elpa] externals/parser-generator cfa9561 407/434: Added TODO item, (continued)
- [elpa] externals/parser-generator cfa9561 407/434: Added TODO item, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 21fef5c 388/434: Passing all tests for infix calculator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 4fe014a 394/434: Updating documentation regarding operator precedence, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator aafb3cc 411/434: Passing test for grammar containing e-identifier in middle or a rule, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b8de1c4 414/434: LR-exporter now supports optional header, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e157091 413/434: Fixed error signaling in invalid LR-parser and generated LR-parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 827aa5c 433/434: Another bug for same thing, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator ee78a6c 430/434: LR-parser now passes terminal data to SDT for non-terminals containing only one symbol, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3657a68 427/434: Merge branch 'master' of git.cvj.se:/home/git/emacs-parser-generator, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2481361 425/434: Improved readme, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e59baa8 416/434: Added move feature of lex-analyzer into exported LR lex-analyzer,
ELPA Syncer <=
- [elpa] externals/parser-generator 29568c3 428/434: Added support for copyright text in exported LR-parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 4a3a51d 434/434: Added FSF copyright headers, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 24f3fb9 419/434: Lex-analyzer peek look-ahead does not affect global state, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator f5a5801 421/434: Clarified lex-analyzer exporting necessities, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 9a3240b 314/434: Fixed bug with error throwing on false lr item sets, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 5f13406 319/434: More work on supporting LR-grammar with precedence attributes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 989e79e 331/434: More debugging, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 8092c58 334/434: Added global declaration to unit test, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 778b96f 335/434: More work on global precedence declaration, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 0523eeb 336/434: More work on global precedence, ELPA Syncer, 2021/11/29