[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. --"))
- [elpa] externals/phps-mode 3565c7efb3 125/212: Fixed byte-compilation warnings for indent file, (continued)
- [elpa] externals/phps-mode 3565c7efb3 125/212: Fixed byte-compilation warnings for indent file, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode a8097b5b5e 147/212: Improved indentation on line after equal operator in if condition list, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode dece7f242e 160/212: Added more failing indentation tests, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode a530988fe0 134/212: Added more failing indent tests, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 8c1f529f87 145/212: Passing indent for line after ending of statement / expression with trailing closing bracket, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode d7aa22d251 146/212: Added two new failing tests for indentation, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode c453932f32 139/212: Added TODO item, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 8374026917 166/212: Improved indentation on lines starting with a closing square bracket, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 2afb7dc87a 002/212: Generating basic imenu-index via parser SDT, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 41b1566c40 010/212: Imenu generation via parser SDT passing more tests, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 8f9870fb9b 013/212: Parser SDT does not use global variables,
Christian Johansson <=
- [elpa] externals/phps-mode 4753734b0a 006/212: Moved syntax coloring to separate file, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode d037aa09bc 023/212: Added bookkeeping via parser SDT foreach ($x as $y) {}, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 3d54b6ff01 022/212: Passed another test for bookkeeping generated via parser SDT, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 442ad93cb2 018/212: Fix for function parameter formatting in AST, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 2a4d5dea37 019/212: Passed bookkeeping of function arguments, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode c29e35fea2 021/212: More work on bookkeeping, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 0daaa97f8d 025/212: SDT for for() loop started, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode fa3681141b 027/212: Passed test for bookkeeping of conditional assignment via parser SDT, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode fc4c763d68 030/212: Added SDT for class properties, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode f7c261cee1 032/212: Generate parser command now compatible with latest emacs-parser-generator, Christian Johansson, 2022/01/26