[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode 2a4d5dea37 019/212: Passed bookkeeping of fun
From: |
Christian Johansson |
Subject: |
[elpa] externals/phps-mode 2a4d5dea37 019/212: Passed bookkeeping of function arguments |
Date: |
Wed, 26 Jan 2022 01:50:15 -0500 (EST) |
branch: externals/phps-mode
commit 2a4d5dea376ccca75970ee16704bddee8d9b490b
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Passed bookkeeping of function arguments
---
phps-mode-ast.el | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 67 insertions(+), 7 deletions(-)
diff --git a/phps-mode-ast.el b/phps-mode-ast.el
index ebdac2ac5e..cfe794c1d7 100644
--- a/phps-mode-ast.el
+++ b/phps-mode-ast.el
@@ -270,7 +270,7 @@
;; 241: parameter -> (optional_visibility_modifier
optional_type_without_static is_reference is_variadic T_VARIABLE
backup_doc_comment)
(puthash
241
- (lambda(args _terminals)
+ (lambda(args terminals)
;; (message "parameter: %S %S" args _terminals)
(let ((ast-object
(list
@@ -283,7 +283,11 @@
'is-variadic
(nth 3 args)
'name
- (nth 4 args))))
+ (nth 4 args)
+ 'start
+ (car (cdr (nth 4 terminals)))
+ 'end
+ (cdr (cdr (nth 4 terminals))))))
ast-object))
phps-mode-parser--table-translations)
@@ -480,12 +484,31 @@
;; TODO Build bookkeeping here
(let ((bookkeeping-stack ast))
(while bookkeeping-stack
- (let ((item (pop bookkeeping-stack)))
+ (let ((item-raw (pop bookkeeping-stack))
+ (item)
+ (namespace))
+ (if (stringp (car item-raw))
+ (progn
+ (setq
+ namespace
+ (car item-raw))
+ (setq
+ item
+ (car (cdr item-raw))))
+ (setq
+ namespace
+ "")
+ (setq
+ item
+ item-raw))
(let ((type (plist-get item 'type)))
(cond
((equal type 'variable)
- (let ((id (format " id %s" (plist-get item 'name)))
+ (let ((id (format
+ "%s id %s"
+ namespace
+ (plist-get item 'name)))
(object (list
(plist-get item 'start)
(plist-get item 'end)))
@@ -499,20 +522,57 @@
defined-p
bookkeeping)))
+ ((equal type 'function)
+ (let ((subnamespace
+ (format
+ "%s function %s"
+ namespace
+ (plist-get item 'name))))
+ (when-let ((parameters (reverse (plist-get item 'parameters))))
+ (dolist (parameter parameters)
+ (let ((id (format
+ "%s id %s"
+ subnamespace
+ (plist-get parameter 'name)))
+ (object (list
+ (plist-get parameter 'start)
+ (plist-get parameter 'end))))
+ (puthash
+ id
+ 1
+ bookkeeping)
+ (puthash
+ object
+ 1
+ bookkeeping))))
+
+ (when-let ((body (reverse (plist-get item 'body))))
+ (dolist (body-item body)
+ (push
+ (list
+ subnamespace
+ body-item)
+ bookkeeping-stack)))))
+
((equal type 'if)
(let ((condition (plist-get item 'condition)))
(when (equal (plist-get condition 'type) 'variable)
(push
- condition
+ (list
+ namespace
+ condition)
bookkeeping-stack))))
((equal type 'assign-variable)
- (let ((id (format " id %s" (plist-get (plist-get item 'key)
'name)))
+ (let ((id (format
+ "%s id %s"
+ namespace
+ (plist-get (plist-get item 'key) 'name)))
(object (list
(plist-get (plist-get item 'key) 'start)
(plist-get (plist-get item 'key) 'end)))
(defined 1))
- (message "id: %S from %S" id item)
+ ;; (message "id: %S from %S" id item)
(when-let ((predefined (gethash id bookkeeping)))
(setq
defined
- [elpa] externals/phps-mode d7aa22d251 146/212: Added two new failing tests for indentation, (continued)
- [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, 2022/01/26
- [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 <=
- [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
- [elpa] externals/phps-mode f82c9a377d 033/212: Re-generated parser to verify automation functionality, improved automation documentation, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode f858060096 034/212: More work on bookkeeping generated from parser SDT, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode c83b1c264e 060/212: Fixed SDT for isset_variables, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 8fa61fa1f2 063/212: Passing bookkeeping of interface method arguments, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 7a636ccd28 078/212: Removed obsolete file parser-grammar-macro.el, Christian Johansson, 2022/01/26