[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode 83c7648 04/62: More work on PHP 8 lex analyze
From: |
Christian Johansson |
Subject: |
[elpa] externals/phps-mode 83c7648 04/62: More work on PHP 8 lex analyzer |
Date: |
Tue, 20 Apr 2021 10:56:12 -0400 (EDT) |
branch: externals/phps-mode
commit 83c7648000504581fc468f9723323669ece60711
Author: Christian Johansson <christian@mediastrategi.se>
Commit: Christian Johansson <christian@mediastrategi.se>
More work on PHP 8 lex analyzer
---
phps-mode-lexer.el | 61 +++++++++++++++++++++++++++++-------------------------
1 file changed, 33 insertions(+), 28 deletions(-)
diff --git a/phps-mode-lexer.el b/phps-mode-lexer.el
index c19797b..699fae6 100644
--- a/phps-mode-lexer.el
+++ b/phps-mode-lexer.el
@@ -45,8 +45,8 @@
;; INITIALIZE SETTINGS
-(phps-mode-parser-grammar-macro-CG 'PARSER_MODE t)
-(phps-mode-parser-grammar-macro-CG 'SHORT_TAGS t)
+(phps-mode-parser-grammar-macro-CG 'parser-mode t)
+(phps-mode-parser-grammar-macro-CG 'short-tags t)
;; SETTINGS
@@ -216,8 +216,12 @@
pos))
;; TODO Figure out what this does
-(defun phps-mode-lexer--skip-token (_token _start _end)
- "Skip TOKEN to list with START and END.")
+(defun phps-mode-lexer--skip-token (token &optional start end)
+ "Skip TOKEN to list with START and END."
+ (unless start
+ (setq start (match-beginning 0)))
+ (unless end
+ (setq end (match-end 0))))
(defmacro phps-mode-lexer--match-macro (conditions &rest body)
"Check if CONDITIONS hold, if so execute BODY."
@@ -234,9 +238,13 @@
(setq end (match-end 0)))
(phps-mode-lexer--emit-token token start end))
-(defun phps-mode-lexer--return-or-skip-token (token start end)
+(defun phps-mode-lexer--return-or-skip-token (token &optional start end)
"Return TOKEN with START and END but only in parse-mode."
- (when (phps-mode-parser-grammar-macro-CG 'PARSER_MODE)
+ (unless start
+ (setq start (match-beginning 0)))
+ (unless end
+ (setq end (match-end 0)))
+ (when (phps-mode-parser-grammar-macro-CG 'parser-mode)
(phps-mode-lexer--return-token token start end)))
@@ -573,7 +581,7 @@
"\\(real\\)"
phps-mode-lexer--TABS_AND_SPACES
")")))
- (when (phps-mode-parser-grammar-macro-CG 'PARSER_MODE)
+ (when (phps-mode-parser-grammar-macro-CG 'parser-mode)
(signal
'phps-lexer-error
(list
@@ -1000,7 +1008,7 @@
(phps-mode-lexer--match-macro
(and ST_INITIAL (looking-at "<\\?="))
(phps-mode-lexer--begin 'ST_IN_SCRIPTING)
- (when (phps-mode-parser-grammar-macro-CG 'PARSER_MODE)
+ (when (phps-mode-parser-grammar-macro-CG 'parser-mode)
(phps-mode-lexer--return-token-with-indent 'T_ECHO))
(phps-mode-lexer--return-token 'T_OPEN_TAG_WITH_ECHO))
@@ -1013,8 +1021,6 @@
(phps-mode-lexer--begin 'ST_IN_SCRIPTING)
(phps-mode-lexer--return-or-skip-token 'T_OPEN_TAG))
- ;; TODO Was here
-
(phps-mode-lexer--match-macro
(and ST_INITIAL (looking-at "<\\?php"))
(let ((start (match-beginning 0))
@@ -1026,13 +1032,11 @@
((equal end (point-max))
(phps-mode-lexer--begin 'ST_IN_SCRIPTING)
(phps-mode-lexer--return-or-skip-token
- 'T_OPEN_TAG
- start
- end))
+ 'T_OPEN_TAG))
- ((phps-mode-parser-grammar-macro-CG 'SHORT_TAGS)
- (phps-mode-lexer--yyless 3)
- (setq end (- end 3))
+ ((phps-mode-parser-grammar-macro-CG 'short-tags)
+ (phps-mode-lexer--yyless 2)
+ (setq end (- end 2))
(phps-mode-lexer--begin 'ST_IN_SCRIPTING)
(phps-mode-lexer--return-or-skip-token
'T_OPEN_TAG
@@ -1044,18 +1048,17 @@
(phps-mode-lexer--match-macro
(and ST_INITIAL (looking-at "<\\?"))
- (when (phps-mode-parser-grammar-macro-CG 'SHORT_TAGS)
- (let ((start (match-beginning 0))
- (end (match-end 0)))
- (phps-mode-lexer--begin '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))))
+ (if (phps-mode-parser-grammar-macro-CG 'short-tags)
+ (progn
+ (phps-mode-lexer--begin 'ST_IN_SCRIPTING)
+ (phps-mode-lexer--return-or-skip-token 'T_OPEN_TAG))
+ (phps-mode-lexer--inline-char-handler)))
(phps-mode-lexer--match-macro
(and ST_INITIAL (looking-at phps-mode-lexer--ANY_CHAR))
- (phps-mode-lexer--inline-char-handler))
+ (if (= (point) (point-max))
+ (phps-mode-lexer--return-end-token)
+ (phps-mode-lexer--inline-char-handler)))
(phps-mode-lexer--match-macro
(and (or ST_DOUBLE_QUOTES ST_HEREDOC ST_BACKQUOTE)
@@ -1065,9 +1068,11 @@
phps-mode-lexer--LABEL
"->"
"[a-zA-Z_\x80-\xff]")))
+ (phps-mode-lexer--yyless 3)
(phps-mode-lexer--yy-push-state 'ST_LOOKING_FOR_PROPERTY)
- (forward-char -3)
- (phps-mode-lexer--return-token 'T_VARIABLE (match-beginning 0) (-
(match-end 0) 3)))
+ (phps-mode-lexer--return-token-with-str 'T_VARIABLE 1 (match-beginning
0) (- (match-end 0) 3)))
+
+ ;; TODO Was here
(phps-mode-lexer--match-macro
(and (or ST_DOUBLE_QUOTES ST_HEREDOC ST_BACKQUOTE)
@@ -1159,7 +1164,7 @@
(when (= (- end start) 3)
(setq end (1- end)))
(phps-mode-lexer--begin 'ST_INITIAL)
- (when (phps-mode-parser-grammar-macro-CG 'PARSER_MODE)
+ (when (phps-mode-parser-grammar-macro-CG 'parser-mode)
(phps-mode-lexer--return-token ";" start end))
(phps-mode-lexer--return-token 'T_CLOSE_TAG start end)))
- [elpa] externals/phps-mode updated (a8dcba3 -> 209055b), Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 8647f09 01/62: Started on adding support for PHP 8.0 lex analyzer, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 846b3b0 03/62: More work on PHP 8.0 lex analyzer, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 83c7648 04/62: More work on PHP 8 lex analyzer,
Christian Johansson <=
- [elpa] externals/phps-mode a1aa0a2 05/62: More work on PHP 8.0 lex analyzer, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 60a33b3 06/62: More work on PHP 8.0 lex analyzer, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 111335b 11/62: Added TODO item, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode fbea5d9 07/62: Improved naming in lex analyzer, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 79bbd0c 10/62: Fixed a regex issue, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode de5fea6 12/62: Added new token and lex analyzer functions, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 04d0065 08/62: Added syntax coloring for new tokens, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode c56268f 13/62: Implement new lex-analyzer function, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 11313cc 15/62: Removed unnecessary code, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode cd7ebb7 17/62: Removed unnecessary comment, Christian Johansson, 2021/04/20