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

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

[elpa] externals/phps-mode 7c66145 30/96: Refactor of parsers lex-analyz


From: Christian Johansson
Subject: [elpa] externals/phps-mode 7c66145 30/96: Refactor of parsers lex-analyzer complete
Date: Fri, 29 Oct 2021 11:14:40 -0400 (EDT)

branch: externals/phps-mode
commit 7c661451baa0c51c6a152786d8015949f76faeaa
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>

    Refactor of parsers lex-analyzer complete
---
 phps-mode-automation-grammar.el | 97 ++++++++++++++++++++++-------------------
 phps-mode-parser.el             | 93 ++++++++++++++++++++-------------------
 2 files changed, 100 insertions(+), 90 deletions(-)

diff --git a/phps-mode-automation-grammar.el b/phps-mode-automation-grammar.el
index 04121e3..f8b4d10 100644
--- a/phps-mode-automation-grammar.el
+++ b/phps-mode-automation-grammar.el
@@ -33,6 +33,11 @@
  "Position of parser.")
 
 (defvar
+ phps-mode-parser-tokens
+ nil
+ "Reversed list of tokens.")
+
+(defvar
   phps-mode-automation-grammar--context-sensitive-attributes
   '(%prec)
   "List of context-sensitive attributes.")
@@ -1441,7 +1446,7 @@
 
 (defvar
   phps-mode-automation-grammar--header
-  "(require 'phps-mode-lexer)\n(require 'semantic)\n(require 
'semantic/lex)\n\n(defvar-local\n phps-mode-parser-position\n nil\n \"Position 
of parser.\")\n"
+  "(require 'phps-mode-lexer)\n(require 'semantic)\n(require 
'semantic/lex)\n\n(defvar-local\n phps-mode-parser-position\n nil\n \"Position 
of parser.\")\n(defvar-local\n phps-mode-parser-tokens\n nil\n \"Reversed list 
of lexer tokens.\")\n"
   "Header contents for parser.")
 
 (defvar
@@ -1459,7 +1464,6 @@
   '$
   "The EOF-identifier of grammar.")
 
-;; TODO Need to use a separate reversed list of tokens
 (defvar
   phps-mode-automation-grammar--lex-analyzer-function
   (lambda (buffer-index)
@@ -1478,44 +1482,45 @@
       (let ((token-list-index))
 
         ;; Unless we have lexed the buffer
-        (unless phps-mode-lexer--generated-tokens
-
-          ;; Reset lexer
-          (setq-local
-           phps-mode-lexer--generated-tokens
-           nil)
-          (setq-local
-           phps-mode-lexer--state
-           'ST_INITIAL)
-          (setq-local
-           phps-mode-lexer--states
-           nil)
+        (unless phps-mode-parser-tokens
+          (unless phps-mode-lexer--generated-tokens
+            ;; Reset lexer
+            (setq-local
+             phps-mode-lexer--generated-tokens
+             nil)
+            (setq-local
+             phps-mode-lexer--state
+             'ST_INITIAL)
+            (setq-local
+             phps-mode-lexer--states
+             nil)
+            (setq-local
+             phps-mode-lexer--state-stack
+             nil)
+            (setq-local
+             phps-mode-lexer--heredoc-label
+             nil)
+            (setq-local
+             phps-mode-lexer--heredoc-label-stack
+             nil)
+            (setq-local
+             phps-mode-lexer--nest-location-stack
+             nil)
+            (goto-char (point-min))
+
+            ;; Run lexer on entire buffer here
+            (let ((index (point))
+                  (max-index (point-max)))
+              (while (< index max-index)
+                (phps-mode-lexer--re2c)
+                (setq
+                 index
+                 semantic-lex-end-point)
+                (goto-char index))))
           (setq-local
-           phps-mode-lexer--state-stack
-           nil)
-          (setq-local
-           phps-mode-lexer--heredoc-label
-           nil)
-          (setq-local
-           phps-mode-lexer--heredoc-label-stack
-           nil)
-          (setq-local
-           phps-mode-lexer--nest-location-stack
-           nil)
-          (goto-char (point-min))
-
-          ;; Run lexer on entire buffer here
-          (let ((index (point))
-                (max-index (point-max)))
-            (while (< index max-index)
-              (phps-mode-lexer--re2c)
-              (setq
-               index
-               semantic-lex-end-point)
-              (goto-char index)))
-          (setq
-           phps-mode-lexer--generated-tokens
-           (reverse phps-mode-lexer--generated-tokens))
+           phps-mode-parser-tokens
+           (reverse
+            phps-mode-lexer--generated-tokens))
 
           ;; Reset buffer-index to token-list-index connections
           (setq-local
@@ -1525,10 +1530,10 @@
         (if (and
              phps-mode-parser-position
              (= (car (car phps-mode-parser-position)) buffer-index))
-             (progn
-             (setq   
-             token-list-index
-             (car (cdr (car phps-mode-parser-position)))))
+            (progn
+              (setq
+               token-list-index
+               (car (cdr (car phps-mode-parser-position)))))
 
           ;; Search from last requested index and forward until
           ;; we find a token starting at or after buffer-index and
@@ -1546,7 +1551,7 @@
                    previous-token-list-index)
                   (token-list-size
                    (length
-                    phps-mode-lexer--generated-tokens))
+                    phps-mode-parser-tokens))
                   (continue t))
               (while (and
                       continue
@@ -1556,7 +1561,7 @@
                 (let ((token
                        (nth
                         temp-token-list-index
-                        phps-mode-lexer--generated-tokens)))
+                        phps-mode-parser-tokens)))
 
                   ;; When token starts at cursor we found correct index
                   ;; Save it
@@ -1610,7 +1615,7 @@
           (let ((token
                  (nth
                   token-list-index
-                  phps-mode-lexer--generated-tokens)))
+                  phps-mode-parser-tokens)))
             (when (equal (car token) 'T_OPEN_TAG_WITH_ECHO)
               (setf
                (car token)
diff --git a/phps-mode-parser.el b/phps-mode-parser.el
index 4964fd6..0175782 100644
--- a/phps-mode-parser.el
+++ b/phps-mode-parser.el
@@ -14,6 +14,10 @@
  phps-mode-parser-position
  nil
  "Position of parser.")
+(defvar-local
+ phps-mode-parser-tokens
+ nil
+ "Reversed list of lexer tokens.")
 
 ;;; Constants:
 
@@ -86,44 +90,45 @@
       (let ((token-list-index))
 
         ;; Unless we have lexed the buffer
-        (unless phps-mode-lexer--generated-tokens
-
-          ;; Reset lexer
-          (setq-local
-           phps-mode-lexer--generated-tokens
-           nil)
-          (setq-local
-           phps-mode-lexer--state
-           'ST_INITIAL)
-          (setq-local
-           phps-mode-lexer--states
-           nil)
-          (setq-local
-           phps-mode-lexer--state-stack
-           nil)
-          (setq-local
-           phps-mode-lexer--heredoc-label
-           nil)
-          (setq-local
-           phps-mode-lexer--heredoc-label-stack
-           nil)
+        (unless phps-mode-parser-tokens
+          (unless phps-mode-lexer--generated-tokens
+            ;; Reset lexer
+            (setq-local
+             phps-mode-lexer--generated-tokens
+             nil)
+            (setq-local
+             phps-mode-lexer--state
+             'ST_INITIAL)
+            (setq-local
+             phps-mode-lexer--states
+             nil)
+            (setq-local
+             phps-mode-lexer--state-stack
+             nil)
+            (setq-local
+             phps-mode-lexer--heredoc-label
+             nil)
+            (setq-local
+             phps-mode-lexer--heredoc-label-stack
+             nil)
+            (setq-local
+             phps-mode-lexer--nest-location-stack
+             nil)
+            (goto-char (point-min))
+
+            ;; Run lexer on entire buffer here
+            (let ((index (point))
+                  (max-index (point-max)))
+              (while (< index max-index)
+                (phps-mode-lexer--re2c)
+                (setq
+                 index
+                 semantic-lex-end-point)
+                (goto-char index))))
           (setq-local
-           phps-mode-lexer--nest-location-stack
-           nil)
-          (goto-char (point-min))
-
-          ;; Run lexer on entire buffer here
-          (let ((index (point))
-                (max-index (point-max)))
-            (while (< index max-index)
-              (phps-mode-lexer--re2c)
-              (setq
-               index
-               semantic-lex-end-point)
-              (goto-char index)))
-          (setq
-           phps-mode-lexer--generated-tokens
-           (reverse phps-mode-lexer--generated-tokens))
+           phps-mode-parser-tokens
+           (reverse
+            phps-mode-lexer--generated-tokens))
 
           ;; Reset buffer-index to token-list-index connections
           (setq-local
@@ -133,10 +138,10 @@
         (if (and
              phps-mode-parser-position
              (= (car (car phps-mode-parser-position)) buffer-index))
-             (progn
-             (setq   
-             token-list-index
-             (car (cdr (car phps-mode-parser-position)))))
+            (progn
+              (setq
+               token-list-index
+               (car (cdr (car phps-mode-parser-position)))))
 
           ;; Search from last requested index and forward until
           ;; we find a token starting at or after buffer-index and
@@ -154,7 +159,7 @@
                    previous-token-list-index)
                   (token-list-size
                    (length
-                    phps-mode-lexer--generated-tokens))
+                    phps-mode-parser-tokens))
                   (continue t))
               (while (and
                       continue
@@ -164,7 +169,7 @@
                 (let ((token
                        (nth
                         temp-token-list-index
-                        phps-mode-lexer--generated-tokens)))
+                        phps-mode-parser-tokens)))
 
                   ;; When token starts at cursor we found correct index
                   ;; Save it
@@ -218,7 +223,7 @@
           (let ((token
                  (nth
                   token-list-index
-                  phps-mode-lexer--generated-tokens)))
+                  phps-mode-parser-tokens)))
             (when (equal (car token) 'T_OPEN_TAG_WITH_ECHO)
               (setf
                (car token)



reply via email to

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