branch: externals/phps-mode
commit 7a0eecdbfba7e5412cefa08b40d21adf1f179be2
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>
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. --"))