emacs-elpa-diffs
[Top][All Lists]
Advanced

[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. --")
   )
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]