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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/phps-mode 7a0eecd 07/96: First test passing for parser


From: Christian Johansson
Subject: [elpa] externals/phps-mode 7a0eecd 07/96: First test passing for parser
Date: Fri, 29 Oct 2021 11:14:28 -0400 (EDT)

branch: externals/phps-mode
commit 7a0eecdbfba7e5412cefa08b40d21adf1f179be2
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@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. --"))



reply via email to

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