branch: externals/parser-generator
commit d161dd7c2bb82e3961797cfbc57cdf70e590e11a
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>
Fixed setting using macro
---
parser-generator-lex-analyzer.el | 32 +++++++-
parser-generator-ll-export.el | 12 +--
parser-generator-lr-export.el | 12 +--
test/parser-generator-lex-analyzer-test.el | 21 ++---
test/parser-generator-ll-export-test.el | 64 ++-------------
test/parser-generator-ll-test.el | 63 +++++----------
test/parser-generator-lr-export-test.el | 125 +++--------------------------
test/parser-generator-lr-test.el | 76 ++++++------------
8 files changed, 105 insertions(+), 300 deletions(-)
diff --git a/parser-generator-lex-analyzer.el b/parser-generator-lex-analyzer.el
index 08e7755578..f757e28844 100644
--- a/parser-generator-lex-analyzer.el
+++ b/parser-generator-lex-analyzer.el
@@ -21,9 +21,9 @@
"Get token contents. Any return is valid even nil.")
(defvar
- parser-generator-lex-analyzer--get-function-export-string
+ parser-generator-lex-analyzer--get-function-export-source
""
- "String version of get function, used only when generating exports. This is
needed because Emacs compilation obfuscates lambda source code after so it is
not printable anymore. Easiest way to populate this is to copy the lambda
source code into a string and manually escape double quotes.")
+ "String version of get function, used only when generating source exports.")
(defvar
parser-generator-lex-analyzer--function
@@ -31,9 +31,9 @@
"Get next token like \='(a b . c) or nil, expects signal if input-tape is
invalid.")
(defvar
- parser-generator-lex-analyzer--function-export-string
+ parser-generator-lex-analyzer--function-export-source
""
- "String version of get function, used only when generating exports. This is
needed because Emacs compilation obfuscates lambda source code after so it is
not printable anymore. Easiest way to populate this is to copy the lambda
source code into a string and manually escape double quotes.")
+ "String version of get function, used only when generating exports.")
(defvar
parser-generator-lex-analyzer--state-init
@@ -70,6 +70,30 @@
"State of lex-analyzer.")
+;; Public Functions
+
+
+(defmacro parser-generator-lex-analyzer-set-get-function (fun)
+ "Sets the lexer get function to FUN."
+ `(progn
+ (setq
+ parser-generator-lex-analyzer--get-function
+ ,fun)
+ (setq
+ parser-generator-lex-analyzer--get-function-export-source
+ ,(format "%S" fun))))
+
+(defmacro parser-generator-lex-analyzer-set-function (fun)
+ "Sets the lexer function to FUN."
+ `(progn
+ (setq
+ parser-generator-lex-analyzer--function
+ ,fun)
+ (setq
+ parser-generator-lex-analyzer--function-export-source
+ ,(format "%S" fun))))
+
+
;; Functions
diff --git a/parser-generator-ll-export.el b/parser-generator-ll-export.el
index e5fefafeab..fabdc5f275 100644
--- a/parser-generator-ll-export.el
+++ b/parser-generator-ll-export.el
@@ -34,10 +34,10 @@
(error "Table for terminals is undefined!"))
(unless parser-generator--table-translations
(error "Table for translations by production-number is undefined!"))
- (unless parser-generator-lex-analyzer--get-function-export-string
- (error "Missing lex-analyzer get function exporting string!"))
- (unless parser-generator-lex-analyzer--function-export-string
- (error "Missing lex-analyzer function export string!"))
+ (unless parser-generator-lex-analyzer--get-function-export-source
+ (error "Missing lex-analyzer get function exporting source!"))
+ (unless parser-generator-lex-analyzer--function-export-source
+ (error "Missing lex-analyzer function export source!"))
(let ((code))
(with-temp-buffer
@@ -167,14 +167,14 @@
(format
"(defvar\n %s-lex-analyzer--get-function\n %s\n \"The lex-analyzer
get function.\")\n\n"
namespace
- parser-generator-lex-analyzer--get-function-export-string))
+ parser-generator-lex-analyzer--get-function-export-source))
;; Lex-Analyzer Function
(insert
(format
"(defvar\n %s-lex-analyzer--function\n %s\n \"The lex-analyzer
function.\")\n\n"
namespace
- parser-generator-lex-analyzer--function-export-string))
+ parser-generator-lex-analyzer--function-export-source))
;; Lex-Analyzer Reset Function
(insert
diff --git a/parser-generator-lr-export.el b/parser-generator-lr-export.el
index 657ec7d8cd..a44d23cd01 100644
--- a/parser-generator-lr-export.el
+++ b/parser-generator-lr-export.el
@@ -40,10 +40,10 @@
(error "Table for terminals is undefined!"))
(unless parser-generator--table-translations
(error "Table for translations by production-number is undefined!"))
- (unless parser-generator-lex-analyzer--get-function-export-string
- (error "Missing lex-analyzer get function export string!"))
- (unless parser-generator-lex-analyzer--function-export-string
- (error "Missing lex-analyzer function export string!"))
+ (unless parser-generator-lex-analyzer--get-function-export-source
+ (error "Missing lex-analyzer get function export source!"))
+ (unless parser-generator-lex-analyzer--function-export-source
+ (error "Missing lex-analyzer function export source!"))
(let ((code))
(with-temp-buffer
@@ -188,14 +188,14 @@
(format
"(defvar\n %s-lex-analyzer--get-function\n %s\n \"The lex-analyzer
get function.\")\n\n"
namespace
- parser-generator-lex-analyzer--get-function-export-string))
+ parser-generator-lex-analyzer--get-function-export-source))
;; Lex-Analyzer Function
(insert
(format
"(defvar\n %s-lex-analyzer--function\n %s\n \"The lex-analyzer
function.\")\n\n"
namespace
- parser-generator-lex-analyzer--function-export-string))
+ parser-generator-lex-analyzer--function-export-source))
;; Lex-Analyzer Reset Function
(insert
diff --git a/test/parser-generator-lex-analyzer-test.el
b/test/parser-generator-lex-analyzer-test.el
index 0578d01dd7..fd4f03b624 100644
--- a/test/parser-generator-lex-analyzer-test.el
+++ b/test/parser-generator-lex-analyzer-test.el
@@ -22,8 +22,7 @@
(should-error
(parser-generator-lex-analyzer--peek-next-look-ahead))
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '(("a" 1 . 2) ("b" 2 . 3) ("c" 3 . 4) ("d" 4 . 5)))
(string-length (length string))
@@ -64,8 +63,7 @@
'(("a" 1 . 2) ("b" 2 . 3) ("c" 3 . 4) ("d" 4 . 5) ($) ($) ($) ($) ($) ($))
(parser-generator-lex-analyzer--peek-next-look-ahead)))
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '(("a" 1 . 2) ("b" 2 . 3) ("c" 3 . 4) ("d" 4 . 5)))
(string-length (length string))
@@ -87,8 +85,7 @@
(parser-generator-lex-analyzer--peek-next-look-ahead))
(setq parser-generator--look-ahead-number 6)
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index state)
(let* ((string '(("a" 1 . 2) ("b" 2 . 3) ("c" 3 . 4) ("d" 4 . 5) ("e" 5 .
6)))
(string-length (length string))
@@ -146,8 +143,7 @@
(should-error
(parser-generator-lex-analyzer--pop-token))
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '(("a" 1 . 2) ("b" 2 . 3)))
(string-length (length string))
@@ -181,8 +177,7 @@
(parser-generator-lex-analyzer--pop-token)))
(setq parser-generator--look-ahead-number 1)
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index state)
(let* ((string '(("a" 1 . 2) ("b" 2 . 3) ("c" 3 . 4) ("d" 4 . 5) ("e" 5 .
6)))
(string-length (length string))
@@ -254,8 +249,7 @@
"Test `parser-generator-lex-analyzer--get-function'."
(message "Starting tests for (parser-generator-lex-analyzer--get-function)")
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(car token)))
@@ -286,8 +280,7 @@
(with-temp-buffer
(insert "Abraham Lincoln")
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(buffer-substring-no-properties (car (cdr token)) (cdr (cdr token)))))
(should
diff --git a/test/parser-generator-ll-export-test.el
b/test/parser-generator-ll-export-test.el
index c663066cfb..d7a164fe29 100644
--- a/test/parser-generator-ll-export-test.el
+++ b/test/parser-generator-ll-export-test.el
@@ -38,9 +38,7 @@
)
(parser-generator-process-grammar)
(parser-generator-ll-generate-table)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '((b 1 . 2) (b 2 . 3) (a 3 . 4)))
(string-length (length string))
@@ -52,28 +50,10 @@
(push (nth (1- index) string) tokens)
(setq index (1+ index)))
(list (nreverse tokens) nil index nil))))
- (setq
- parser-generator-lex-analyzer--function-export-string
- "(lambda (index _state)
- (let* ((string '((b 1 . 2) (b 2 . 3) (a 3 . 4)))
- (string-length (length string))
- (max-index index)
- (tokens))
- (while (and
- (< (1- index) string-length)
- (< (1- index) max-index))
- (push (nth (1- index) string) tokens)
- (setq index (1+ index)))
- (list (nreverse tokens) nil index nil)))")
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(car token)))
- (setq
- parser-generator-lex-analyzer--get-function-export-string
- "(lambda (token)
- (car token))")
(let ((export (parser-generator-ll-export-to-elisp "ba")))
(with-temp-buffer
@@ -100,8 +80,7 @@
(ba-translate))))))
(message "Passed exported test for example 5.16 p. 352")
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '((b 1 . 2) (b 2 . 3) (b 3 . 4) (a 4 . 5)))
(string-length (length string))
@@ -113,19 +92,6 @@
(push (nth (1- index) string) tokens)
(setq index (1+ index)))
(list (nreverse tokens) nil index nil))))
- (setq
- parser-generator-lex-analyzer--function-export-string
- "(lambda (index _state)
- (let* ((string '((b 1 . 2) (b 2 . 3) (b 3 . 4) (a 4 . 5)))
- (string-length (length string))
- (max-index index)
- (tokens))
- (while (and
- (< (1- index) string-length)
- (< (1- index) max-index))
- (push (nth (1- index) string) tokens)
- (setq index (1+ index)))
- (list (nreverse tokens) nil index nil)))")
(let ((export (parser-generator-ll-export-to-elisp "ba2")))
(with-temp-buffer
@@ -162,9 +128,7 @@
)
(parser-generator-process-grammar)
(parser-generator-ll-generate-table)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '((a 1 . 2) (b 2 . 3) (b 3 . 4) (a 4 . 5) (b 5 . 6)))
(string-length (length string))
@@ -176,28 +140,10 @@
(push (nth (1- index) string) tokens)
(setq index (1+ index)))
(list (nreverse tokens) nil index nil))))
- (setq
- parser-generator-lex-analyzer--function-export-string
- "(lambda (index _state)
- (let* ((string '((a 1 . 2) (b 2 . 3) (b 3 . 4) (a 4 . 5) (b 5 . 6)))
- (string-length (length string))
- (max-index index)
- (tokens))
- (while (and
- (< (1- index) string-length)
- (< (1- index) max-index))
- (push (nth (1- index) string) tokens)
- (setq index (1+ index)))
- (list (nreverse tokens) nil index nil)))")
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(car token)))
- (setq
- parser-generator-lex-analyzer--get-function-export-string
- "(lambda (token)
- (car token))")
(let ((export (parser-generator-ll-export-to-elisp "ba3")))
(with-temp-buffer
diff --git a/test/parser-generator-ll-test.el b/test/parser-generator-ll-test.el
index dd754705de..556c3c4408 100644
--- a/test/parser-generator-ll-test.el
+++ b/test/parser-generator-ll-test.el
@@ -263,9 +263,7 @@
)
(parser-generator-process-grammar)
(parser-generator-ll-generate-table)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '((b 1 . 2) (b 2 . 3) (a 3 . 4)))
(string-length (length string))
@@ -278,8 +276,7 @@
(setq index (1+ index)))
(list (nreverse tokens) nil index nil))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(car token)))
(should
@@ -288,8 +285,7 @@
(parser-generator-ll-parse)))
(message "Passed example 5.16 p. 352")
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '((b 1 . 2) (b 2 . 3)))
(string-length (length string))
@@ -302,8 +298,7 @@
(setq index (1+ index)))
(list (nreverse tokens) nil index nil))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(car token)))
(should-error
@@ -326,9 +321,7 @@
)
(parser-generator-process-grammar)
(parser-generator-ll-generate-table)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '((a 1 . 2) (b 2 . 3) (a 3 . 4) (a 4 . 5)))
(string-length (length string))
@@ -341,8 +334,7 @@
(setq index (1+ index)))
(list (nreverse tokens) nil index nil))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(car token)))
(should
@@ -367,9 +359,7 @@
)
(parser-generator-process-grammar)
(parser-generator-ll-generate-table)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '((a 1 . 2) (b 2 . 3) (b 3 . 4) (a 4 . 5) (b 5 . 6)))
(string-length (length string))
@@ -382,8 +372,7 @@
(setq index (1+ index)))
(list (nreverse tokens) nil index nil))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(car token)))
(should
@@ -411,9 +400,7 @@
)
(parser-generator-process-grammar)
(parser-generator-ll-generate-table)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '(("(" 1 . 2) ("a" 2 . 3) ("*" 3 . 4) ("a" 4 . 5) (")" 5 .
6)))
(string-length (length string))
@@ -426,8 +413,7 @@
(setq index (1+ index)))
(list (nreverse tokens) nil index nil))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(car token)))
(should
@@ -453,9 +439,7 @@
)
(parser-generator-process-grammar)
(parser-generator-ll-generate-table)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '(("(" 1 . 2) ("a" 2 . 3) ("+" 3 . 4) ("a" 4 . 5) (")" 5 .
6)))
(string-length (length string))
@@ -468,8 +452,7 @@
(setq index (1+ index)))
(list (nreverse tokens) nil index nil))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(car token)))
(should
@@ -478,8 +461,7 @@
(parser-generator-ll-parse)))
(message "Passed example from Wikipedia")
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '(("(" 1 . 2) ("a" 2 . 3) ("+" 3 . 4) ("a" 4 . 5)))
(string-length (length string))
@@ -492,8 +474,7 @@
(setq index (1+ index)))
(list (nreverse tokens) nil index nil))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(car token)))
(should-error
@@ -529,8 +510,7 @@
(parser-generator-process-grammar)
(parser-generator-ll-generate-table)
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '((b 1 . 2) (b 2 . 3) (a 3 . 4)))
(string-length (length string))
@@ -543,8 +523,7 @@
(setq index (1+ index)))
(list (nreverse tokens) nil index nil))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(car token)))
(should
@@ -553,8 +532,7 @@
(parser-generator-ll-translate)))
(message "Passed translation test 1")
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '((b 1 . 2) (b 2 . 3) (b 3 . 4) (a 4 . 5)))
(string-length (length string))
@@ -595,9 +573,7 @@
)
(parser-generator-process-grammar)
(parser-generator-ll-generate-table)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '((a 1 . 2) (b 2 . 3) (b 3 . 4) (a 4 . 5) (b 5 . 6)))
(string-length (length string))
@@ -610,8 +586,7 @@
(setq index (1+ index)))
(list (nreverse tokens) nil index nil))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(car token)))
(should
diff --git a/test/parser-generator-lr-export-test.el
b/test/parser-generator-lr-export-test.el
index 2e36b1fd0b..ae1a4b8da2 100644
--- a/test/parser-generator-lr-export-test.el
+++ b/test/parser-generator-lr-export-test.el
@@ -35,9 +35,7 @@
(parser-generator-set-look-ahead-number 1)
(parser-generator-process-grammar)
(parser-generator-lr-generate-parser-tables)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(with-current-buffer "*a*"
(when (<= (+ index 1) (point-max))
@@ -45,8 +43,7 @@
(end (+ index 1)))
(let ((token (buffer-substring-no-properties start end)))
(list `(,token ,start . ,end) nil end nil)))))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(with-current-buffer "*a*"
(let ((start (car (cdr token)))
@@ -63,24 +60,6 @@
"bbaa"
(parser-generator-lr-translate)))
- (setq
- parser-generator-lex-analyzer--function-export-string
- "(lambda (index _state)
- (with-current-buffer \"*a*\"
- (when (<= (+ index 1) (point-max))
- (let ((start index)
- (end (+ index 1)))
- (let ((token (buffer-substring-no-properties start end)))
- (list `(,token ,start . ,end) nil end nil))))))")
- (setq
- parser-generator-lex-analyzer--get-function-export-string
- "(lambda (token)
- (with-current-buffer \"*a*\"
- (let ((start (car (cdr token)))
- (end (cdr (cdr token))))
- (when (<= end (point-max))
- (buffer-substring-no-properties start end)))))")
-
;; Export parser
(let ((export (parser-generator-lr-export-to-elisp "ba")))
(parser-generator--debug
@@ -182,9 +161,7 @@
(parser-generator-set-look-ahead-number 1)
(parser-generator-process-grammar)
(parser-generator-lr-generate-parser-tables)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '((a 1 . 2) (a 2 . 3) (b 3 . 4) (b 4 . 5)))
(string-length (length string))
@@ -196,28 +173,10 @@
(push (nth (1- index) string) tokens)
(setq index (1+ index)))
(list (nreverse tokens) nil index nil))))
- (setq
- parser-generator-lex-analyzer--function-export-string
- "(lambda (index _state)
- (let* ((string '((a 1 . 2) (a 2 . 3) (b 3 . 4) (b 4 . 5)))
- (string-length (length string))
- (max-index index)
- (tokens))
- (while (and
- (< (1- index) string-length)
- (< (1- index) max-index))
- (push (nth (1- index) string) tokens)
- (setq index (1+ index)))
- (list (nreverse tokens) nil index nil)))")
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(car token)))
- (setq
- parser-generator-lex-analyzer--get-function-export-string
- "(lambda (token)
- (car token))")
;; Test parse
(should
@@ -263,9 +222,7 @@
(parser-generator-set-look-ahead-number 1)
(parser-generator-process-grammar)
(parser-generator-lr-generate-parser-tables)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(with-current-buffer "*a*"
(when (<= (+ index 1) (point-max))
@@ -273,32 +230,14 @@
(end (+ index 1)))
(let ((token (buffer-substring-no-properties start end)))
(list `(,token ,start . ,end) nil end nil)))))))
- (setq
- parser-generator-lex-analyzer--function-export-string
- "(lambda (index _state)
- (with-current-buffer \"*a*\"
- (when (<= (+ index 1) (point-max))
- (let ((start index)
- (end (+ index 1)))
- (let ((token (buffer-substring-no-properties start end)))
- (list `(,token ,start . ,end) nil end nil))))))")
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(with-current-buffer "*a*"
(let ((start (car (cdr token)))
(end (cdr (cdr token))))
(when (<= end (point-max))
(buffer-substring-no-properties start end))))))
- (setq
- parser-generator-lex-analyzer--get-function-export-string
- "(lambda (token)
- (with-current-buffer \"*a*\"
- (let ((start (car (cdr token)))
- (end (cdr (cdr token))))
- (when (<= end (point-max))
- (buffer-substring-no-properties start end)))))")
(should
(equal
@@ -351,10 +290,7 @@
(parser-generator-set-look-ahead-number 0)
(parser-generator-process-grammar)
(parser-generator-lr-generate-parser-tables)
-
- ;; Setup lex-analyzer
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(with-current-buffer "*a*"
(when (<= (+ index 1) (point-max))
@@ -362,18 +298,8 @@
(end (+ index 1)))
(let ((token (buffer-substring-no-properties start end)))
(list `(,token ,start . ,end) nil end nil)))))))
- (setq
- parser-generator-lex-analyzer--function-export-string
- "(lambda (index _state)
- (with-current-buffer \"*a*\"
- (when (<= (+ index 1) (point-max))
- (let ((start index)
- (end (+ index 1)))
- (let ((token (buffer-substring-no-properties start end)))
- (list `(,token ,start . ,end) nil end nil))))))")
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(with-current-buffer "*a*"
(let ((start (car (cdr token)))
@@ -382,16 +308,6 @@
(buffer-substring-no-properties
start
end))))))
- (setq
- parser-generator-lex-analyzer--get-function-export-string
- "(lambda (token)
- (with-current-buffer \"*a*\"
- (let ((start (car (cdr token)))
- (end (cdr (cdr token))))
- (when (<= end (point-max))
- (buffer-substring-no-properties
- start
- end)))))")
(should
(equal
@@ -443,9 +359,7 @@
(parser-generator-set-look-ahead-number 1)
(parser-generator-process-grammar)
(parser-generator-lr-generate-parser-tables)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(with-current-buffer "*a*"
(when (<= (+ index 1) (point-max))
@@ -453,8 +367,7 @@
(end (+ index 1)))
(let ((token (buffer-substring-no-properties start end)))
(list `(,token ,start . ,end) nil end nil)))))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(with-current-buffer "*a*"
(let ((start (car (cdr token)))
@@ -469,24 +382,6 @@
(message "Passed translate before export")
- (setq
- parser-generator-lex-analyzer--function-export-string
- "(lambda (index _state)
- (with-current-buffer \"*a*\"
- (when (<= (+ index 1) (point-max))
- (let ((start index)
- (end (+ index 1)))
- (let ((token (buffer-substring-no-properties start end)))
- (list `(,token ,start . ,end) nil end nil))))))")
- (setq
- parser-generator-lex-analyzer--get-function-export-string
- "(lambda (token)
- (with-current-buffer \"*a*\"
- (let ((start (car (cdr token)))
- (end (cdr (cdr token))))
- (when (<= end (point-max))
- (buffer-substring-no-properties start end)))))")
-
;; Export parser
(let ((export (parser-generator-lr-export-to-elisp "fa")))
(with-temp-buffer
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index be6eaacbc8..86db58e3ab 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -314,8 +314,7 @@
;; $ -> accept
;; Test grammar that can be only solved by using global and
context-sensitive attributes
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(with-current-buffer "*buffer*"
(let ((token))
@@ -348,8 +347,7 @@
(t (error "Unexpected input at %d!" index)))
(list token))))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(with-current-buffer "*buffer*"
(let ((start (car (cdr token)))
@@ -941,8 +939,7 @@
(parser-generator-set-look-ahead-number 1)
(parser-generator-process-grammar)
(parser-generator-lr-generate-parser-tables)
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '((a 1 . 2) (a 2 . 3) (b 3 . 4) (b 4 . 5)))
(string-length (length string))
@@ -954,8 +951,7 @@
(push (nth (1- index) string) tokens)
(setq index (1+ index)))
(list (car tokens) nil index nil))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(car token)))
(should
@@ -964,8 +960,7 @@
(parser-generator-lr-parse)))
(message "Passed test with terminals as symbols")
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '((a 1 . 2) (a 2 . 3) (b 3 . 4) (b 4 . 5) (b 5 . 6)))
(string-length (length string))
@@ -993,8 +988,7 @@
(message "goto-tables: %s" (parser-generator-lr--get-expanded-goto-tables))
(message "action-tables: %s"
(parser-generator-lr--get-expanded-action-tables)))
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '(("a" 1 . 2) ("a" 2 . 3) ("b" 3 . 4) ("b" 4 . 5)))
(string-length (length string))
@@ -1013,8 +1007,7 @@
(parser-generator-lr-parse)))
(message "Passed test with terminals as string")
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '(("a" 1 . 2) ("a" 2 . 3) ("b" 3 . 4) ("b" 4 . 5) ("b" 5 .
6)))
(string-length (length string))
@@ -1031,8 +1024,7 @@
(parser-generator-lr--parse t))
(message "Passed test with terminals as string, invalid syntax")
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(let* ((string '(("a" 1 . 2) ("a" 2 . 3) ("b" 3 . 4) ("b" 4 . 5)))
(string-length (length string))
@@ -1093,8 +1085,7 @@
(parser-generator-process-grammar)
(parser-generator-lr-generate-parser-tables)
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(with-current-buffer "*PHP8.0*"
(let ((token)
@@ -1215,9 +1206,7 @@
(parser-generator-set-look-ahead-number 1)
(parser-generator-process-grammar)
(parser-generator-lr-generate-parser-tables)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(with-current-buffer "*PHP8.0*"
(let ((token)
@@ -1532,8 +1521,7 @@
(parser-generator-lr-generate-parser-tables)
;; Setup lex-analyzer
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(with-current-buffer buffer
(when (<= (+ index 1) (point-max))
@@ -1542,8 +1530,7 @@
(let ((token (buffer-substring-no-properties start end)))
(list `(,token ,start . ,end) nil end nil)))))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(with-current-buffer buffer
(let ((start (car (cdr token)))
@@ -1594,8 +1581,7 @@
(parser-generator-lr-generate-parser-tables)
;; Setup lex-analyzer
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(with-current-buffer buffer
(when (<= (+ index 1) (point-max))
@@ -1603,8 +1589,7 @@
(end (+ index 1)))
(let ((token (buffer-substring-no-properties start end)))
(list `(,token ,start . ,end) nil end nil)))))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(with-current-buffer buffer
(let ((start (car (cdr token)))
@@ -1807,8 +1792,7 @@
(parser-generator-lr-generate-parser-tables)
;; Setup lex-analyzer
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(with-current-buffer buffer
(when (<= (+ index 1) (point-max))
@@ -1817,8 +1801,7 @@
(let ((token (buffer-substring-no-properties start end)))
(list `(,token ,start . ,end) nil end nil)))))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(with-current-buffer buffer
(let ((start (car (cdr token)))
@@ -1875,8 +1858,7 @@
(parser-generator-lr-generate-parser-tables)
;; Setup lex-analyzer
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(with-current-buffer buffer
(when (< index (point-max))
@@ -1885,8 +1867,7 @@
(let ((token (buffer-substring-no-properties start end)))
(list `(,token ,start . ,end) nil end nil)))))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(with-current-buffer buffer
(let ((start (car (cdr token)))
@@ -1936,9 +1917,7 @@
(parser-generator-set-e-identifier 'e)
(parser-generator-process-grammar)
(parser-generator-lr-generate-parser-tables)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(with-current-buffer buffer
(when (<= (+ index 1) (point-max))
@@ -1947,8 +1926,7 @@
(let ((token (buffer-substring-no-properties start end)))
(list `(,token ,start . ,end) nil end nil)))))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(with-current-buffer buffer
(let ((start (car (cdr token)))
@@ -1983,9 +1961,7 @@
(parser-generator-set-look-ahead-number 1)
(parser-generator-process-grammar)
(parser-generator-lr-generate-parser-tables)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(with-current-buffer buffer
(unless (>= index (point-max))
@@ -2014,8 +1990,7 @@
(t (error "Invalid syntax! Could not lex-analyze at %s!"
(point))))
(list token nil (match-end 0) nil))))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(with-current-buffer buffer
(let ((start (car (cdr token)))
@@ -2086,9 +2061,7 @@
(parser-generator-set-look-ahead-number 1)
(parser-generator-process-grammar)
(parser-generator-lr-generate-parser-tables)
-
- (setq
- parser-generator-lex-analyzer--function
+ (parser-generator-lex-analyzer-set-function
(lambda (index _state)
(with-current-buffer "*a*"
(unless (>= index (point-max))
@@ -2115,8 +2088,7 @@
(t (error "Invalid syntax! Could not lex-analyze at %s!"
(point))))
(list token nil (match-end 0) nil))))))
- (setq
- parser-generator-lex-analyzer--get-function
+ (parser-generator-lex-analyzer-set-get-function
(lambda (token)
(with-current-buffer "*a*"
(let ((start (car (cdr token)))