branch: externals/phps-mode commit d037aa09bc65120ce08a4145bda2e1e0f18dabb2 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Added bookkeeping via parser SDT foreach ($x as $y) {} --- phps-mode-ast.el | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/phps-mode-ast.el b/phps-mode-ast.el index 1774c69227..883c4d18b6 100644 --- a/phps-mode-ast.el +++ b/phps-mode-ast.el @@ -161,6 +161,23 @@ (car args)) phps-mode-parser--table-translations) +;; statement -> (T_FOREACH "(" expr T_AS foreach_variable ")" foreach_statement) +(puthash + 156 + (lambda(args _terminals) + (let ((ast-object + (list + 'ast-type + 'foreach + 'expression + (nth 2 args) + 'as + (nth 4 args) + 'children + (nth 6 args)))) + ast-object)) + phps-mode-parser--table-translations) + ;; function_declaration_statement -> (function returns_ref T_STRING backup_doc_comment "(" parameter_list ")" return_type backup_fn_flags "{" inner_statement_list "}" backup_fn_flags) (puthash 174 @@ -766,6 +783,33 @@ condition) bookkeeping-stack)))) + ((equal type 'foreach) + (let ((id (format + "%s id %s" + variable-namespace + (plist-get (plist-get item 'as) 'name))) + (object (list + (plist-get (plist-get item 'as) 'start) + (plist-get (plist-get item 'as) 'end)))) + (puthash + id + 1 + bookkeeping) + (puthash + object + 1 + bookkeeping)) + (let ((children (reverse (plist-get item 'children)))) + (dolist (child children) + (push + (list + (list + class + function + namespace) + child) + bookkeeping-stack)))) + ((equal type 'assign-variable) (let ((id (format "%s id %s"