[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode c7e308a13f 024/212: Added SDT foreach($x as $
From: |
Christian Johansson |
Subject: |
[elpa] externals/phps-mode c7e308a13f 024/212: Added SDT foreach($x as $key => $value) |
Date: |
Wed, 26 Jan 2022 01:50:17 -0500 (EST) |
branch: externals/phps-mode
commit c7e308a13f39edaa0f45094aedc947fc1c45b31b
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Added SDT foreach($x as $key => $value)
---
phps-mode-ast.el | 65 +++++++++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 57 insertions(+), 8 deletions(-)
diff --git a/phps-mode-ast.el b/phps-mode-ast.el
index 883c4d18b6..2110d3aa36 100644
--- a/phps-mode-ast.el
+++ b/phps-mode-ast.el
@@ -171,13 +171,32 @@
'foreach
'expression
(nth 2 args)
- 'as
+ 'value
(nth 4 args)
'children
(nth 6 args))))
ast-object))
phps-mode-parser--table-translations)
+;; 157: statement -> (T_FOREACH "(" expr T_AS foreach_variable T_DOUBLE_ARROW
foreach_variable ")" foreach_statement)
+(puthash
+ 157
+ (lambda(args _terminals)
+ (let ((ast-object
+ (list
+ 'ast-type
+ 'foreach
+ 'expression
+ (nth 2 args)
+ 'key
+ (nth 4 args)
+ 'value
+ (nth 6 args)
+ 'children
+ (nth 8 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
@@ -781,16 +800,45 @@
function
namespace)
condition)
+ bookkeeping-stack)))
+ (let ((children (reverse (plist-get item 'children))))
+ (dolist (child children)
+ (push
+ (list
+ (list
+ class
+ function
+ namespace)
+ child)
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))))
+ ;; Optional key
+ (when-let ((key (plist-get item 'key)))
+ (let ((id (format
+ "%s id %s"
+ variable-namespace
+ (plist-get key 'name)))
+ (object (list
+ (plist-get key 'start)
+ (plist-get key 'end))))
+ (puthash
+ id
+ 1
+ bookkeeping)
+ (puthash
+ object
+ 1
+ bookkeeping)))
+
+ (let* ((value (plist-get item 'value))
+ (id (format
+ "%s id %s"
+ variable-namespace
+ (plist-get value 'name)))
+ (object (list
+ (plist-get value 'start)
+ (plist-get value 'end))))
(puthash
id
1
@@ -799,6 +847,7 @@
object
1
bookkeeping))
+
(let ((children (reverse (plist-get item 'children))))
(dolist (child children)
(push
- [elpa] externals/phps-mode updated (3734d56372 -> 5ae4886f14), Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 968f7b067c 012/212: Moved all imenu tests to AST tests, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 26b8d5cc97 020/212: Added bookkeeping support for super-globals, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 52b5692d91 017/212: Passed second test for bookkeeping via parser SDT, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 8115521ef8 011/212: Imenu-generation via parser SDT passing more tests, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 040b2564b0 031/212: Some work on AST bookkeeping, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 16c15c9ef4 004/212: Added type check to imenu-index generation, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 35c9b0fd1c 003/212: Imenu generated correctly for one case, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 8652f7162e 014/212: Started on bookkeeping generation via parser SDT, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode a0d2abc2ee 009/212: More working on imenu generation via parser SDT, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode c7e308a13f 024/212: Added SDT foreach($x as $key => $value),
Christian Johansson <=
- [elpa] externals/phps-mode d44e79ad03 028/212: More work on grammar SDT, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode f79b6118a4 087/212: Optimization of string indentation function, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode b94ee63396 089/212: More work on indentation, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode d8503c70bb 106/212: Passing indent tests for switch case, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 4f20de353e 109/212: Passed indent tests for PSR-2, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 6655248e86 105/212: Passing indent test for regular switch statement, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 4e5be4f8f8 112/212: More indentation work for mixed PHP/HTML content, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode ff62626f48 110/212: Passing indent test for square bracket array, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 50d006852c 129/212: Fixed issue with indent being dependent on position of point on current line, Christian Johansson, 2022/01/26
- [elpa] externals/phps-mode 3de8eff9f1 114/212: More wrestling with indentation, Christian Johansson, 2022/01/26