branch: externals/phps-mode commit faf6632911fd72b84a83e388aba61434c36b441b Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Improved SDT for more infix operators --- phps-mode-ast-bookkeeping.el | 18 +++-- phps-mode-parser-sdt.el | 156 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 169 insertions(+), 5 deletions(-) diff --git a/phps-mode-ast-bookkeeping.el b/phps-mode-ast-bookkeeping.el index 0484eed3cd..79e83e00f0 100644 --- a/phps-mode-ast-bookkeeping.el +++ b/phps-mode-ast-bookkeeping.el @@ -602,13 +602,23 @@ ;; Infix expressions ((or - (equal type 'addition-expression) - (equal type 'boolean-and-expression) (equal type 'boolean-or-expression) - (equal type 'logical-and-expression) + (equal type 'boolean-and-expression) (equal type 'logical-or-expression) + (equal type 'logical-and-expression) (equal type 'logical-xor-expression) - (equal type 'concat-expression)) + (equal type 'bitwise-or-expression) + (equal type 'bitwise-and-expression) + (equal type 'bitwise-xor-expression) + (equal type 'concat-expression) + (equal type 'addition-expression) + (equal type 'subtraction-expression) + (equal type 'multiplication-expression) + (equal type 'exponentiation-expression) + (equal type 'division-expression) + (equal type 'modulo-expression) + (equal type 'bitwise-shift-left-expression) + (equal type 'bitwise-shift-right-expression)) (when-let ((bs (reverse (plist-get item 'b)))) (dolist (b bs) (push `(,scope ,b) bookkeeping-stack))) diff --git a/phps-mode-parser-sdt.el b/phps-mode-parser-sdt.el index b72207a1d9..2ee5cae23f 100644 --- a/phps-mode-parser-sdt.el +++ b/phps-mode-parser-sdt.el @@ -1414,6 +1414,62 @@ )) phps-mode-parser--table-translations) +;; expr -> (expr "|" expr) +(puthash + 384 + (lambda(args _terminals) + `( + ast-type + bitwise-or-expression + a + ,(phps-mode-parser-sdt--get-list-of-object (nth 0 args)) + b + ,(phps-mode-parser-sdt--get-list-of-object (nth 2 args)) + )) + phps-mode-parser--table-translations) + +;; expr -> (expr T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG expr) +(puthash + 385 + (lambda(args _terminals) + `( + ast-type + bitwise-and-expression + a + ,(phps-mode-parser-sdt--get-list-of-object (nth 0 args)) + b + ,(phps-mode-parser-sdt--get-list-of-object (nth 2 args)) + )) + phps-mode-parser--table-translations) + +;; expr -> (expr T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG expr) +(puthash + 386 + (lambda(args _terminals) + `( + ast-type + bitwise-and-expression + a + ,(phps-mode-parser-sdt--get-list-of-object (nth 0 args)) + b + ,(phps-mode-parser-sdt--get-list-of-object (nth 2 args)) + )) + phps-mode-parser--table-translations) + +;; expr -> (expr "^" expr) +(puthash + 387 + (lambda(args _terminals) + `( + ast-type + bitwise-xor-expression + a + ,(phps-mode-parser-sdt--get-list-of-object (nth 0 args)) + b + ,(phps-mode-parser-sdt--get-list-of-object (nth 2 args)) + )) + phps-mode-parser--table-translations) + ;; expr -> (expr "." expr) (puthash 388 @@ -1430,7 +1486,7 @@ ;; expr -> (expr "+" expr) (puthash - 397 + 389 (lambda(args _terminals) `( ast-type @@ -1442,6 +1498,104 @@ )) phps-mode-parser--table-translations) +;; expr -> (expr "-" expr) +(puthash + 390 + (lambda(args _terminals) + `( + ast-type + subtraction-expression + a + ,(phps-mode-parser-sdt--get-list-of-object (nth 0 args)) + b + ,(phps-mode-parser-sdt--get-list-of-object (nth 2 args)) + )) + phps-mode-parser--table-translations) + +;; expr -> (expr "*" expr) +(puthash + 391 + (lambda(args _terminals) + `( + ast-type + multiplication-expression + a + ,(phps-mode-parser-sdt--get-list-of-object (nth 0 args)) + b + ,(phps-mode-parser-sdt--get-list-of-object (nth 2 args)) + )) + phps-mode-parser--table-translations) + +;; expr -> (expr T_POW expr) +(puthash + 392 + (lambda(args _terminals) + `( + ast-type + exponentiation-expression + a + ,(phps-mode-parser-sdt--get-list-of-object (nth 0 args)) + b + ,(phps-mode-parser-sdt--get-list-of-object (nth 2 args)) + )) + phps-mode-parser--table-translations) + +;; expr -> (expr "/" expr) +(puthash + 393 + (lambda(args _terminals) + `( + ast-type + division-expression + a + ,(phps-mode-parser-sdt--get-list-of-object (nth 0 args)) + b + ,(phps-mode-parser-sdt--get-list-of-object (nth 2 args)) + )) + phps-mode-parser--table-translations) + +;; expr -> (expr "%" expr) +(puthash + 394 + (lambda(args _terminals) + `( + ast-type + modulo-expression + a + ,(phps-mode-parser-sdt--get-list-of-object (nth 0 args)) + b + ,(phps-mode-parser-sdt--get-list-of-object (nth 2 args)) + )) + phps-mode-parser--table-translations) + +;; expr -> (expr T_SL expr) +(puthash + 395 + (lambda(args _terminals) + `( + ast-type + bitwise-shift-left-expression + a + ,(phps-mode-parser-sdt--get-list-of-object (nth 0 args)) + b + ,(phps-mode-parser-sdt--get-list-of-object (nth 2 args)) + )) + phps-mode-parser--table-translations) + +;; expr -> (expr T_SR expr) +(puthash + 396 + (lambda(args _terminals) + `( + ast-type + bitwise-shift-right-expression + a + ,(phps-mode-parser-sdt--get-list-of-object (nth 0 args)) + b + ,(phps-mode-parser-sdt--get-list-of-object (nth 2 args)) + )) + phps-mode-parser--table-translations) + ;; expr -> ("!" expr) (puthash 399