branch: externals/phps-mode commit 7a0eecdbfba7e5412cefa08b40d21adf1f179be2 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
First test passing for parser --- phps-mode-parser.el | 32 +++++++++++++++++++++++++++++++- test/phps-mode-test-parser.el | 18 +++++++++--------- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/phps-mode-parser.el b/phps-mode-parser.el index f059b10..2471a8c 100644 --- a/phps-mode-parser.el +++ b/phps-mode-parser.el @@ -62,7 +62,37 @@ (defconst phps-mode-parser-lex-analyzer--function - (lambda (index) (save-current-buffer (set-buffer "*phps-mode-lex-analyzer*") (if (= (point) index) nil (goto-char index)) (message "Index: %S" index) (phps-mode-lexer--re2c) (if (boundp 'phps-mode-lexer--generated-new-tokens) (let ((first (car (nreverse phps-mode-lexer--generated-new-tokens)))) (when (or (equal (car first) 'T_OPEN_TAG) (equal (car first) 'T_OPEN_TAG_WITH_ECHO))(message "Skipping token: %S.. Going to %S" first (cdr (cdr first)))(goto-char (cdr (cdr first)))(setq phps-mo [...] + (lambda (index) + (save-current-buffer + (set-buffer "*phps-mode-lex-analyzer*") + (unless (= (point) index) + (goto-char index)) + + (when (< index (point-max)) + (phps-mode-lexer--re2c) + (let ((first (car (nreverse phps-mode-lexer--generated-new-tokens)))) + + (when (and + (not first) + (not (equal index semantic-lex-end-point))) + (setq + phps-mode-parser-lex-analyzer--index + semantic-lex-end-point) + (setq + first + (funcall phps-mode-parser-lex-analyzer--function phps-mode-parser-lex-analyzer--index))) + + (when (or + (equal (car first) 'T_OPEN_TAG) + (equal (car first) 'T_OPEN_TAG_WITH_ECHO)) + (setq + phps-mode-parser-lex-analyzer--index + (cdr (cdr first))) + (setq + first + (funcall phps-mode-parser-lex-analyzer--function phps-mode-parser-lex-analyzer--index))) + + first)))) "The lex-analyzer function.") (defconst diff --git a/test/phps-mode-test-parser.el b/test/phps-mode-test-parser.el index f3ce29a..dc3f65a 100644 --- a/test/phps-mode-test-parser.el +++ b/test/phps-mode-test-parser.el @@ -38,25 +38,25 @@ (message "Testing buffer '%S' with buffer-contents:\n%S\n" name (buffer-substring-no-properties (point-min) (point-max))) ;; Reset lexer - (setq + (setq-local phps-mode-lexer--generated-tokens nil) - (setq + (setq-local phps-mode-lexer--state 'ST_INITIAL) - (setq + (setq-local phps-mode-lexer--states nil) - (setq + (setq-local phps-mode-lexer--state-stack nil) - (setq + (setq-local phps-mode-lexer--heredoc-label nil) - (setq + (setq-local phps-mode-lexer--heredoc-label-stack nil) - (setq + (setq-local phps-mode-lexer--nest-location-stack nil) @@ -68,14 +68,14 @@ "Run test for lexer." (message "-- Running all tests for parser... --\n") + ;; TODO Verify parse below (phps-mode-test-parser--buffer-contentes "<?php echo 'hello';" "Basic echo test" (lambda() - (message "was here") (should (equal - t + '(80 459 466 411 333 332 154 102 79) (phps-mode-parser-parse))))) (message "\n-- Ran all tests for parser. --"))