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

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

[elpa] externals/phps-mode ab56c99 13/96: More work on debugging parser-


From: Christian Johansson
Subject: [elpa] externals/phps-mode ab56c99 13/96: More work on debugging parser-lexer
Date: Fri, 29 Oct 2021 11:14:31 -0400 (EDT)

branch: externals/phps-mode
commit ab56c9994176ce9a2686a3184b4e665a42c39f6a
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>

    More work on debugging parser-lexer
---
 phps-mode-parser.el           | 67 +++----------------------------------------
 test/phps-mode-test-parser.el | 15 ++++++----
 2 files changed, 13 insertions(+), 69 deletions(-)

diff --git a/phps-mode-parser.el b/phps-mode-parser.el
index 58a1eb7..de5abb5 100644
--- a/phps-mode-parser.el
+++ b/phps-mode-parser.el
@@ -62,64 +62,7 @@
 
 (defconst
   phps-mode-parser-lex-analyzer--function
-  (lambda (index)
-    (save-current-buffer
-      (set-buffer "*phps-mode-lex-analyzer*")
-      (unless (= (point) index)
-        (goto-char index))
-
-      (when (< index (point-max))
-
-        ;; Only lex if we have not lexed this position recently
-        (unless (and
-                 phps-mode-lexer--generated-new-tokens-index
-                 (=
-                  phps-mode-lexer--generated-new-tokens-index
-                  index))
-          (phps-mode-lexer--re2c))
-
-        (let ((first (car (nreverse phps-mode-lexer--generated-new-tokens))))
-
-          (cond
-
-           ;; Lexer has moved forward - lex again
-           ((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)))
-
-           ;; Skip open and close tag
-           ((or
-             (equal (car first) 'T_OPEN_TAG)
-             (equal (car first) 'T_CLOSE_TAG))
-            (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)))
-
-           ;; Open tag with echo is replaced with echo
-           ((equal (car first) 'T_OPEN_TAG_WITH_ECHO)
-            (setf
-             (car first)
-             'T_ECHO)
-            (setq
-             phps-mode-parser-lex-analyzer--index
-             (cdr (cdr first))))
-           
-           )
-
-          first))))
+  (lambda (index) (save-current-buffer (set-buffer "*phps-mode-lex-analyzer*") 
(if (= (point) index) nil (goto-char index)) (if (< index (point-max)) (progn 
(if (and phps-mode-lexer--generated-new-tokens-index (= 
phps-mode-lexer--generated-new-tokens-index index)) nil 
(phps-mode-lexer--re2c)) (let ((first (car (reverse 
phps-mode-lexer--generated-new-tokens)))) (cond ((and (not first) (not (equal 
index semantic-lex-end-point))) (setq phps-mode-parser-lex-analyzer--index 
semantic-lex-end-p [...]
   "The lex-analyzer function.")
 
 (defconst
@@ -226,7 +169,7 @@
           "Lex-analyze failed to peek next look-ahead at %s, error: %s"
           index
           error))))
-    (nreverse look-ahead)))
+    (reverse look-ahead)))
 
 (defun
   phps-mode-parser-lex-analyzer--pop-token ()
@@ -461,11 +404,8 @@
                   ;; (c) If f(u) = error, we halt parsing (and, in practice
                   ;; transfer to an error recovery routine).
                   (error
-                   (format
                     "Invalid syntax! Expected one of %s found %s at %s"
-                    possible-look-aheads
-                    look-ahead
-                    phps-mode-parser-lex-analyzer--index)
+
                    possible-look-aheads
                    look-ahead
                    phps-mode-parser-lex-analyzer--index))
@@ -722,6 +662,7 @@
          translation
          translation-symbol-table-list
          history)))))
+
 (defun phps-mode-parser-parse
     (&optional
      input-tape-index
diff --git a/test/phps-mode-test-parser.el b/test/phps-mode-test-parser.el
index f219182..5ed4db0 100644
--- a/test/phps-mode-test-parser.el
+++ b/test/phps-mode-test-parser.el
@@ -30,12 +30,15 @@
 (require 'phps-mode-lexer)
 (require 'phps-mode-parser)
 
-(defun phps-mode-test-parser--buffer-contentes (buffer-contents name logic)
+(defun phps-mode-test-parser--buffer-contents (buffer-contents name logic)
   (generate-new-buffer "*phps-mode-lex-analyzer*")
   (with-current-buffer "*phps-mode-lex-analyzer*"
     (kill-region (point-min) (point-max))
     (insert buffer-contents)
-    (message "Testing buffer '%S' with buffer-contents:\n%S\n" name 
(buffer-substring-no-properties (point-min) (point-max)))
+    (message
+     "Testing buffer %S with buffer-contents:\n%S\n"
+     name
+     (buffer-substring-no-properties (point-min) (point-max)))
 
     ;; Reset lexer
     (setq-local
@@ -69,7 +72,7 @@
   (message "-- Running all tests for parser... --\n")
 
   ;; TODO Verify parse below
-  (phps-mode-test-parser--buffer-contentes
+  (phps-mode-test-parser--buffer-contents
    "<?php echo 'hello';"
    "Basic echo test"
    (lambda()
@@ -78,16 +81,16 @@
        '(80 459 466 411 333 332 154 102 79)
        (phps-mode-parser-parse)))))
 
-(phps-mode-test-parser--buffer-contentes
+  (phps-mode-test-parser--buffer-contents
    "<? echo 'hello'; ?>"
-   "Basic echo test 2 with short open tag"
+   "Basic echo test 2 with short open tag and close tag"
    (lambda()
      (should
       (equal
        '(80 459 466 411 333 332 154 102 79)
        (phps-mode-parser-parse)))))
 
-  (phps-mode-test-parser--buffer-contentes
+  (phps-mode-test-parser--buffer-contents
    "<?= 'hello';"
    "Basic echo test 3 with open tag with echo"
    (lambda()



reply via email to

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