[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode c64b3b4 008/405: More work on lexer tests
From: |
Stefan Monnier |
Subject: |
[elpa] externals/phps-mode c64b3b4 008/405: More work on lexer tests |
Date: |
Sat, 13 Jul 2019 09:59:29 -0400 (EDT) |
branch: externals/phps-mode
commit c64b3b402ad8ccc2771313927f935e9cb7cdfc2e
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>
More work on lexer tests
---
phps-lexer.el | 42 +++++++++++++++++++++++-------------------
phps-syntax-table.el | 1 +
phps-test-lexer.el | 16 +++++++---------
3 files changed, 31 insertions(+), 28 deletions(-)
diff --git a/phps-lexer.el b/phps-lexer.el
index a708d6e..18179d2 100644
--- a/phps-lexer.el
+++ b/phps-lexer.el
@@ -158,7 +158,7 @@
(defun phps-mode/BEGIN (state)
"Begin STATE."
(setq phps-mode/STATE state)
- ;; (message "Begun state %s" state)
+ (message "Begun state %s" state)
)
;; _yy_push_state
@@ -170,7 +170,7 @@
(if (not phps-mode/state_stack)
(setq phps-mode/state_stack (list old-state))
(push old-state phps-mode/state_stack))
- ;; (message "Added state %s to stack" old-state)
+ (message "Added state %s to stack" old-state)
)
(phps-mode/BEGIN state))
@@ -178,8 +178,8 @@
"Pop current state from stack."
(let* ((old-state (pop phps-mode/state_stack))
(new-state (car phps-mode/state_stack)))
- ;; (message "Going back to poppped state %s" old-state)
- ;; (message "Ended state %s, going back to %s" old-state new-state)
+ (message "Going back to poppped state %s" old-state)
+ (message "Ended state %s, going back to %s" old-state new-state)
(if old-state
(phps-mode/BEGIN old-state)
(display-warning "phps-mode" "PHPs Lexer Error - Going back to nil?"))
@@ -362,19 +362,21 @@
(defun phps-mode/RETURN_TOKEN (token start end)
"Push TOKEN to list with START and END."
-
(phps-mode/COLOR_SYNTAX token start end)
(when (and
- phps-mode/prepend_trailing_brace
- (> end (- (point-max) 2)))
- ;; (message "Adding trailing brace")
+ phps-mode/prepend_trailing_brace
+ (> end (- (point-max) 2)))
+ (message "Adding trailing brace")
(setq phps-mode/prepend_trailing_brace nil)
(phps-mode/RETURN_TOKEN "}" (- end 1) end))
(semantic-lex-push-token
- (semantic-lex-token token start end))
+ (semantic-lex-token token start end)))
+;; TODO Figure out what this does
+(defun phps-mode/SKIP_TOKEN (token start end)
+ "Skip TOKEN to list with START and END."
)
@@ -390,29 +392,31 @@
(let ((start (match-beginning 0))
(end (match-end 0)))
(phps-mode/BEGIN phps-mode/ST_IN_SCRIPTING)
- (if phps-mode/PARSER_MODE
- (phps-mode/RETURN_TOKEN 'T_ECHO start end))
- (phps-mode/RETURN_TOKEN 'T_OPEN_TAG_WITH_ECHO start end)
- ))
+ (message "Starting scripting after <?=")
+ (when phps-mode/PARSER_MODE
+ (phps-mode/RETURN_TOKEN 'T_ECHO start end))
+ (phps-mode/RETURN_TOKEN 'T_OPEN_TAG_WITH_ECHO start end)))
((looking-at "<\\?php\\([ \t]\\|\n\\)")
(let ((start (match-beginning 0))
(end (match-end 0)))
(phps-mode/BEGIN phps-mode/ST_IN_SCRIPTING)
+ (message "Starting scripting after <?php")
(when phps-mode/EXPECTED
- ;; skip-token?
- )
- (phps-mode/RETURN_TOKEN 'T_OPEN_TAG start end)
- ))
+ (phps-mode/SKIP_TOKEN 'T_OPEN_TAG start end))
+ (phps-mode/RETURN_TOKEN 'T_OPEN_TAG start end)))
((looking-at "<\\?")
(when phps-mode/SHORT_TAGS
(let ((start (match-beginning 0))
(end (match-end 0)))
(phps-mode/BEGIN phps-mode/ST_IN_SCRIPTING)
- (phps-mode/RETURN_TOKEN 'T_OPEN_TAG start end)
- )))
+ (when phps-mode/EXPECTED
+ (phps-mode/SKIP_TOKEN 'T_OPEN_TAG start end))
+ (message "Starting scripting after <?")
+ (phps-mode/RETURN_TOKEN 'T_OPEN_TAG start end))))
+ ;; NOTE: mimics inline_char_handler
((looking-at phps-mode/ANY_CHAR)
(let ((string-start (search-forward "<?" nil t)))
(if string-start
diff --git a/phps-syntax-table.el b/phps-syntax-table.el
index c35268b..cfe63ed 100644
--- a/phps-syntax-table.el
+++ b/phps-syntax-table.el
@@ -44,6 +44,7 @@
;; This is added so entity names with underscores can be more easily
parsed as one word
(modify-syntax-entry ?_ "_" phps-mode/syntax-table)
+
;; (modify-syntax-entry ?_ "w" phps-mode/syntax-table)
;; Comment styles are same as C++
diff --git a/phps-test-lexer.el b/phps-test-lexer.el
index f5f5f4f..50dcd56 100644
--- a/phps-test-lexer.el
+++ b/phps-test-lexer.el
@@ -38,7 +38,7 @@
(autoload 'phps-mode "phps-mode")
-(autoload 'phps-mode/lexer "phps-lexer")
+(autoload 'phps-mode/lexer-init "phps-lexer")
(require 'ert)
@@ -50,7 +50,6 @@
(goto-char 0)
;;,(message "\nTesting buffer:\n'%s'\n" source)
(phps-mode)
- (phps-mode/lexer-init)
,@body
(kill-buffer test-buffer)
))
@@ -66,10 +65,10 @@
"Run test for lexer."
(phps-mode/with-test-buffer
- "<?php\texit;\t?>"
+ "<?php\t$var=1; exit $var;\t?>"
(let* ((tokens (semantic-lex-buffer))
(string-tokens (phps-mode/token-stream-to-string tokens)))
- (should (equal string-tokens " T_OPEN_TAG T_EXIT ; ; T_CLOSE_TAG"))))
+ (should (equal string-tokens " T_OPEN_TAG T_VARIABLE = T_LNUMBER ; T_EXIT
T_VARIABLE ; ; T_CLOSE_TAG"))))
(phps-mode/with-test-buffer
"<?php\nexit;\n?>"
@@ -104,7 +103,6 @@
"<?php $var EXIT die function return yield from yield try catch finally
throw if elseif endif else while endwhile do for endfor foreach endforeach
declare enddeclare instanceof as switch endswitch case default break continue
goto echo print class interface trait extends implements :: \\ ... ?? new clone
var (int) (integer) (real) (double) (float) (string) (binary) (array) (object)
(boolean) (bool) (unset) eval include include_once require require_once
namespace use insteadof global is [...]
(let* ((tokens (semantic-lex-buffer))
(string-tokens (phps-mode/token-stream-to-string tokens)))
- ;; (message "Tokens %s" string-tokens)
(should (equal string-tokens " T_OPEN_TAG T_VARIABLE T_EXIT T_DIE
T_FUNCTION T_RETURN T_YIELD_FROM T_YIELD T_TRY T_CATCH T_FINALLY T_THROW T_IF
T_ELSEIF T_ENDIF T_ELSE T_WHILE T_ENDWHILE T_DO T_FOR T_ENDFOR T_FOREACH
T_ENDFOREACH T_DECLARE T_ENDDECLARE T_INSTANCEOF T_AS T_SWITCH T_ENDSWITCH
T_CASE T_DEFAULT T_BREAK T_CONTINUE T_GOTO T_ECHO T_PRINT T_CLASS T_INTERFACE
T_TRAIT T_EXTENDS T_IMPLEMENTS T_PAAMAYIM_NEKUDOTAYIM T_NS_SEPARATOR T_ELLIPSIS
T_COALESCE T_NEW T_CLONE T_VAR T_INT_ [...]
)
@@ -228,11 +226,11 @@
"Run test for lexer."
;; (message "-- Running all tests for lexer... --\n")
;; (setq debug-on-error t)
- (phps-mode/test-lexer--script-boundaries)
+ ;; (phps-mode/test-lexer--script-boundaries)
(phps-mode/test-lexer--simple-tokens)
- (phps-mode/test-lexer--complex-tokens)
- (phps-mode/test-lexer--namespaces)
- (phps-mode/test-lexer--errors)
+ ;; (phps-mode/test-lexer--complex-tokens)
+ ;; (phps-mode/test-lexer--namespaces)
+ ;; (phps-mode/test-lexer--errors)
;; (message "\n-- Ran all tests for lexer. --")
)
- [elpa] branch externals/phps-mode created (now f5c2072), Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 7d0cd36 002/405: Updated goals, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode dd8d800 004/405: Using coloring overlay for comments as well, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode c64b3b4 008/405: More work on lexer tests,
Stefan Monnier <=
- [elpa] externals/phps-mode a724438 010/405: Handled lexing with empty single and double quote string, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 5a6a96b 012/405: Added another test, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode b3a6308 015/405: Added hook for resetting lexer variables, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode ce656a5 006/405: More general cleaning up, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode f3205d5 011/405: Fixed lexing of basic tokens, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 31ca9d5 007/405: More cleaning up, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 79040dc 005/405: Some cleaning up, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 394f7ae 017/405: Fixed issue with empty strings before non-empty strings, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 41c4fbb 009/405: Lexer unit tests now working, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode be078dc 020/405: Updated readme, Stefan Monnier, 2019/07/13