[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode 95de04b 274/405: New layout for lexer grammar
From: |
Stefan Monnier |
Subject: |
[elpa] externals/phps-mode 95de04b 274/405: New layout for lexer grammar passes unit tests |
Date: |
Sat, 13 Jul 2019 10:00:31 -0400 (EDT) |
branch: externals/phps-mode
commit 95de04bba223f3f036605f2e226b2138ed00e926
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>
New layout for lexer grammar passes unit tests
---
phps-mode-lexer.el | 2032 ++++++++++++++++++++++++++++-------------------
phps-mode-test-lexer.el | 2 +-
2 files changed, 1202 insertions(+), 832 deletions(-)
diff --git a/phps-mode-lexer.el b/phps-mode-lexer.el
index 99aeac3..6dc8b96 100644
--- a/phps-mode-lexer.el
+++ b/phps-mode-lexer.el
@@ -398,7 +398,7 @@
;; (setq phps-mode-lexer-prepend_trailing_brace nil)
;; (phps-mode-lexer-RETURN_TOKEN "}" (- end 1) end))
- ;; (message "Added token %s %s %s" token start end)
+ ;; (message "Added token %s (%s-%s)" token start end)
;; Push token start, end, lexer state and state stack to variable
(push (list start end phps-mode-lexer-STATE phps-mode-lexer-state_stack)
phps-mode-lexer-states)
@@ -415,18 +415,31 @@
(defvar phps-mode-lexer-re2c-matching-length nil)
+(defvar phps-mode-lexer-re2c-matching-data nil)
+
(defun phps-mode-lexer-re2c-rule (condition body)
"Process rule with CONDITION and BODY."
(when condition
- (let ((matching-length (- (match-end 0) (match-beginning 0))))
- (when (> matching-length phps-mode-lexer-re2c-matching-length)
- (setq phps-mode-lexer-re2c-matching-length matching-length)
- (setq phps-mode-lexer-re2c-matching-body body)))))
+ (let ((match-end (match-end 0))
+ (match-beginning (match-beginning 0)))
+ (let ((matching-length (- match-end match-beginning)))
+ (when (> matching-length 0)
+ (when (or (not phps-mode-lexer-re2c-matching-length)
+ (> matching-length phps-mode-lexer-re2c-matching-length))
+ (setq phps-mode-lexer-re2c-matching-length matching-length)
+ (setq phps-mode-lexer-re2c-matching-data (match-data))
+ (setq phps-mode-lexer-re2c-matching-body body)))))))
(defun phps-mode-lexer-re2c-execute ()
"Execute matching body (if any)."
- (when phps-mode-lexer-re2c-matching-body
- (funcall phps-mode-lexer-re2c-matching-body)))
+ (if phps-mode-lexer-re2c-matching-body
+ (progn
+
+ ;; (message "Executing body: %s" phps-mode-lexer-re2c-matching-body)
+ ;; (message "Found match %s" phps-mode-lexer-re2c-matching-data)
+ (set-match-data phps-mode-lexer-re2c-matching-data)
+ (funcall phps-mode-lexer-re2c-matching-body))
+ (error "Failed to lex input")))
;; LEXERS
@@ -454,881 +467,1238 @@
(setq phps-mode-lexer-re2c-matching-body nil)
(setq phps-mode-lexer-re2c-matching-length nil)
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "exit"
phps-mode-lexer-NOT-LABEL))) (lambda() (phps-mode-lexer-RETURN_TOKEN 'T_EXIT
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "die"
phps-mode-lexer-NOT-LABEL))) (lambda() phps-mode-lexer-RETURN_TOKEN 'T_DIE
(match-beginning 0) (1- (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"function" phps-mode-lexer-NOT-LABEL))) (lambda() phps-mode-lexer-RETURN_TOKEN
'T_FUNCTION (match-beginning 0) (1- (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"const" phps-mode-lexer-NOT-LABEL))) (lambda() (phps-mode-lexer-RETURN_TOKEN
'T_CONST (match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"return" phps-mode-lexer-NOT-LABEL))) (lambda() (phps-mode-lexer-RETURN_TOKEN
'T_RETURN (match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"yield" phps-mode-lexer-WHITESPACE "from" "[^a-zA-Z0-9_\x80-\xff]"))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_YIELD_FROM (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"yield" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_YIELD
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "try"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_TRY
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"catch" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_CATCH
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"finally" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_FINALLY
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"throw" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_THROW
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "if"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_IF
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"elseif" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_ELSEIF
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"endif" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_ENDIF
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "else"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_ELSE
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"while" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_WHILE
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"endwhile" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_ENDWHILE
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "do"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_DO
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "for"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_FOR
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"endfor" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_ENDFOR
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"foreach" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_FOREACH
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"endforeach" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN
'T_ENDFOREACH (match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"declare" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_DECLARE
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"enddeclare" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN
'T_ENDDECLARE (match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"instanceof" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN
'T_INSTANCEOF (match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "as"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_AS
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"switch" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_SWITCH
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"endswitch" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_ENDSWITCH
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "case"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_CASE
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"default" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_DEFAULT
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"break" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_BREAK
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"continue" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_CONTINUE
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "goto"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_GOTO
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "echo"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_ECHO
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"print" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_PRINT
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"class" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_CLASS
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"interface" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_INTERFACE
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"trait" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_TRAIT
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"extends" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_EXTENDS
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"implements" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN
'T_IMPLEMENTS (match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "->"))
(lambda()
-
(phps-mode-lexer-yy_push_state phps-mode-lexer-ST_LOOKING_FOR_PROPERTY)
- )
(phps-mode-lexer-RETURN_TOKEN 'T_OBJECT_OPERATOR (match-beginning 0)
(match-end 0)))
-
- (phps-mode-lexer-re2c-rule (and (or ST_IN_SCRIPTING
ST_LOOKING_FOR_PROPERTY)
- (looking-at phps-mode-lexer-WHITESPACE))
(lambda()
- (let* ((start (match-beginning 0))
- (end (match-end 0))
- (data
(buffer-substring-no-properties start end)))
- (if phps-mode-lexer-PARSER_MODE
- (phps-mode-lexer-MOVE_FORWARD end)
- (phps-mode-lexer-RETURN_TOKEN data
start end)))))
-
- (phps-mode-lexer-re2c-rule (and ST_LOOKING_FOR_PROPERTY (looking-at "->"))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_OBJECT_OPERATOR (match-beginning 0)
(match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_LOOKING_FOR_PROPERTY (looking-at
phps-mode-lexer-LABEL)) (lambda()
-
(let ((start (match-beginning 0))
-
(end (match-end 0)))
-
(phps-mode-lexer-yy_pop_state)
-
(phps-mode-lexer-RETURN_TOKEN 'T_STRING start end))))
-
- (phps-mode-lexer-re2c-rule (and ST_LOOKING_FOR_PROPERTY (looking-at
phps-mode-lexer-ANY_CHAR)) (lambda()
-
(let ((_start (match-beginning 0))
-
(end (match-end 0)))
-
(phps-mode-lexer-yy_pop_state)
-
;; TODO goto restart here?
-
;; (message "Restart here")
-
(phps-mode-lexer-MOVE_FORWARD end))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "::"))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_PAAMAYIM_NEKUDOTAYIM (match-beginning 0)
(match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "\\\\"))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_NS_SEPARATOR (match-beginning 0) (match-end
0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "\\.\\.\\."))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_ELLIPSIS (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"\\?\\?" "[^\\=]"))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_COALESCE (match-beginning 0)
(1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "new"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_NEW
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"clone" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_CLONE
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "var"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_VAR
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "("
phps-mode-lexer-TABS_AND_SPACES "\\(int\\|integer\\)"
phps-mode-lexer-TABS_AND_SPACES ")"))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_INT_CAST (match-beginning 0)
(match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "("
phps-mode-lexer-TABS_AND_SPACES "\\(real\\|double\\|float\\)"
phps-mode-lexer-TABS_AND_SPACES ")"))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_DOUBLE_CAST
(match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "("
phps-mode-lexer-TABS_AND_SPACES "\\(string\\|binary\\)"
phps-mode-lexer-TABS_AND_SPACES ")"))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_STRING_CAST (match-beginning 0)
(match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "("
phps-mode-lexer-TABS_AND_SPACES "array" phps-mode-lexer-TABS_AND_SPACES ")")))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_ARRAY_CAST (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "("
phps-mode-lexer-TABS_AND_SPACES "object" phps-mode-lexer-TABS_AND_SPACES ")")))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_OBJECT_CAST (match-beginning 0) (match-end
0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "("
phps-mode-lexer-TABS_AND_SPACES "\\(bool\\|boolean\\)"
phps-mode-lexer-TABS_AND_SPACES ")"))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_BOOL_CAST (match-beginning 0)
(match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "("
phps-mode-lexer-TABS_AND_SPACES "unset" phps-mode-lexer-TABS_AND_SPACES ")")))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_UNSET_CAST (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "eval"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_EVAL
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"include" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_INCLUDE
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"include_once" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN
'T_INCLUDE_ONCE (match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"require" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_REQUIRE
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"require_once" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN
'T_REQUIRE_ONCE (match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"namespace" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(setq phps-mode-lexer-declaring_namespace t)
-
) (phps-mode-lexer-RETURN_TOKEN
'T_NAMESPACE (match-beginning 0) (1- (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "use"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_USE
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"insteadof" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_INSTEADOF
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"global" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_GLOBAL
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"isset" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_ISSET
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"empty" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_EMPTY
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"__halt_compiler" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN
'T_HALT_COMPILER (match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"static" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_STATIC
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"abstract" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_ABSTRACT
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"final" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_FINAL
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"private" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_PRIVATE
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"protected" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_PROTECTED
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"public" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_PUBLIC
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"unset" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_UNSET
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "=>"))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_DOUBLE_ARROW (match-beginning 0) (match-end
0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "list"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_LIST
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"array" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_ARRAY
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"callable" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_CALLABLE
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "\\+\\+"))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_INC (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "--"))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_DEC (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "==="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_IS_IDENTICAL (match-beginning 0) (match-end
0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "!=="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_IS_NOT_IDENTICAL (match-beginning 0)
(match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "=="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_IS_EQUAL (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at
"\\(!=\\|<>\\)")) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_IS_NOT_EQUAL (match-beginning 0)
(match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "<=>"))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_SPACESHIP (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "<="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_IS_SMALLER_OR_EQUAL (match-beginning 0)
(match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at ">="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_IS_GREATER_OR_EQUAL (match-beginning 0)
(match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "\\+="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_PLUS_EQUAL (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "-="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_MINUS_EQUAL (match-beginning 0) (match-end
0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "\\*="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_MUL_EQUAL (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at
"\\*\\\\\\*=")) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_POW_EQUAL (match-beginning 0) (match-end
0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "\\*\\\\\\*"))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_POW (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "/="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_DIV_EQUAL (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "\\.="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_CONCAT_EQUAL (match-beginning 0) (match-end
0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "%="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_MOD_EQUAL (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "<<="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_SL_EQUAL (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at ">>="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_SR_EQUAL (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "&="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_AND_EQUAL (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "|="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_OR_EQUAL (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "\\^="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_XOR_EQUAL (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "\\?\\?="))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_COALESCE_EQUAL (match-beginning 0) (match-end
0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "||"))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_BOOLEAN_OR (match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "&&"))
(lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_BOOLEAN_AND (match-beginning 0) (match-end
0))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "OR"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_LOGICAL_OR
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "AND"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_LOGICAL_AND
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "XOR"
phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_LOGICAL_XOR
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "<<"
"[^<]"))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_SL (match-beginning 0) (1-
(match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat ">>"
"[^>]"))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_SR (match-beginning 0) (1-
(match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "\\?>\n?"))
(lambda()
-
(let ((start (match-beginning 0))
-
(end (match-end 0)))
-
(when (= (- end start) 3)
-
(setq end (1- end)))
-
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_INITIAL)
-
(when phps-mode-lexer-PARSER_MODE
-
(phps-mode-lexer-RETURN_TOKEN ";" start end))
-
(phps-mode-lexer-RETURN_TOKEN 'T_CLOSE_TAG start end))))
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "exit"))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_EXIT (match-beginning 0) (match-end
0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "die" ))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_DIE (match-beginning 0) (match-end
0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "function"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_FUNCTION (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "const"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_CONST (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "return"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_RETURN (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "yield"
phps-mode-lexer-WHITESPACE "from" "[^a-zA-Z0-9_\x80-\xff]")))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_YIELD_FROM (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "yield"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_YIELD (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "try"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_TRY (match-beginning 0) (1- (match-end
0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "catch"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_CATCH (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "finally"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_FINALLY (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "throw"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_THROW (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "if" phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_IF (match-beginning 0) (1- (match-end
0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "elseif"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_ELSEIF (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "endif"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_ENDIF (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "else"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_ELSE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "while"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_WHILE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "endwhile"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_ENDWHILE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "do" phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_DO (match-beginning 0) (1- (match-end
0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "for"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_FOR (match-beginning 0) (1- (match-end
0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "endfor"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_ENDFOR (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "foreach"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_FOREACH (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "endforeach"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_ENDFOREACH (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "declare"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_DECLARE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "enddeclare"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_ENDDECLARE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "instanceof"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_INSTANCEOF (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "as" phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_AS (match-beginning 0) (1- (match-end
0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "switch"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_SWITCH (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "endswitch"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_ENDSWITCH (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "case"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_CASE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "default"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_DEFAULT (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "break"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_BREAK (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "continue"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_CONTINUE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "goto"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_GOTO (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "echo"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_ECHO (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "print"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_PRINT (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "class"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_CLASS (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "interface"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_INTERFACE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "trait"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_TRAIT (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "extends"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_EXTENDS (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "implements"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_IMPLEMENTS (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "->"))
+ (lambda()
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_LOOKING_FOR_PROPERTY)
+ (phps-mode-lexer-RETURN_TOKEN 'T_OBJECT_OPERATOR (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and (or ST_IN_SCRIPTING ST_LOOKING_FOR_PROPERTY)
+ (looking-at phps-mode-lexer-WHITESPACE))
+ (lambda()
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (data (buffer-substring-no-properties start end)))
+ (if phps-mode-lexer-PARSER_MODE
+ (phps-mode-lexer-MOVE_FORWARD end)
+ (phps-mode-lexer-RETURN_TOKEN data start end)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_LOOKING_FOR_PROPERTY (looking-at "->"))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_OBJECT_OPERATOR (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_LOOKING_FOR_PROPERTY (looking-at phps-mode-lexer-LABEL))
+ (lambda()
+ (let ((start (match-beginning 0))
+ (end (match-end 0)))
+ (phps-mode-lexer-yy_pop_state)
+ (phps-mode-lexer-RETURN_TOKEN 'T_STRING start end))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_LOOKING_FOR_PROPERTY (looking-at phps-mode-lexer-ANY_CHAR))
+ (lambda()
+ (let ((_start (match-beginning 0))
+ (end (match-end 0)))
+ (phps-mode-lexer-yy_pop_state)
+ ;; TODO goto restart here?
+ ;; (message "Restart here")
+ (phps-mode-lexer-MOVE_FORWARD end))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "::"))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_PAAMAYIM_NEKUDOTAYIM (match-beginning
0) (match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "\\\\"))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_NS_SEPARATOR (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "\\.\\.\\."))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_ELLIPSIS (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "\\?\\?" "[^\\=]")))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_COALESCE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "new"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_NEW (match-beginning 0) (1- (match-end
0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "clone"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_CLONE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "var"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_VAR (match-beginning 0) (1- (match-end
0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "("
phps-mode-lexer-TABS_AND_SPACES "\\(int\\|integer\\)"
phps-mode-lexer-TABS_AND_SPACES ")")))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_INT_CAST (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "("
phps-mode-lexer-TABS_AND_SPACES "\\(real\\|double\\|float\\)"
phps-mode-lexer-TABS_AND_SPACES ")")))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_DOUBLE_CAST (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "("
phps-mode-lexer-TABS_AND_SPACES "\\(string\\|binary\\)"
phps-mode-lexer-TABS_AND_SPACES ")")))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_STRING_CAST (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "("
phps-mode-lexer-TABS_AND_SPACES "array" phps-mode-lexer-TABS_AND_SPACES ")")))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_ARRAY_CAST (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "("
phps-mode-lexer-TABS_AND_SPACES "object" phps-mode-lexer-TABS_AND_SPACES ")")))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_OBJECT_CAST (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "("
phps-mode-lexer-TABS_AND_SPACES "\\(bool\\|boolean\\)"
phps-mode-lexer-TABS_AND_SPACES ")")))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_BOOL_CAST (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "("
phps-mode-lexer-TABS_AND_SPACES "unset" phps-mode-lexer-TABS_AND_SPACES ")")))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_UNSET_CAST (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "eval"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_EVAL (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "include"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_INCLUDE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "include_once"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_INCLUDE_ONCE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "require"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_REQUIRE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "require_once"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_REQUIRE_ONCE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "namespace"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (setq phps-mode-lexer-declaring_namespace t)
+ (phps-mode-lexer-RETURN_TOKEN 'T_NAMESPACE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "use"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_USE (match-beginning 0) (1- (match-end
0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "insteadof"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_INSTEADOF (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "global"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_GLOBAL (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "isset"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_ISSET (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "empty"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_EMPTY (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "__halt_compiler"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_HALT_COMPILER (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "static"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_STATIC (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "abstract"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_ABSTRACT (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "final"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_FINAL (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "private"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_PRIVATE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "protected"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_PROTECTED (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "public"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_PUBLIC (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "unset"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_UNSET (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "=>"))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_DOUBLE_ARROW (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "list"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_LIST (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "array"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_ARRAY (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "callable"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_CALLABLE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "\\+\\+"))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_INC (match-beginning 0) (match-end
0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "--"))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_DEC (match-beginning 0) (match-end
0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "==="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_IS_IDENTICAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "!=="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_IS_NOT_IDENTICAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "=="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_IS_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "\\(!=\\|<>\\)"))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_IS_NOT_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "<=>"))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_SPACESHIP (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "<="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_IS_SMALLER_OR_EQUAL (match-beginning
0) (match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at ">="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_IS_GREATER_OR_EQUAL (match-beginning
0) (match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "\\+="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_PLUS_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "-="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_MINUS_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "\\*="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_MUL_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "\\*\\\\\\*="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_POW_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "\\*\\\\\\*"))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_POW (match-beginning 0) (match-end
0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "/="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_DIV_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "\\.="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_CONCAT_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "%="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_MOD_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "<<="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_SL_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at ">>="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_SR_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "&="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_AND_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "|="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_OR_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "\\^="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_XOR_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "\\?\\?="))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_COALESCE_EQUAL (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "||"))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_BOOLEAN_OR (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "&&"))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_BOOLEAN_AND (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "OR" phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_LOGICAL_OR (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "AND"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_LOGICAL_AND (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "XOR"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_LOGICAL_XOR (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "<<" "[^<]")))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_SL (match-beginning 0) (1- (match-end
0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat ">>" "[^>]")))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_SR (match-beginning 0) (1- (match-end
0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "\\?>\n?"))
+ (lambda()
+ (let ((start (match-beginning 0))
+ (end (match-end 0)))
+ (when (= (- end start) 3)
+ (setq end (1- end)))
+ (phps-mode-lexer-BEGIN phps-mode-lexer-ST_INITIAL)
+ (when phps-mode-lexer-PARSER_MODE
+ (phps-mode-lexer-RETURN_TOKEN ";" start end))
+ (phps-mode-lexer-RETURN_TOKEN 'T_CLOSE_TAG start end))))
;; HEREDOC and NOWDOC
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "<<<"
phps-mode-lexer-TABS_AND_SPACES "\\(" phps-mode-lexer-LABEL "\\|'"
phps-mode-lexer-LABEL "'\\|\"" phps-mode-lexer-LABEL "\"\\)"
phps-mode-lexer-NEWLINE))) (lambda()
-
(let* ((start (match-beginning 0))
-
(end (match-end 0))
-
(data (buffer-substring-no-properties (match-beginning 1) (match-end 1)))
-
(heredoc_label))
-
-
;; Determine if it's HEREDOC or NOWDOC and extract label here
-
(if (string= (substring data 0 1) "'")
-
(progn
-
(setq heredoc_label (substring data 1 (- (length data) 1)))
-
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_NOWDOC))
-
(progn
-
(if (string= (substring data 0 1) "\"")
-
(setq heredoc_label (substring data 1 (- (length data) 1)))
-
(setq heredoc_label data))
-
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_HEREDOC)))
-
-
;; Check for ending label on the next line
-
(when (string= (buffer-substring-no-properties end (+ end (length
heredoc_label))) heredoc_label)
-
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_END_HEREDOC))
-
-
(push heredoc_label phps-mode-lexer-heredoc_label_stack)
-
;; (message "Found heredoc or nowdoc at %s with label %s" data heredoc_label)
-
-
(phps-mode-lexer-RETURN_TOKEN 'T_START_HEREDOC start end))))
-
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "{")) (lambda()
-
(phps-mode-lexer-yy_push_state phps-mode-lexer-ST_IN_SCRIPTING)
- )
(when phps-mode-lexer-declaring_namespace
- (setq
phps-mode-lexer-declaring_namespace nil))
-
(phps-mode-lexer-RETURN_TOKEN "{" (match-beginning 0) (match-end 0)))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "}")) (lambda()
- (when
phps-mode-lexer-state_stack
- ;;
(message "State stack %s" phps-mode-lexer-state_stack)
- ;;
(message "popping state from } %s at %s-%s" (length
phps-mode-lexer-state_stack) (match-beginning 0) (match-end 0))
-
(phps-mode-lexer-yy_pop_state)
- ;;
(message "New state: %s" phps-mode-lexer-STATE)
- )
- )
(phps-mode-lexer-RETURN_TOKEN "}" (match-beginning 0) (match-end 0)))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at
phps-mode-lexer-BNUM)) (lambda()
-
(let* ((start (match-beginning 0))
-
(end (match-end 0))
-
(data (buffer-substring-no-properties (+ start 2) end))
-
(long-number (string-to-number data 2)))
-
;; (message "Binary number %s from %s" long-number data)
-
(if (> long-number phps-mode-lexer-long-limit)
-
(phps-mode-lexer-RETURN_TOKEN 'T_DNUMBER start end)
-
(phps-mode-lexer-RETURN_TOKEN 'T_LNUMBER start end)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at
phps-mode-lexer-HNUM)) (lambda()
-
(let* ((start (match-beginning 0))
-
(end (match-end 0))
-
(data (buffer-substring-no-properties (+ start 2) end))
-
(long-number (string-to-number data 16)))
-
;; (message "Hexadecimal number %s from %s" long-number data)
-
(if (> long-number phps-mode-lexer-long-limit)
-
(phps-mode-lexer-RETURN_TOKEN 'T_DNUMBER start end)
-
(phps-mode-lexer-RETURN_TOKEN 'T_LNUMBER start end)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (or (looking-at
phps-mode-lexer-EXPONENT_DNUM)
- (looking-at
phps-mode-lexer-DNUM))) (lambda()
-
(let* ((start (match-beginning 0))
-
(end (match-end 0))
-
(_data (buffer-substring-no-properties start end)))
-
;; (message "Exponent/double at: %s" _data)
-
(phps-mode-lexer-RETURN_TOKEN 'T_DNUMBER start end))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at
phps-mode-lexer-LNUM)) (lambda()
-
(let* ((start (match-beginning 0))
-
(end (match-end 0))
-
(data (string-to-number (buffer-substring-no-properties start
end))))
-
;; (message "Long number: %d" data)
-
(if (> data phps-mode-lexer-long-limit)
-
(phps-mode-lexer-RETURN_TOKEN 'T_DNUMBER start end)
-
(phps-mode-lexer-RETURN_TOKEN 'T_LNUMBER start end)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"__CLASS__" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_CLASS_C
(match-beginning 0) (1- (match-end 0)))))
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"__TRAIT__" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_TRAIT_C
(match-beginning 0) (1- (match-end 0)))))
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"__FUNCTION__" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_FUNC_C
(match-beginning 0) (1- (match-end 0)))))
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"__METHOD__" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_METHOD_C
(match-beginning 0) (1- (match-end 0)))))
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"__LINE__" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_LINE
(match-beginning 0) (1- (match-end 0)))))
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"__FILE__" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_FILE
(match-beginning 0) (1- (match-end 0)))))
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"__DIR__" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_DIR
(match-beginning 0) (1- (match-end 0)))))
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"__NAMESPACE__" phps-mode-lexer-NOT-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_NS_C
(match-beginning 0) (1- (match-end 0)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at
"\\(//\\|#\\)")) (lambda()
-
(let* ((start (match-beginning 0))
-
(end (match-end 0))
-
(_data (buffer-substring-no-properties start end))
-
(line (buffer-substring-no-properties end (line-end-position))))
-
(if (string-match "\\?>" line)
-
(progn
-
;; (message "Found comment 1 from %s to %s %s in %s" end (+ end
(match-beginning 0)) (match-beginning 0) line)
-
(phps-mode-lexer-RETURN_TOKEN 'T_COMMENT start (+ end
(match-beginning 0)))
-
)
-
(progn
-
;; TODO Handle expecting values here
-
;; (message "Found comment 2 from %s to %s" start (line-end-position))
-
(phps-mode-lexer-RETURN_TOKEN 'T_COMMENT start (line-end-position))
-
)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat
"/\\*\\*" phps-mode-lexer-WHITESPACE))) (lambda()
-
(let* ((start (match-beginning 0))
-
(end (match-end 0))
-
(_data
(buffer-substring-no-properties start end)))
-
(let ((string-start (search-forward "*/"
nil t))
-
position)
-
(if string-start
-
(setq position string-start)
-
(progn
-
(setq position (point-max))
-
(phps-mode-lexer-MOVE_FORWARD
(point-max))))
-
(phps-mode-lexer-RETURN_TOKEN
'T_DOC_COMMENT start position)
-
))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "/\\*"))
(lambda()
-
(let* ((start (match-beginning 0))
-
(end (match-end 0))
-
(_data (buffer-substring-no-properties start end)))
-
(let ((string-start (search-forward "*/" nil t))
-
position)
-
(if string-start
-
(setq position string-start)
-
(progn
-
(setq position (point-max))
-
(phps-mode-lexer-MOVE_FORWARD (point-max))))
-
(phps-mode-lexer-RETURN_TOKEN 'T_COMMENT start position)
-
))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at (concat "\\$"
phps-mode-lexer-LABEL))) (lambda()
-
(let ((start (match-beginning 0))
-
(end (match-end 0)))
-
(phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE start
end))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at
phps-mode-lexer-TOKENS)) (lambda()
-
(let* ((start (match-beginning 0))
-
(end (match-end 0))
-
(data (buffer-substring-no-properties start end))
-
(use-brace nil))
-
;; (message "Found token '%s'" data)
-
(when phps-mode-lexer-declaring_namespace
-
(when (string= data ";")
-
(setq phps-mode-lexer-prepend_trailing_brace t)
-
;; (message "Set flag prepend trailing brace")
-
;; (setq use-brace t)
-
)
-
(setq phps-mode-lexer-declaring_namespace nil))
-
(if use-brace
-
(phps-mode-lexer-RETURN_TOKEN "{" start end)
-
(phps-mode-lexer-RETURN_TOKEN data start end)))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "'")) (lambda()
- (let*
((start (match-beginning 0))
-
(end (match-end 0))
-
(_data (buffer-substring-no-properties start end))
-
(un-escaped-end (phps-mode-lexer--get-next-unescaped "'")))
- (if
un-escaped-end
-
(progn
-
;; (message "Single quoted string %s" (buffer-substring-no-properties start
un-escaped-end))
-
(phps-mode-lexer-RETURN_TOKEN 'T_CONSTANT_ENCAPSED_STRING start
un-escaped-end))
-
(progn
-
;; Unclosed single quotes
-
;; (message "Single quoted string never ends..")
-
(phps-mode-lexer-RETURN_TOKEN 'T_ENCAPSED_AND_WHITESPACE start (point-max))
-
(phps-mode-lexer-MOVE_FORWARD (point-max)))))))
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "<<<"
phps-mode-lexer-TABS_AND_SPACES "\\(" phps-mode-lexer-LABEL "\\|'"
phps-mode-lexer-LABEL "'\\|\"" phps-mode-lexer-LABEL "\"\\)"
phps-mode-lexer-NEWLINE)))
+ (lambda()
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (data (buffer-substring-no-properties (match-beginning 1)
(match-end 1)))
+ (heredoc_label))
+
+ ;; Determine if it's HEREDOC or NOWDOC and extract label here
+ (if (string= (substring data 0 1) "'")
+ (progn
+ (setq heredoc_label (substring data 1 (- (length data) 1)))
+ (phps-mode-lexer-BEGIN phps-mode-lexer-ST_NOWDOC))
+ (progn
+ (if (string= (substring data 0 1) "\"")
+ (setq heredoc_label (substring data 1 (- (length data) 1)))
+ (setq heredoc_label data))
+ (phps-mode-lexer-BEGIN phps-mode-lexer-ST_HEREDOC)))
+
+ ;; Check for ending label on the next line
+ (when (string= (buffer-substring-no-properties end (+ end (length
heredoc_label))) heredoc_label)
+ (phps-mode-lexer-BEGIN phps-mode-lexer-ST_END_HEREDOC))
+
+ (push heredoc_label phps-mode-lexer-heredoc_label_stack)
+ ;; (message "Found heredoc or nowdoc at %s with label %s" data
heredoc_label)
+
+ (phps-mode-lexer-RETURN_TOKEN 'T_START_HEREDOC start end))))
+
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "{"))
+ (lambda()
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_IN_SCRIPTING)
+ (when phps-mode-lexer-declaring_namespace
+ (setq phps-mode-lexer-declaring_namespace nil))
+ (phps-mode-lexer-RETURN_TOKEN "{" (match-beginning 0) (match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "}"))
+ (lambda()
+ (when phps-mode-lexer-state_stack
+ ;; (message "State stack %s" phps-mode-lexer-state_stack)
+ ;; (message "popping state from } %s at %s-%s" (length
phps-mode-lexer-state_stack) (match-beginning 0) (match-end 0))
+ (phps-mode-lexer-yy_pop_state)
+ ;; (message "New state: %s" phps-mode-lexer-STATE)
+ )
+ (phps-mode-lexer-RETURN_TOKEN "}" (match-beginning 0) (match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at phps-mode-lexer-BNUM))
+ (lambda()
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (data (buffer-substring-no-properties (+ start 2) end))
+ (long-number (string-to-number data 2)))
+ ;; (message "Binary number %s from %s" long-number data)
+ (if (> long-number phps-mode-lexer-long-limit)
+ (phps-mode-lexer-RETURN_TOKEN 'T_DNUMBER start end)
+ (phps-mode-lexer-RETURN_TOKEN 'T_LNUMBER start end)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at phps-mode-lexer-HNUM))
+ (lambda()
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (data (buffer-substring-no-properties (+ start 2) end))
+ (long-number (string-to-number data 16)))
+ ;; (message "Hexadecimal number %s from %s" long-number data)
+ (if (> long-number phps-mode-lexer-long-limit)
+ (phps-mode-lexer-RETURN_TOKEN 'T_DNUMBER start end)
+ (phps-mode-lexer-RETURN_TOKEN 'T_LNUMBER start end)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (or (looking-at phps-mode-lexer-EXPONENT_DNUM)
+ (looking-at phps-mode-lexer-DNUM)))
+ (lambda()
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (_data (buffer-substring-no-properties start end)))
+ ;; (message "Exponent/double at: %s" _data)
+ (phps-mode-lexer-RETURN_TOKEN 'T_DNUMBER start end))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at phps-mode-lexer-LNUM))
+ (lambda()
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (data (string-to-number (buffer-substring-no-properties start
end))))
+ ;; (message "Long number: %d" data)
+ (if (> data phps-mode-lexer-long-limit)
+ (phps-mode-lexer-RETURN_TOKEN 'T_DNUMBER start end)
+ (phps-mode-lexer-RETURN_TOKEN 'T_LNUMBER start end)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "__CLASS__"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_CLASS_C (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "__TRAIT__"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_TRAIT_C (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "__FUNCTION__"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_FUNC_C (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "__METHOD__"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_METHOD_C (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "__LINE__"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_LINE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "__FILE__"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_FILE (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "__DIR__"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_DIR (match-beginning 0) (1- (match-end
0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "__NAMESPACE__"
phps-mode-lexer-NOT-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_NS_C (match-beginning 0) (1-
(match-end 0)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "\\(//\\|#\\)"))
+ (lambda()
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (_data (buffer-substring-no-properties start end))
+ (line (buffer-substring-no-properties end (line-end-position))))
+ (if (string-match "\\?>" line)
+ (progn
+ ;; (message "Found comment 1 from %s to %s %s in %s" end (+ end
(match-beginning 0)) (match-beginning 0) line)
+ (phps-mode-lexer-RETURN_TOKEN 'T_COMMENT start (+ end
(match-beginning 0)))
+ )
+ (progn
+ ;; TODO Handle expecting values here
+ ;; (message "Found comment 2 from %s to %s" start
(line-end-position))
+ (phps-mode-lexer-RETURN_TOKEN 'T_COMMENT start
(line-end-position))
+ )))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "/\\*\\*"
phps-mode-lexer-WHITESPACE)))
+ (lambda()
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (_data (buffer-substring-no-properties start end)))
+ (let ((string-start (search-forward "*/" nil t))
+ position)
+ (if string-start
+ (setq position string-start)
+ (progn
+ (setq position (point-max))
+ (phps-mode-lexer-MOVE_FORWARD (point-max))))
+ (phps-mode-lexer-RETURN_TOKEN 'T_DOC_COMMENT start position)
+ ))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "/\\*"))
+ (lambda()
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (_data (buffer-substring-no-properties start end)))
+ (let ((string-start (search-forward "*/" nil t))
+ position)
+ (if string-start
+ (setq position string-start)
+ (progn
+ (setq position (point-max))
+ (phps-mode-lexer-MOVE_FORWARD (point-max))))
+ (phps-mode-lexer-RETURN_TOKEN 'T_COMMENT start position)
+ ))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at (concat "\\$" phps-mode-lexer-LABEL)))
+ (lambda()
+ (let ((start (match-beginning 0))
+ (end (match-end 0)))
+ (phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE start end))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at phps-mode-lexer-TOKENS))
+ (lambda()
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (data (buffer-substring-no-properties start end))
+ (use-brace nil))
+ ;; (message "Found token '%s'" data)
+ (when phps-mode-lexer-declaring_namespace
+ (when (string= data ";")
+ (setq phps-mode-lexer-prepend_trailing_brace t)
+ ;; (message "Set flag prepend trailing brace")
+ ;; (setq use-brace t)
+ )
+ (setq phps-mode-lexer-declaring_namespace nil))
+ (if use-brace
+ (phps-mode-lexer-RETURN_TOKEN "{" start end)
+ (phps-mode-lexer-RETURN_TOKEN data start end)))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "'"))
+ (lambda()
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (_data (buffer-substring-no-properties start end))
+ (un-escaped-end (phps-mode-lexer--get-next-unescaped "'")))
+ (if un-escaped-end
+ (progn
+ ;; (message "Single quoted string %s"
(buffer-substring-no-properties start un-escaped-end))
+ (phps-mode-lexer-RETURN_TOKEN 'T_CONSTANT_ENCAPSED_STRING start
un-escaped-end))
+ (progn
+ ;; Unclosed single quotes
+ ;; (message "Single quoted string never ends..")
+ (phps-mode-lexer-RETURN_TOKEN 'T_ENCAPSED_AND_WHITESPACE start
(point-max))
+ (phps-mode-lexer-MOVE_FORWARD (point-max)))))))
;; Double quoted string
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "\""))
(lambda()
- (let*
((start (match-beginning 0))
-
(end (match-end 0))
-
(_data (buffer-substring-no-properties start end)))
-
(forward-char)
- ;;
Handle the "" case
- (if
(looking-at-p "\"")
-
(progn
-
;; (message "Empty double quoted string from %s to %s" start (+ start 2))
-
(phps-mode-lexer-RETURN_TOKEN 'T_CONSTANT_ENCAPSED_STRING start (+ start 2))
-
(forward-char))
-
(let ((string-start (search-forward-regexp (concat
-
"\\([^\\\\]\""
-
"\\|\\$" phps-mode-lexer-LABEL
-
"\\|\\${" phps-mode-lexer-LABEL
-
"\\|{\\$" phps-mode-lexer-LABEL "\\)")
-
nil t)))
-
;; Do we find a ending double quote or starting variable?
-
(if string-start
-
(let ((string-start (match-beginning 0)))
-
;; (message "Double quoted string %s" double-quoted-string)
-
;; Do we find variable inside quote?
-
(goto-char string-start)
-
(if (looking-at "[^\\\\]\"")
-
(progn
-
(let ((_double-quoted-string (buffer-substring-no-properties start
(+ string-start 2))))
-
;; (message "Double quoted string: %s" _double-quoted-string)
-
(phps-mode-lexer-RETURN_TOKEN 'T_CONSTANT_ENCAPSED_STRING start
(+ string-start 2))))
-
(progn
-
;; (message "Found variable after '%s'"
(buffer-substring-no-properties start string-start))
-
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_DOUBLE_QUOTES)
-
(phps-mode-lexer-RETURN_TOKEN "\"" start (1+ start))
-
(phps-mode-lexer-RETURN_TOKEN 'T_ENCAPSED_AND_WHITESPACE (1+ start)
string-start))))
-
(progn
-
;; (message "Found no ending quote, skipping to end")
-
(phps-mode-lexer-RETURN_TOKEN 'T_ERROR start (point-max))
-
(phps-mode-lexer-MOVE_FORWARD (point-max)))))))))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at "[`]"))
(lambda()
- ;;
(message "Begun backquote at %s-%s" (match-beginning 0) (match-end 0))
-
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_BACKQUOTE)
- )
(phps-mode-lexer-RETURN_TOKEN "`" (match-beginning 0) (match-end 0)))
-
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at
phps-mode-lexer-LABEL)) (lambda()
-
;; (message "Adding T_STRING from %s to %s" (match-beginning 0)
(match-end 0))
-
(phps-mode-lexer-RETURN_TOKEN 'T_STRING (match-beginning 0)
(match-end 0))))
-
- ((and ST_IN_SCRIPTING (looking-at phps-mode-lexer-TOKENS))
- (phps-mode-lexer-RETURN_TOKEN (match-string 0) (match-beginning 0)
(match-end 0)))
-
- (phps-mode-lexer-re2c-rule (and ST_IN_SCRIPTING (looking-at
phps-mode-lexer-ANY_CHAR)) (lambda()
-
;; Unexpected character
-
;; (message "Unexpected character '%s'"
(buffer-substring-no-properties (match-beginning 0) (match-end 0)))
-
(phps-mode-lexer-RETURN_TOKEN 'T_ERROR (match-beginning 0)
(point-max))
-
) (phps-mode-lexer-MOVE_FORWARD (point-max)))
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "\""))
+ (lambda()
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (_data (buffer-substring-no-properties start end)))
+ (forward-char)
+ ;; Handle the "" case
+ (if (looking-at-p "\"")
+ (progn
+ ;; (message "Empty double quoted string from %s to %s" start (+
start 2))
+ (phps-mode-lexer-RETURN_TOKEN 'T_CONSTANT_ENCAPSED_STRING start
(+ start 2))
+ (forward-char))
+ (let ((string-start (search-forward-regexp (concat
+ "\\([^\\\\]\""
+ "\\|\\$"
phps-mode-lexer-LABEL
+ "\\|\\${"
phps-mode-lexer-LABEL
+ "\\|{\\$"
phps-mode-lexer-LABEL "\\)")
+ nil t)))
+ ;; Do we find a ending double quote or starting variable?
+ (if string-start
+ (let ((string-start (match-beginning 0)))
+ ;; (message "Double quoted string %s" double-quoted-string)
+ ;; Do we find variable inside quote?
+ (goto-char string-start)
+ (if (looking-at "[^\\\\]\"")
+ (progn
+ (let ((_double-quoted-string
(buffer-substring-no-properties start (+ string-start 2))))
+ ;; (message "Double quoted string: %s"
_double-quoted-string)
+ (phps-mode-lexer-RETURN_TOKEN
'T_CONSTANT_ENCAPSED_STRING start (+ string-start 2))))
+ (progn
+ ;; (message "Found variable after '%s'"
(buffer-substring-no-properties start string-start))
+ (phps-mode-lexer-BEGIN phps-mode-lexer-ST_DOUBLE_QUOTES)
+ (phps-mode-lexer-RETURN_TOKEN "\"" start (1+ start))
+ (phps-mode-lexer-RETURN_TOKEN
'T_ENCAPSED_AND_WHITESPACE (1+ start) string-start))))
+ (progn
+ ;; (message "Found no ending quote, skipping to end")
+ (phps-mode-lexer-RETURN_TOKEN 'T_ERROR start (point-max))
+ (phps-mode-lexer-MOVE_FORWARD (point-max)))))))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at "[`]"))
+ (lambda()
+ ;; (message "Begun backquote at %s-%s" (match-beginning 0) (match-end
0))
+ (phps-mode-lexer-BEGIN phps-mode-lexer-ST_BACKQUOTE)
+ (phps-mode-lexer-RETURN_TOKEN "`" (match-beginning 0) (match-end 0))))
+
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at phps-mode-lexer-LABEL))
+ (lambda()
+ ;; (message "Adding T_STRING from %s to %s" (match-beginning 0)
(match-end 0))
+ (phps-mode-lexer-RETURN_TOKEN 'T_STRING (match-beginning 0) (match-end
0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at phps-mode-lexer-TOKENS))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN (match-string 0) (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_IN_SCRIPTING (looking-at phps-mode-lexer-ANY_CHAR))
+ (lambda()
+ ;; Unexpected character
+ ;; (message "Unexpected character '%s'" (buffer-substring-no-properties
(match-beginning 0) (match-end 0)))
+ (phps-mode-lexer-RETURN_TOKEN 'T_ERROR (match-beginning 0) (point-max))
+ (phps-mode-lexer-MOVE_FORWARD (point-max))))
;; ST_INITIAL
- (phps-mode-lexer-re2c-rule (and ST_INITIAL (looking-at "<\\?=")) (lambda()
- (let
((start (match-beginning 0))
-
(end (match-end 0)))
-
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_IN_SCRIPTING)
- ;;
(message "Starting scripting after <?=")
- (when
phps-mode-lexer-PARSER_MODE
-
(phps-mode-lexer-RETURN_TOKEN 'T_ECHO start end))
-
(phps-mode-lexer-RETURN_TOKEN 'T_OPEN_TAG_WITH_ECHO start end))))
-
- (phps-mode-lexer-re2c-rule (and ST_INITIAL (looking-at "<\\?php\\([
\t]\\|\n\\)")) (lambda()
-
(let ((start (match-beginning 0))
-
(end (match-end 0)))
-
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_IN_SCRIPTING)
-
;; (message "Starting scripting after <?php")
-
(when phps-mode-lexer-EXPECTED
-
(phps-mode-lexer-SKIP_TOKEN 'T_OPEN_TAG start end))
-
(phps-mode-lexer-RETURN_TOKEN 'T_OPEN_TAG start end))))
-
- (phps-mode-lexer-re2c-rule (and ST_INITIAL (looking-at "<\\?")) (lambda()
- (when
phps-mode-lexer-SHORT_TAGS
- (let
((start (match-beginning 0))
-
(end (match-end 0)))
-
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_IN_SCRIPTING)
-
(when phps-mode-lexer-EXPECTED
-
(phps-mode-lexer-SKIP_TOKEN 'T_OPEN_TAG start end))
- ;;
(message "Starting scripting after <?")
-
(phps-mode-lexer-RETURN_TOKEN 'T_OPEN_TAG start end)))))
+ (phps-mode-lexer-re2c-rule
+ (and ST_INITIAL (looking-at "<\\?="))
+ (lambda()
+ (let ((start (match-beginning 0))
+ (end (match-end 0)))
+ (phps-mode-lexer-BEGIN phps-mode-lexer-ST_IN_SCRIPTING)
+ ;; (message "Starting scripting after <?=")
+ (when phps-mode-lexer-PARSER_MODE
+ (phps-mode-lexer-RETURN_TOKEN 'T_ECHO start end))
+ (phps-mode-lexer-RETURN_TOKEN 'T_OPEN_TAG_WITH_ECHO start end))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_INITIAL (looking-at "<\\?php\\([ \t]\\|\n\\)"))
+ (lambda()
+ (let ((start (match-beginning 0))
+ (end (match-end 0)))
+ (phps-mode-lexer-BEGIN phps-mode-lexer-ST_IN_SCRIPTING)
+ ;; (message "Starting scripting after <?php")
+ (when phps-mode-lexer-EXPECTED
+ (phps-mode-lexer-SKIP_TOKEN 'T_OPEN_TAG start end))
+ (phps-mode-lexer-RETURN_TOKEN 'T_OPEN_TAG start end))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_INITIAL (looking-at "<\\?"))
+ (lambda()
+ (when phps-mode-lexer-SHORT_TAGS
+ (let ((start (match-beginning 0))
+ (end (match-end 0)))
+ (phps-mode-lexer-BEGIN phps-mode-lexer-ST_IN_SCRIPTING)
+ (when phps-mode-lexer-EXPECTED
+ (phps-mode-lexer-SKIP_TOKEN 'T_OPEN_TAG start end))
+ ;; (message "Starting scripting after <?")
+ (phps-mode-lexer-RETURN_TOKEN 'T_OPEN_TAG start end)))))
;; NOTE: mimics inline_char_handler
- (phps-mode-lexer-re2c-rule (and ST_INITIAL (looking-at
phps-mode-lexer-ANY_CHAR)) (lambda()
-
(let ((start (match-beginning 0)))
-
(let ((string-start (search-forward "<?" nil t)))
-
(if string-start
-
(phps-mode-lexer-RETURN_TOKEN 'T_INLINE_HTML start (-
string-start 2))
-
(phps-mode-lexer-RETURN_TOKEN 'T_INLINE_HTML start
(point-max)))))))
+ (phps-mode-lexer-re2c-rule
+ (and ST_INITIAL (looking-at phps-mode-lexer-ANY_CHAR))
+ (lambda()
+ (let ((start (match-beginning 0)))
+ (let ((string-start (search-forward "<?" nil t)))
+ (if string-start
+ (phps-mode-lexer-RETURN_TOKEN 'T_INLINE_HTML start (-
string-start 2))
+ (phps-mode-lexer-RETURN_TOKEN 'T_INLINE_HTML start
(point-max)))))))
;; ST_DOUBLE_QUOTES
- (phps-mode-lexer-re2c-rule (and ST_DOUBLE_QUOTES (looking-at "\\${"))
(lambda()
-
(phps-mode-lexer-yy_push_state phps-mode-lexer-ST_LOOKING_FOR_VARNAME)
- )
(phps-mode-lexer-RETURN_TOKEN 'T_DOLLAR_OPEN_CURLY_BRACES (match-beginning
0) (match-end 0)))
-
- (phps-mode-lexer-re2c-rule (and ST_DOUBLE_QUOTES (looking-at (concat "\\$"
phps-mode-lexer-LABEL "->" "[a-zA-Z_\x80-\xff]"))) (lambda()
-
(phps-mode-lexer-yy_push_state phps-mode-lexer-ST_LOOKING_FOR_PROPERTY)
-
) (forward-char -3)
-
(phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE (match-beginning 0) (- (match-end 0)
3)))
-
- (phps-mode-lexer-re2c-rule (and ST_DOUBLE_QUOTES (looking-at (concat "\\$"
phps-mode-lexer-LABEL "\\["))) (lambda()
-
(phps-mode-lexer-yy_push_state
phps-mode-lexer-ST_VAR_OFFSET)
-
) (phps-mode-lexer-RETURN_TOKEN
'T_VARIABLE (match-beginning 0) (match-end 0)))
-
- (phps-mode-lexer-re2c-rule (and ST_DOUBLE_QUOTES (looking-at (concat "\\$"
phps-mode-lexer-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE
(match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_DOUBLE_QUOTES (looking-at "{\\$"))
(lambda()
-
(phps-mode-lexer-yy_push_state phps-mode-lexer-ST_IN_SCRIPTING)
- )
;; (message "Starting ST_IN_SCRIPTING from double-quoted string at %s-%s"
(match-beginning 0) (- (match-end 0) 1))
- (phps-mode-lexer-RETURN_TOKEN 'T_CURLY_OPEN
(match-beginning 0) (- (match-end 0) 1)))
-
- (phps-mode-lexer-re2c-rule (and ST_DOUBLE_QUOTES (looking-at "[\"]"))
(lambda()
-
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_IN_SCRIPTING)
- )
;; (message "Ended double-quote at %s" (match-beginning 0))
- (phps-mode-lexer-RETURN_TOKEN "\""
(match-beginning 0) (match-end 0)))
-
- (phps-mode-lexer-re2c-rule (and ST_DOUBLE_QUOTES (looking-at
phps-mode-lexer-ANY_CHAR)) (lambda()
-
(let ((start (point)))
-
(let ((string-start (search-forward-regexp "[^\\\\]\"" nil t)))
-
(if string-start
-
(let* ((end (- (match-end 0) 1))
-
(double-quoted-string
(buffer-substring-no-properties start end)))
-
;; Do we find variable inside quote?
-
(if (or (string-match (concat "\\${"
phps-mode-lexer-LABEL) double-quoted-string)
-
(string-match (concat "{\\$"
phps-mode-lexer-LABEL) double-quoted-string)
-
(string-match (concat "\\$"
phps-mode-lexer-LABEL) double-quoted-string))
-
(progn
-
(let ((variable-start (+ start (match-beginning
0))))
-
-
;; (message "Found starting expression inside
double-quoted string at: %s %s" start variable-start)
-
(phps-mode-lexer-RETURN_TOKEN
'T_CONSTANT_ENCAPSED_STRING start variable-start)
-
))
-
(progn
-
(phps-mode-lexer-RETURN_TOKEN
'T_CONSTANT_ENCAPSED_STRING start end)
-
;; (message "Found end of quote at %s-%s, moving
ahead after '%s'" start end (buffer-substring-no-properties start end))
-
)))
-
(progn
-
;; "Found no end of double-quoted region
-
(phps-mode-lexer-RETURN_TOKEN 'T_ERROR start (point-max))
-
(phps-mode-lexer-MOVE_FORWARD (point-max))))))))
+ (phps-mode-lexer-re2c-rule
+ (and ST_DOUBLE_QUOTES (looking-at "\\${"))
+ (lambda()
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_LOOKING_FOR_VARNAME)
+ (phps-mode-lexer-RETURN_TOKEN 'T_DOLLAR_OPEN_CURLY_BRACES
(match-beginning 0) (match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_DOUBLE_QUOTES (looking-at (concat "\\$" phps-mode-lexer-LABEL
"->" "[a-zA-Z_\x80-\xff]")))
+ (lambda()
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_LOOKING_FOR_PROPERTY)
+ (forward-char -3)
+ (phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE (match-beginning 0) (-
(match-end 0) 3))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_DOUBLE_QUOTES (looking-at (concat "\\$" phps-mode-lexer-LABEL
"\\[")))
+ (lambda()
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_VAR_OFFSET)
+ (phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_DOUBLE_QUOTES (looking-at (concat "\\$" phps-mode-lexer-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_DOUBLE_QUOTES (looking-at "{\\$"))
+ (lambda()
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_IN_SCRIPTING)
+ ;; (message "Starting ST_IN_SCRIPTING from double-quoted string at
%s-%s" (match-beginning 0) (- (match-end 0) 1))
+ (phps-mode-lexer-RETURN_TOKEN 'T_CURLY_OPEN (match-beginning 0) (-
(match-end 0) 1))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_DOUBLE_QUOTES (looking-at "[\"]"))
+ (lambda()
+ (phps-mode-lexer-BEGIN phps-mode-lexer-ST_IN_SCRIPTING)
+ ;; (message "Ended double-quote at %s" (match-beginning 0))
+ (phps-mode-lexer-RETURN_TOKEN "\"" (match-beginning 0) (match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_DOUBLE_QUOTES (looking-at phps-mode-lexer-ANY_CHAR))
+ (lambda()
+ (let ((start (point)))
+ (let ((string-start (search-forward-regexp "[^\\\\]\"" nil t)))
+ (if string-start
+ (let* ((end (- (match-end 0) 1))
+ (double-quoted-string (buffer-substring-no-properties
start end)))
+ ;; Do we find variable inside quote?
+ (if (or (string-match (concat "\\${" phps-mode-lexer-LABEL)
double-quoted-string)
+ (string-match (concat "{\\$" phps-mode-lexer-LABEL)
double-quoted-string)
+ (string-match (concat "\\$" phps-mode-lexer-LABEL)
double-quoted-string))
+ (progn
+ (let ((variable-start (+ start (match-beginning 0))))
+
+ ;; (message "Found starting expression inside
double-quoted string at: %s %s" start variable-start)
+ (phps-mode-lexer-RETURN_TOKEN
'T_CONSTANT_ENCAPSED_STRING start variable-start)
+ ))
+ (progn
+ (phps-mode-lexer-RETURN_TOKEN 'T_CONSTANT_ENCAPSED_STRING
start end)
+ ;; (message "Found end of quote at %s-%s, moving ahead
after '%s'" start end (buffer-substring-no-properties start end))
+ )))
+ (progn
+ ;; "Found no end of double-quoted region
+ (phps-mode-lexer-RETURN_TOKEN 'T_ERROR start (point-max))
+ (phps-mode-lexer-MOVE_FORWARD (point-max))))))))
;; ST_BACKQUOTE
- (phps-mode-lexer-re2c-rule (and ST_BACKQUOTE (looking-at "\\${")) (lambda()
-
(phps-mode-lexer-yy_push_state phps-mode-lexer-ST_LOOKING_FOR_VARNAME)
- )
(phps-mode-lexer-RETURN_TOKEN 'T_DOLLAR_OPEN_CURLY_BRACES (match-beginning 0)
(match-end 0)))
-
- (phps-mode-lexer-re2c-rule (and ST_BACKQUOTE (looking-at (concat "\\$"
phps-mode-lexer-LABEL "->" "[a-zA-Z_\x80-\xff]"))) (lambda()
-
(phps-mode-lexer-yy_push_state
phps-mode-lexer-ST_LOOKING_FOR_PROPERTY)
-
) (forward-char -3)
-
(phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE (match-beginning 0) (- (match-end 0)
3)))
-
- (phps-mode-lexer-re2c-rule (and ST_BACKQUOTE (looking-at (concat "\\$"
phps-mode-lexer-LABEL "\\["))) (lambda()
-
(phps-mode-lexer-yy_push_state
phps-mode-lexer-ST_VAR_OFFSET)
-
) (phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE
(match-beginning 0) (match-end 0)))
-
- (phps-mode-lexer-re2c-rule (and ST_BACKQUOTE (looking-at (concat "\\$"
phps-mode-lexer-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE
(match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_BACKQUOTE (looking-at "{\\$")) (lambda()
-
(phps-mode-lexer-yy_push_state phps-mode-lexer-ST_IN_SCRIPTING)
- )
(phps-mode-lexer-RETURN_TOKEN 'T_CURLY_OPEN (match-beginning 0) (- (match-end
0) 1)))
-
- (phps-mode-lexer-re2c-rule (and ST_BACKQUOTE (looking-at "[`]")) (lambda()
-
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_IN_SCRIPTING)
- )
(phps-mode-lexer-RETURN_TOKEN "`" (match-beginning 0) (match-end 0)))
-
- (phps-mode-lexer-re2c-rule (and ST_BACKQUOTE (looking-at
phps-mode-lexer-ANY_CHAR)) (lambda()
-
(let ((string-start (search-forward-regexp
"\\([^\\\\]`\\|\\$\\|{\\)" nil t)))
-
(if string-start
-
(let ((start (- (match-end 0) 1)))
-
;; (message "Skipping backquote forward over %s"
(buffer-substring-no-properties old-start start))
-
(phps-mode-lexer-RETURN_TOKEN 'T_CONSTANT_ENCAPSED_STRING
old-start start)
-
)
-
(progn
-
;; (message "Found no end of backquote.. skipping to end from
%s" (buffer-substring-no-properties (point) (point-max)))
-
(phps-mode-lexer-RETURN_TOKEN 'T_ERROR old-start (point-max))
-
(phps-mode-lexer-MOVE_FORWARD (point-max)))))))
+ (phps-mode-lexer-re2c-rule
+ (and ST_BACKQUOTE (looking-at "\\${"))
+ (lambda()
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_LOOKING_FOR_VARNAME)
+ (phps-mode-lexer-RETURN_TOKEN 'T_DOLLAR_OPEN_CURLY_BRACES
(match-beginning 0) (match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_BACKQUOTE (looking-at (concat "\\$" phps-mode-lexer-LABEL "->"
"[a-zA-Z_\x80-\xff]")))
+ (lambda()
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_LOOKING_FOR_PROPERTY)
+ (forward-char -3)
+ (phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE (match-beginning 0) (-
(match-end 0) 3))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_BACKQUOTE (looking-at (concat "\\$" phps-mode-lexer-LABEL "\\[")))
+ (lambda()
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_VAR_OFFSET)
+ (phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_BACKQUOTE (looking-at (concat "\\$" phps-mode-lexer-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_BACKQUOTE (looking-at "{\\$"))
+ (lambda()
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_IN_SCRIPTING)
+ (phps-mode-lexer-RETURN_TOKEN 'T_CURLY_OPEN (match-beginning 0) (-
(match-end 0) 1))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_BACKQUOTE (looking-at "[`]"))
+ (lambda()
+ (phps-mode-lexer-BEGIN phps-mode-lexer-ST_IN_SCRIPTING)
+ (phps-mode-lexer-RETURN_TOKEN "`" (match-beginning 0) (match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_BACKQUOTE (looking-at phps-mode-lexer-ANY_CHAR))
+ (lambda()
+ (let ((string-start (search-forward-regexp "\\([^\\\\]`\\|\\$\\|{\\)"
nil t)))
+ (if string-start
+ (let ((start (- (match-end 0) 1)))
+ ;; (message "Skipping backquote forward over %s"
(buffer-substring-no-properties old-start start))
+ (phps-mode-lexer-RETURN_TOKEN 'T_CONSTANT_ENCAPSED_STRING
old-start start)
+ )
+ (progn
+ ;; (message "Found no end of backquote.. skipping to end from %s"
(buffer-substring-no-properties (point) (point-max)))
+ (phps-mode-lexer-RETURN_TOKEN 'T_ERROR old-start (point-max))
+ (phps-mode-lexer-MOVE_FORWARD (point-max)))))))
;; ST_HEREDOC
- (phps-mode-lexer-re2c-rule (and ST_HEREDOC (looking-at "\\${")) (lambda()
-
(phps-mode-lexer-yy_push_state phps-mode-lexer-ST_LOOKING_FOR_VARNAME)
- )
(phps-mode-lexer-RETURN_TOKEN 'T_DOLLAR_OPEN_CURLY_BRACES (match-beginning 0)
(match-end 0)))
-
- (phps-mode-lexer-re2c-rule (and ST_HEREDOC (looking-at (concat "\\$"
phps-mode-lexer-LABEL "->" "[a-zA-Z_\x80-\xff]"))) (lambda()
-
(phps-mode-lexer-yy_push_state
phps-mode-lexer-ST_LOOKING_FOR_PROPERTY)
-
) (forward-char -3)
-
(phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE (match-beginning 0) (- (match-end 0)
3)))
-
- (phps-mode-lexer-re2c-rule (and ST_HEREDOC (looking-at (concat "\\$"
phps-mode-lexer-LABEL "\\["))) (lambda()
-
(phps-mode-lexer-yy_push_state
phps-mode-lexer-ST_VAR_OFFSET)
-
) (phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE
(match-beginning 0) (match-end 0)))
-
- (phps-mode-lexer-re2c-rule (and ST_HEREDOC (looking-at (concat "\\$"
phps-mode-lexer-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE (match-beginning
0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_HEREDOC (looking-at (concat "{\\$")))
(lambda()
-
(phps-mode-lexer-yy_push_state phps-mode-lexer-ST_IN_SCRIPTING)
-
) (phps-mode-lexer-RETURN_TOKEN 'T_CURLY_OPEN (match-beginning 0) (-
(match-end 0) 1)))
-
- (phps-mode-lexer-re2c-rule (and ST_HEREDOC (looking-at
phps-mode-lexer-ANY_CHAR)) (lambda()
-
;; (message "Found nothing useful at '%s' looking at {$ %s"
(buffer-substring-no-properties (point) (point-max)) (looking-at "{\\$"))
-
;; Check for $, ${ and {$ forward
-
(let ((string-start (search-forward-regexp (concat "\\(\n"
heredoc_label ";?\n\\|\\$" 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 (buffer-substring-no-properties start end)))
-
;; (message "Found something ending at %s" data)
-
-
(cond
-
-
((string-match (concat "\n" heredoc_label ";?\n") data)
+ (phps-mode-lexer-re2c-rule
+ (and ST_HEREDOC (looking-at "\\${"))
+ (lambda()
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_LOOKING_FOR_VARNAME)
+ (phps-mode-lexer-RETURN_TOKEN 'T_DOLLAR_OPEN_CURLY_BRACES
(match-beginning 0) (match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_HEREDOC (looking-at (concat "\\$" phps-mode-lexer-LABEL "->"
"[a-zA-Z_\x80-\xff]")))
+ (lambda()
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_LOOKING_FOR_PROPERTY)
+ (forward-char -3)
+ (phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE (match-beginning 0) (-
(match-end 0) 3))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_HEREDOC (looking-at (concat "\\$" phps-mode-lexer-LABEL "\\[")))
+ (lambda()
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_VAR_OFFSET)
+ (phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_HEREDOC (looking-at (concat "\\$" phps-mode-lexer-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_HEREDOC (looking-at (concat "{\\$")))
+ (lambda()
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_IN_SCRIPTING)
+ (phps-mode-lexer-RETURN_TOKEN 'T_CURLY_OPEN (match-beginning 0) (-
(match-end 0) 1))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_HEREDOC (looking-at phps-mode-lexer-ANY_CHAR))
+ (lambda()
+ ;; (message "Found nothing useful at '%s' looking at {$ %s"
(buffer-substring-no-properties (point) (point-max)) (looking-at "{\\$"))
+ ;; Check for $, ${ and {$ forward
+ (let ((string-start (search-forward-regexp (concat "\\(\n"
heredoc_label ";?\n\\|\\$" 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 (buffer-substring-no-properties start end)))
+ ;; (message "Found something ending at %s" data)
+
+ (cond
+
+ ((string-match (concat "\n" heredoc_label ";?\n") data)
;, (message "Found heredoc end at
%s-%s" start end)
-
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_END_HEREDOC)
-
(phps-mode-lexer-RETURN_TOKEN 'T_ENCAPSED_AND_WHITESPACE
old-start start))
+ (phps-mode-lexer-BEGIN phps-mode-lexer-ST_END_HEREDOC)
+ (phps-mode-lexer-RETURN_TOKEN 'T_ENCAPSED_AND_WHITESPACE
old-start start))
-
(t
-
;; (message "Found variable at '%s'.. Skipping forward to
%s" data start)
-
(phps-mode-lexer-RETURN_TOKEN 'T_ENCAPSED_AND_WHITESPACE
old-start start)
-
)
+ (t
+ ;; (message "Found variable at '%s'.. Skipping forward to %s"
data start)
+ (phps-mode-lexer-RETURN_TOKEN 'T_ENCAPSED_AND_WHITESPACE
old-start start)
+ )
-
))
-
(progn
-
;; (message "Found no ending of heredoc at %s '%s'"
heredoc_label (buffer-substring-no-properties (point) (point-max)))
-
(phps-mode-lexer-RETURN_TOKEN 'T_ERROR old-start (point-max))
-
(phps-mode-lexer-MOVE_FORWARD (point-max))
-
)))))
+ ))
+ (progn
+ ;; (message "Found no ending of heredoc at %s '%s'" heredoc_label
(buffer-substring-no-properties (point) (point-max)))
+ (phps-mode-lexer-RETURN_TOKEN 'T_ERROR old-start (point-max))
+ (phps-mode-lexer-MOVE_FORWARD (point-max))
+ )))))
;; ST_NOWDOC
- (phps-mode-lexer-re2c-rule (and ST_NOWDOC (looking-at
phps-mode-lexer-ANY_CHAR)) (lambda()
-
(let ((string-start (search-forward-regexp (concat "\n" heredoc_label
";?\n") nil t)))
-
(if string-start
-
(let* ((start (match-beginning 0))
-
(end (match-end 0))
-
(_data (buffer-substring-no-properties start end)))
-
;; (message "Found something ending at %s" _data)
-
;; (message "Found nowdoc end at %s-%s" start end)
-
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_END_HEREDOC)
-
(phps-mode-lexer-RETURN_TOKEN 'T_ENCAPSED_AND_WHITESPACE
old-start start)
-
)
-
(progn
-
;; (message "Found no ending of nowdoc at %s '%s'" heredoc_label
(buffer-substring-no-properties (point) (point-max)))
-
(phps-mode-lexer-RETURN_TOKEN 'T_ERROR old-start (point-max))
-
(phps-mode-lexer-MOVE_FORWARD (point-max))
-
)))))
+ (phps-mode-lexer-re2c-rule
+ (and ST_NOWDOC (looking-at phps-mode-lexer-ANY_CHAR))
+ (lambda()
+ (let ((string-start (search-forward-regexp (concat "\n" heredoc_label
";?\n") nil t)))
+ (if string-start
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (_data (buffer-substring-no-properties start end)))
+ ;; (message "Found something ending at %s" _data)
+ ;; (message "Found nowdoc end at %s-%s" start end)
+ (phps-mode-lexer-BEGIN phps-mode-lexer-ST_END_HEREDOC)
+ (phps-mode-lexer-RETURN_TOKEN 'T_ENCAPSED_AND_WHITESPACE
old-start start)
+ )
+ (progn
+ ;; (message "Found no ending of nowdoc at %s '%s'" heredoc_label
(buffer-substring-no-properties (point) (point-max)))
+ (phps-mode-lexer-RETURN_TOKEN 'T_ERROR old-start (point-max))
+ (phps-mode-lexer-MOVE_FORWARD (point-max))
+ )))))
;; ST_LOOKING_FOR_VARNAME
- (phps-mode-lexer-re2c-rule (and ST_LOOKING_FOR_VARNAME (looking-at (concat
phps-mode-lexer-LABEL "[\\[}]"))) (lambda()
-
(let ((start (match-beginning 0))
-
(end (- (match-end 0) 1)))
-
;; (message "Stopped here")
-
(phps-mode-lexer-yy_pop_state)
-
(phps-mode-lexer-yy_push_state
phps-mode-lexer-ST_IN_SCRIPTING)
-
(phps-mode-lexer-RETURN_TOKEN
'T_STRING_VARNAME start end))))
+ (phps-mode-lexer-re2c-rule
+ (and ST_LOOKING_FOR_VARNAME (looking-at (concat phps-mode-lexer-LABEL
"[\\[}]")))
+ (lambda()
+ (let ((start (match-beginning 0))
+ (end (- (match-end 0) 1)))
+ ;; (message "Stopped here")
+ (phps-mode-lexer-yy_pop_state)
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_IN_SCRIPTING)
+ (phps-mode-lexer-RETURN_TOKEN 'T_STRING_VARNAME start end))))
- ((and ST_LOOKING_FOR_VARNAME (looking-at phps-mode-lexer-ANY_CHAR))
- (phps-mode-lexer-yy_pop_state)
- (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_IN_SCRIPTING))
+ (phps-mode-lexer-re2c-rule
+ (and ST_LOOKING_FOR_VARNAME (looking-at phps-mode-lexer-ANY_CHAR))
+ (lambda()
+ (phps-mode-lexer-yy_pop_state)
+ (phps-mode-lexer-yy_push_state phps-mode-lexer-ST_IN_SCRIPTING)))
;; ST_END_HEREDOC
- (phps-mode-lexer-re2c-rule (and ST_END_HEREDOC (looking-at (concat
phps-mode-lexer-ANY_CHAR))) (lambda()
+ (phps-mode-lexer-re2c-rule
+ (and ST_END_HEREDOC (looking-at (concat phps-mode-lexer-ANY_CHAR)))
+ (lambda()
-
(let* ((start (match-beginning 0))
-
(end (+ start (length heredoc_label) 1))
-
(_data (buffer-substring-no-properties start end)))
-
;; (message "Found ending heredoc at %s, %s of %s"
_data (thing-at-point 'line) heredoc_label)
-
(pop phps-mode-lexer-heredoc_label_stack)
-
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_IN_SCRIPTING)
-
(phps-mode-lexer-RETURN_TOKEN 'T_END_HEREDOC start end)
+ (let* ((start (match-beginning 0))
+ (end (+ start (length heredoc_label) 1))
+ (_data (buffer-substring-no-properties start end)))
+ ;; (message "Found ending heredoc at %s, %s of %s" _data
(thing-at-point 'line) heredoc_label)
+ (pop phps-mode-lexer-heredoc_label_stack)
+ (phps-mode-lexer-BEGIN phps-mode-lexer-ST_IN_SCRIPTING)
+ (phps-mode-lexer-RETURN_TOKEN 'T_END_HEREDOC start end)
-
)))
+ )))
;; ST_VAR_OFFSET
- (phps-mode-lexer-re2c-rule (and ST_VAR_OFFSET (looking-at (concat "\\("
-
phps-mode-lexer-LNUM "\\|"
-
phps-mode-lexer-HNUM "\\|"
-
phps-mode-lexer-BNUM "\\)"))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_NUM_STRING
(match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_VAR_OFFSET (looking-at (concat "\\$"
phps-mode-lexer-LABEL))) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE
(match-beginning 0) (match-end 0))))
-
- (phps-mode-lexer-re2c-rule (and ST_VAR_OFFSET (looking-at "\\]")) (lambda()
-
(phps-mode-lexer-yy_pop_state)
- )
(phps-mode-lexer-RETURN_TOKEN "]" (match-beginning 0) (match-end 0)))
-
- (phps-mode-lexer-re2c-rule (and ST_VAR_OFFSET (looking-at (concat "\\("
phps-mode-lexer-TOKENS
-
"\\|[{}\"`]\\)"))) (lambda()
-
(let* ((start (match-beginning 0))
-
(end (match-end 0))
-
(data (buffer-substring-no-properties start end)))
-
(phps-mode-lexer-RETURN_TOKEN data start end))))
-
- (phps-mode-lexer-re2c-rule (and ST_VAR_OFFSET (looking-at (concat "[
\n\r\t'#]"))) (lambda()
-
(let* ((start (match-beginning 0))
-
(end (- (match-end 0) 1)))
-
(phps-mode-lexer-yy_pop_state)
-
(phps-mode-lexer-RETURN_TOKEN 'T_ENCAPSED_AND_WHITESPACE start
end))))
-
- (phps-mode-lexer-re2c-rule (and ST_VAR_OFFSET (looking-at
phps-mode-lexer-LABEL)) (lambda()
-
(phps-mode-lexer-RETURN_TOKEN 'T_STRING (match-beginning 0) (match-end
0))))
-
- (phps-mode-lexer-re2c-rule (and ST_VAR_OFFSET (looking-at
phps-mode-lexer-ANY_CHAR)) (lambda()
-
;; Unexpected character
-
(phps-mode-lexer-RETURN_TOKEN 'T_ERROR (match-beginning 0)
(point-max))
-
) (phps-mode-lexer-MOVE_FORWARD (point-max)))
-
- (phps-mode-lexer-re2c-execute)
-
- ))
+ (phps-mode-lexer-re2c-rule
+ (and ST_VAR_OFFSET (looking-at (concat "\\("
+ phps-mode-lexer-LNUM "\\|"
+ phps-mode-lexer-HNUM "\\|"
+ phps-mode-lexer-BNUM "\\)")))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_NUM_STRING (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_VAR_OFFSET (looking-at (concat "\\$" phps-mode-lexer-LABEL)))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_VARIABLE (match-beginning 0)
(match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_VAR_OFFSET (looking-at "\\]"))
+ (lambda()
+ (phps-mode-lexer-yy_pop_state)
+ (phps-mode-lexer-RETURN_TOKEN "]" (match-beginning 0) (match-end 0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_VAR_OFFSET (looking-at (concat "\\(" phps-mode-lexer-TOKENS
+ "\\|[{}\"`]\\)")))
+ (lambda()
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (data (buffer-substring-no-properties start end)))
+ (phps-mode-lexer-RETURN_TOKEN data start end))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_VAR_OFFSET (looking-at (concat "[ \n\r\t'#]")))
+ (lambda()
+ (let* ((start (match-beginning 0))
+ (end (- (match-end 0) 1)))
+ (phps-mode-lexer-yy_pop_state)
+ (phps-mode-lexer-RETURN_TOKEN 'T_ENCAPSED_AND_WHITESPACE start end))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_VAR_OFFSET (looking-at phps-mode-lexer-LABEL))
+ (lambda()
+ (phps-mode-lexer-RETURN_TOKEN 'T_STRING (match-beginning 0) (match-end
0))))
+
+ (phps-mode-lexer-re2c-rule
+ (and ST_VAR_OFFSET (looking-at phps-mode-lexer-ANY_CHAR))
+ (lambda()
+ ;; Unexpected character
+ (phps-mode-lexer-RETURN_TOKEN 'T_ERROR (match-beginning 0) (point-max))
+ (phps-mode-lexer-MOVE_FORWARD (point-max))))
+
+ (phps-mode-lexer-re2c-execute)))
(defun phps-mode-lexer-get-tokens ()
"Get tokens."
diff --git a/phps-mode-test-lexer.el b/phps-mode-test-lexer.el
index d247375..ed7142a 100644
--- a/phps-mode-test-lexer.el
+++ b/phps-mode-test-lexer.el
@@ -406,7 +406,7 @@
(defun phps-mode-test-lexer ()
"Run test for lexer."
;; (message "-- Running all tests for lexer... --\n")
- ;; (setq debug-on-error t)
+ (setq debug-on-error t)
;; (setq phps-mode-functions-verbose t)
(phps-mode-test-lexer-script-boundaries)
(phps-mode-test-lexer-simple-tokens)
- [elpa] externals/phps-mode 55f61b0 296/405: New algorithm for concatenation indentation passes tests, (continued)
- [elpa] externals/phps-mode 55f61b0 296/405: New algorithm for concatenation indentation passes tests, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 9069d0a 300/405: Concatenation indentation now uses stack, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode e639ea3 299/405: Indent passing new concatenation tests, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 5be3560 291/405: Adding more indent examples from PSR-2, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 74ab2a7 294/405: Work on incremental lexer and failing test for indent, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode b31f817 292/405: Added all examples from PSR-2 as tests for indentation, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 2087abd 282/405: Added two failing tests for switch indentation, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 43c13b4 295/405: Started on new algorithm for concatenation indentation, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode b2ff76e 283/405: Started on debugging switch indentation bug, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 1aadb1b 285/405: Added failing lexer test for comment vs doc-comment, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 95de04b 274/405: New layout for lexer grammar passes unit tests,
Stefan Monnier <=
- [elpa] externals/phps-mode 00d3568 290/405: Added indentation examples from official PSR-2, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode ec3fd41 289/405: Added failing indent test for mixed concatenation and function call, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode cc77604 284/405: Fixed bug with indentation after switch case statements, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode eeffdb2 315/405: Fixed trailing white-space, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 02b69f5 304/405: Tests for PSR-2 now passes with new algorithms, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode b251a1e 314/405: Got unit tests for wrapping region in symbols working, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 20199b0 307/405: Added byte-compiled Lisp to gitignore, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode a0b7695 316/405: Passes unit tests for integration with electric-pair, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 7c3a31a 305/405: Fixed bug in indentation with stacked assignment closures, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 68422f5 301/405: Restored indentation test for PSR-2 closure, Stefan Monnier, 2019/07/13