branch: externals/phps-mode
commit ea4178f999f366e5c3ce1d5b8a414ce53cf5842f
Author: Christian Johansson <christ...@cvj.se>
Commit: Christian Johansson <christ...@cvj.se>

    Made lexer rules easier to maintain
---
 phps-mode-lexer.el | 22 +++++-----------------
 1 file changed, 5 insertions(+), 17 deletions(-)

diff --git a/phps-mode-lexer.el b/phps-mode-lexer.el
index 8016837b31..a1ff3ce78b 100644
--- a/phps-mode-lexer.el
+++ b/phps-mode-lexer.el
@@ -9,14 +9,9 @@
 ;; any higher order meta-lexer logic goes into `phps-mode-lex-analyzer.el'.
 ;;
 ;; Features:
-;; * Defines the lexer for this grammar based on the Zend PHP 8.1 Lexer at
-;; 
https://raw.githubusercontent.com/php/php-src/PHP-8.1/Zend/zend_language_scanner.l
+;; * Defines the lexer for this grammar based on the Zend PHP 8.2 Lexer at
+;; 
https://raw.githubusercontent.com/php/php-src/PHP-8.2/Zend/zend_language_scanner.l
 ;; which is using re2c.
-;;
-;; Instructions on how to generate new lexer rules
-;; 1. Make edits in lexer rules in function 
`phps-mode-lexer--generate-lexer-rules'
-;; 2. Run `eval-buffer' and then `phps-mode-lexer--generate-lexer-rules'
-;; 3. Update inline value of `phps-mode-lexer--lambdas-by-state' by running 
code "(insert (format "%S" phps-mode-lexer--lambdas-by-state))"
 
 ;;; Code:
 
@@ -121,12 +116,7 @@
 ;; VARIABLES
 
 
-(defvar phps-mode-lexer--lambdas-by-state #s(hash-table size 65 test equal 
rehash-size 1.5 rehash-threshold 0.8125 data (ST_IN_SCRIPTING (((lambda nil 
(looking-at "exit")) (lambda nil (phps-mode-lexer--return-token-with-indent 
'T_EXIT))) ((lambda nil (looking-at "die")) (lambda nil 
(phps-mode-lexer--return-token-with-indent 'T_EXIT))) ((lambda nil (looking-at 
"fn")) (lambda nil (phps-mode-lexer--return-token-with-indent 'T_FN))) ((lambda 
nil (looking-at "function")) (lambda nil (phps-mod [...]
-]*" "\\(\\$\\|\\.\\.\\.\\)"))) (lambda nil (phps-mode-lexer--yyless 1) 
(phps-mode-lexer--return-token 'T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG 
(match-beginning 0) (- (match-end 0) 1)))) ((lambda nil (looking-at "&")) 
(lambda nil (phps-mode-lexer--return-token 
'T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG))) ((lambda nil (looking-at (concat 
"\\(" "]" "\\|" ")" "\\)"))) (lambda nil 
(phps-mode-lexer--return-exit-nesting-token))) ((lambda nil (looking-at (concat 
"\\(" "\\[" "\\|" "(" "\\)"))) (la [...]
-[       ]*\\(" phps-mode-lexer--heredoc-label "\\)\\|\\$" 
phps-mode-lexer--label "\\|{\\$" phps-mode-lexer--label "\\|\\${" 
phps-mode-lexer--label "\\)") nil t))) (if string-start (let* ((start 
(match-beginning 0)) (end (match-end 0)) (data (match-string 0))) (cond 
((string-match-p (concat "
-[       ]*" phps-mode-lexer--heredoc-label) data) (setq start (match-beginning 
2)) (setq end (match-beginning 2)) (phps-mode-lexer--return-token-with-val 
'T_ENCAPSED_AND_WHITESPACE old-end start) (phps-mode-lexer--begin 
'ST_END_HEREDOC)) (t (phps-mode-lexer--return-token-with-val 
'T_ENCAPSED_AND_WHITESPACE old-end start)))) (progn (signal 'phps-lexer-error 
(list (format "Found no ending of heredoc starting at %d" old-start) 
old-start))))))))) ST_LOOKING_FOR_VARNAME (((lambda nil (looking-at ( [...]
-
        '#]"))) (lambda nil (phps-mode-lexer--yyless 0) 
(phps-mode-lexer--yy-pop-state) (phps-mode-lexer--return-token-with-val 
'T_ENCAPSED_AND_WHITESPACE))) ((lambda nil (looking-at phps-mode-lexer--label)) 
(lambda nil (phps-mode-lexer--return-token-with-str 'T_STRING 0))) ((lambda nil 
(looking-at phps-mode-lexer--any-char)) (lambda nil (signal 'phps-lexer-error 
(list (format "Unexpected character at %d" (match-beginning 0)) 
(match-beginning 0)))))) quote (((lambda nil (looking-at (concat "#!.* [...]
-[       ]*\\(" phps-mode-lexer--heredoc-label "\\)") nil t))) (if string-start 
(let* ((start (match-beginning 1)) (end (match-end 1)) (_data 
(buffer-substring-no-properties start end))) 
(phps-mode-lexer--return-token-with-val 'T_ENCAPSED_AND_WHITESPACE 
phps-mode-lexer--generated-new-tokens-index start) (phps-mode-lexer--begin 
'ST_END_HEREDOC)) (progn (signal 'phps-lexer-error (list (format "Found no 
ending of nowdoc starting at %d" start) start)))))))))))
+(defvar phps-mode-lexer--lambdas-by-state nil
   "Hash-table of lex-analyzer rules organized by state.")
 
 (defvar-local phps-mode-lexer--generated-tokens nil
@@ -478,10 +468,8 @@
 ;; Setup lexer rules
 
 
-(defun phps-mode-lexer--generate-lexer-rules ()
-  "Generate lexer rules."
-  (eval-when-compile
-    (setq phps-mode-lexer--lambdas-by-state (make-hash-table :test 'equal)))
+(eval-when-compile
+  (setq phps-mode-lexer--lambdas-by-state (make-hash-table :test 'equal))
 
   (phps-mode-lexer--match-macro
    ST_IN_SCRIPTING

Reply via email to