emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/parser-generator 770a788b4d 17/19: Passing final tests


From: Christian Johansson
Subject: [elpa] externals/parser-generator 770a788b4d 17/19: Passing final tests for state-based lex-analyzer
Date: Wed, 10 Jan 2024 15:35:24 -0500 (EST)

branch: externals/parser-generator
commit 770a788b4d5eef02fc309215a7d6dd7a4fb9adc3
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>

    Passing final tests for state-based lex-analyzer
---
 TODO.md                                    |   7 -
 parser-generator-lex-analyzer.el           |  14 +-
 parser-generator-ll-export.el              | 287 +++++++++++++++++------------
 parser-generator-lr-export.el              | 287 +++++++++++++++++------------
 test/parser-generator-lex-analyzer-test.el |  16 +-
 test/parser-generator-lr-test.el           |   9 +-
 6 files changed, 353 insertions(+), 267 deletions(-)

diff --git a/TODO.md b/TODO.md
index 65054c83de..952c7d226e 100644
--- a/TODO.md
+++ b/TODO.md
@@ -8,13 +8,6 @@ Functions (with validations) to set global variables:
 * parser-generator--global-attributes
 * parser-generator--global-declaration
 
-## Lex-analyzer
-
-* State-based lex-analyzer
-** Verify that parser-generator-lex-analyzer--index is used in exported 
lex-analyzers
-** Verify that parser-generator-lex-analyzer--state-init is used in exported 
lex-analyzers
-** Use buffered lexer when lexing in exported parsers as well
-
 ## LR-Parser
 
 Functions (with validations) to set global variables:
diff --git a/parser-generator-lex-analyzer.el b/parser-generator-lex-analyzer.el
index 474139ccbe..b68106cacd 100644
--- a/parser-generator-lex-analyzer.el
+++ b/parser-generator-lex-analyzer.el
@@ -45,26 +45,20 @@
 
 
 (defvar-local
-  parser-generator-lex-analyzer--index
+  parser-generator-lex-analyzer--buffered-response
   nil
-  "Index in lex-analyzer.")
+  "Buffered tokens of lex-analyzer.")
 
 (defvar-local
-  parser-generator-lex-analyzer--state
+  parser-generator-lex-analyzer--index
   nil
-  "State of lex-analyzer.")
+  "Index in lex-analyzer.")
 
 (defvar-local
   parser-generator-lex-analyzer--state
   nil
   "State of lex-analyzer.")
 
-(defvar-local
-  parser-generator-lex-analyzer--buffered-response
-  nil
-  "Buffered tokens of lex-analyzer.")
-
-
 
 ;; Functions
 
diff --git a/parser-generator-ll-export.el b/parser-generator-ll-export.el
index dcb221a6d8..160acf9d9f 100644
--- a/parser-generator-ll-export.el
+++ b/parser-generator-ll-export.el
@@ -126,21 +126,41 @@
         namespace
         parser-generator--look-ahead-number))
 
-      (insert "\n;;; Local Variables:\n\n")
+      ;; Lex-Analyzer Initial Index
+      (insert
+       (format
+        "(defvar\n  %s-lex-analyzer--index-init\n  %S\n  \"Initial value of 
index.\")\n\n"
+        namespace
+        parser-generator-lex-analyzer--index-init))
 
-      ;; Index
+      ;; Lex-Analyzer Initial State
+      (insert
+       (format
+        "(defvar\n  %s-lex-analyzer--state-init\n  %S\n  \"Initial value of 
state.\")\n\n"
+        namespace
+        parser-generator-lex-analyzer--state-init))
+
+      (insert "\n;;; Buffer-Local Variables:\n\n\n")
+
+      ;; Lex-Analyzer Buffered Response
+      (insert
+       (format
+        "(defvar-local\n  %s-lex-analyzer--buffered-response\n  nil\n  
\"Buffered tokens of lex-analyzer.\")\n\n"
+        namespace))
+
+      ;; Lex-Analyzer Index
       (insert
        (format
         "(defvar-local\n  %s-lex-analyzer--index\n  0\n  \"The current index 
of the lex-analyzer.\")\n\n"
         namespace))
 
-      ;; State
+      ;; Lex-Analyzer State
       (insert
        (format
         "(defvar-local\n  %s-lex-analyzer--state\n  nil\n  \"The current state 
of the lex-analyzer.\")\n\n"
         namespace))
 
-      (insert "\n;;; Variable Functions:\n\n")
+      (insert "\n;;; Variable Functions:\n\n\n")
 
       ;; Lex-Analyzer Get Function
       (insert
@@ -209,13 +229,23 @@
   %s-lex-analyzer--reset
   ()
   \"Reset Lex-Analyzer.\"
+  (setq
+    %s-lex-analyzer--buffered-response
+    (make-hash-table :test 'equal))
   (setq
     %s-lex-analyzer--index
-    1)
+    %s-lex-analyzer--index-init)
+  (setq
+    %s-lex-analyzer--state
+    %s-lex-analyzer--state-init)
   (when
     %s-lex-analyzer--reset-function
     (funcall
       %s-lex-analyzer--reset-function)))\n"
+               namespace
+               namespace
+               namespace
+               namespace
                namespace
                namespace
                namespace
@@ -241,75 +271,36 @@
     (while (<
             look-ahead-length
             k)
-      (condition-case error
-          (progn
-            (let* ((result-list
-                   (funcall
-                    %s-lex-analyzer--function
-                    index
-                    state))
-                   (token
-                    (nth 0 result-list))
-                   (move-to-index-flag
-                    (nth 1 result-list))
-                   (new-index
-                    (nth 2 result-list))
-                   (new-state
-                    (nth 3 result-list)))
-              (if move-to-index-flag
-                  (progn
-                    (setq
-                     index
-                     move-to-index-flag)
-                    (setq
-                     state
-                     new-state))
+      (let* ((result-list
+              (%s-lex-analyzer--get-buffered-lex
+               index
+               state))
+             (token
+              (nth 0 result-list))
+             (new-index
+              (nth 2 result-list))
+             (new-state
+              (nth 3 result-list)))
+        (push
+         token
+         look-ahead)
+        (setq
+         look-ahead-length
+         (1+ look-ahead-length))
+        (setq
+         index
+         new-index)
+        (setq
+         state
+         new-state)))
 
-                (if token
-                    (progn
-                      (setq index new-index)
-                      (unless (listp (car token))
-                        (setq token (list token)))
-                      (let ((token-count (length token))
-                            (token-index 0))
-                        (while
-                            (and
-                             (<
-                              look-ahead-length
-                              k)
-                             (<
-                              token-index
-                              token-count))
-                          (let ((next-look-ahead-item
-                                 (nth token-index token)))
-                            (push
-                             next-look-ahead-item
-                             look-ahead)
-                            (setq
-                             look-ahead-length
-                             (1+ look-ahead-length))
-                            (setq
-                             token-index
-                             (1+ token-index))))))
-
-                  ;; Fill up look-ahead with EOF-identifier if we found nothing
-                  (push (list %s--eof-identifier) look-ahead)
-                  (setq look-ahead-length (1+ look-ahead-length))
-                  (setq index (1+ index))))))"
+    (nreverse look-ahead)))\n"
                namespace
                namespace
                namespace
                namespace
                namespace
-               namespace))
-      (insert "
-        (error
-         (error
-          \"Lex-analyze failed to peek next look-ahead at %s, error: %s, 
look-ahead: %S\"
-          index
-          error
-          look-ahead))))
-    (nreverse look-ahead)))\n")
+               ))
 
       ;; Lex-Analyzer Pop Token
       (insert
@@ -317,45 +308,105 @@
 (defun
   %s-lex-analyzer--pop-token ()
   \"Pop next token via lex-analyzer.\"
-  (let ((continue t)
-        (tokens))
-    (while continue
-      (condition-case error
-          (progn
-            (let* ((result-list
-                    (funcall
-                     %s-lex-analyzer--function
-                     %s-lex-analyzer--index
-                     %s-lex-analyzer--state))
-                   (token
-                    (nth 0 result-list))
-                   (move-to-index-flag
-                    (nth 1 result-list))
-                   (new-index
-                    (nth 2 result-list))
-                   (new-state
-                    (nth 3 result-list)))
-              (if move-to-index-flag
-                  (progn
-                    (setq-local
-                     %s-lex-analyzer--index
-                     move-to-index-flag)
-                    (setq-local
-                     %s-lex-analyzer--state
-                     new-state))
-                (setq
-                 %s-lex-analyzer--index
-                 new-index)
-                (when token
-                  (unless (listp (car token))
-                    (setq token (list token)))
-                  (let ((first-token (car token)))
-                    (push
-                     first-token
-                     tokens)))
-                (setq
-                 continue
-                 nil))))"
+  (let* ((result-list
+          (%s-lex-analyzer--get-buffered-lex
+           %s-lex-analyzer--index
+           %s-lex-analyzer--state))
+         (token
+          (nth 0 result-list))
+         (new-index
+          (nth 2 result-list))
+         (new-state
+          (nth 3 result-list)))
+    (setq-local
+     %s-lex-analyzer--index
+     new-index)
+    (setq-local
+     %s-lex-analyzer--state
+     new-state)
+    (list token)))\n"
+               namespace
+               namespace
+               namespace
+               namespace
+               namespace
+               namespace
+               ))
+
+      (insert
+       (format "
+(defun %s-lex-analyzer--get-buffered-lex (index state)
+  \"Get next token in stream, use buffer to only call function when needed.\"
+  (unless (gethash
+           index
+           %s-lex-analyzer--buffered-response)
+    (let ((continue t)
+          (tmp-index index)
+          (tmp-state state))
+      (while continue
+        (condition-case error
+            (progn
+              (let* ((result-list
+                      (funcall
+                       %s-lex-analyzer--function
+                       tmp-index
+                       tmp-state))
+                     (tokens
+                      (nth 0 result-list))
+                     (move-to-index-flag
+                      (nth 1 result-list))
+                     (new-state
+                      (nth 2 result-list)))
+                (if move-to-index-flag
+                    (progn
+                      (setq
+                       tmp-index
+                       move-to-index-flag)
+                      (setq
+                       tmp-state
+                       new-state))
+
+                  (if tokens
+
+                      (progn
+                        (unless (listp (car tokens))
+                          (setq tokens (list tokens)))
+
+                        (let* ((first-token (car tokens))
+                               (first-token-start (car (cdr first-token)))
+                               (first-token-end (cdr (cdr first-token))))
+                          (when (< index first-token-start)
+                            (let ((token-start index))
+                              (while (< token-start first-token-start)
+                                (puthash
+                                 token-start
+                                 (list
+                                  first-token
+                                  nil
+                                  first-token-end
+                                  nil)
+                                 %s-lex-analyzer--buffered-response)
+                                (setq
+                                 token-start
+                                 (1+ token-start))))))
+
+                        (dolist (token tokens)
+                          (let ((token-start (car (cdr token)))
+                                (token-end (cdr (cdr token))))
+                            (puthash
+                             token-start
+                             (list token nil token-end new-state)
+                             %s-lex-analyzer--buffered-response))))
+
+                    ;; Fill up look-ahead with EOF-identifier if we found 
nothing
+                    (puthash
+                     index
+                     (list (list %s--eof-identifier) nil (1+ index) nil)
+                     %s-lex-analyzer--buffered-response))
+
+                  (setq
+                   continue
+                   nil))))"
                namespace
                namespace
                namespace
@@ -363,14 +414,22 @@
                namespace
                namespace
                namespace))
+
       (insert "
-        (error (error
-                \"Lex-analyze failed to pop token at %s, error: %s\"")
-      (insert (format "
-                %s-lex-analyzer--index
-                (car (cdr error))))))
-    (nreverse tokens)))\n"
-                      namespace))
+          (error
+           (error
+            \"Lex-analyze failed to get next token at: %s in state: %s, error: 
%s\"
+            index
+            state
+            error))))))")
+
+      (insert
+       (format "
+  (gethash
+   index
+   %s-lex-analyzer--buffered-response))\n"
+               namespace
+            ))
 
       (insert "\n\n;;; Functions for Syntax-Analyzer / Parser:\n\n");
 
diff --git a/parser-generator-lr-export.el b/parser-generator-lr-export.el
index 69f47ed41c..7529d70dc7 100644
--- a/parser-generator-lr-export.el
+++ b/parser-generator-lr-export.el
@@ -147,21 +147,41 @@
         namespace
         parser-generator--look-ahead-number))
 
-      (insert "\n;;; Local Variables:\n\n")
+      ;; Lex-Analyzer Initial Index
+      (insert
+       (format
+        "(defvar\n  %s-lex-analyzer--index-init\n  %S\n  \"Initial value of 
index.\")\n\n"
+        namespace
+        parser-generator-lex-analyzer--index-init))
 
-      ;; Index
+      ;; Lex-Analyzer Initial State
+      (insert
+       (format
+        "(defvar\n  %s-lex-analyzer--state-init\n  %S\n  \"Initial value of 
state.\")\n\n"
+        namespace
+        parser-generator-lex-analyzer--state-init))
+
+      (insert "\n;;; Buffer-Local Variables:\n\n\n")
+
+      ;; Lex-Analyzer Buffered Response
+      (insert
+       (format
+        "(defvar-local\n  %s-lex-analyzer--buffered-response\n  nil\n  
\"Buffered tokens of lex-analyzer.\")\n\n"
+        namespace))
+
+      ;; Lex-Analyzer Index
       (insert
        (format
         "(defvar-local\n  %s-lex-analyzer--index\n  0\n  \"The current index 
of the lex-analyzer.\")\n\n"
         namespace))
 
-      ;; State
+      ;; Lex-Analyzer State
       (insert
        (format
         "(defvar-local\n  %s-lex-analyzer--state\n  nil\n  \"The current state 
of the lex-analyzer.\")\n\n"
         namespace))
 
-      (insert "\n;;; Variable Functions:\n\n")
+      (insert "\n;;; Variable Functions:\n\n\n")
 
       ;; Lex-Analyzer Get Function
       (insert
@@ -230,13 +250,23 @@
   %s-lex-analyzer--reset
   ()
   \"Reset Lex-Analyzer.\"
+  (setq
+    %s-lex-analyzer--buffered-response
+    (make-hash-table :test 'equal))
   (setq
     %s-lex-analyzer--index
-    1)
+    %s-lex-analyzer--index-init)
+  (setq
+    %s-lex-analyzer--state
+    %s-lex-analyzer--state-init)
   (when
     %s-lex-analyzer--reset-function
     (funcall
       %s-lex-analyzer--reset-function)))\n"
+               namespace
+               namespace
+               namespace
+               namespace
                namespace
                namespace
                namespace
@@ -262,75 +292,36 @@
     (while (<
             look-ahead-length
             k)
-      (condition-case error
-          (progn
-            (let* ((result-list
-                   (funcall
-                    %s-lex-analyzer--function
-                    index
-                    state))
-                   (token
-                    (nth 0 result-list))
-                   (move-to-index-flag
-                    (nth 1 result-list))
-                   (new-index
-                    (nth 2 result-list))
-                   (new-state
-                    (nth 3 result-list)))
-              (if move-to-index-flag
-                  (progn
-                    (setq
-                     index
-                     move-to-index-flag)
-                    (setq
-                     state
-                     new-state))
-
-                (if token
-                    (progn
-                      (setq index new-index)
-                      (unless (listp (car token))
-                        (setq token (list token)))
-                      (let ((token-count (length token))
-                            (token-index 0))
-                        (while
-                            (and
-                             (<
-                              look-ahead-length
-                              k)
-                             (<
-                              token-index
-                              token-count))
-                          (let ((next-look-ahead-item
-                                 (nth token-index token)))
-                            (push
-                             next-look-ahead-item
-                             look-ahead)
-                            (setq
-                             look-ahead-length
-                             (1+ look-ahead-length))
-                            (setq
-                             token-index
-                             (1+ token-index))))))
+      (let* ((result-list
+              (%s-lex-analyzer--get-buffered-lex
+               index
+               state))
+             (token
+              (nth 0 result-list))
+             (new-index
+              (nth 2 result-list))
+             (new-state
+              (nth 3 result-list)))
+        (push
+         token
+         look-ahead)
+        (setq
+         look-ahead-length
+         (1+ look-ahead-length))
+        (setq
+         index
+         new-index)
+        (setq
+         state
+         new-state)))
 
-                  ;; Fill up look-ahead with EOF-identifier if we found nothing
-                  (push (list %s--eof-identifier) look-ahead)
-                  (setq look-ahead-length (1+ look-ahead-length))
-                  (setq index (1+ index))))))"
+    (nreverse look-ahead)))\n"
                namespace
                namespace
                namespace
                namespace
                namespace
-               namespace))
-      (insert "
-        (error
-         (error
-          \"Lex-analyze failed to peek next look-ahead at %s, error: %s, 
look-ahead: %S\"
-          index
-          error
-          look-ahead))))
-    (nreverse look-ahead)))\n")
+               ))
 
       ;; Lex-Analyzer Pop Token
       (insert
@@ -338,45 +329,105 @@
 (defun
   %s-lex-analyzer--pop-token ()
   \"Pop next token via lex-analyzer.\"
-  (let ((continue t)
-        (tokens))
-    (while continue
-      (condition-case error
-          (progn
-            (let* ((result-list
-                    (funcall
-                     %s-lex-analyzer--function
-                     %s-lex-analyzer--index
-                     %s-lex-analyzer--state))
-                   (token
-                    (nth 0 result-list))
-                   (move-to-index-flag
-                    (nth 1 result-list))
-                   (new-index
-                    (nth 2 result-list))
-                   (new-state
-                    (nth 3 result-list)))
-              (if move-to-index-flag
-                  (progn
-                    (setq-local
-                     %s-lex-analyzer--index
-                     move-to-index-flag)
-                    (setq-local
-                     %s-lex-analyzer--state
-                     new-state))
-                (setq
-                 %s-lex-analyzer--index
-                 new-index)
-                (when token
-                  (unless (listp (car token))
-                    (setq token (list token)))
-                  (let ((first-token (car token)))
-                    (push
-                     first-token
-                     tokens)))
-                (setq
-                 continue
-                 nil))))"
+  (let* ((result-list
+          (%s-lex-analyzer--get-buffered-lex
+           %s-lex-analyzer--index
+           %s-lex-analyzer--state))
+         (token
+          (nth 0 result-list))
+         (new-index
+          (nth 2 result-list))
+         (new-state
+          (nth 3 result-list)))
+    (setq-local
+     %s-lex-analyzer--index
+     new-index)
+    (setq-local
+     %s-lex-analyzer--state
+     new-state)
+    (list token)))\n"
+               namespace
+               namespace
+               namespace
+               namespace
+               namespace
+               namespace
+               ))
+
+      (insert
+       (format "
+(defun %s-lex-analyzer--get-buffered-lex (index state)
+  \"Get next token in stream, use buffer to only call function when needed.\"
+  (unless (gethash
+           index
+           %s-lex-analyzer--buffered-response)
+    (let ((continue t)
+          (tmp-index index)
+          (tmp-state state))
+      (while continue
+        (condition-case error
+            (progn
+              (let* ((result-list
+                      (funcall
+                       %s-lex-analyzer--function
+                       tmp-index
+                       tmp-state))
+                     (tokens
+                      (nth 0 result-list))
+                     (move-to-index-flag
+                      (nth 1 result-list))
+                     (new-state
+                      (nth 2 result-list)))
+                (if move-to-index-flag
+                    (progn
+                      (setq
+                       tmp-index
+                       move-to-index-flag)
+                      (setq
+                       tmp-state
+                       new-state))
+
+                  (if tokens
+
+                      (progn
+                        (unless (listp (car tokens))
+                          (setq tokens (list tokens)))
+
+                        (let* ((first-token (car tokens))
+                               (first-token-start (car (cdr first-token)))
+                               (first-token-end (cdr (cdr first-token))))
+                          (when (< index first-token-start)
+                            (let ((token-start index))
+                              (while (< token-start first-token-start)
+                                (puthash
+                                 token-start
+                                 (list
+                                  first-token
+                                  nil
+                                  first-token-end
+                                  nil)
+                                 %s-lex-analyzer--buffered-response)
+                                (setq
+                                 token-start
+                                 (1+ token-start))))))
+
+                        (dolist (token tokens)
+                          (let ((token-start (car (cdr token)))
+                                (token-end (cdr (cdr token))))
+                            (puthash
+                             token-start
+                             (list token nil token-end new-state)
+                             %s-lex-analyzer--buffered-response))))
+
+                    ;; Fill up look-ahead with EOF-identifier if we found 
nothing
+                    (puthash
+                     index
+                     (list (list %s--eof-identifier) nil (1+ index) nil)
+                     %s-lex-analyzer--buffered-response))
+
+                  (setq
+                   continue
+                   nil))))"
                namespace
                namespace
                namespace
@@ -384,14 +435,22 @@
                namespace
                namespace
                namespace))
+
       (insert "
-        (error (error
-                \"Lex-analyze failed to pop token at %s, error: %s\"")
-      (insert (format "
-                %s-lex-analyzer--index
-                (car (cdr error))))))
-    (nreverse tokens)))\n"
-                      namespace))
+          (error
+           (error
+            \"Lex-analyze failed to get next token at: %s in state: %s, error: 
%s\"
+            index
+            state
+            error))))))")
+
+      (insert
+       (format "
+  (gethash
+   index
+   %s-lex-analyzer--buffered-response))\n"
+               namespace
+            ))
 
       (insert "\n\n;;; Functions for Syntax-Analyzer / Parser:\n\n");
 
diff --git a/test/parser-generator-lex-analyzer-test.el 
b/test/parser-generator-lex-analyzer-test.el
index df3f674671..b6747d51cb 100644
--- a/test/parser-generator-lex-analyzer-test.el
+++ b/test/parser-generator-lex-analyzer-test.el
@@ -29,13 +29,11 @@
             (string-length (length string))
             (max-index index)
             (tokens)
-            (next-token)
-            (new-index))
+            (next-token))
        (while (and
                (< (1- index) string-length)
                (< (1- index) max-index))
          (setq next-token (nth (1- index) string))
-         (setq new-index (cdr (cdr (nth (1- index) string))))
          (push next-token tokens)
          (setq index (1+ index)))
        (list (nreverse tokens)))))
@@ -73,7 +71,6 @@
             (string-length (length string))
             (max-index index)
             (tokens)
-            (new-index)
             (next-token))
        (while (and
                (< (1- index) string-length)
@@ -81,7 +78,6 @@
          (setq next-token (nth (1- index) string))
          (when (string= (car next-token) "d")
            (error "Invalid token: %s" next-token))
-         (setq new-index (cdr (cdr (nth (1- index) string))))
          (push next-token tokens)
          (setq index (1+ index)))
        (list (nreverse tokens)))))
@@ -98,7 +94,6 @@
             (string-length (length string))
             (max-index index)
             (tokens)
-            (new-index)
             (new-state)
             (next-token))
        (while (and
@@ -120,14 +115,12 @@
                (setq next-token (nth (1- index) string))
                (when (string= (car next-token) "d")
                  (error "Invalid token: %s" next-token))
-               (setq new-index (cdr (cdr (nth (1- index) string))))
                (push next-token tokens)
                (setq index (1+ index)))))
           ((equal state (list 'epislon))
            (setq next-token (nth (1- index) string))
            (when (string= (car next-token) "d")
              (error "Invalid token: %s" next-token))
-           (setq new-index (cdr (cdr (nth (1- index) string))))
            (push next-token tokens)
            (setq index (1+ index)))
           (t
@@ -159,13 +152,11 @@
      (let* ((string '(("a" 1 . 2) ("b" 2 . 3)))
             (string-length (length string))
             (max-index index)
-            (tokens)
-            (new-index))
+            (tokens))
        (while (and
                (< (1- index) string-length)
                (< (1- index) max-index))
          (push (nth (1- index) string) tokens)
-         (setq new-index (cdr (cdr (nth (1- index) string))))
          (setq index (1+ index)))
        (list (nreverse tokens)))))
   (should-error
@@ -197,7 +188,6 @@
             (string-length (length string))
             (max-index index)
             (tokens)
-            (new-index)
             (new-state)
             (next-token))
        (while (and
@@ -219,14 +209,12 @@
                (setq next-token (nth (1- index) string))
                (when (string= (car next-token) "d")
                  (error "Invalid token: %s" next-token))
-               (setq new-index (cdr (cdr (nth (1- index) string))))
                (push next-token tokens)
                (setq index (1+ index)))))
           ((equal state (list 'epislon))
            (setq next-token (nth (1- index) string))
            (when (string= (car next-token) "d")
              (error "Invalid token: %s" next-token))
-           (setq new-index (cdr (cdr (nth (1- index) string))))
            (push next-token tokens)
            (setq index (1+ index)))
           (t
diff --git a/test/parser-generator-lr-test.el b/test/parser-generator-lr-test.el
index 687a493a19..6d61e56a9f 100644
--- a/test/parser-generator-lr-test.el
+++ b/test/parser-generator-lr-test.el
@@ -318,8 +318,7 @@
    parser-generator-lex-analyzer--function
    (lambda (index _state)
      (with-current-buffer "*buffer*"
-       (let ((token)
-             (new-index))
+       (let ((token))
          (when
              (<
               index
@@ -335,9 +334,6 @@
 
            (cond
             ((looking-at "\\([0-9]+\\.[0-9]+\\|[0-9]+\\)")
-             (setq
-              new-index
-              (match-end 0))
              (setq
               token
               `(NUM ,(match-beginning 0) . ,(match-end 0))))
@@ -346,9 +342,6 @@
                     (buffer-substring-no-properties
                      (match-beginning 0)
                      (match-end 0))))
-               (setq
-                new-index
-                (match-end 0))
                (setq
                 token
                 `(,symbol ,(match-beginning 0) . ,(match-end 0)))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]