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

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

[elpa] externals/phps-mode 8f9870fb9b 013/212: Parser SDT does not use g


From: Christian Johansson
Subject: [elpa] externals/phps-mode 8f9870fb9b 013/212: Parser SDT does not use global variables
Date: Wed, 26 Jan 2022 01:50:12 -0500 (EST)

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

    Parser SDT does not use global variables
---
 phps-mode-ast.el           | 76 ++++++++++++++++++++++++----------------------
 test/phps-mode-test-ast.el | 11 ++++++-
 2 files changed, 49 insertions(+), 38 deletions(-)

diff --git a/phps-mode-ast.el b/phps-mode-ast.el
index 2ff5a1700f..dcbe8cce64 100644
--- a/phps-mode-ast.el
+++ b/phps-mode-ast.el
@@ -31,24 +31,20 @@
 
 
 (defvar-local
-  phps-mode-ast--current-namespace
+  phps-mode-ast--bookkeeping
   nil
-  "Current namespace for AST.")
+  "Bookkeeping for current buffer.")
 
 (defvar-local
-  phps-mode-ast--current-namespace-children
+  phps-mode-ast--imenu
   nil
-  "Children for current namespace for AST.")
+  "Imenu for current buffer.")
 
 (defvar-local
   phps-mode-ast--tree
   nil
   "Tree for current buffer.")
 
-(defvar-local
-  phps-mode-ast--imenu
-  nil
-  "Imenu for current buffer.")
 
 ;; top_statement_list -> (top_statement_list top_statement)
 (puthash
@@ -82,10 +78,7 @@
      ;; (message "Namespace %S" ast-object)
      ;; (message "args: %S" args)
      ;; (message "terminals: %S" terminals)
-     (setq
-      phps-mode-ast--current-namespace
-      ast-object)
-     nil))
+     ast-object))
  phps-mode-parser--table-translations)
 
 ;; top_statement -> (T_NAMESPACE namespace_declaration_name "{" 
top_statement_list "}")
@@ -233,13 +226,10 @@
 
 (defun phps-mode-ast-generate ()
   "Generate AST for current buffer."
-  (setq
-   phps-mode-ast--current-namespace
-   nil)
-  (setq
-   phps-mode-ast--tree
-   nil)
-  (let ((translation (phps-mode-parser-translate)))
+  (let ((translation (phps-mode-parser-translate))
+        (namespace)
+        (namespace-children)
+        (ast))
     ;; (message "translation:\n%S\n\n" translation)
     (when translation
       (dolist (item translation)
@@ -247,43 +237,52 @@
           (cond
 
            ((plist-get item 'type)
-            (if phps-mode-ast--current-namespace
+            (if (and
+                 (not namespace)
+                 (equal (plist-get item 'type) 'namespace)
+                 (equal (plist-get item 'end) 'max))
+                (progn
+                  ;; (message "Found global namespace: %S" item)
+                  (setq
+                   namespace
+                   item))
+              (if namespace
+                  (push
+                   item
+                   namespace-children)
                 (push
                  item
-                 phps-mode-ast--current-namespace-children)
-              (push
-               item
-               phps-mode-ast--tree)))
+                 ast))))
 
            ((listp (car item))
             (dolist (sub-item item)
               (when (and
                      (listp sub-item)
                      (plist-get sub-item 'type))
-                (if phps-mode-ast--current-namespace
+                (if namespace
                     (push
                      sub-item
-                     phps-mode-ast--current-namespace-children)
+                     namespace-children)
                   (push
                    sub-item
-                   phps-mode-ast--tree)))))))))
+                   ast)))))))))
 
-    (when phps-mode-ast--current-namespace
+    (when namespace
       (plist-put
-       phps-mode-ast--current-namespace
+       namespace
        'children
-       (reverse phps-mode-ast--current-namespace-children))
+       (reverse namespace-children))
       (push
-       phps-mode-ast--current-namespace
-       phps-mode-ast--tree))
+       namespace
+       ast))
     (setq
-     phps-mode-ast--tree
-     (reverse phps-mode-ast--tree))
+     ast
+     (reverse ast))
 
-    ;; (message "AST:\n%S\n\n" phps-mode-ast--tree)
+    ;; (message "AST:\n%S\n\n" ast)
 
     (let ((imenu-index))
-      (dolist (item phps-mode-ast--tree)
+      (dolist (item ast)
         (let ((children (plist-get item 'children))
               (item-type (plist-get item 'type))
               (parent))
@@ -330,7 +329,10 @@
        (reverse imenu-index)))
 
     ;; (message "imenu:\n%S\n\n" phps-mode-ast--imenu)
-    ))
+
+    (setq
+     phps-mode-ast--tree
+     ast)))
 
 
 (provide 'phps-mode-ast)
diff --git a/test/phps-mode-test-ast.el b/test/phps-mode-test-ast.el
index 1a4e62a08a..e1d50acb2d 100644
--- a/test/phps-mode-test-ast.el
+++ b/test/phps-mode-test-ast.el
@@ -20,7 +20,7 @@
 
 ;;; Commentary:
 
-;; Run from terminal make test-parser
+;; Run from terminal make test-ast
 
 
 ;;; Code:
@@ -211,11 +211,20 @@
 
   (message "\n-- Ran tests for imenu generation. --"))
 
+(defun phps-mode-test-ast-bookkeeping ()
+  "Run test for bookkeeping generation."
+  (message "-- Running tests for bookkeeping generation... --\n")
+
+  
+
+  (message "\n-- Ran tests for bookkeeping generation. --"))
+
 (defun phps-mode-test-ast ()
   "Run test for ast."
   (message "-- Running all tests for ast... --\n")
 
   (phps-mode-test-ast-imenu)
+  (phps-mode-test-ast-bookkeeping)
 
   (message "\n-- Ran all tests for ast. --"))
 



reply via email to

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