branch: externals/parser-generator
commit d322de725e8103a484fb8e7269a2c77cb4bca1d2
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>

    Added macro for setting the lexer reset function as well
---
 docs/Lexical-Analysis.md         |  2 +-
 parser-generator-lex-analyzer.el | 15 +++++++++++++++
 parser-generator-ll-export.el    |  7 ++-----
 parser-generator-lr-export.el    |  7 ++-----
 4 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/docs/Lexical-Analysis.md b/docs/Lexical-Analysis.md
index f4d019cee0..9171afbe58 100644
--- a/docs/Lexical-Analysis.md
+++ b/docs/Lexical-Analysis.md
@@ -1,6 +1,6 @@
 # Lexical Analysis
 
-Set lexical analysis function by setting variable 
`parser-generator-lex-analyzer--function`. Optionally set reset function by 
setting variable `parser-generator-lex-analyzer--reset-function`. 
+Set lexical analysis function by using function 
`(parser-generator-lex-analyzer-set-function)`. Optionally set reset function 
by using function `(parser-generator-lex-analyzer-set-reset-function)`. 
 
 The lexical analysis is internally indexed on a local variable 
`parser-generator-lex-analyzer--index` and has it optional state in the local 
variable `parser-generation-lex-analyzer--state`. The initial values for the 
index and state can be set in variables 
`parser-generation-lex-analyzer--index-init` and 
`parser-generator-lex-analyzer--state-init`.
 
diff --git a/parser-generator-lex-analyzer.el b/parser-generator-lex-analyzer.el
index f757e28844..6d49d31a18 100644
--- a/parser-generator-lex-analyzer.el
+++ b/parser-generator-lex-analyzer.el
@@ -45,6 +45,11 @@
   nil
   "Function used when resetting lex-analyzer.")
 
+(defvar
+  parser-generator-lex-analyzer--reset-function-export-source
+  ""
+  "String version of function used when resetting lex-analyzer, used in 
exports.")
+
 (defvar
   parser-generator-lex-analyzer--index-init
   1
@@ -93,6 +98,16 @@
       parser-generator-lex-analyzer--function-export-source
       ,(format "%S" fun))))
 
+(defmacro parser-generator-lex-analyzer-set-reset-function (fun)
+  "Sets the lexer reset function to FUN."
+  `(progn
+     (setq
+      parser-generator-lex-analyzer--reset-function
+      ,fun)
+     (setq
+      parser-generator-lex-analyzer--reset-function-export-source
+      ,(format "%S" fun))))
+
 
 ;; Functions
 
diff --git a/parser-generator-ll-export.el b/parser-generator-ll-export.el
index fabdc5f275..196cbe77ac 100644
--- a/parser-generator-ll-export.el
+++ b/parser-generator-ll-export.el
@@ -181,12 +181,9 @@
        (format
         "(defvar\n  %s-lex-analyzer--reset-function\n  "
         namespace))
-      (if parser-generator-lex-analyzer--reset-function
+      (if (not (equal 
parser-generator-lex-analyzer--reset-function-export-source ""))
           (insert
-           (format
-            "(lambda %S %S)\n"
-            (aref parser-generator-lex-analyzer--reset-function 0)
-            (car (aref parser-generator-lex-analyzer--reset-function 1))))
+           parser-generator-lex-analyzer--reset-function-export-source)
         (insert "nil\n"))
       (insert "  \"The lex-analyzer reset function.\")\n\n")
 
diff --git a/parser-generator-lr-export.el b/parser-generator-lr-export.el
index a44d23cd01..a48b91cd1c 100644
--- a/parser-generator-lr-export.el
+++ b/parser-generator-lr-export.el
@@ -202,12 +202,9 @@
        (format
         "(defvar\n  %s-lex-analyzer--reset-function\n  "
         namespace))
-      (if parser-generator-lex-analyzer--reset-function
+      (if (not (equal 
parser-generator-lex-analyzer--reset-function-export-source ""))
           (insert
-           (format
-            "(lambda %S %S)\n"
-            (aref parser-generator-lex-analyzer--reset-function 0)
-            (car (aref parser-generator-lex-analyzer--reset-function 1))))
+           parser-generator-lex-analyzer--reset-function-export-source)
         (insert "nil\n"))
       (insert "  \"The lex-analyzer reset function.\")\n\n")
 

Reply via email to