[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/parser-generator 732cd78 282/434: Constants and variabl
From: |
ELPA Syncer |
Subject: |
[elpa] externals/parser-generator 732cd78 282/434: Constants and variables are exported correctly |
Date: |
Mon, 29 Nov 2021 15:59:58 -0500 (EST) |
branch: externals/parser-generator
commit 732cd7809e244b7a743b2d05e4a141585a179d27
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Constants and variables are exported correctly
---
parser-generator-lr.el | 157 ++++++++++++++++++++++++-------------------------
1 file changed, 77 insertions(+), 80 deletions(-)
diff --git a/parser-generator-lr.el b/parser-generator-lr.el
index 635ee4a..d890d6d 100644
--- a/parser-generator-lr.el
+++ b/parser-generator-lr.el
@@ -80,103 +80,109 @@
;; Action-tables
(insert
(format
- "(defconst\n%s-action-tables"
- namespace))
- (print
- parser-generator-lr--action-tables
- (current-buffer))
- (insert "\"Generated action-tables.\")\n\n")
+ "(defconst\n %s-action-tables\n %s\n \"Generated
action-tables.\")\n\n"
+ namespace
+ parser-generator-lr--action-tables))
;; Goto-tables
(insert
(format
- "(defconst\n%s-goto-tables"
- namespace))
- (print
- parser-generator-lr--goto-tables
- (current-buffer))
- (insert "\"Generated goto-tables.\")\n\n")
+ "(defconst\n %s-goto-tables\n %s\n \"Generated goto-tables.\")\n\n"
+ namespace
+ parser-generator-lr--goto-tables))
;; Table production-number
(insert
(format
- "(defconst\n%s-table-productions-number"
- namespace))
- (print
- parser-generator--table-productions-number
- (current-buffer))
- (insert "\"Hash-table of productions indexed by
production-number.\")\n\n")
+ "(defconst\n %s-table-productions-number\n %s\n \"Hash-table of
productions indexed by production-number.\")\n\n"
+ namespace
+ parser-generator--table-productions-number))
;; Table look-aheads
(insert
(format
- "(defconst\n%s-table-look-aheads"
- namespace))
- (print
- parser-generator--table-look-aheads-p
- (current-buffer))
- (insert "\"Hash-table of valid look-aheads.\")\n\n")
+ "(defconst\n %s-table-look-aheads\n %s\n \"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"
- namespace))
- (print
- parser-generator--table-non-terminal-p
- (current-buffer))
- (insert "\"Hash-table of valid terminals.\")\n\n")
+ "(defconst\n %s-table-terminal-p\n %s\n \"Hash-table of valid
terminals.\")\n\n"
+ namespace
+ parser-generator--table-non-terminal-p))
;; Table non-terminals
(insert
(format
- "(defconst\n%s-table-non-terminal-p"
- namespace))
- (print
- parser-generator--table-non-terminal-p
- (current-buffer))
- (insert "\"Hash-table of valid non-terminals.\")\n\n")
+ "(defconst\n %s-table-non-terminal-p\n %s\n \"Hash-table of valid
non-terminals.\")\n\n"
+ namespace
+ parser-generator--table-non-terminal-p))
;; Table translations
(insert
(format
- "(defconst\n%s-table-translations"
+ "(defconst\n %s-table-translations\n %s\n \"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
\"Lex-Analyzer Get Function.\")\n\n"
+ namespace
+ (nth 2 parser-generator-lex-analyzer--get-function)
+ (nth 3 parser-generator-lex-analyzer--get-function)))
+
+ ;; Lex-Analyzer Function
+ (insert
+ (format
+ "(defconst\n %s-lex-analyzer--function\n (lambda %s %s)\n
\"Lex-Analyzer Function.\")\n\n"
+ namespace
+ (nth 2 parser-generator-lex-analyzer--function)
+ (nth 3 parser-generator-lex-analyzer--function)))
+
+ ;; Lex-Analyzer Reset Function
+ (insert
+ (format
+ "(defconst\n %s-lex-analyzer--reset-function\n "
namespace))
- (print
- parser-generator--table-translations
- (current-buffer))
- (insert "\"Hash-table of translations.\")\n\n")
+ (if parser-generator-lex-analyzer--reset-function
+ (insert
+ (format
+ "(lambda %s %s)\n"
+ (nth 2 parser-generator-lex-analyzer--reset-function)
+ (nth 3 parser-generator-lex-analyzer--reset-function)))
+ (insert "nil\n"))
+ (insert " \"Lex-Analyzer Reset Function.\")\n\n")
;; E-identifier
(insert
(format
- "(defconst\n%s-e-identifier\n'%s\n\"e-identifier\")\n\n"
+ "(defconst\n %s-e-identifier\n '%s\n \"e-identifier\")\n\n"
namespace
parser-generator--e-identifier))
;; EOF-identifier
(insert
(format
- "(defconst\n%s-eof-identifier\n'%s\n\"EOF-identifier.\")\n\n"
+ "(defconst\n %s-eof-identifier\n '%s\n \"EOF-identifier.\")\n\n"
namespace
parser-generator--eof-identifier))
;; Look-ahead number
(insert
(format
- "(defconst\n%s-look-ahead-number"
- namespace))
- (print
- parser-generator--look-ahead-number
- (current-buffer))
- (insert "\"Look-ahead number.\")\n\n")
+ "(defconst\n %s-look-ahead-number\n %s\n \"Look-ahead
number.\")\n\n"
+ namespace
+ parser-generator--look-ahead-number))
(insert "\n;;; Variables:\n\n\n")
;; Lex-analyzer index
(insert
(format
- "(defvar\n%s-lex-analyzer-index\n0\n\"Current index of
lex-analyzer.\")\n\n"
+ "(defvar\n %s-lex-analyzer-index\n 0\n \"Current index of
lex-analyzer.\")\n\n"
namespace))
(insert "\n;;; Functions:\n\n\n")
@@ -186,38 +192,29 @@
;; Lex-Analyzer Get Function
(insert
(format
- "(defun\n%s-lex-analyzer-get\n(token)\n\"Get token information.\""
- namespace))
- (print
- parser-generator-lex-analyzer--get-function
- (current-buffer))
- (insert ")\n\n")
-
- ;; Lex-Analyzer Function
- (insert
- (format
- "(defun\n%s-lex-analyzer\n()\n\"Get next token.\""
- namespace))
- (print
- parser-generator-lex-analyzer--function
- (current-buffer))
- (insert ")\n\n")
-
- ;; Lex-Analyzer Reset Function
- (insert
- (format
- "(defun\n%s-lex-analyzer\n()\n\"Reset
lex-analyzer.\"\n(setq\n%s-lex-analyzer--index\n1\n)"
+ "(defun
+%s-lex-analyzer-get-function (token)
+\"Get information about TOKEN.\"
+(unless %s-lex-analyzer--get-function
+(error \"Missing lex-analyzer get function!\"))
+(let ((meta-information))
+(condition-case error
+(progn
+(setq meta-information
+(funcall
+%s-lex-analyzer--get-function
+token)))\n"
+ namespace
namespace
namespace))
- (when
- parser-generator-lex-analyzer--reset-function
- (insert "(funcall")
- (print
- parser-generator-lex-analyzer--reset-function
- (current-buffer))
- (insert ")\n"))
- (insert ")\n\n")
-
+ (insert
+ "(error (error
+\"Lex-analyze failed to get token meta-data of %s, error: %s\"
+token
+(car (cdr error)))))
+(unless meta-information
+(error \"Could not find any token meta-information for: %s\" token))
+meta-information))\n\n")
(insert "\n;;; Syntax-Analyzer / Parser:\n\n\n");
- [elpa] externals/parser-generator 40473d3 252/434: Fixed bug with data in full look-ahead in parse function, (continued)
- [elpa] externals/parser-generator 40473d3 252/434: Fixed bug with data in full look-ahead in parse function, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator e1315c3 246/434: Updated so E-FREE-FIRST(x) only uses E-FREE-FIRST on first symbol, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 53ae129 245/434: Commented out useless code, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 24e96cb 261/434: Improved description of LRk, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 40907b7 257/434: white-space fixes, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 37d9fcb 260/434: Improved documentation, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 08b696f 267/434: Fixed typo in doc about token, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator b80fc6e 264/434: Updated README, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1b9d8db 268/434: Improved wording about lexical analysis, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 3615fad 276/434: Fixed issue with lex-analyzer in LR(0) Parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 732cd78 282/434: Constants and variables are exported correctly,
ELPA Syncer <=
- [elpa] externals/parser-generator cbf9e07 278/434: Added documentation about LR(0) Parser, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator af71d8b 285/434: Lex-analyzer is now exported, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 500d082 284/434: Added Lex-Analyzer Rest Function to export, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator cf42e67 288/434: Exported parser passes test, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 1e0418d 295/434: Incremental parse and translate of exported parser passes tests, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 7584880 298/434: Added failing unit test for calculating FIRST in grammar with cycles, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator f338734 303/434: Improved output of progress, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 98c9d94 213/434: Debugging parse with look-ahead > 1, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 2b0d5b8 215/434: More debugging, ELPA Syncer, 2021/11/29
- [elpa] externals/parser-generator 640feed 216/434: Passing all tests for canonical LRk Parser with k = 1, ELPA Syncer, 2021/11/29