branch: externals/phps-mode
commit b640c09214dba32e34dee57d10b209420e663305
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>
Improved maintainability of lexer rules
---
phps-mode-lexer-generator.el | 2020 ++++++++++++++++++++++++------------------
phps-mode-lexer.el | 5 +-
2 files changed, 1142 insertions(+), 883 deletions(-)
diff --git a/phps-mode-lexer-generator.el b/phps-mode-lexer-generator.el
index b6e9122138..935984c9b6 100644
--- a/phps-mode-lexer-generator.el
+++ b/phps-mode-lexer-generator.el
@@ -9,9 +9,9 @@
;;; Code:
-(defvar phps-mode-lexer-generator--table (make-hash-table :test 'equal))
+(defvar phps-mode-lexer-generator--table nil)
-(defmacro phps-mode-lexer-generator--match-macro (states conditions &rest body)
+(defun phps-mode-lexer-generator--add-rule (table states conditions &rest body)
"Place in STATES a check for CONDITIONS to execute BODY."
(unless (listp states)
(setq states (list states)))
@@ -19,357 +19,434 @@
(let ((old-lambdas
(gethash
state
- phps-mode-lexer-generator--table)))
+ table)))
(when old-lambdas
(setq
old-lambdas
(reverse old-lambdas)))
- (push `((lambda() ,conditions) (lambda() ,@body)) old-lambdas)
+ (push (list conditions body) old-lambdas)
(setq old-lambdas (reverse old-lambdas))
(puthash
state
old-lambdas
- phps-mode-lexer-generator--table))))
+ table))))
(defun phps-mode-lexer-generator--lambdas ()
- (setq phps-mode-lexer-generator--table (make-hash-table :test 'equal))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "exit")
- (phps-mode-lexer--return-token-with-indent 'T_EXIT))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "die")
- (phps-mode-lexer--return-token-with-indent 'T_EXIT))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "fn")
- (phps-mode-lexer--return-token-with-indent 'T_FN))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "function")
- (phps-mode-lexer--return-token-with-indent 'T_FUNCTION))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "const")
- (phps-mode-lexer--return-token-with-indent 'T_CONST))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "return")
- (phps-mode-lexer--return-token-with-indent 'T_RETURN))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "#\\[")
+
+ ;; NOTE We use a global variable here to prevent it from being
+ ;; included in the lambdas below
+ (setq
+ phps-mode-lexer-generator--table
+ (make-hash-table :test 'equal))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "exit"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_EXIT)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "die"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_EXIT)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "fn"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_FN)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "function"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_FUNCTION)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "const"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_CONST)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "return"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_RETURN)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "#\\["))
+ (lambda()
(phps-mode-lexer--enter-nesting "[")
- (phps-mode-lexer--return-token 'T_ATTRIBUTE))
+ (phps-mode-lexer--return-token 'T_ATTRIBUTE)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
(concat
"yield"
phps-mode-lexer--whitespace
"from"
- "[^a-zA-Z0-9_\x80-\xff]"))
- (phps-mode-lexer--return-token-with-indent 'T_YIELD_FROM))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "yield")
- (phps-mode-lexer--return-token-with-indent 'T_YIELD))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "try")
- (phps-mode-lexer--return-token-with-indent 'T_TRY))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "catch")
- (phps-mode-lexer--return-token-with-indent 'T_CATCH))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "finally")
- (phps-mode-lexer--return-token-with-indent 'T_FINALLY))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "throw")
- (phps-mode-lexer--return-token-with-indent 'T_THROW))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "if")
- (phps-mode-lexer--return-token-with-indent 'T_IF))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "elseif")
- (phps-mode-lexer--return-token-with-indent 'T_ELSEIF))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "endif")
- (phps-mode-lexer--return-token-with-indent 'T_ENDIF))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "else")
- (phps-mode-lexer--return-token-with-indent 'T_ELSE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "while")
- (phps-mode-lexer--return-token-with-indent 'T_WHILE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "endwhile")
- (phps-mode-lexer--return-token-with-indent 'T_ENDWHILE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "do")
- (phps-mode-lexer--return-token-with-indent 'T_DO))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "for")
- (phps-mode-lexer--return-token-with-indent 'T_FOR))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "endfor")
- (phps-mode-lexer--return-token-with-indent 'T_ENDFOR))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "foreach")
- (phps-mode-lexer--return-token-with-indent 'T_FOREACH))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "endforeach")
- (phps-mode-lexer--return-token-with-indent 'T_ENDFOREACH))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "declare")
- (phps-mode-lexer--return-token-with-indent 'T_DECLARE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "enddeclare")
- (phps-mode-lexer--return-token-with-indent 'T_ENDDECLARE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "instanceof")
- (phps-mode-lexer--return-token-with-indent 'T_INSTANCEOF))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "as")
- (phps-mode-lexer--return-token-with-indent 'T_AS))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "switch")
- (phps-mode-lexer--return-token-with-indent 'T_SWITCH))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "match")
- (phps-mode-lexer--return-token-with-indent 'T_MATCH))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "endswitch")
- (phps-mode-lexer--return-token-with-indent 'T_ENDSWITCH))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "case")
- (phps-mode-lexer--return-token-with-indent 'T_CASE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "default")
- (phps-mode-lexer--return-token-with-indent 'T_DEFAULT))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "break")
- (phps-mode-lexer--return-token-with-indent 'T_BREAK))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "continue")
- (phps-mode-lexer--return-token-with-indent 'T_CONTINUE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "goto")
- (phps-mode-lexer--return-token-with-indent 'T_GOTO))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "echo")
- (phps-mode-lexer--return-token-with-indent 'T_ECHO))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "print")
- (phps-mode-lexer--return-token-with-indent 'T_PRINT))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "class")
- (phps-mode-lexer--return-token-with-indent 'T_CLASS))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "interface")
- (phps-mode-lexer--return-token-with-indent 'T_INTERFACE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "trait")
- (phps-mode-lexer--return-token-with-indent 'T_TRAIT))
-
- ;; The enum keyword must be followed by whitespace and another identifier.
- ;; This avoids the BC break of using enum in classes, namespaces,
functions and constants.
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at (concat "\\(enum\\)" phps-mode-lexer--whitespace
"\\(extends\\|implements\\)"))
+ "[^a-zA-Z0-9_\x80-\xff]")))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_YIELD_FROM)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "yield"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_YIELD)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "try"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_TRY)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "catch"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_CATCH)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "finally"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_FINALLY)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "throw"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_THROW)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "if"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_IF)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "elseif"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_ELSEIF)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "endif"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_ENDIF)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "else"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_ELSE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "while"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_WHILE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "endwhile"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_ENDWHILE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "do"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_DO)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "for"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_FOR)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "endfor"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_ENDFOR)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "foreach"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_FOREACH)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "endforeach"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_ENDFOREACH)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "declare"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_DECLARE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "enddeclare"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_ENDDECLARE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "instanceof"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_INSTANCEOF)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "as"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_AS)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "switch"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_SWITCH)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "match"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_MATCH)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "endswitch"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_ENDSWITCH)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "case"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_CASE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "default"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_DEFAULT)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "break"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_BREAK)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "continue"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_CONTINUE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "goto"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_GOTO)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "echo"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_ECHO)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "print"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_PRINT)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "class"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_CLASS)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "interface"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_INTERFACE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "trait"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_TRAIT)))
+
+ ;; The enum keyword must be followed by whitespace and another identifier.
+ ;; This avoids the BC break of using enum in classes, namespaces, functions
and constants.
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
+ (looking-at (concat "\\(enum\\)" phps-mode-lexer--whitespace
"\\(extends\\|implements\\)")))
+ (lambda()
(phps-mode-lexer--yyless 4)
- (phps-mode-lexer--return-token-with-str 'T_STRING))
+ (phps-mode-lexer--return-token-with-str 'T_STRING)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at (concat "\\(enum\\)" phps-mode-lexer--whitespace
"[a-zA-Z_\x80-\xff]"))
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at (concat "\\(enum\\)" phps-mode-lexer--whitespace
"[a-zA-Z_\x80-\xff]")))
+ (lambda()
(phps-mode-lexer--yyless 4)
- (phps-mode-lexer--return-token-with-indent 'T_ENUM (match-beginning 1)
(match-end 1)))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "extends")
- (phps-mode-lexer--return-token-with-indent 'T_EXTENDS))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "implements")
- (phps-mode-lexer--return-token-with-indent 'T_IMPLEMENTS))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "->")
+ (phps-mode-lexer--return-token-with-indent 'T_ENUM (match-beginning 1)
(match-end 1))))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "extends"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_EXTENDS)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "implements"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_IMPLEMENTS)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "->"))
+ (lambda()
(phps-mode-lexer--yy-push-state 'ST_LOOKING_FOR_PROPERTY)
- (phps-mode-lexer--return-token-with-indent 'T_OBJECT_OPERATOR))
+ (phps-mode-lexer--return-token-with-indent 'T_OBJECT_OPERATOR)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "?->")
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "?->"))
+ (lambda()
(phps-mode-lexer--yy-push-state 'ST_LOOKING_FOR_PROPERTY)
- (phps-mode-lexer--return-token-with-indent 'T_NULLSAFE_OBJECT_OPERATOR))
-
- (phps-mode-lexer-generator--match-macro
- (ST_IN_SCRIPTING ST_LOOKING_FOR_PROPERTY)
- (looking-at phps-mode-lexer--whitespace)
- (phps-mode-lexer--return-whitespace))
-
- (phps-mode-lexer-generator--match-macro
- ST_LOOKING_FOR_PROPERTY
- (looking-at "->")
- (phps-mode-lexer--return-token 'T_OBJECT_OPERATOR))
-
- (phps-mode-lexer-generator--match-macro
- ST_LOOKING_FOR_PROPERTY
- (looking-at "?->")
- (phps-mode-lexer--return-token 'T_NULLSAFE_OBJECT_OPERATOR))
-
- (phps-mode-lexer-generator--match-macro
- ST_LOOKING_FOR_PROPERTY
- (looking-at phps-mode-lexer--label)
+ (phps-mode-lexer--return-token-with-indent 'T_NULLSAFE_OBJECT_OPERATOR)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ '(ST_IN_SCRIPTING ST_LOOKING_FOR_PROPERTY)
+ (lambda() (looking-at phps-mode-lexer--whitespace))
+ (lambda() (phps-mode-lexer--return-whitespace)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_LOOKING_FOR_PROPERTY
+ (lambda() (looking-at "->"))
+ (lambda() (phps-mode-lexer--return-token 'T_OBJECT_OPERATOR)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_LOOKING_FOR_PROPERTY
+ (lambda() (looking-at "?->"))
+ (lambda() (phps-mode-lexer--return-token 'T_NULLSAFE_OBJECT_OPERATOR)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_LOOKING_FOR_PROPERTY
+ (lambda() (looking-at phps-mode-lexer--label))
+ (lambda() (phps-mode-lexer--yy-pop-state)
+ (phps-mode-lexer--return-token-with-str 'T_STRING 0)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_LOOKING_FOR_PROPERTY
+ (lambda() (looking-at phps-mode-lexer--any-char))
+ (lambda() (phps-mode-lexer--yyless 0)
(phps-mode-lexer--yy-pop-state)
- (phps-mode-lexer--return-token-with-str 'T_STRING 0))
-
- (phps-mode-lexer-generator--match-macro
- ST_LOOKING_FOR_PROPERTY
- (looking-at phps-mode-lexer--any-char)
- (phps-mode-lexer--yyless 0)
- (phps-mode-lexer--yy-pop-state)
- (phps-mode-lexer--restart))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "::")
- (phps-mode-lexer--return-token 'T_PAAMAYIM_NEKUDOTAYIM))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "\\.\\.\\.")
- (phps-mode-lexer--return-token 'T_ELLIPSIS))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "\\?\\?")
- (phps-mode-lexer--return-token 'T_COALESCE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "new")
- (phps-mode-lexer--return-token-with-indent 'T_NEW))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "clone")
- (phps-mode-lexer--return-token-with-indent 'T_CLONE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "var")
- (phps-mode-lexer--return-token-with-indent 'T_VAR))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer--restart)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "::"))
+ (lambda() (phps-mode-lexer--return-token 'T_PAAMAYIM_NEKUDOTAYIM)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "\\.\\.\\."))
+ (lambda() (phps-mode-lexer--return-token 'T_ELLIPSIS)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "\\?\\?"))
+ (lambda() (phps-mode-lexer--return-token 'T_COALESCE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "new"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_NEW)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "clone"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_CLONE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "var"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_VAR)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
(concat
"("
phps-mode-lexer--tabs-and-spaces
"\\(int\\|integer\\)"
phps-mode-lexer--tabs-and-spaces
- ")"))
- (phps-mode-lexer--return-token 'T_INT_CAST))
+ ")")))
+ (lambda() (phps-mode-lexer--return-token 'T_INT_CAST)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
(concat
"("
phps-mode-lexer--tabs-and-spaces
"\\(double\\|float\\)"
phps-mode-lexer--tabs-and-spaces
- ")"))
- (phps-mode-lexer--return-token 'T_DOUBLE_CAST))
+ ")")))
+ (lambda() (phps-mode-lexer--return-token 'T_DOUBLE_CAST)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
(concat
"("
phps-mode-lexer--tabs-and-spaces
"\\(real\\)"
phps-mode-lexer--tabs-and-spaces
- ")"))
+ ")")))
+ (lambda()
(when (phps-mode-lexer--parser-mode)
(signal
'phps-lexer-error
@@ -379,408 +456,492 @@
(match-beginning 0))
(match-beginning 0)
(match-end 0))))
- (phps-mode-lexer--return-token 'T_DOUBLE_CAST))
+ (phps-mode-lexer--return-token 'T_DOUBLE_CAST)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
(concat
"("
phps-mode-lexer--tabs-and-spaces
"\\(string\\|binary\\)"
phps-mode-lexer--tabs-and-spaces
- ")"))
- (phps-mode-lexer--return-token 'T_STRING_CAST))
+ ")")))
+ (lambda() (phps-mode-lexer--return-token 'T_STRING_CAST)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
(concat
"("
phps-mode-lexer--tabs-and-spaces
"array"
phps-mode-lexer--tabs-and-spaces
- ")"))
- (phps-mode-lexer--return-token 'T_ARRAY_CAST))
+ ")")))
+ (lambda() (phps-mode-lexer--return-token 'T_ARRAY_CAST)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
(concat
"("
phps-mode-lexer--tabs-and-spaces
"object"
phps-mode-lexer--tabs-and-spaces
- ")"))
- (phps-mode-lexer--return-token 'T_OBJECT_CAST))
+ ")")))
+ (lambda() (phps-mode-lexer--return-token 'T_OBJECT_CAST)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
(concat
"("
phps-mode-lexer--tabs-and-spaces
"\\(bool\\|boolean\\)"
phps-mode-lexer--tabs-and-spaces
- ")"))
- (phps-mode-lexer--return-token 'T_BOOL_CAST))
+ ")")))
+ (lambda() (phps-mode-lexer--return-token 'T_BOOL_CAST)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
(concat
"("
phps-mode-lexer--tabs-and-spaces
"unset"
- phps-mode-lexer--tabs-and-spaces ")"))
- (phps-mode-lexer--return-token 'T_UNSET_CAST))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "eval")
- (phps-mode-lexer--return-token-with-indent 'T_EVAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "include")
- (phps-mode-lexer--return-token-with-indent 'T_INCLUDE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "include_once")
- (phps-mode-lexer--return-token-with-indent 'T_INCLUDE_ONCE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "require")
- (phps-mode-lexer--return-token-with-indent 'T_REQUIRE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "require_once")
- (phps-mode-lexer--return-token-with-indent 'T_REQUIRE_ONCE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "namespace")
- (phps-mode-lexer--return-token-with-indent 'T_NAMESPACE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "use")
- (phps-mode-lexer--return-token-with-indent 'T_USE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "insteadof")
- (phps-mode-lexer--return-token-with-indent 'T_INSTEADOF))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "global")
- (phps-mode-lexer--return-token-with-indent 'T_GLOBAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "isset")
- (phps-mode-lexer--return-token-with-indent 'T_ISSET))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "empty")
- (phps-mode-lexer--return-token-with-indent 'T_EMPTY))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "__halt_compiler")
- (phps-mode-lexer--return-token-with-indent 'T_HALT_COMPILER))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "static")
- (phps-mode-lexer--return-token-with-indent 'T_STATIC))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "abstract")
- (phps-mode-lexer--return-token-with-indent 'T_ABSTRACT))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "final")
- (phps-mode-lexer--return-token-with-indent 'T_FINAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "private")
- (phps-mode-lexer--return-token-with-indent 'T_PRIVATE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "protected")
- (phps-mode-lexer--return-token-with-indent 'T_PROTECTED))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "public")
- (phps-mode-lexer--return-token-with-indent 'T_PUBLIC))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "readonly")
- (phps-mode-lexer--return-token-with-indent 'T_READONLY))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "unset")
- (phps-mode-lexer--return-token-with-indent 'T_UNSET))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "=>")
- (phps-mode-lexer--return-token 'T_DOUBLE_ARROW))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "list")
- (phps-mode-lexer--return-token-with-indent 'T_LIST))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "array")
- (phps-mode-lexer--return-token-with-indent 'T_ARRAY))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "callable")
- (phps-mode-lexer--return-token-with-indent 'T_CALLABLE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "\\+\\+")
- (phps-mode-lexer--return-token 'T_INC))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "--")
- (phps-mode-lexer--return-token 'T_DEC))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "===")
- (phps-mode-lexer--return-token 'T_IS_IDENTICAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "!==")
- (phps-mode-lexer--return-token 'T_IS_NOT_IDENTICAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "==")
- (phps-mode-lexer--return-token 'T_IS_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "\\(!=\\|<>\\)")
- (phps-mode-lexer--return-token 'T_IS_NOT_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "<=>")
- (phps-mode-lexer--return-token 'T_SPACESHIP))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "<=")
- (phps-mode-lexer--return-token 'T_IS_SMALLER_OR_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at ">=")
- (phps-mode-lexer--return-token 'T_IS_GREATER_OR_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "\\+=")
- (phps-mode-lexer--return-token 'T_PLUS_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "-=")
- (phps-mode-lexer--return-token 'T_MINUS_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "\\*=")
- (phps-mode-lexer--return-token 'T_MUL_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "\\*\\\\\\*")
- (phps-mode-lexer--return-token 'T_POW))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "\\*\\\\\\*=")
- (phps-mode-lexer--return-token 'T_POW_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "/=")
- (phps-mode-lexer--return-token 'T_DIV_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "\\.=")
- (phps-mode-lexer--return-token 'T_CONCAT_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "%=")
- (phps-mode-lexer--return-token 'T_MOD_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "<<=")
- (phps-mode-lexer--return-token 'T_SL_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at ">>=")
- (phps-mode-lexer--return-token 'T_SR_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "&=")
- (phps-mode-lexer--return-token 'T_AND_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "|=")
- (phps-mode-lexer--return-token 'T_OR_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "\\^=")
- (phps-mode-lexer--return-token 'T_XOR_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "\\?\\?=")
- (phps-mode-lexer--return-token 'T_COALESCE_EQUAL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "||")
- (phps-mode-lexer--return-token 'T_BOOLEAN_OR))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "&&")
- (phps-mode-lexer--return-token 'T_BOOLEAN_AND))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "OR")
- (phps-mode-lexer--return-token 'T_LOGICAL_OR))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "AND")
- (phps-mode-lexer--return-token 'T_LOGICAL_AND))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "XOR")
- (phps-mode-lexer--return-token 'T_LOGICAL_XOR))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "<<")
- (phps-mode-lexer--return-token 'T_SL))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at ">>")
- (phps-mode-lexer--return-token 'T_SR))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at (concat "&" "[ \t\r\n]*" "\\(\\$\\|\\.\\.\\.\\)"))
+ phps-mode-lexer--tabs-and-spaces ")")))
+ (lambda() (phps-mode-lexer--return-token 'T_UNSET_CAST)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "eval"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_EVAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "include"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_INCLUDE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "include_once"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_INCLUDE_ONCE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "require"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_REQUIRE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "require_once"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_REQUIRE_ONCE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "namespace"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_NAMESPACE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "use"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_USE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "insteadof"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_INSTEADOF)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "global"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_GLOBAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "isset"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_ISSET)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "empty"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_EMPTY)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "__halt_compiler"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_HALT_COMPILER)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "static"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_STATIC)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "abstract"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_ABSTRACT)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "final"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_FINAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "private"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_PRIVATE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "protected"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_PROTECTED)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "public"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_PUBLIC)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "readonly"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_READONLY)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "unset"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_UNSET)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "=>"))
+ (lambda() (phps-mode-lexer--return-token 'T_DOUBLE_ARROW)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "list"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_LIST)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "array"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_ARRAY)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "callable"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_CALLABLE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "\\+\\+"))
+ (lambda() (phps-mode-lexer--return-token 'T_INC)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "--"))
+ (lambda() (phps-mode-lexer--return-token 'T_DEC)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "==="))
+ (lambda() (phps-mode-lexer--return-token 'T_IS_IDENTICAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "!=="))
+ (lambda() (phps-mode-lexer--return-token 'T_IS_NOT_IDENTICAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "=="))
+ (lambda() (phps-mode-lexer--return-token 'T_IS_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "\\(!=\\|<>\\)"))
+ (lambda() (phps-mode-lexer--return-token 'T_IS_NOT_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "<=>"))
+ (lambda() (phps-mode-lexer--return-token 'T_SPACESHIP)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "<="))
+ (lambda() (phps-mode-lexer--return-token 'T_IS_SMALLER_OR_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at ">="))
+ (lambda() (phps-mode-lexer--return-token 'T_IS_GREATER_OR_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "\\+="))
+ (lambda() (phps-mode-lexer--return-token 'T_PLUS_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "-="))
+ (lambda() (phps-mode-lexer--return-token 'T_MINUS_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "\\*="))
+ (lambda() (phps-mode-lexer--return-token 'T_MUL_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "\\*\\\\\\*"))
+ (lambda() (phps-mode-lexer--return-token 'T_POW)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "\\*\\\\\\*="))
+ (lambda() (phps-mode-lexer--return-token 'T_POW_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "/="))
+ (lambda() (phps-mode-lexer--return-token 'T_DIV_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "\\.="))
+ (lambda() (phps-mode-lexer--return-token 'T_CONCAT_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "%="))
+ (lambda() (phps-mode-lexer--return-token 'T_MOD_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "<<="))
+ (lambda() (phps-mode-lexer--return-token 'T_SL_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at ">>="))
+ (lambda() (phps-mode-lexer--return-token 'T_SR_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "&="))
+ (lambda() (phps-mode-lexer--return-token 'T_AND_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "|="))
+ (lambda() (phps-mode-lexer--return-token 'T_OR_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "\\^="))
+ (lambda() (phps-mode-lexer--return-token 'T_XOR_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "\\?\\?="))
+ (lambda() (phps-mode-lexer--return-token 'T_COALESCE_EQUAL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "||"))
+ (lambda() (phps-mode-lexer--return-token 'T_BOOLEAN_OR)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "&&"))
+ (lambda() (phps-mode-lexer--return-token 'T_BOOLEAN_AND)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "OR"))
+ (lambda() (phps-mode-lexer--return-token 'T_LOGICAL_OR)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "AND"))
+ (lambda() (phps-mode-lexer--return-token 'T_LOGICAL_AND)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "XOR"))
+ (lambda() (phps-mode-lexer--return-token 'T_LOGICAL_XOR)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "<<"))
+ (lambda() (phps-mode-lexer--return-token 'T_SL)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at ">>"))
+ (lambda() (phps-mode-lexer--return-token 'T_SR)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at (concat "&" "[ \t\r\n]*" "\\(\\$\\|\\.\\.\\.\\)")))
+ (lambda()
(phps-mode-lexer--yyless 1)
(phps-mode-lexer--return-token
'T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG
(match-beginning 0)
- (- (match-end 0) 1)))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "&")
- (phps-mode-lexer--return-token
'T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (- (match-end 0) 1))))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "&"))
+ (lambda() (phps-mode-lexer--return-token
'T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
- (concat "\\(" "]" "\\|" ")" "\\)"))
- (phps-mode-lexer--return-exit-nesting-token))
+ (concat "\\(" "]" "\\|" ")" "\\)")))
+ (lambda() (phps-mode-lexer--return-exit-nesting-token)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
- (concat "\\(" "\\[" "\\|" "(" "\\)"))
- (phps-mode-lexer--enter-nesting)
- (phps-mode-lexer--return-token))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at phps-mode-lexer--tokens)
- (phps-mode-lexer--return-token))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "{")
+ (concat "\\(" "\\[" "\\|" "(" "\\)")))
+ (lambda() (phps-mode-lexer--enter-nesting)
+ (phps-mode-lexer--return-token)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at phps-mode-lexer--tokens))
+ (lambda() (phps-mode-lexer--return-token)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "{"))
+ (lambda()
(phps-mode-lexer--yy-push-state 'ST_IN_SCRIPTING)
(phps-mode-lexer--enter-nesting "{")
- (phps-mode-lexer--return-token))
+ (phps-mode-lexer--return-token)))
- (phps-mode-lexer-generator--match-macro
- (ST_DOUBLE_QUOTES ST_BACKQUOTE ST_HEREDOC)
- (looking-at "\\${")
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ '(ST_DOUBLE_QUOTES ST_BACKQUOTE ST_HEREDOC)
+ (lambda() (looking-at "\\${"))
+ (lambda()
(phps-mode-lexer--yy-push-state 'ST_LOOKING_FOR_VARNAME)
(phps-mode-lexer--enter-nesting "{")
- (phps-mode-lexer--return-token 'T_DOLLAR_OPEN_CURLY_BRACES))
+ (phps-mode-lexer--return-token 'T_DOLLAR_OPEN_CURLY_BRACES)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "}")
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "}"))
+ (lambda()
(phps-mode-lexer--reset-doc-comment)
(when phps-mode-lexer--state-stack
(phps-mode-lexer--yy-pop-state))
- (phps-mode-lexer--return-exit-nesting-token))
+ (phps-mode-lexer--return-exit-nesting-token)))
- (phps-mode-lexer-generator--match-macro
- ST_LOOKING_FOR_VARNAME
- (looking-at (concat phps-mode-lexer--label "[\\[}]"))
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_LOOKING_FOR_VARNAME
+ (lambda() (looking-at (concat phps-mode-lexer--label "[\\[}]")))
+ (lambda()
(let* ((start (match-beginning 0))
(end (1- (match-end 0)))
(_data (buffer-substring-no-properties start end)))
(phps-mode-lexer--yyless 1)
(phps-mode-lexer--yy-pop-state)
(phps-mode-lexer--yy-push-state 'ST_IN_SCRIPTING)
- (phps-mode-lexer--return-token 'T_STRING_VARNAME start end)))
+ (phps-mode-lexer--return-token 'T_STRING_VARNAME start end))))
- (phps-mode-lexer-generator--match-macro
- ST_LOOKING_FOR_VARNAME
- (looking-at phps-mode-lexer--any-char)
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_LOOKING_FOR_VARNAME
+ (lambda() (looking-at phps-mode-lexer--any-char))
+ (lambda()
(phps-mode-lexer--yyless 0)
(phps-mode-lexer--yy-pop-state)
(phps-mode-lexer--yy-push-state 'ST_IN_SCRIPTING)
- (phps-mode-lexer--restart))
+ (phps-mode-lexer--restart)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at phps-mode-lexer--bnum)
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at phps-mode-lexer--bnum))
+ (lambda()
(let* ((start (match-beginning 0))
(end (match-end 0))
(data
@@ -792,11 +953,13 @@
;; (message "Binary number %s from %s" long-number data)
(if (> long-number phps-mode-lexer--long-limit)
(phps-mode-lexer--return-token 'T_DNUMBER)
- (phps-mode-lexer--return-token 'T_LNUMBER))))
+ (phps-mode-lexer--return-token 'T_LNUMBER)))))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at phps-mode-lexer--onum)
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at phps-mode-lexer--onum))
+ (lambda()
(let* ((start (match-beginning 0))
(end (match-end 0))
(data (string-to-number
@@ -807,11 +970,13 @@
8)))
(if (> data phps-mode-lexer--long-limit)
(phps-mode-lexer--return-token 'T_DNUMBER)
- (phps-mode-lexer--return-token 'T_LNUMBER))))
+ (phps-mode-lexer--return-token 'T_LNUMBER)))))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at phps-mode-lexer--lnum)
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at phps-mode-lexer--lnum))
+ (lambda()
(let* ((start (match-beginning 0))
(end (match-end 0))
(data (string-to-number
@@ -822,11 +987,13 @@
;; (message "Long number: %d" data)
(if (> data phps-mode-lexer--long-limit)
(phps-mode-lexer--return-token 'T_DNUMBER)
- (phps-mode-lexer--return-token 'T_LNUMBER))))
+ (phps-mode-lexer--return-token 'T_LNUMBER)))))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at phps-mode-lexer--hnum)
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at phps-mode-lexer--hnum))
+ (lambda()
(let* ((start (match-beginning 0))
(end (match-end 0))
(data
@@ -838,108 +1005,132 @@
;; (message "Hexadecimal number %s from %s" long-number data)
(if (> long-number phps-mode-lexer--long-limit)
(phps-mode-lexer--return-token 'T_DNUMBER)
- (phps-mode-lexer--return-token 'T_LNUMBER))))
-
- (phps-mode-lexer-generator--match-macro
- ST_VAR_OFFSET
- (looking-at "\\([0]\\|[1-9][0-9]*\\)")
- (phps-mode-lexer--return-token 'T_NUM_STRING))
-
- (phps-mode-lexer-generator--match-macro
- ST_VAR_OFFSET
+ (phps-mode-lexer--return-token 'T_LNUMBER)))))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_VAR_OFFSET
+ (lambda() (looking-at "\\([0]\\|[1-9][0-9]*\\)"))
+ (lambda() (phps-mode-lexer--return-token 'T_NUM_STRING)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_VAR_OFFSET
+ (lambda()
(looking-at
(concat "\\("
phps-mode-lexer--lnum "\\|"
phps-mode-lexer--hnum "\\|"
phps-mode-lexer--bnum "\\|"
- phps-mode-lexer--onum "\\)"))
- (phps-mode-lexer--return-token 'T_NUM_STRING))
+ phps-mode-lexer--onum "\\)")))
+ (lambda() (phps-mode-lexer--return-token 'T_NUM_STRING)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(or (looking-at phps-mode-lexer--dnum)
- (looking-at phps-mode-lexer--exponent-dnum))
- (phps-mode-lexer--return-token 'T_DNUMBER))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "__CLASS__")
- (phps-mode-lexer--return-token-with-indent 'T_CLASS_C))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "__TRAIT__")
- (phps-mode-lexer--return-token-with-indent 'T_TRAIT_C))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "__FUNCTION__")
- (phps-mode-lexer--return-token-with-indent 'T_FUNC_C))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "__METHOD__")
- (phps-mode-lexer--return-token-with-indent 'T_METHOD_C))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "__LINE__")
- (phps-mode-lexer--return-token-with-indent 'T_LINE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "__FILE__")
- (phps-mode-lexer--return-token-with-indent 'T_FILE))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "__DIR__")
- (phps-mode-lexer--return-token-with-indent 'T_DIR))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "__NAMESPACE__")
- (phps-mode-lexer--return-token-with-indent 'T_NS_C))
-
- (phps-mode-lexer-generator--match-macro
- 'SHEBANG
- (looking-at (concat "#!.*" phps-mode-lexer--newline))
+ (looking-at phps-mode-lexer--exponent-dnum)))
+ (lambda() (phps-mode-lexer--return-token 'T_DNUMBER)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "__CLASS__"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_CLASS_C)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "__TRAIT__"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_TRAIT_C)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "__FUNCTION__"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_FUNC_C)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "__METHOD__"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_METHOD_C)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "__LINE__"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_LINE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "__FILE__"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_FILE)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "__DIR__"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_DIR)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "__NAMESPACE__"))
+ (lambda() (phps-mode-lexer--return-token-with-indent 'T_NS_C)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'SHEBANG
+ (lambda() (looking-at (concat "#!.*" phps-mode-lexer--newline)))
+ (lambda()
(let ((lineno
(1+
(phps-mode-lexer--CG 'zend_lineno))))
(phps-mode-lexer--CG 'zend-lineno lineno))
(phps-mode-lexer--begin 'ST_INITIAL)
- (phps-mode-lexer--restart))
+ (phps-mode-lexer--restart)))
- (phps-mode-lexer-generator--match-macro
- 'SHEBANG
- (looking-at phps-mode-lexer--any-char)
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'SHEBANG
+ (lambda() (looking-at phps-mode-lexer--any-char))
+ (lambda()
(phps-mode-lexer--yyless 0)
(phps-mode-lexer--begin 'ST_INITIAL)
- (phps-mode-lexer--restart))
+ (phps-mode-lexer--restart)))
- (phps-mode-lexer-generator--match-macro
- ST_INITIAL
- (looking-at "<\\?=")
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_INITIAL
+ (lambda() (looking-at "<\\?="))
+ (lambda()
(phps-mode-lexer--begin 'ST_IN_SCRIPTING)
(when (phps-mode-lexer--parser-mode)
(phps-mode-lexer--return-token-with-indent 'T_ECHO))
- (phps-mode-lexer--return-token 'T_OPEN_TAG_WITH_ECHO))
+ (phps-mode-lexer--return-token 'T_OPEN_TAG_WITH_ECHO)))
- (phps-mode-lexer-generator--match-macro
- ST_INITIAL
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_INITIAL
+ (lambda()
(looking-at
(concat
"<\\?php\\([ \t]\\|"
phps-mode-lexer--newline
- "\\)"))
+ "\\)")))
+ (lambda()
(phps-mode-lexer--handle-newline)
(phps-mode-lexer--begin 'ST_IN_SCRIPTING)
- (phps-mode-lexer--return-or-skip-token 'T_OPEN_TAG))
+ (phps-mode-lexer--return-or-skip-token 'T_OPEN_TAG)))
- (phps-mode-lexer-generator--match-macro
- ST_INITIAL
- (looking-at "<\\?php")
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_INITIAL
+ (lambda() (looking-at "<\\?php"))
+ (lambda()
(let ((start (match-beginning 0))
(end (match-end 0)))
@@ -961,163 +1152,196 @@
end))
(t
- (phps-mode-lexer--inline-char-handler)))))
+ (phps-mode-lexer--inline-char-handler))))))
- (phps-mode-lexer-generator--match-macro
- ST_INITIAL
- (looking-at "<\\?")
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_INITIAL
+ (lambda() (looking-at "<\\?"))
+ (lambda()
(if (phps-mode-lexer--CG 'short-tags)
(progn
(phps-mode-lexer--begin 'ST_IN_SCRIPTING)
(phps-mode-lexer--return-or-skip-token 'T_OPEN_TAG))
- (phps-mode-lexer--inline-char-handler)))
+ (phps-mode-lexer--inline-char-handler))))
- (phps-mode-lexer-generator--match-macro
- ST_INITIAL
- (looking-at phps-mode-lexer--any-char)
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_INITIAL
+ (lambda() (looking-at phps-mode-lexer--any-char))
+ (lambda()
(if (= (point) (point-max))
(phps-mode-lexer--return-end-token)
- (phps-mode-lexer--inline-char-handler)))
-
- ;; Make sure a label character follows "->" or "?->", otherwise there is
no property
- ;; and "->"/"?->" will be taken literally
- (phps-mode-lexer-generator--match-macro
- (ST_DOUBLE_QUOTES ST_HEREDOC ST_BACKQUOTE)
+ (phps-mode-lexer--inline-char-handler))))
+
+ ;; Make sure a label character follows "->" or "?->", otherwise there is no
property
+ ;; and "->"/"?->" will be taken literally
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ '(ST_DOUBLE_QUOTES ST_HEREDOC ST_BACKQUOTE)
+ (lambda()
(looking-at
(concat
"\\$"
phps-mode-lexer--label
"->"
- "[a-zA-Z_\x80-\xff]"))
+ "[a-zA-Z_\x80-\xff]")))
+ (lambda()
(phps-mode-lexer--yyless 3)
(phps-mode-lexer--yy-push-state 'ST_LOOKING_FOR_PROPERTY)
(phps-mode-lexer--return-token-with-str
'T_VARIABLE
1
(match-beginning 0)
- (- (match-end 0) 3)))
-
- (phps-mode-lexer-generator--match-macro
- (ST_DOUBLE_QUOTES ST_HEREDOC ST_BACKQUOTE)
- (looking-at
- (concat
- "\\$"
- phps-mode-lexer--label
- "\\?->"
- "[a-zA-Z_\x80-\xff]"))
- (phps-mode-lexer--yyless 4)
+ (- (match-end 0) 3))))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ '(ST_DOUBLE_QUOTES ST_HEREDOC ST_BACKQUOTE)
+ (lambda() (looking-at
+ (concat
+ "\\$"
+ phps-mode-lexer--label
+ "\\?->"
+ "[a-zA-Z_\x80-\xff]")))
+ (lambda() (phps-mode-lexer--yyless 4)
(phps-mode-lexer--yy-push-state 'ST_LOOKING_FOR_PROPERTY)
(phps-mode-lexer--return-token-with-str
'T_VARIABLE
1
(match-beginning 0)
- (- (match-end 0) 4)))
+ (- (match-end 0) 4))))
- ;; A [ always designates a variable offset, regardless of what follows
- (phps-mode-lexer-generator--match-macro
- (ST_DOUBLE_QUOTES ST_HEREDOC ST_BACKQUOTE)
+ ;; A [ always designates a variable offset, regardless of what follows
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ '(ST_DOUBLE_QUOTES ST_HEREDOC ST_BACKQUOTE)
+ (lambda()
(looking-at
(concat
"\\$"
phps-mode-lexer--label
- "\\["))
+ "\\[")))
+ (lambda()
(phps-mode-lexer--yyless 1)
(phps-mode-lexer--yy-push-state 'ST_VAR_OFFSET)
(phps-mode-lexer--return-token-with-str
'T_VARIABLE
1
(match-beginning 0)
- (- (match-end 0) 1)))
-
- (phps-mode-lexer-generator--match-macro
- (
- ST_IN_SCRIPTING
- ST_DOUBLE_QUOTES
- ST_HEREDOC
- ST_BACKQUOTE
- ST_VAR_OFFSET)
+ (- (match-end 0) 1))))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ '(ST_IN_SCRIPTING
+ ST_DOUBLE_QUOTES
+ ST_HEREDOC
+ ST_BACKQUOTE
+ ST_VAR_OFFSET)
+ (lambda()
(looking-at
(concat
"\\$"
- phps-mode-lexer--label))
- (phps-mode-lexer--return-token-with-str 'T_VARIABLE 1))
-
- (phps-mode-lexer-generator--match-macro
- ST_VAR_OFFSET
- (looking-at "\\]")
+ phps-mode-lexer--label)))
+ (lambda()
+ (phps-mode-lexer--return-token-with-str 'T_VARIABLE 1)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_VAR_OFFSET
+ (lambda() (looking-at "\\]"))
+ (lambda()
(phps-mode-lexer--yy-pop-state)
- (phps-mode-lexer--return-token-with-str "]" 1))
+ (phps-mode-lexer--return-token-with-str "]" 1)))
- (phps-mode-lexer-generator--match-macro
- ST_VAR_OFFSET
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_VAR_OFFSET
+ (lambda()
(looking-at
(concat "\\(" phps-mode-lexer--tokens
- "\\|[{}\"`]\\)"))
+ "\\|[{}\"`]\\)")))
+ (lambda()
(let* ((start (match-beginning 0))
(end (match-end 0))
(data (buffer-substring-no-properties start end)))
;; Only '[' or '-' can be valid, but returning other tokens will allow
a more explicit parse error
- (phps-mode-lexer--return-token data)))
+ (phps-mode-lexer--return-token data))))
- (phps-mode-lexer-generator--match-macro
- ST_VAR_OFFSET
- (looking-at (concat "[ \n\r\t'#]"))
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_VAR_OFFSET
+ (lambda() (looking-at (concat "[ \n\r\t'#]")))
+ (lambda()
;; Invalid rule to return a more explicit parse error with proper line
number
(phps-mode-lexer--yyless 0)
(phps-mode-lexer--yy-pop-state)
- (phps-mode-lexer--return-token-with-val 'T_ENCAPSED_AND_WHITESPACE))
+ (phps-mode-lexer--return-token-with-val 'T_ENCAPSED_AND_WHITESPACE)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
(concat
"namespace"
"\\("
"\\\\"
phps-mode-lexer--label
- "\\)+"))
+ "\\)+")))
+ (lambda()
(phps-mode-lexer--return-token-with-str
'T_NAME_RELATIVE
- (1- (length "namespace\\"))))
+ (1- (length "namespace\\")))))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at (concat
phps-mode-lexer--label
"\\("
"\\\\"
phps-mode-lexer--label
- "\\)+"))
+ "\\)+")))
+ (lambda()
(phps-mode-lexer--return-token-with-str
'T_NAME_QUALIFIED
- 0))
+ 0)))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at (concat
"\\\\"
phps-mode-lexer--label
"\\("
"\\\\"
phps-mode-lexer--label
- "\\)*"))
+ "\\)*")))
+ (lambda()
(phps-mode-lexer--return-token-with-str
'T_NAME_FULLY_QUALIFIED
- 1))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "\\\\")
- (phps-mode-lexer--return-token 'T_NS_SEPARATOR))
-
- (phps-mode-lexer-generator--match-macro
- (ST_IN_SCRIPTING ST_VAR_OFFSET)
- (looking-at phps-mode-lexer--label)
- (phps-mode-lexer--return-token-with-str 'T_STRING 0))
-
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "\\(#\\|//\\)")
+ 1)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "\\\\"))
+ (lambda() (phps-mode-lexer--return-token 'T_NS_SEPARATOR)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ '(ST_IN_SCRIPTING ST_VAR_OFFSET)
+ (lambda() (looking-at phps-mode-lexer--label))
+ (lambda() (phps-mode-lexer--return-token-with-str 'T_STRING 0)))
+
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "\\(#\\|//\\)"))
+ (lambda()
(let* ((start (match-beginning 0))
(end (match-end 0))
(_data (buffer-substring-no-properties start end))
@@ -1130,15 +1354,18 @@
(phps-mode-lexer--return-or-skip-token
'T_COMMENT
start
- (line-end-position)))))
+ (line-end-position))))))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
(concat
"\\(/\\*\\|/\\*\\*"
phps-mode-lexer--whitespace
- "\\)"))
+ "\\)")))
+ (lambda()
(let* ((start (match-beginning 0))
(end (match-end 0))
(_data (buffer-substring-no-properties start end))
@@ -1161,15 +1388,18 @@
(format
"Unterminated comment starting at %d"
start)
- start)))))))
+ start))))))))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
(concat
"\\?>"
phps-mode-lexer--newline
- "?"))
+ "?")))
+ (lambda()
(let ((start (match-beginning 0))
(end (match-end 0)))
(when (= (- end start) 3)
@@ -1183,11 +1413,13 @@
(phps-mode-lexer--return-token
'T_CLOSE_TAG
start
- end)))
+ end))))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "'")
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "'"))
+ (lambda()
(let* ((start (match-beginning 0))
(end (match-end 0))
(_data (buffer-substring-no-properties start end))
@@ -1203,12 +1435,14 @@
start
(point-max))
(phps-mode-lexer--move-forward
- (point-max)))))
-
- ;; Double quoted string
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "\"")
+ (point-max))))))
+
+ ;; Double quoted string
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "\""))
+ (lambda()
(let* ((start (match-beginning 0))
(end (match-end 0))
(_data (buffer-substring-no-properties start end))
@@ -1267,10 +1501,12 @@
'phps-lexer-error
(list
(format "Found no ending of quote at %s" start)
- start))))))))
+ start)))))))))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda()
(looking-at
(concat
"<<<"
@@ -1282,7 +1518,8 @@
"'\\|\""
phps-mode-lexer--label
"\"\\)"
- phps-mode-lexer--newline))
+ phps-mode-lexer--newline)))
+ (lambda()
(let* ((start (match-beginning 0))
(end (match-end 0))
(data
@@ -1328,19 +1565,24 @@
(phps-mode-lexer--return-token
'T_START_HEREDOC
start
- end)))
+ end))))
- (phps-mode-lexer-generator--match-macro
- ST_IN_SCRIPTING
- (looking-at "[`]")
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_IN_SCRIPTING
+ (lambda() (looking-at "[`]"))
+ (lambda()
;; (message "Begun backquote at %s-%s" (match-beginning 0) (match-end 0))
(phps-mode-lexer--begin 'ST_BACKQUOTE)
- (phps-mode-lexer--return-token "`"))
+ (phps-mode-lexer--return-token "`")))
- (phps-mode-lexer-generator--match-macro
- ST_END_HEREDOC
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_END_HEREDOC
+ (lambda()
(looking-at
- (concat phps-mode-lexer--any-char))
+ (concat phps-mode-lexer--any-char)))
+ (lambda()
(let* ((start (match-beginning 0))
(end (+ start
(length
@@ -1349,34 +1591,42 @@
;; (message "Found ending heredoc at %s, %s of %s" _data
(thing-at-point 'line) phps-mode-lexer--heredoc-label)
(pop phps-mode-lexer--heredoc-label-stack)
(phps-mode-lexer--begin 'ST_IN_SCRIPTING)
- (phps-mode-lexer--return-token 'T_END_HEREDOC start end)))
+ (phps-mode-lexer--return-token 'T_END_HEREDOC start end))))
- (phps-mode-lexer-generator--match-macro
- (ST_DOUBLE_QUOTES ST_BACKQUOTE ST_HEREDOC)
- (looking-at "{\\$")
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ '(ST_DOUBLE_QUOTES ST_BACKQUOTE ST_HEREDOC)
+ (lambda() (looking-at "{\\$"))
+ (lambda()
(phps-mode-lexer--yy-push-state 'ST_IN_SCRIPTING)
(phps-mode-lexer--yyless 1)
(phps-mode-lexer--enter-nesting "{")
(phps-mode-lexer--return-token
'T_CURLY_OPEN
(match-beginning 0)
- (- (match-end 0) 1)))
+ (- (match-end 0) 1))))
- (phps-mode-lexer-generator--match-macro
- ST_DOUBLE_QUOTES
- (looking-at "[\"]")
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_DOUBLE_QUOTES
+ (lambda() (looking-at "[\"]"))
+ (lambda()
(phps-mode-lexer--begin 'ST_IN_SCRIPTING)
- (phps-mode-lexer--return-token "\""))
+ (phps-mode-lexer--return-token "\"")))
- (phps-mode-lexer-generator--match-macro
- ST_BACKQUOTE
- (looking-at "[`]")
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_BACKQUOTE
+ (lambda() (looking-at "[`]"))
+ (lambda()
(phps-mode-lexer--begin 'ST_IN_SCRIPTING)
- (phps-mode-lexer--return-token "`"))
+ (phps-mode-lexer--return-token "`")))
- (phps-mode-lexer-generator--match-macro
- ST_DOUBLE_QUOTES
- (looking-at phps-mode-lexer--any-char)
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_DOUBLE_QUOTES
+ (lambda() (looking-at phps-mode-lexer--any-char))
+ (lambda()
(let ((start (point))
(start-error (car (cdr (nth 2 phps-mode-lexer--generated-tokens)))))
(let ((string-start (search-forward-regexp "[^\\\\]\"" nil t)))
@@ -1407,11 +1657,13 @@
'phps-lexer-error
(list
(format "Found no ending of double quoted region starting at
%d" start-error)
- start-error)))))))
+ start-error))))))))
- (phps-mode-lexer-generator--match-macro
- ST_BACKQUOTE
- (looking-at phps-mode-lexer--any-char)
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_BACKQUOTE
+ (lambda() (looking-at phps-mode-lexer--any-char))
+ (lambda()
(let ((start (car (cdr (car phps-mode-lexer--generated-tokens)))))
(let ((string-start (search-forward-regexp "\\([^\\\\]`\\|\\$\\|{\\)"
nil t)))
(if string-start
@@ -1426,11 +1678,13 @@
'phps-lexer-error
(list
(format "Found no ending of back-quoted string starting at %d"
start)
- start)))))))
+ start))))))))
- (phps-mode-lexer-generator--match-macro
- ST_HEREDOC
- (looking-at phps-mode-lexer--any-char)
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_HEREDOC
+ (lambda() (looking-at phps-mode-lexer--any-char))
+ (lambda()
;; Check for $, ${ and {$ forward
(let ((old-start (car (cdr (car phps-mode-lexer--heredoc-label-stack))))
(old-end (point)))
@@ -1485,11 +1739,13 @@
'phps-lexer-error
(list
(format "Found no ending of heredoc starting at %d" old-start)
- old-start)))))))
+ old-start))))))))
- (phps-mode-lexer-generator--match-macro
- ST_NOWDOC
- (looking-at phps-mode-lexer--any-char)
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ 'ST_NOWDOC
+ (lambda() (looking-at phps-mode-lexer--any-char))
+ (lambda()
(let ((start (car (cdr (car phps-mode-lexer--generated-tokens)))))
(let ((string-start
(search-forward-regexp
@@ -1515,18 +1771,20 @@
'phps-lexer-error
(list
(format "Found no ending of nowdoc starting at %d" start)
- start)))))))
+ start))))))))
- (phps-mode-lexer-generator--match-macro
- (ST_IN_SCRIPTING ST_VAR_OFFSET)
- (looking-at phps-mode-lexer--any-char)
+ (phps-mode-lexer-generator--add-rule
+ phps-mode-lexer-generator--table
+ '(ST_IN_SCRIPTING ST_VAR_OFFSET)
+ (lambda() (looking-at phps-mode-lexer--any-char))
+ (lambda()
(signal
'phps-lexer-error
(list
(format "Unexpected character at %d" (match-beginning 0))
- (match-beginning 0))))
+ (match-beginning 0)))))
- phps-mode-lexer-generator--table)
+ phps-mode-lexer-generator--table)
(provide 'phps-mode-lexer-generator)
diff --git a/phps-mode-lexer.el b/phps-mode-lexer.el
index a795087ed4..61cad50984 100644
--- a/phps-mode-lexer.el
+++ b/phps-mode-lexer.el
@@ -521,13 +521,14 @@
(setq
phps-mode-lexer--match-length matching-length)
(setq
- phps-mode-lexer--match-body (nth 1 lambd))
+ phps-mode-lexer--match-body (car (nth 1 lambd)))
(setq
phps-mode-lexer--match-data (match-data))
+
;; Debug new matches
(phps-mode-debug-message
(message
- "Found new match (%d) %s"
+ "Found new best match, with length: %d, and body: %s"
phps-mode-lexer--match-length
phps-mode-lexer--match-body))))))))