emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/phps-mode f24b790593 25/27: Resolved merge conflicts


From: Christian Johansson
Subject: [elpa] externals/phps-mode f24b790593 25/27: Resolved merge conflicts
Date: Sat, 4 Mar 2023 03:24:59 -0500 (EST)

branch: externals/phps-mode
commit f24b790593b84cd5ffe56afb00d315d5f889f68c
Merge: 5c0414fa94 81a9f22780
Author: christian <christian@cvj.se>
Commit: christian <christian@cvj.se>

    Resolved merge conflicts
---
 Makefile                                 |    6 +-
 admin/phps-mode-automation.el            |   20 +-
 phps-mode-automation-parser-generator.el |    6 +-
 phps-mode-lexer.el                       |   18 +-
 phps-mode-parser-sdt.el                  | 2507 +++++++++++++++---------------
 phps-mode-parser.el                      |   26 +-
 phps-mode-test.el                        |   14 +
 test/phps-mode-test-ast.el               |   12 +-
 test/phps-mode-test-parser.el            |  138 +-
 9 files changed, 1355 insertions(+), 1392 deletions(-)

diff --git a/Makefile b/Makefile
index 6a7b376b34..db2532ddbf 100644
--- a/Makefile
+++ b/Makefile
@@ -10,7 +10,11 @@ clean:
 
 .PHONY: parser
 parser:
-       rm phps-mode-automation-grammar.elc; $(EMACS_CMD) -L 
~/.emacs.d/emacs-parser-generator/ -l phps-mode-lexer.el -l 
admin/phps-mode-automation.el -l resume.el -eval "(progn (require 
'parser-generator-lr-export)(setq debug-on-signal t)(setq debug-on-error 
t)(phps-mode-automation))"
+       rm phps-mode-automation-grammar.elc; $(EMACS_CMD) -L 
~/.emacs.d/elpa/parser-generator-0.1.6/ -l phps-mode-lexer.el -l 
admin/phps-mode-automation.el -eval "(progn (require 
'parser-generator-lr-export)(setq debug-on-error t)(phps-mode-automation))"
+
+.PHONY: parser-resumed
+parser-resumed:
+       rm phps-mode-automation-grammar.elc; $(EMACS_CMD) -L 
~/.emacs.d/elpa/parser-generator-0.1.6/ -l phps-mode-lexer.el -l 
admin/phps-mode-automation.el -l resume.el -eval "(progn (require 
'parser-generator-lr-export)(setq debug-on-error t)(phps-mode-automation))"
 
 .PHONY: compile
 compile:
diff --git a/admin/phps-mode-automation.el b/admin/phps-mode-automation.el
index c2acc1fedc..4d1330c054 100644
--- a/admin/phps-mode-automation.el
+++ b/admin/phps-mode-automation.el
@@ -6,13 +6,12 @@
 ;;; Commentary:
 
 ;;; Uses a parser-generator library to convert LALR(1) YACC grammar into a 
Canonical LR(1) Parser
-
-;; This does not work if some variables are byte-compiled therefore we delete 
byte-compiled files in `make parser' command
-
-;; To resume use command: `make parser &> output.txt'
-;; and to extract Emacs-Lisp data to separate file run `cat output.txt | grep 
-F "-resume" - > resume.el'
-;; and then to resume parser-generation run
-;; `rm phps-mode-automation-grammar.elc; emacs -Q -batch -L . -L 
~/.emacs.d/emacs-parser-generator -l phps-mode-lexer.el -l 
admin/phps-mode-automation.el -eval "(progn (require 
'parser-generator-lr)(require 'parser-generator-lr-export))"  -eval 
"(phps-mode-automation)"'
+;;
+;; This does not work if some variables are byte-compiled therefore we delete 
byte-compiled files in `make parser &> output.txt' command, follow progress 
with `tail -f output.txt'
+;;
+;; If generation fails for some reason, to extract Emacs-Lisp data to a 
separate file run `cat output.txt | grep -F "-resume" - > resume.el'
+;; you might need to delete to two last lines of resume.el
+;; and then to resume use command: `make parser-resumed &> output.txt'
 
 
 ;;; Code:
@@ -26,11 +25,6 @@
   (if (fboundp 'parser-generator-lr-export-to-elisp)
       (progn
 
-        ;; 256 MB before garbage collection, seems to speed up generation
-        (setq
-         gc-cons-threshold
-         (* 1024 1024 256))
-
         (let* ((global-declaration
                 (phps-mode-automation-parser-generator--global-declaration))
                (attributes
@@ -213,7 +207,7 @@
           (switch-to-buffer "*PHP Parser*")
           (insert export)
           (message ";; export: %s" export)
-          (write-file parser-file-name) ;; NOTE Will cause Debugger 
entered--Lisp error: (void-variable vc-logentry-check-hook)
+          (write-file parser-file-name)
           (kill-buffer))
 
         (message ";; Automation completed"))
diff --git a/phps-mode-automation-parser-generator.el 
b/phps-mode-automation-parser-generator.el
index b4969f3602..82b5ebf916 100644
--- a/phps-mode-automation-parser-generator.el
+++ b/phps-mode-automation-parser-generator.el
@@ -56,18 +56,18 @@
 (defun phps-mode-automation-parser-generator--ensure-yacc-grammar-is-available 
()
   "If grammar is not available, download it."
   (let ((php-yacc-url
-         
"https://raw.githubusercontent.com/php/php-src/PHP-8.1/Zend/zend_language_parser.y";)
+         
"https://raw.githubusercontent.com/php/php-src/PHP-8.2/Zend/zend_language_parser.y";)
         (php-yacc-file
          (expand-file-name "zend_language_parser.y")))
 
     ;; Download YACC if not available (seems to now work in batch mode for 
some reason)
     (unless (file-exists-p php-yacc-file)
       (message
-       ";; Downloading PHP 8.1 YACC grammar.. since %S does not exists" 
php-yacc-file)
+       ";; Downloading PHP 8.2 YACC grammar.. since %S does not exists" 
php-yacc-file)
       (with-current-buffer (url-retrieve-synchronously php-yacc-url)
         (write-file php-yacc-file))
       (message
-       ";; Download of PHP 8.1 YACC grammar completed"))
+       ";; Download of PHP 8.2 YACC grammar completed"))
 
     (unless (file-exists-p php-yacc-file)
       (error "Missing PHP YACC grammar at %s!" php-yacc-file))))
diff --git a/phps-mode-lexer.el b/phps-mode-lexer.el
index d6f1900913..8016837b31 100644
--- a/phps-mode-lexer.el
+++ b/phps-mode-lexer.el
@@ -121,8 +121,7 @@
 ;; VARIABLES
 
 
-(defvar phps-mode-lexer--lambdas-by-state #s(hash-table size 65 test equal 
rehash-size 1.5 rehash-threshold 0.8125 data (ST_IN_SCRIPTING (((lambda nil 
(looking-at "exit")) (lambda nil (phps-mode-lexer--return-token-with-indent 
'T_EXIT))) ((lambda nil (looking-at "die")) (lambda nil 
(phps-mode-lexer--return-token-with-indent 'T_EXIT))) ((lambda nil (looking-at 
"fn")) (lambda nil (phps-mode-lexer--return-token-with-indent 'T_FN))) ((lambda 
nil (looking-at "function")) (lambda nil (phps-mod [...]
-
        ]*("))) (lambda nil (phps-mode-lexer--yyless (length "readonly")) 
(phps-mode-lexer--return-token-with-str 'T_STRING 0))) ((lambda nil (looking-at 
"unset")) (lambda nil (phps-mode-lexer--return-token-with-indent 'T_UNSET))) 
((lambda nil (looking-at "=>")) (lambda nil (phps-mode-lexer--return-token 
'T_DOUBLE_ARROW))) ((lambda nil (looking-at "list")) (lambda nil 
(phps-mode-lexer--return-token-with-indent 'T_LIST))) ((lambda nil (looking-at 
"array")) (lambda nil (phps-mode-lexer--return-tok [...]
+(defvar phps-mode-lexer--lambdas-by-state #s(hash-table size 65 test equal 
rehash-size 1.5 rehash-threshold 0.8125 data (ST_IN_SCRIPTING (((lambda nil 
(looking-at "exit")) (lambda nil (phps-mode-lexer--return-token-with-indent 
'T_EXIT))) ((lambda nil (looking-at "die")) (lambda nil 
(phps-mode-lexer--return-token-with-indent 'T_EXIT))) ((lambda nil (looking-at 
"fn")) (lambda nil (phps-mode-lexer--return-token-with-indent 'T_FN))) ((lambda 
nil (looking-at "function")) (lambda nil (phps-mod [...]
 ]*" "\\(\\$\\|\\.\\.\\.\\)"))) (lambda nil (phps-mode-lexer--yyless 1) 
(phps-mode-lexer--return-token 'T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG 
(match-beginning 0) (- (match-end 0) 1)))) ((lambda nil (looking-at "&")) 
(lambda nil (phps-mode-lexer--return-token 
'T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG))) ((lambda nil (looking-at (concat 
"\\(" "]" "\\|" ")" "\\)"))) (lambda nil 
(phps-mode-lexer--return-exit-nesting-token))) ((lambda nil (looking-at (concat 
"\\(" "\\[" "\\|" "(" "\\)"))) (la [...]
 [       ]*\\(" phps-mode-lexer--heredoc-label "\\)\\|\\$" 
phps-mode-lexer--label "\\|{\\$" phps-mode-lexer--label "\\|\\${" 
phps-mode-lexer--label "\\)") nil t))) (if string-start (let* ((start 
(match-beginning 0)) (end (match-end 0)) (data (match-string 0))) (cond 
((string-match-p (concat "
 [       ]*" phps-mode-lexer--heredoc-label) data) (setq start (match-beginning 
2)) (setq end (match-beginning 2)) (phps-mode-lexer--return-token-with-val 
'T_ENCAPSED_AND_WHITESPACE old-end start) (phps-mode-lexer--begin 
'ST_END_HEREDOC)) (t (phps-mode-lexer--return-token-with-val 
'T_ENCAPSED_AND_WHITESPACE old-end start)))) (progn (signal 'phps-lexer-error 
(list (format "Found no ending of heredoc starting at %d" old-start) 
old-start))))))))) ST_LOOKING_FOR_VARNAME (((lambda nil (looking-at ( [...]
@@ -695,6 +694,14 @@
    (looking-at "trait")
    (phps-mode-lexer--return-token-with-indent 'T_TRAIT))
 
+  ;; The enum keyword must be followed by whitespace and another identifier.
+  ;; This avoids the BC break of using enum in classes, namespaces, functions 
and constants.
+  (phps-mode-lexer--match-macro
+   ST_IN_SCRIPTING
+   (looking-at (concat "\\(enum\\)" phps-mode-lexer--whitespace 
"\\(extends\\|implements\\)"))
+   (phps-mode-lexer--yyless 4)
+   (phps-mode-lexer--return-token-with-str 'T_STRING))
+
   (phps-mode-lexer--match-macro
    ST_IN_SCRIPTING
    (looking-at (concat "\\(enum\\)" phps-mode-lexer--whitespace 
"[a-zA-Z_\x80-\xff]"))
@@ -972,13 +979,6 @@
    (looking-at "readonly")
    (phps-mode-lexer--return-token-with-indent 'T_READONLY))
 
-  ;; Don't treat "readonly(" as a keyword, to allow using it as a function 
name.
-  (phps-mode-lexer--match-macro
-   ST_IN_SCRIPTING
-   (looking-at (concat "readonly" "[ \n\r\t]*("))
-   (phps-mode-lexer--yyless (length "readonly"))
-   (phps-mode-lexer--return-token-with-str 'T_STRING 0))
-
   (phps-mode-lexer--match-macro
    ST_IN_SCRIPTING
    (looking-at "unset")
diff --git a/phps-mode-parser-sdt.el b/phps-mode-parser-sdt.el
index 4607342635..25fc7d40ea 100644
--- a/phps-mode-parser-sdt.el
+++ b/phps-mode-parser-sdt.el
@@ -187,399 +187,406 @@
 ;; Production 176: ((unset_variables) (unset_variable))
 ;; Production 177: ((unset_variables) (unset_variables "," unset_variable))
 ;; Production 178: ((unset_variable) (variable))
-;; Production 179: ((function_declaration_statement) (function returns_ref 
T_STRING backup_doc_comment "(" parameter_list ")" return_type backup_fn_flags 
"{" inner_statement_list "}" backup_fn_flags))
-;; Production 180: ((is_reference) (%empty))
-;; Production 181: ((is_reference) (T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG))
-;; Production 182: ((is_variadic) (%empty))
-;; Production 183: ((is_variadic) (T_ELLIPSIS))
-;; Production 184: ((class_declaration_statement) (class_modifiers T_CLASS 
T_STRING extends_from implements_list backup_doc_comment "{" 
class_statement_list "}"))
-;; Production 185: ((class_declaration_statement) (T_CLASS T_STRING 
extends_from implements_list backup_doc_comment "{" class_statement_list "}"))
-;; Production 186: ((class_modifiers) (class_modifier))
-;; Production 187: ((class_modifiers) (class_modifiers class_modifier))
-;; Production 188: ((class_modifier) (T_ABSTRACT))
-;; Production 189: ((class_modifier) (T_FINAL))
-;; Production 190: ((trait_declaration_statement) (T_TRAIT T_STRING 
backup_doc_comment "{" class_statement_list "}"))
-;; Production 191: ((interface_declaration_statement) (T_INTERFACE T_STRING 
interface_extends_list backup_doc_comment "{" class_statement_list "}"))
-;; Production 192: ((enum_declaration_statement) (T_ENUM T_STRING 
enum_backing_type implements_list backup_doc_comment "{" class_statement_list 
"}"))
-;; Production 193: ((enum_backing_type) (%empty))
-;; Production 194: ((enum_backing_type) (":" type_expr))
-;; Production 195: ((enum_case) (T_CASE backup_doc_comment identifier 
enum_case_expr ";"))
-;; Production 196: ((enum_case_expr) (%empty))
-;; Production 197: ((enum_case_expr) ("=" expr))
-;; Production 198: ((extends_from) (%empty))
-;; Production 199: ((extends_from) (T_EXTENDS class_name))
-;; Production 200: ((interface_extends_list) (%empty))
-;; Production 201: ((interface_extends_list) (T_EXTENDS class_name_list))
-;; Production 202: ((implements_list) (%empty))
-;; Production 203: ((implements_list) (T_IMPLEMENTS class_name_list))
-;; Production 204: ((foreach_variable) (variable))
-;; Production 205: ((foreach_variable) (ampersand variable))
-;; Production 206: ((foreach_variable) (T_LIST "(" array_pair_list ")"))
-;; Production 207: ((foreach_variable) ("[" array_pair_list "]"))
-;; Production 208: ((for_statement) (statement))
-;; Production 209: ((for_statement) (":" inner_statement_list T_ENDFOR ";"))
-;; Production 210: ((foreach_statement) (statement))
-;; Production 211: ((foreach_statement) (":" inner_statement_list T_ENDFOREACH 
";"))
-;; Production 212: ((declare_statement) (statement))
-;; Production 213: ((declare_statement) (":" inner_statement_list T_ENDDECLARE 
";"))
-;; Production 214: ((switch_case_list) ("{" case_list "}"))
-;; Production 215: ((switch_case_list) ("{" ";" case_list "}"))
-;; Production 216: ((switch_case_list) (":" case_list T_ENDSWITCH ";"))
-;; Production 217: ((switch_case_list) (":" ";" case_list T_ENDSWITCH ";"))
-;; Production 218: ((case_list) (%empty))
-;; Production 219: ((case_list) (case_list T_CASE expr case_separator 
inner_statement_list))
-;; Production 220: ((case_list) (case_list T_DEFAULT case_separator 
inner_statement_list))
-;; Production 221: ((case_separator) (":"))
-;; Production 222: ((case_separator) (";"))
-;; Production 223: ((match) (T_MATCH "(" expr ")" "{" match_arm_list "}"))
-;; Production 224: ((match_arm_list) (%empty))
-;; Production 225: ((match_arm_list) (non_empty_match_arm_list possible_comma))
-;; Production 226: ((non_empty_match_arm_list) (match_arm))
-;; Production 227: ((non_empty_match_arm_list) (non_empty_match_arm_list "," 
match_arm))
-;; Production 228: ((match_arm) (match_arm_cond_list possible_comma 
T_DOUBLE_ARROW expr))
-;; Production 229: ((match_arm) (T_DEFAULT possible_comma T_DOUBLE_ARROW expr))
-;; Production 230: ((match_arm_cond_list) (expr))
-;; Production 231: ((match_arm_cond_list) (match_arm_cond_list "," expr))
-;; Production 232: ((while_statement) (statement))
-;; Production 233: ((while_statement) (":" inner_statement_list T_ENDWHILE 
";"))
-;; Production 234: ((if_stmt_without_else) (T_IF "(" expr ")" statement))
-;; Production 235: ((if_stmt_without_else) (if_stmt_without_else T_ELSEIF "(" 
expr ")" statement))
-;; Production 236: ((if_stmt) (if_stmt_without_else))
-;; Production 237: ((if_stmt) (if_stmt_without_else T_ELSE statement))
-;; Production 238: ((alt_if_stmt_without_else) (T_IF "(" expr ")" ":" 
inner_statement_list))
-;; Production 239: ((alt_if_stmt_without_else) (alt_if_stmt_without_else 
T_ELSEIF "(" expr ")" ":" inner_statement_list))
-;; Production 240: ((alt_if_stmt) (alt_if_stmt_without_else T_ENDIF ";"))
-;; Production 241: ((alt_if_stmt) (alt_if_stmt_without_else T_ELSE ":" 
inner_statement_list T_ENDIF ";"))
-;; Production 242: ((parameter_list) (non_empty_parameter_list possible_comma))
-;; Production 243: ((parameter_list) (%empty))
-;; Production 244: ((non_empty_parameter_list) (attributed_parameter))
-;; Production 245: ((non_empty_parameter_list) (non_empty_parameter_list "," 
attributed_parameter))
-;; Production 246: ((attributed_parameter) (attributes parameter))
-;; Production 247: ((attributed_parameter) (parameter))
-;; Production 248: ((optional_property_modifiers) (%empty))
-;; Production 249: ((optional_property_modifiers) (optional_property_modifiers 
property_modifier))
-;; Production 250: ((property_modifier) (T_PUBLIC))
-;; Production 251: ((property_modifier) (T_PROTECTED))
-;; Production 252: ((property_modifier) (T_PRIVATE))
-;; Production 253: ((property_modifier) (T_READONLY))
-;; Production 254: ((parameter) (optional_property_modifiers 
optional_type_without_static is_reference is_variadic T_VARIABLE 
backup_doc_comment))
-;; Production 255: ((parameter) (optional_property_modifiers 
optional_type_without_static is_reference is_variadic T_VARIABLE 
backup_doc_comment "=" expr))
-;; Production 256: ((optional_type_without_static) (%empty))
-;; Production 257: ((optional_type_without_static) (type_expr_without_static))
-;; Production 258: ((type_expr) (type))
-;; Production 259: ((type_expr) ("?" type))
-;; Production 260: ((type_expr) (union_type))
-;; Production 261: ((type_expr) (intersection_type))
-;; Production 262: ((type) (type_without_static))
-;; Production 263: ((type) (T_STATIC))
-;; Production 264: ((union_type) (type "|" type))
-;; Production 265: ((union_type) (union_type "|" type))
-;; Production 266: ((intersection_type) (type 
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type))
-;; Production 267: ((intersection_type) (intersection_type 
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type))
-;; Production 268: ((type_expr_without_static) (type_without_static))
-;; Production 269: ((type_expr_without_static) ("?" type_without_static))
-;; Production 270: ((type_expr_without_static) (union_type_without_static))
-;; Production 271: ((type_expr_without_static) 
(intersection_type_without_static))
-;; Production 272: ((type_without_static) (T_ARRAY))
-;; Production 273: ((type_without_static) (T_CALLABLE))
-;; Production 274: ((type_without_static) (name))
-;; Production 275: ((union_type_without_static) (type_without_static "|" 
type_without_static))
-;; Production 276: ((union_type_without_static) (union_type_without_static "|" 
type_without_static))
-;; Production 277: ((intersection_type_without_static) (type_without_static 
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type_without_static))
-;; Production 278: ((intersection_type_without_static) 
(intersection_type_without_static T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG 
type_without_static))
-;; Production 279: ((return_type) (%empty))
-;; Production 280: ((return_type) (":" type_expr))
-;; Production 281: ((argument_list) ("(" ")"))
-;; Production 282: ((argument_list) ("(" non_empty_argument_list 
possible_comma ")"))
-;; Production 283: ((argument_list) ("(" T_ELLIPSIS ")"))
-;; Production 284: ((non_empty_argument_list) (argument))
-;; Production 285: ((non_empty_argument_list) (non_empty_argument_list "," 
argument))
-;; Production 286: ((argument) (expr))
-;; Production 287: ((argument) (identifier ":" expr))
-;; Production 288: ((argument) (T_ELLIPSIS expr))
-;; Production 289: ((global_var_list) (global_var_list "," global_var))
-;; Production 290: ((global_var_list) (global_var))
-;; Production 291: ((global_var) (simple_variable))
-;; Production 292: ((static_var_list) (static_var_list "," static_var))
-;; Production 293: ((static_var_list) (static_var))
-;; Production 294: ((static_var) (T_VARIABLE))
-;; Production 295: ((static_var) (T_VARIABLE "=" expr))
-;; Production 296: ((class_statement_list) (class_statement_list 
class_statement))
-;; Production 297: ((class_statement_list) (%empty))
-;; Production 298: ((attributed_class_statement) (variable_modifiers 
optional_type_without_static property_list ";"))
-;; Production 299: ((attributed_class_statement) (method_modifiers T_CONST 
class_const_list ";"))
-;; Production 300: ((attributed_class_statement) (method_modifiers function 
returns_ref identifier backup_doc_comment "(" parameter_list ")" return_type 
backup_fn_flags method_body backup_fn_flags))
-;; Production 301: ((attributed_class_statement) (enum_case))
-;; Production 302: ((class_statement) (attributed_class_statement))
-;; Production 303: ((class_statement) (attributes attributed_class_statement))
-;; Production 304: ((class_statement) (T_USE class_name_list 
trait_adaptations))
-;; Production 305: ((class_name_list) (class_name))
-;; Production 306: ((class_name_list) (class_name_list "," class_name))
-;; Production 307: ((trait_adaptations) (";"))
-;; Production 308: ((trait_adaptations) ("{" "}"))
-;; Production 309: ((trait_adaptations) ("{" trait_adaptation_list "}"))
-;; Production 310: ((trait_adaptation_list) (trait_adaptation))
-;; Production 311: ((trait_adaptation_list) (trait_adaptation_list 
trait_adaptation))
-;; Production 312: ((trait_adaptation) (trait_precedence ";"))
-;; Production 313: ((trait_adaptation) (trait_alias ";"))
-;; Production 314: ((trait_precedence) (absolute_trait_method_reference 
T_INSTEADOF class_name_list))
-;; Production 315: ((trait_alias) (trait_method_reference T_AS T_STRING))
-;; Production 316: ((trait_alias) (trait_method_reference T_AS 
reserved_non_modifiers))
-;; Production 317: ((trait_alias) (trait_method_reference T_AS member_modifier 
identifier))
-;; Production 318: ((trait_alias) (trait_method_reference T_AS 
member_modifier))
-;; Production 319: ((trait_method_reference) (identifier))
-;; Production 320: ((trait_method_reference) (absolute_trait_method_reference))
-;; Production 321: ((absolute_trait_method_reference) (class_name 
T_PAAMAYIM_NEKUDOTAYIM identifier))
-;; Production 322: ((method_body) (";"))
-;; Production 323: ((method_body) ("{" inner_statement_list "}"))
-;; Production 324: ((variable_modifiers) (non_empty_member_modifiers))
-;; Production 325: ((variable_modifiers) (T_VAR))
-;; Production 326: ((method_modifiers) (%empty))
-;; Production 327: ((method_modifiers) (non_empty_member_modifiers))
-;; Production 328: ((non_empty_member_modifiers) (member_modifier))
-;; Production 329: ((non_empty_member_modifiers) (non_empty_member_modifiers 
member_modifier))
-;; Production 330: ((member_modifier) (T_PUBLIC))
-;; Production 331: ((member_modifier) (T_PROTECTED))
-;; Production 332: ((member_modifier) (T_PRIVATE))
-;; Production 333: ((member_modifier) (T_STATIC))
-;; Production 334: ((member_modifier) (T_ABSTRACT))
-;; Production 335: ((member_modifier) (T_FINAL))
-;; Production 336: ((member_modifier) (T_READONLY))
-;; Production 337: ((property_list) (property_list "," property))
-;; Production 338: ((property_list) (property))
-;; Production 339: ((property) (T_VARIABLE backup_doc_comment))
-;; Production 340: ((property) (T_VARIABLE "=" expr backup_doc_comment))
-;; Production 341: ((class_const_list) (class_const_list "," class_const_decl))
-;; Production 342: ((class_const_list) (class_const_decl))
-;; Production 343: ((class_const_decl) (identifier "=" expr 
backup_doc_comment))
-;; Production 344: ((const_decl) (T_STRING "=" expr backup_doc_comment))
-;; Production 345: ((echo_expr_list) (echo_expr_list "," echo_expr))
-;; Production 346: ((echo_expr_list) (echo_expr))
-;; Production 347: ((echo_expr) (expr))
-;; Production 348: ((for_exprs) (%empty))
-;; Production 349: ((for_exprs) (non_empty_for_exprs))
-;; Production 350: ((non_empty_for_exprs) (non_empty_for_exprs "," expr))
-;; Production 351: ((non_empty_for_exprs) (expr))
-;; Production 352: ((anonymous_class) (T_CLASS ctor_arguments extends_from 
implements_list backup_doc_comment "{" class_statement_list "}"))
-;; Production 353: ((new_expr) (T_NEW class_name_reference ctor_arguments))
-;; Production 354: ((new_expr) (T_NEW anonymous_class))
-;; Production 355: ((new_expr) (T_NEW attributes anonymous_class))
-;; Production 356: ((expr) (variable))
-;; Production 357: ((expr) (T_LIST "(" array_pair_list ")" "=" expr))
-;; Production 358: ((expr) ("[" array_pair_list "]" "=" expr))
-;; Production 359: ((expr) (variable "=" expr))
-;; Production 360: ((expr) (variable "=" ampersand variable))
-;; Production 361: ((expr) (T_CLONE expr))
-;; Production 362: ((expr) (variable T_PLUS_EQUAL expr))
-;; Production 363: ((expr) (variable T_MINUS_EQUAL expr))
-;; Production 364: ((expr) (variable T_MUL_EQUAL expr))
-;; Production 365: ((expr) (variable T_POW_EQUAL expr))
-;; Production 366: ((expr) (variable T_DIV_EQUAL expr))
-;; Production 367: ((expr) (variable T_CONCAT_EQUAL expr))
-;; Production 368: ((expr) (variable T_MOD_EQUAL expr))
-;; Production 369: ((expr) (variable T_AND_EQUAL expr))
-;; Production 370: ((expr) (variable T_OR_EQUAL expr))
-;; Production 371: ((expr) (variable T_XOR_EQUAL expr))
-;; Production 372: ((expr) (variable T_SL_EQUAL expr))
-;; Production 373: ((expr) (variable T_SR_EQUAL expr))
-;; Production 374: ((expr) (variable T_COALESCE_EQUAL expr))
-;; Production 375: ((expr) (variable T_INC))
-;; Production 376: ((expr) (T_INC variable))
-;; Production 377: ((expr) (variable T_DEC))
-;; Production 378: ((expr) (T_DEC variable))
-;; Production 379: ((expr) (expr T_BOOLEAN_OR expr))
-;; Production 380: ((expr) (expr T_BOOLEAN_AND expr))
-;; Production 381: ((expr) (expr T_LOGICAL_OR expr))
-;; Production 382: ((expr) (expr T_LOGICAL_AND expr))
-;; Production 383: ((expr) (expr T_LOGICAL_XOR expr))
-;; Production 384: ((expr) (expr "|" expr))
-;; Production 385: ((expr) (expr T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG 
expr))
-;; Production 386: ((expr) (expr T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG expr))
-;; Production 387: ((expr) (expr "^" expr))
-;; Production 388: ((expr) (expr "." expr))
-;; Production 389: ((expr) (expr "+" expr))
-;; Production 390: ((expr) (expr "-" expr))
-;; Production 391: ((expr) (expr "*" expr))
-;; Production 392: ((expr) (expr T_POW expr))
-;; Production 393: ((expr) (expr "/" expr))
-;; Production 394: ((expr) (expr "%" expr))
-;; Production 395: ((expr) (expr T_SL expr))
-;; Production 396: ((expr) (expr T_SR expr))
-;; Production 397: ((expr) ("+" expr))
-;; Production 398: ((expr) ("-" expr))
-;; Production 399: ((expr) ("!" expr))
-;; Production 400: ((expr) ("~" expr))
-;; Production 401: ((expr) (expr T_IS_IDENTICAL expr))
-;; Production 402: ((expr) (expr T_IS_NOT_IDENTICAL expr))
-;; Production 403: ((expr) (expr T_IS_EQUAL expr))
-;; Production 404: ((expr) (expr T_IS_NOT_EQUAL expr))
-;; Production 405: ((expr) (expr "<" expr))
-;; Production 406: ((expr) (expr T_IS_SMALLER_OR_EQUAL expr))
-;; Production 407: ((expr) (expr ">" expr))
-;; Production 408: ((expr) (expr T_IS_GREATER_OR_EQUAL expr))
-;; Production 409: ((expr) (expr T_SPACESHIP expr))
-;; Production 410: ((expr) (expr T_INSTANCEOF class_name_reference))
-;; Production 411: ((expr) ("(" expr ")"))
-;; Production 412: ((expr) (new_expr))
-;; Production 413: ((expr) (expr "?" expr ":" expr))
-;; Production 414: ((expr) (expr "?" ":" expr))
-;; Production 415: ((expr) (expr T_COALESCE expr))
-;; Production 416: ((expr) (internal_functions_in_yacc))
-;; Production 417: ((expr) (T_INT_CAST expr))
-;; Production 418: ((expr) (T_DOUBLE_CAST expr))
-;; Production 419: ((expr) (T_STRING_CAST expr))
-;; Production 420: ((expr) (T_ARRAY_CAST expr))
-;; Production 421: ((expr) (T_OBJECT_CAST expr))
-;; Production 422: ((expr) (T_BOOL_CAST expr))
-;; Production 423: ((expr) (T_UNSET_CAST expr))
-;; Production 424: ((expr) (T_EXIT exit_expr))
-;; Production 425: ((expr) ("@" expr))
-;; Production 426: ((expr) (scalar))
-;; Production 427: ((expr) ("`" backticks_expr "`"))
-;; Production 428: ((expr) (T_PRINT expr))
-;; Production 429: ((expr) (T_YIELD))
-;; Production 430: ((expr) (T_YIELD expr))
-;; Production 431: ((expr) (T_YIELD expr T_DOUBLE_ARROW expr))
-;; Production 432: ((expr) (T_YIELD_FROM expr))
-;; Production 433: ((expr) (T_THROW expr))
-;; Production 434: ((expr) (inline_function))
-;; Production 435: ((expr) (attributes inline_function))
-;; Production 436: ((expr) (T_STATIC inline_function))
-;; Production 437: ((expr) (attributes T_STATIC inline_function))
-;; Production 438: ((expr) (match))
-;; Production 439: ((inline_function) (function returns_ref backup_doc_comment 
"(" parameter_list ")" lexical_vars return_type backup_fn_flags "{" 
inner_statement_list "}" backup_fn_flags))
-;; Production 440: ((inline_function) (fn returns_ref backup_doc_comment "(" 
parameter_list ")" return_type T_DOUBLE_ARROW backup_fn_flags backup_lex_pos 
expr backup_fn_flags))
-;; Production 441: ((fn) (T_FN))
-;; Production 442: ((function) (T_FUNCTION))
-;; Production 443: ((backup_doc_comment) (%empty))
-;; Production 444: ((backup_fn_flags) (%empty))
-;; Production 445: ((backup_lex_pos) (%empty))
-;; Production 446: ((returns_ref) (%empty))
-;; Production 447: ((returns_ref) (ampersand))
-;; Production 448: ((lexical_vars) (%empty))
-;; Production 449: ((lexical_vars) (T_USE "(" lexical_var_list possible_comma 
")"))
-;; Production 450: ((lexical_var_list) (lexical_var_list "," lexical_var))
-;; Production 451: ((lexical_var_list) (lexical_var))
-;; Production 452: ((lexical_var) (T_VARIABLE))
-;; Production 453: ((lexical_var) (ampersand T_VARIABLE))
-;; Production 454: ((function_call) (name argument_list))
-;; Production 455: ((function_call) (class_name T_PAAMAYIM_NEKUDOTAYIM 
member_name argument_list))
-;; Production 456: ((function_call) (variable_class_name 
T_PAAMAYIM_NEKUDOTAYIM member_name argument_list))
-;; Production 457: ((function_call) (callable_expr argument_list))
-;; Production 458: ((class_name) (T_STATIC))
-;; Production 459: ((class_name) (name))
-;; Production 460: ((class_name_reference) (class_name))
-;; Production 461: ((class_name_reference) (new_variable))
-;; Production 462: ((class_name_reference) ("(" expr ")"))
-;; Production 463: ((exit_expr) (%empty))
-;; Production 464: ((exit_expr) ("(" optional_expr ")"))
-;; Production 465: ((backticks_expr) (%empty))
-;; Production 466: ((backticks_expr) (T_ENCAPSED_AND_WHITESPACE))
-;; Production 467: ((backticks_expr) (encaps_list))
-;; Production 468: ((ctor_arguments) (%empty))
-;; Production 469: ((ctor_arguments) (argument_list))
-;; Production 470: ((dereferenceable_scalar) (T_ARRAY "(" array_pair_list ")"))
-;; Production 471: ((dereferenceable_scalar) ("[" array_pair_list "]"))
-;; Production 472: ((dereferenceable_scalar) (T_CONSTANT_ENCAPSED_STRING))
-;; Production 473: ((dereferenceable_scalar) ("\"" encaps_list "\""))
-;; Production 474: ((scalar) (T_LNUMBER))
-;; Production 475: ((scalar) (T_DNUMBER))
-;; Production 476: ((scalar) (T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE 
T_END_HEREDOC))
-;; Production 477: ((scalar) (T_START_HEREDOC T_END_HEREDOC))
-;; Production 478: ((scalar) (T_START_HEREDOC encaps_list T_END_HEREDOC))
-;; Production 479: ((scalar) (dereferenceable_scalar))
-;; Production 480: ((scalar) (constant))
-;; Production 481: ((scalar) (class_constant))
-;; Production 482: ((constant) (name))
-;; Production 483: ((constant) (T_LINE))
-;; Production 484: ((constant) (T_FILE))
-;; Production 485: ((constant) (T_DIR))
-;; Production 486: ((constant) (T_TRAIT_C))
-;; Production 487: ((constant) (T_METHOD_C))
-;; Production 488: ((constant) (T_FUNC_C))
-;; Production 489: ((constant) (T_NS_C))
-;; Production 490: ((constant) (T_CLASS_C))
-;; Production 491: ((class_constant) (class_name T_PAAMAYIM_NEKUDOTAYIM 
identifier))
-;; Production 492: ((class_constant) (variable_class_name 
T_PAAMAYIM_NEKUDOTAYIM identifier))
-;; Production 493: ((optional_expr) (%empty))
-;; Production 494: ((optional_expr) (expr))
-;; Production 495: ((variable_class_name) (fully_dereferenceable))
-;; Production 496: ((fully_dereferenceable) (variable))
-;; Production 497: ((fully_dereferenceable) ("(" expr ")"))
-;; Production 498: ((fully_dereferenceable) (dereferenceable_scalar))
-;; Production 499: ((fully_dereferenceable) (class_constant))
-;; Production 500: ((array_object_dereferenceable) (fully_dereferenceable))
-;; Production 501: ((array_object_dereferenceable) (constant))
-;; Production 502: ((callable_expr) (callable_variable))
-;; Production 503: ((callable_expr) ("(" expr ")"))
-;; Production 504: ((callable_expr) (dereferenceable_scalar))
-;; Production 505: ((callable_variable) (simple_variable))
-;; Production 506: ((callable_variable) (array_object_dereferenceable "[" 
optional_expr "]"))
-;; Production 507: ((callable_variable) (array_object_dereferenceable "{" expr 
"}"))
-;; Production 508: ((callable_variable) (array_object_dereferenceable 
T_OBJECT_OPERATOR property_name argument_list))
-;; Production 509: ((callable_variable) (array_object_dereferenceable 
T_NULLSAFE_OBJECT_OPERATOR property_name argument_list))
-;; Production 510: ((callable_variable) (function_call))
-;; Production 511: ((variable) (callable_variable))
-;; Production 512: ((variable) (static_member))
-;; Production 513: ((variable) (array_object_dereferenceable T_OBJECT_OPERATOR 
property_name))
-;; Production 514: ((variable) (array_object_dereferenceable 
T_NULLSAFE_OBJECT_OPERATOR property_name))
-;; Production 515: ((simple_variable) (T_VARIABLE))
-;; Production 516: ((simple_variable) ("$" "{" expr "}"))
-;; Production 517: ((simple_variable) ("$" simple_variable))
-;; Production 518: ((static_member) (class_name T_PAAMAYIM_NEKUDOTAYIM 
simple_variable))
-;; Production 519: ((static_member) (variable_class_name 
T_PAAMAYIM_NEKUDOTAYIM simple_variable))
-;; Production 520: ((new_variable) (simple_variable))
-;; Production 521: ((new_variable) (new_variable "[" optional_expr "]"))
-;; Production 522: ((new_variable) (new_variable "{" expr "}"))
-;; Production 523: ((new_variable) (new_variable T_OBJECT_OPERATOR 
property_name))
-;; Production 524: ((new_variable) (new_variable T_NULLSAFE_OBJECT_OPERATOR 
property_name))
-;; Production 525: ((new_variable) (class_name T_PAAMAYIM_NEKUDOTAYIM 
simple_variable))
-;; Production 526: ((new_variable) (new_variable T_PAAMAYIM_NEKUDOTAYIM 
simple_variable))
-;; Production 527: ((member_name) (identifier))
-;; Production 528: ((member_name) ("{" expr "}"))
-;; Production 529: ((member_name) (simple_variable))
-;; Production 530: ((property_name) (T_STRING))
-;; Production 531: ((property_name) ("{" expr "}"))
-;; Production 532: ((property_name) (simple_variable))
-;; Production 533: ((array_pair_list) (non_empty_array_pair_list))
-;; Production 534: ((possible_array_pair) (%empty))
-;; Production 535: ((possible_array_pair) (array_pair))
-;; Production 536: ((non_empty_array_pair_list) (non_empty_array_pair_list "," 
possible_array_pair))
-;; Production 537: ((non_empty_array_pair_list) (possible_array_pair))
-;; Production 538: ((array_pair) (expr T_DOUBLE_ARROW expr))
-;; Production 539: ((array_pair) (expr))
-;; Production 540: ((array_pair) (expr T_DOUBLE_ARROW ampersand variable))
-;; Production 541: ((array_pair) (ampersand variable))
-;; Production 542: ((array_pair) (T_ELLIPSIS expr))
-;; Production 543: ((array_pair) (expr T_DOUBLE_ARROW T_LIST "(" 
array_pair_list ")"))
-;; Production 544: ((array_pair) (T_LIST "(" array_pair_list ")"))
-;; Production 545: ((encaps_list) (encaps_list encaps_var))
-;; Production 546: ((encaps_list) (encaps_list T_ENCAPSED_AND_WHITESPACE))
-;; Production 547: ((encaps_list) (encaps_var))
-;; Production 548: ((encaps_list) (T_ENCAPSED_AND_WHITESPACE encaps_var))
-;; Production 549: ((encaps_var) (T_VARIABLE))
-;; Production 550: ((encaps_var) (T_VARIABLE "[" encaps_var_offset "]"))
-;; Production 551: ((encaps_var) (T_VARIABLE T_OBJECT_OPERATOR T_STRING))
-;; Production 552: ((encaps_var) (T_VARIABLE T_NULLSAFE_OBJECT_OPERATOR 
T_STRING))
-;; Production 553: ((encaps_var) (T_DOLLAR_OPEN_CURLY_BRACES expr "}"))
-;; Production 554: ((encaps_var) (T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME 
"}"))
-;; Production 555: ((encaps_var) (T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME 
"[" expr "]" "}"))
-;; Production 556: ((encaps_var) (T_CURLY_OPEN variable "}"))
-;; Production 557: ((encaps_var_offset) (T_STRING))
-;; Production 558: ((encaps_var_offset) (T_NUM_STRING))
-;; Production 559: ((encaps_var_offset) ("-" T_NUM_STRING))
-;; Production 560: ((encaps_var_offset) (T_VARIABLE))
-;; Production 561: ((internal_functions_in_yacc) (T_ISSET "(" isset_variables 
possible_comma ")"))
-;; Production 562: ((internal_functions_in_yacc) (T_EMPTY "(" expr ")"))
-;; Production 563: ((internal_functions_in_yacc) (T_INCLUDE expr))
-;; Production 564: ((internal_functions_in_yacc) (T_INCLUDE_ONCE expr))
-;; Production 565: ((internal_functions_in_yacc) (T_EVAL "(" expr ")"))
-;; Production 566: ((internal_functions_in_yacc) (T_REQUIRE expr))
-;; Production 567: ((internal_functions_in_yacc) (T_REQUIRE_ONCE expr))
-;; Production 568: ((isset_variables) (isset_variable))
-;; Production 569: ((isset_variables) (isset_variables "," isset_variable))
-;; Production 570: ((isset_variable) (expr))
-
+;; Production 179: ((function_name) (T_STRING))
+;; Production 180: ((function_name) (T_READONLY))
+;; Production 181: ((function_declaration_statement) (function returns_ref 
function_name backup_doc_comment "(" parameter_list ")" return_type 
backup_fn_flags "{" inner_statement_list "}" backup_fn_flags))
+;; Production 182: ((is_reference) (%empty))
+;; Production 183: ((is_reference) (T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG))
+;; Production 184: ((is_variadic) (%empty))
+;; Production 185: ((is_variadic) (T_ELLIPSIS))
+;; Production 186: ((class_declaration_statement) (class_modifiers T_CLASS 
T_STRING extends_from implements_list backup_doc_comment "{" 
class_statement_list "}"))
+;; Production 187: ((class_declaration_statement) (T_CLASS T_STRING 
extends_from implements_list backup_doc_comment "{" class_statement_list "}"))
+;; Production 188: ((class_modifiers) (class_modifier))
+;; Production 189: ((class_modifiers) (class_modifiers class_modifier))
+;; Production 190: ((class_modifier) (T_ABSTRACT))
+;; Production 191: ((class_modifier) (T_FINAL))
+;; Production 192: ((class_modifier) (T_READONLY))
+;; Production 193: ((trait_declaration_statement) (T_TRAIT T_STRING 
backup_doc_comment "{" class_statement_list "}"))
+;; Production 194: ((interface_declaration_statement) (T_INTERFACE T_STRING 
interface_extends_list backup_doc_comment "{" class_statement_list "}"))
+;; Production 195: ((enum_declaration_statement) (T_ENUM T_STRING 
enum_backing_type implements_list backup_doc_comment "{" class_statement_list 
"}"))
+;; Production 196: ((enum_backing_type) (%empty))
+;; Production 197: ((enum_backing_type) (":" type_expr))
+;; Production 198: ((enum_case) (T_CASE backup_doc_comment identifier 
enum_case_expr ";"))
+;; Production 199: ((enum_case_expr) (%empty))
+;; Production 200: ((enum_case_expr) ("=" expr))
+;; Production 201: ((extends_from) (%empty))
+;; Production 202: ((extends_from) (T_EXTENDS class_name))
+;; Production 203: ((interface_extends_list) (%empty))
+;; Production 204: ((interface_extends_list) (T_EXTENDS class_name_list))
+;; Production 205: ((implements_list) (%empty))
+;; Production 206: ((implements_list) (T_IMPLEMENTS class_name_list))
+;; Production 207: ((foreach_variable) (variable))
+;; Production 208: ((foreach_variable) (ampersand variable))
+;; Production 209: ((foreach_variable) (T_LIST "(" array_pair_list ")"))
+;; Production 210: ((foreach_variable) ("[" array_pair_list "]"))
+;; Production 211: ((for_statement) (statement))
+;; Production 212: ((for_statement) (":" inner_statement_list T_ENDFOR ";"))
+;; Production 213: ((foreach_statement) (statement))
+;; Production 214: ((foreach_statement) (":" inner_statement_list T_ENDFOREACH 
";"))
+;; Production 215: ((declare_statement) (statement))
+;; Production 216: ((declare_statement) (":" inner_statement_list T_ENDDECLARE 
";"))
+;; Production 217: ((switch_case_list) ("{" case_list "}"))
+;; Production 218: ((switch_case_list) ("{" ";" case_list "}"))
+;; Production 219: ((switch_case_list) (":" case_list T_ENDSWITCH ";"))
+;; Production 220: ((switch_case_list) (":" ";" case_list T_ENDSWITCH ";"))
+;; Production 221: ((case_list) (%empty))
+;; Production 222: ((case_list) (case_list T_CASE expr case_separator 
inner_statement_list))
+;; Production 223: ((case_list) (case_list T_DEFAULT case_separator 
inner_statement_list))
+;; Production 224: ((case_separator) (":"))
+;; Production 225: ((case_separator) (";"))
+;; Production 226: ((match) (T_MATCH "(" expr ")" "{" match_arm_list "}"))
+;; Production 227: ((match_arm_list) (%empty))
+;; Production 228: ((match_arm_list) (non_empty_match_arm_list possible_comma))
+;; Production 229: ((non_empty_match_arm_list) (match_arm))
+;; Production 230: ((non_empty_match_arm_list) (non_empty_match_arm_list "," 
match_arm))
+;; Production 231: ((match_arm) (match_arm_cond_list possible_comma 
T_DOUBLE_ARROW expr))
+;; Production 232: ((match_arm) (T_DEFAULT possible_comma T_DOUBLE_ARROW expr))
+;; Production 233: ((match_arm_cond_list) (expr))
+;; Production 234: ((match_arm_cond_list) (match_arm_cond_list "," expr))
+;; Production 235: ((while_statement) (statement))
+;; Production 236: ((while_statement) (":" inner_statement_list T_ENDWHILE 
";"))
+;; Production 237: ((if_stmt_without_else) (T_IF "(" expr ")" statement))
+;; Production 238: ((if_stmt_without_else) (if_stmt_without_else T_ELSEIF "(" 
expr ")" statement))
+;; Production 239: ((if_stmt) (if_stmt_without_else))
+;; Production 240: ((if_stmt) (if_stmt_without_else T_ELSE statement))
+;; Production 241: ((alt_if_stmt_without_else) (T_IF "(" expr ")" ":" 
inner_statement_list))
+;; Production 242: ((alt_if_stmt_without_else) (alt_if_stmt_without_else 
T_ELSEIF "(" expr ")" ":" inner_statement_list))
+;; Production 243: ((alt_if_stmt) (alt_if_stmt_without_else T_ENDIF ";"))
+;; Production 244: ((alt_if_stmt) (alt_if_stmt_without_else T_ELSE ":" 
inner_statement_list T_ENDIF ";"))
+;; Production 245: ((parameter_list) (non_empty_parameter_list possible_comma))
+;; Production 246: ((parameter_list) (%empty))
+;; Production 247: ((non_empty_parameter_list) (attributed_parameter))
+;; Production 248: ((non_empty_parameter_list) (non_empty_parameter_list "," 
attributed_parameter))
+;; Production 249: ((attributed_parameter) (attributes parameter))
+;; Production 250: ((attributed_parameter) (parameter))
+;; Production 251: ((optional_property_modifiers) (%empty))
+;; Production 252: ((optional_property_modifiers) (optional_property_modifiers 
property_modifier))
+;; Production 253: ((property_modifier) (T_PUBLIC))
+;; Production 254: ((property_modifier) (T_PROTECTED))
+;; Production 255: ((property_modifier) (T_PRIVATE))
+;; Production 256: ((property_modifier) (T_READONLY))
+;; Production 257: ((parameter) (optional_property_modifiers 
optional_type_without_static is_reference is_variadic T_VARIABLE 
backup_doc_comment))
+;; Production 258: ((parameter) (optional_property_modifiers 
optional_type_without_static is_reference is_variadic T_VARIABLE 
backup_doc_comment "=" expr))
+;; Production 259: ((optional_type_without_static) (%empty))
+;; Production 260: ((optional_type_without_static) (type_expr_without_static))
+;; Production 261: ((type_expr) (type))
+;; Production 262: ((type_expr) ("?" type))
+;; Production 263: ((type_expr) (union_type))
+;; Production 264: ((type_expr) (intersection_type))
+;; Production 265: ((type) (type_without_static))
+;; Production 266: ((type) (T_STATIC))
+;; Production 267: ((union_type_element) (type))
+;; Production 268: ((union_type_element) ("(" intersection_type ")"))
+;; Production 269: ((union_type) (union_type_element "|" union_type_element))
+;; Production 270: ((union_type) (union_type "|" union_type_element))
+;; Production 271: ((intersection_type) (type 
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type))
+;; Production 272: ((intersection_type) (intersection_type 
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type))
+;; Production 273: ((type_expr_without_static) (type_without_static))
+;; Production 274: ((type_expr_without_static) ("?" type_without_static))
+;; Production 275: ((type_expr_without_static) (union_type_without_static))
+;; Production 276: ((type_expr_without_static) 
(intersection_type_without_static))
+;; Production 277: ((type_without_static) (T_ARRAY))
+;; Production 278: ((type_without_static) (T_CALLABLE))
+;; Production 279: ((type_without_static) (name))
+;; Production 280: ((union_type_without_static_element) (type_without_static))
+;; Production 281: ((union_type_without_static_element) ("(" 
intersection_type_without_static ")"))
+;; Production 282: ((union_type_without_static) 
(union_type_without_static_element "|" union_type_without_static_element))
+;; Production 283: ((union_type_without_static) (union_type_without_static "|" 
union_type_without_static_element))
+;; Production 284: ((intersection_type_without_static) (type_without_static 
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type_without_static))
+;; Production 285: ((intersection_type_without_static) 
(intersection_type_without_static T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG 
type_without_static))
+;; Production 286: ((return_type) (%empty))
+;; Production 287: ((return_type) (":" type_expr))
+;; Production 288: ((argument_list) ("(" ")"))
+;; Production 289: ((argument_list) ("(" non_empty_argument_list 
possible_comma ")"))
+;; Production 290: ((argument_list) ("(" T_ELLIPSIS ")"))
+;; Production 291: ((non_empty_argument_list) (argument))
+;; Production 292: ((non_empty_argument_list) (non_empty_argument_list "," 
argument))
+;; Production 293: ((argument) (expr))
+;; Production 294: ((argument) (identifier ":" expr))
+;; Production 295: ((argument) (T_ELLIPSIS expr))
+;; Production 296: ((global_var_list) (global_var_list "," global_var))
+;; Production 297: ((global_var_list) (global_var))
+;; Production 298: ((global_var) (simple_variable))
+;; Production 299: ((static_var_list) (static_var_list "," static_var))
+;; Production 300: ((static_var_list) (static_var))
+;; Production 301: ((static_var) (T_VARIABLE))
+;; Production 302: ((static_var) (T_VARIABLE "=" expr))
+;; Production 303: ((class_statement_list) (class_statement_list 
class_statement))
+;; Production 304: ((class_statement_list) (%empty))
+;; Production 305: ((attributed_class_statement) (variable_modifiers 
optional_type_without_static property_list ";"))
+;; Production 306: ((attributed_class_statement) (method_modifiers T_CONST 
class_const_list ";"))
+;; Production 307: ((attributed_class_statement) (method_modifiers function 
returns_ref identifier backup_doc_comment "(" parameter_list ")" return_type 
backup_fn_flags method_body backup_fn_flags))
+;; Production 308: ((attributed_class_statement) (enum_case))
+;; Production 309: ((class_statement) (attributed_class_statement))
+;; Production 310: ((class_statement) (attributes attributed_class_statement))
+;; Production 311: ((class_statement) (T_USE class_name_list 
trait_adaptations))
+;; Production 312: ((class_name_list) (class_name))
+;; Production 313: ((class_name_list) (class_name_list "," class_name))
+;; Production 314: ((trait_adaptations) (";"))
+;; Production 315: ((trait_adaptations) ("{" "}"))
+;; Production 316: ((trait_adaptations) ("{" trait_adaptation_list "}"))
+;; Production 317: ((trait_adaptation_list) (trait_adaptation))
+;; Production 318: ((trait_adaptation_list) (trait_adaptation_list 
trait_adaptation))
+;; Production 319: ((trait_adaptation) (trait_precedence ";"))
+;; Production 320: ((trait_adaptation) (trait_alias ";"))
+;; Production 321: ((trait_precedence) (absolute_trait_method_reference 
T_INSTEADOF class_name_list))
+;; Production 322: ((trait_alias) (trait_method_reference T_AS T_STRING))
+;; Production 323: ((trait_alias) (trait_method_reference T_AS 
reserved_non_modifiers))
+;; Production 324: ((trait_alias) (trait_method_reference T_AS member_modifier 
identifier))
+;; Production 325: ((trait_alias) (trait_method_reference T_AS 
member_modifier))
+;; Production 326: ((trait_method_reference) (identifier))
+;; Production 327: ((trait_method_reference) (absolute_trait_method_reference))
+;; Production 328: ((absolute_trait_method_reference) (class_name 
T_PAAMAYIM_NEKUDOTAYIM identifier))
+;; Production 329: ((method_body) (";"))
+;; Production 330: ((method_body) ("{" inner_statement_list "}"))
+;; Production 331: ((variable_modifiers) (non_empty_member_modifiers))
+;; Production 332: ((variable_modifiers) (T_VAR))
+;; Production 333: ((method_modifiers) (%empty))
+;; Production 334: ((method_modifiers) (non_empty_member_modifiers))
+;; Production 335: ((non_empty_member_modifiers) (member_modifier))
+;; Production 336: ((non_empty_member_modifiers) (non_empty_member_modifiers 
member_modifier))
+;; Production 337: ((member_modifier) (T_PUBLIC))
+;; Production 338: ((member_modifier) (T_PROTECTED))
+;; Production 339: ((member_modifier) (T_PRIVATE))
+;; Production 340: ((member_modifier) (T_STATIC))
+;; Production 341: ((member_modifier) (T_ABSTRACT))
+;; Production 342: ((member_modifier) (T_FINAL))
+;; Production 343: ((member_modifier) (T_READONLY))
+;; Production 344: ((property_list) (property_list "," property))
+;; Production 345: ((property_list) (property))
+;; Production 346: ((property) (T_VARIABLE backup_doc_comment))
+;; Production 347: ((property) (T_VARIABLE "=" expr backup_doc_comment))
+;; Production 348: ((class_const_list) (class_const_list "," class_const_decl))
+;; Production 349: ((class_const_list) (class_const_decl))
+;; Production 350: ((class_const_decl) (identifier "=" expr 
backup_doc_comment))
+;; Production 351: ((const_decl) (T_STRING "=" expr backup_doc_comment))
+;; Production 352: ((echo_expr_list) (echo_expr_list "," echo_expr))
+;; Production 353: ((echo_expr_list) (echo_expr))
+;; Production 354: ((echo_expr) (expr))
+;; Production 355: ((for_exprs) (%empty))
+;; Production 356: ((for_exprs) (non_empty_for_exprs))
+;; Production 357: ((non_empty_for_exprs) (non_empty_for_exprs "," expr))
+;; Production 358: ((non_empty_for_exprs) (expr))
+;; Production 359: ((anonymous_class) (T_CLASS ctor_arguments extends_from 
implements_list backup_doc_comment "{" class_statement_list "}"))
+;; Production 360: ((new_expr) (T_NEW class_name_reference ctor_arguments))
+;; Production 361: ((new_expr) (T_NEW anonymous_class))
+;; Production 362: ((new_expr) (T_NEW attributes anonymous_class))
+;; Production 363: ((expr) (variable))
+;; Production 364: ((expr) (T_LIST "(" array_pair_list ")" "=" expr))
+;; Production 365: ((expr) ("[" array_pair_list "]" "=" expr))
+;; Production 366: ((expr) (variable "=" expr))
+;; Production 367: ((expr) (variable "=" ampersand variable))
+;; Production 368: ((expr) (T_CLONE expr))
+;; Production 369: ((expr) (variable T_PLUS_EQUAL expr))
+;; Production 370: ((expr) (variable T_MINUS_EQUAL expr))
+;; Production 371: ((expr) (variable T_MUL_EQUAL expr))
+;; Production 372: ((expr) (variable T_POW_EQUAL expr))
+;; Production 373: ((expr) (variable T_DIV_EQUAL expr))
+;; Production 374: ((expr) (variable T_CONCAT_EQUAL expr))
+;; Production 375: ((expr) (variable T_MOD_EQUAL expr))
+;; Production 376: ((expr) (variable T_AND_EQUAL expr))
+;; Production 377: ((expr) (variable T_OR_EQUAL expr))
+;; Production 378: ((expr) (variable T_XOR_EQUAL expr))
+;; Production 379: ((expr) (variable T_SL_EQUAL expr))
+;; Production 380: ((expr) (variable T_SR_EQUAL expr))
+;; Production 381: ((expr) (variable T_COALESCE_EQUAL expr))
+;; Production 382: ((expr) (variable T_INC))
+;; Production 383: ((expr) (T_INC variable))
+;; Production 384: ((expr) (variable T_DEC))
+;; Production 385: ((expr) (T_DEC variable))
+;; Production 386: ((expr) (expr T_BOOLEAN_OR expr))
+;; Production 387: ((expr) (expr T_BOOLEAN_AND expr))
+;; Production 388: ((expr) (expr T_LOGICAL_OR expr))
+;; Production 389: ((expr) (expr T_LOGICAL_AND expr))
+;; Production 390: ((expr) (expr T_LOGICAL_XOR expr))
+;; Production 391: ((expr) (expr "|" expr))
+;; Production 392: ((expr) (expr T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG 
expr))
+;; Production 393: ((expr) (expr T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG expr))
+;; Production 394: ((expr) (expr "^" expr))
+;; Production 395: ((expr) (expr "." expr))
+;; Production 396: ((expr) (expr "+" expr))
+;; Production 397: ((expr) (expr "-" expr))
+;; Production 398: ((expr) (expr "*" expr))
+;; Production 399: ((expr) (expr T_POW expr))
+;; Production 400: ((expr) (expr "/" expr))
+;; Production 401: ((expr) (expr "%" expr))
+;; Production 402: ((expr) (expr T_SL expr))
+;; Production 403: ((expr) (expr T_SR expr))
+;; Production 404: ((expr) ("+" expr))
+;; Production 405: ((expr) ("-" expr))
+;; Production 406: ((expr) ("!" expr))
+;; Production 407: ((expr) ("~" expr))
+;; Production 408: ((expr) (expr T_IS_IDENTICAL expr))
+;; Production 409: ((expr) (expr T_IS_NOT_IDENTICAL expr))
+;; Production 410: ((expr) (expr T_IS_EQUAL expr))
+;; Production 411: ((expr) (expr T_IS_NOT_EQUAL expr))
+;; Production 412: ((expr) (expr "<" expr))
+;; Production 413: ((expr) (expr T_IS_SMALLER_OR_EQUAL expr))
+;; Production 414: ((expr) (expr ">" expr))
+;; Production 415: ((expr) (expr T_IS_GREATER_OR_EQUAL expr))
+;; Production 416: ((expr) (expr T_SPACESHIP expr))
+;; Production 417: ((expr) (expr T_INSTANCEOF class_name_reference))
+;; Production 418: ((expr) ("(" expr ")"))
+;; Production 419: ((expr) (new_expr))
+;; Production 420: ((expr) (expr "?" expr ":" expr))
+;; Production 421: ((expr) (expr "?" ":" expr))
+;; Production 422: ((expr) (expr T_COALESCE expr))
+;; Production 423: ((expr) (internal_functions_in_yacc))
+;; Production 424: ((expr) (T_INT_CAST expr))
+;; Production 425: ((expr) (T_DOUBLE_CAST expr))
+;; Production 426: ((expr) (T_STRING_CAST expr))
+;; Production 427: ((expr) (T_ARRAY_CAST expr))
+;; Production 428: ((expr) (T_OBJECT_CAST expr))
+;; Production 429: ((expr) (T_BOOL_CAST expr))
+;; Production 430: ((expr) (T_UNSET_CAST expr))
+;; Production 431: ((expr) (T_EXIT exit_expr))
+;; Production 432: ((expr) ("@" expr))
+;; Production 433: ((expr) (scalar))
+;; Production 434: ((expr) ("`" backticks_expr "`"))
+;; Production 435: ((expr) (T_PRINT expr))
+;; Production 436: ((expr) (T_YIELD))
+;; Production 437: ((expr) (T_YIELD expr))
+;; Production 438: ((expr) (T_YIELD expr T_DOUBLE_ARROW expr))
+;; Production 439: ((expr) (T_YIELD_FROM expr))
+;; Production 440: ((expr) (T_THROW expr))
+;; Production 441: ((expr) (inline_function))
+;; Production 442: ((expr) (attributes inline_function))
+;; Production 443: ((expr) (T_STATIC inline_function))
+;; Production 444: ((expr) (attributes T_STATIC inline_function))
+;; Production 445: ((expr) (match))
+;; Production 446: ((inline_function) (function returns_ref backup_doc_comment 
"(" parameter_list ")" lexical_vars return_type backup_fn_flags "{" 
inner_statement_list "}" backup_fn_flags))
+;; Production 447: ((inline_function) (fn returns_ref backup_doc_comment "(" 
parameter_list ")" return_type T_DOUBLE_ARROW backup_fn_flags backup_lex_pos 
expr backup_fn_flags))
+;; Production 448: ((fn) (T_FN))
+;; Production 449: ((function) (T_FUNCTION))
+;; Production 450: ((backup_doc_comment) (%empty))
+;; Production 451: ((backup_fn_flags) (%empty))
+;; Production 452: ((backup_lex_pos) (%empty))
+;; Production 453: ((returns_ref) (%empty))
+;; Production 454: ((returns_ref) (ampersand))
+;; Production 455: ((lexical_vars) (%empty))
+;; Production 456: ((lexical_vars) (T_USE "(" lexical_var_list possible_comma 
")"))
+;; Production 457: ((lexical_var_list) (lexical_var_list "," lexical_var))
+;; Production 458: ((lexical_var_list) (lexical_var))
+;; Production 459: ((lexical_var) (T_VARIABLE))
+;; Production 460: ((lexical_var) (ampersand T_VARIABLE))
+;; Production 461: ((function_call) (name argument_list))
+;; Production 462: ((function_call) (T_READONLY argument_list))
+;; Production 463: ((function_call) (class_name T_PAAMAYIM_NEKUDOTAYIM 
member_name argument_list))
+;; Production 464: ((function_call) (variable_class_name 
T_PAAMAYIM_NEKUDOTAYIM member_name argument_list))
+;; Production 465: ((function_call) (callable_expr argument_list))
+;; Production 466: ((class_name) (T_STATIC))
+;; Production 467: ((class_name) (name))
+;; Production 468: ((class_name_reference) (class_name))
+;; Production 469: ((class_name_reference) (new_variable))
+;; Production 470: ((class_name_reference) ("(" expr ")"))
+;; Production 471: ((exit_expr) (%empty))
+;; Production 472: ((exit_expr) ("(" optional_expr ")"))
+;; Production 473: ((backticks_expr) (%empty))
+;; Production 474: ((backticks_expr) (T_ENCAPSED_AND_WHITESPACE))
+;; Production 475: ((backticks_expr) (encaps_list))
+;; Production 476: ((ctor_arguments) (%empty))
+;; Production 477: ((ctor_arguments) (argument_list))
+;; Production 478: ((dereferenceable_scalar) (T_ARRAY "(" array_pair_list ")"))
+;; Production 479: ((dereferenceable_scalar) ("[" array_pair_list "]"))
+;; Production 480: ((dereferenceable_scalar) (T_CONSTANT_ENCAPSED_STRING))
+;; Production 481: ((dereferenceable_scalar) ("\"" encaps_list "\""))
+;; Production 482: ((scalar) (T_LNUMBER))
+;; Production 483: ((scalar) (T_DNUMBER))
+;; Production 484: ((scalar) (T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE 
T_END_HEREDOC))
+;; Production 485: ((scalar) (T_START_HEREDOC T_END_HEREDOC))
+;; Production 486: ((scalar) (T_START_HEREDOC encaps_list T_END_HEREDOC))
+;; Production 487: ((scalar) (dereferenceable_scalar))
+;; Production 488: ((scalar) (constant))
+;; Production 489: ((scalar) (class_constant))
+;; Production 490: ((constant) (name))
+;; Production 491: ((constant) (T_LINE))
+;; Production 492: ((constant) (T_FILE))
+;; Production 493: ((constant) (T_DIR))
+;; Production 494: ((constant) (T_TRAIT_C))
+;; Production 495: ((constant) (T_METHOD_C))
+;; Production 496: ((constant) (T_FUNC_C))
+;; Production 497: ((constant) (T_NS_C))
+;; Production 498: ((constant) (T_CLASS_C))
+;; Production 499: ((class_constant) (class_name T_PAAMAYIM_NEKUDOTAYIM 
identifier))
+;; Production 500: ((class_constant) (variable_class_name 
T_PAAMAYIM_NEKUDOTAYIM identifier))
+;; Production 501: ((optional_expr) (%empty))
+;; Production 502: ((optional_expr) (expr))
+;; Production 503: ((variable_class_name) (fully_dereferenceable))
+;; Production 504: ((fully_dereferenceable) (variable))
+;; Production 505: ((fully_dereferenceable) ("(" expr ")"))
+;; Production 506: ((fully_dereferenceable) (dereferenceable_scalar))
+;; Production 507: ((fully_dereferenceable) (class_constant))
+;; Production 508: ((array_object_dereferenceable) (fully_dereferenceable))
+;; Production 509: ((array_object_dereferenceable) (constant))
+;; Production 510: ((callable_expr) (callable_variable))
+;; Production 511: ((callable_expr) ("(" expr ")"))
+;; Production 512: ((callable_expr) (dereferenceable_scalar))
+;; Production 513: ((callable_variable) (simple_variable))
+;; Production 514: ((callable_variable) (array_object_dereferenceable "[" 
optional_expr "]"))
+;; Production 515: ((callable_variable) (array_object_dereferenceable "{" expr 
"}"))
+;; Production 516: ((callable_variable) (array_object_dereferenceable 
T_OBJECT_OPERATOR property_name argument_list))
+;; Production 517: ((callable_variable) (array_object_dereferenceable 
T_NULLSAFE_OBJECT_OPERATOR property_name argument_list))
+;; Production 518: ((callable_variable) (function_call))
+;; Production 519: ((variable) (callable_variable))
+;; Production 520: ((variable) (static_member))
+;; Production 521: ((variable) (array_object_dereferenceable T_OBJECT_OPERATOR 
property_name))
+;; Production 522: ((variable) (array_object_dereferenceable 
T_NULLSAFE_OBJECT_OPERATOR property_name))
+;; Production 523: ((simple_variable) (T_VARIABLE))
+;; Production 524: ((simple_variable) ("$" "{" expr "}"))
+;; Production 525: ((simple_variable) ("$" simple_variable))
+;; Production 526: ((static_member) (class_name T_PAAMAYIM_NEKUDOTAYIM 
simple_variable))
+;; Production 527: ((static_member) (variable_class_name 
T_PAAMAYIM_NEKUDOTAYIM simple_variable))
+;; Production 528: ((new_variable) (simple_variable))
+;; Production 529: ((new_variable) (new_variable "[" optional_expr "]"))
+;; Production 530: ((new_variable) (new_variable "{" expr "}"))
+;; Production 531: ((new_variable) (new_variable T_OBJECT_OPERATOR 
property_name))
+;; Production 532: ((new_variable) (new_variable T_NULLSAFE_OBJECT_OPERATOR 
property_name))
+;; Production 533: ((new_variable) (class_name T_PAAMAYIM_NEKUDOTAYIM 
simple_variable))
+;; Production 534: ((new_variable) (new_variable T_PAAMAYIM_NEKUDOTAYIM 
simple_variable))
+;; Production 535: ((member_name) (identifier))
+;; Production 536: ((member_name) ("{" expr "}"))
+;; Production 537: ((member_name) (simple_variable))
+;; Production 538: ((property_name) (T_STRING))
+;; Production 539: ((property_name) ("{" expr "}"))
+;; Production 540: ((property_name) (simple_variable))
+;; Production 541: ((array_pair_list) (non_empty_array_pair_list))
+;; Production 542: ((possible_array_pair) (%empty))
+;; Production 543: ((possible_array_pair) (array_pair))
+;; Production 544: ((non_empty_array_pair_list) (non_empty_array_pair_list "," 
possible_array_pair))
+;; Production 545: ((non_empty_array_pair_list) (possible_array_pair))
+;; Production 546: ((array_pair) (expr T_DOUBLE_ARROW expr))
+;; Production 547: ((array_pair) (expr))
+;; Production 548: ((array_pair) (expr T_DOUBLE_ARROW ampersand variable))
+;; Production 549: ((array_pair) (ampersand variable))
+;; Production 550: ((array_pair) (T_ELLIPSIS expr))
+;; Production 551: ((array_pair) (expr T_DOUBLE_ARROW T_LIST "(" 
array_pair_list ")"))
+;; Production 552: ((array_pair) (T_LIST "(" array_pair_list ")"))
+;; Production 553: ((encaps_list) (encaps_list encaps_var))
+;; Production 554: ((encaps_list) (encaps_list T_ENCAPSED_AND_WHITESPACE))
+;; Production 555: ((encaps_list) (encaps_var))
+;; Production 556: ((encaps_list) (T_ENCAPSED_AND_WHITESPACE encaps_var))
+;; Production 557: ((encaps_var) (T_VARIABLE))
+;; Production 558: ((encaps_var) (T_VARIABLE "[" encaps_var_offset "]"))
+;; Production 559: ((encaps_var) (T_VARIABLE T_OBJECT_OPERATOR T_STRING))
+;; Production 560: ((encaps_var) (T_VARIABLE T_NULLSAFE_OBJECT_OPERATOR 
T_STRING))
+;; Production 561: ((encaps_var) (T_DOLLAR_OPEN_CURLY_BRACES expr "}"))
+;; Production 562: ((encaps_var) (T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME 
"}"))
+;; Production 563: ((encaps_var) (T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME 
"[" expr "]" "}"))
+;; Production 564: ((encaps_var) (T_CURLY_OPEN variable "}"))
+;; Production 565: ((encaps_var_offset) (T_STRING))
+;; Production 566: ((encaps_var_offset) (T_NUM_STRING))
+;; Production 567: ((encaps_var_offset) ("-" T_NUM_STRING))
+;; Production 568: ((encaps_var_offset) (T_VARIABLE))
+;; Production 569: ((internal_functions_in_yacc) (T_ISSET "(" isset_variables 
possible_comma ")"))
+;; Production 570: ((internal_functions_in_yacc) (T_EMPTY "(" expr ")"))
+;; Production 571: ((internal_functions_in_yacc) (T_INCLUDE expr))
+;; Production 572: ((internal_functions_in_yacc) (T_INCLUDE_ONCE expr))
+;; Production 573: ((internal_functions_in_yacc) (T_EVAL "(" expr ")"))
+;; Production 574: ((internal_functions_in_yacc) (T_REQUIRE expr))
+;; Production 575: ((internal_functions_in_yacc) (T_REQUIRE_ONCE expr))
+;; Production 576: ((isset_variables) (isset_variable))
+;; Production 577: ((isset_variables) (isset_variables "," isset_variable))
+;; Production 578: ((isset_variable) (expr))
 
 ;;; Code:
 
@@ -2948,9 +2955,12 @@
 ;; 178 ((unset_variable) (variable))
 (puthash 178 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
 
-;; 179 ((function_declaration_statement) (function returns_ref T_STRING 
backup_doc_comment "(" parameter_list ")" return_type backup_fn_flags "{" 
inner_statement_list "}" backup_fn_flags))
+;; 179 ((function_name) (T_STRING))
+;; 180 ((function_name) (T_READONLY))
+
+;; 181 ((function_declaration_statement) (function returns_ref function_name 
backup_doc_comment "(" parameter_list ")" return_type backup_fn_flags "{" 
inner_statement_list "}" backup_fn_flags))
 (puthash
- 179
+ 181
  (lambda(args terminals)
    ;; (message "179-parameter_list-args: %S" (nth 5 args))
    ;; (message "parameter_list-terminals: %S" (nth 5 terminals))
@@ -3076,21 +3086,21 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 180 ((is_reference) (%empty))
-(puthash 180 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
-
-;; 181 ((is_reference) (T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG))
-(puthash 181 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
-
-;; 182 ((is_variadic) (%empty))
+;; 182 ((is_reference) (%empty))
 (puthash 182 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 183 ((is_variadic) (T_ELLIPSIS))
+;; 183 ((is_reference) (T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG))
 (puthash 183 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
 
-;; 184 ((class_declaration_statement) (class_modifiers T_CLASS T_STRING 
extends_from implements_list backup_doc_comment "{" class_statement_list "}"))
+;; 184 ((is_variadic) (%empty))
+(puthash 184 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+
+;; 185 ((is_variadic) (T_ELLIPSIS))
+(puthash 185 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+
+;; 186 ((class_declaration_statement) (class_modifiers T_CLASS T_STRING 
extends_from implements_list backup_doc_comment "{" class_statement_list "}"))
 (puthash
- 184
+ 186
  (lambda(args terminals)
    ;; Go through stacks and modify symbol name-spaces
    ;; but only for non-super-global variables.
@@ -3206,9 +3216,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 185 ((class_declaration_statement) (T_CLASS T_STRING extends_from 
implements_list backup_doc_comment "{" class_statement_list "}"))
+;; 187 ((class_declaration_statement) (T_CLASS T_STRING extends_from 
implements_list backup_doc_comment "{" class_statement_list "}"))
 (puthash
- 185
+ 187
  (lambda(args terminals)
    ;; Go through stacks and modify symbol name-spaces
    ;; but only for non-super-global variables.
@@ -3321,21 +3331,24 @@
      ,(nth 6 args)))
  phps-mode-parser--table-translations)
 
-;; 186 ((class_modifiers) (class_modifier))
-(puthash 186 (lambda(args _terminals) `(,args)) 
phps-mode-parser--table-translations)
+;; 188 ((class_modifiers) (class_modifier))
+(puthash 188 (lambda(args _terminals) `(,args)) 
phps-mode-parser--table-translations)
 
-;; 187 ((class_modifiers) (class_modifiers class_modifier))
-(puthash 187 (lambda(args _terminals) `(append ,(nth 0 args) (,(nth 1 args)))) 
phps-mode-parser--table-translations)
+;; 189 ((class_modifiers) (class_modifiers class_modifier))
+(puthash 189 (lambda(args _terminals) `(append ,(nth 0 args) (,(nth 1 args)))) 
phps-mode-parser--table-translations)
 
-;; 188 ((class_modifier) (T_ABSTRACT))
-(puthash 188 (lambda(_args _terminals) 'T_ABSTRACT) 
phps-mode-parser--table-translations)
+;; 190 ((class_modifier) (T_ABSTRACT))
+(puthash 190 (lambda(_args _terminals) 'T_ABSTRACT) 
phps-mode-parser--table-translations)
 
-;; 189 ((class_modifier) (T_FINAL))
-(puthash 189 (lambda(_args _terminals) 'T_FINAL) 
phps-mode-parser--table-translations)
+;; 191 ((class_modifier) (T_FINAL))
+(puthash 191 (lambda(_args _terminals) 'T_FINAL) 
phps-mode-parser--table-translations)
 
-;; 190 ((trait_declaration_statement) (T_TRAIT T_STRING backup_doc_comment "{" 
class_statement_list "}"))
+;; 192 ((class_modifier) (T_READONLY))
+(puthash 192 (lambda(_args _terminals) 'T_READONLY) 
phps-mode-parser--table-translations)
+
+;; 193 ((trait_declaration_statement) (T_TRAIT T_STRING backup_doc_comment "{" 
class_statement_list "}"))
 (puthash
- 190
+ 193
  (lambda(args terminals)
    ;; Go through stacks and modify symbol name-spaces
    ;; but only for non-super-global variables.
@@ -3442,9 +3455,9 @@
      ,(nth 4 args)))
  phps-mode-parser--table-translations)
 
-;; 191 ((interface_declaration_statement) (T_INTERFACE T_STRING 
interface_extends_list backup_doc_comment "{" class_statement_list "}"))
+;; 194 ((interface_declaration_statement) (T_INTERFACE T_STRING 
interface_extends_list backup_doc_comment "{" class_statement_list "}"))
 (puthash
- 191
+ 194
  (lambda(args terminals)
    ;; Go through stacks and modify symbol name-spaces
    ;; but only for non-super-global variables.
@@ -3558,9 +3571,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 192 ((enum_declaration_statement) (T_ENUM T_STRING enum_backing_type 
implements_list backup_doc_comment "{" class_statement_list "}"))
+;; 195 ((enum_declaration_statement) (T_ENUM T_STRING enum_backing_type 
implements_list backup_doc_comment "{" class_statement_list "}"))
 (puthash
- 192
+ 195
  (lambda(args terminals)
    `(
      ast-type
@@ -3582,15 +3595,15 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 193 ((enum_backing_type) (%empty))
-(puthash 193 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 196 ((enum_backing_type) (%empty))
+(puthash 196 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 194 ((enum_backing_type) (":" type_expr))
-(puthash 194 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
+;; 197 ((enum_backing_type) (":" type_expr))
+(puthash 197 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
 
-;; 195 ((enum_case) (T_CASE backup_doc_comment identifier enum_case_expr ";"))
+;; 198 ((enum_case) (T_CASE backup_doc_comment identifier enum_case_expr ";"))
 (puthash
- 195
+ 198
  (lambda(args _terminals)
    `(
      ast-type
@@ -3604,12 +3617,12 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 196 ((enum_case_expr) (%empty))
-(puthash 196 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 199 ((enum_case_expr) (%empty))
+(puthash 199 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 197 ((enum_case_expr) ("=" expr))
+;; 200 ((enum_case_expr) ("=" expr))
 (puthash
- 197
+ 200
  (lambda(args _terminals)
    `(
      ast-type
@@ -3620,12 +3633,12 @@
    )
  phps-mode-parser--table-translations)
 
-;; 198 ((extends_from) (%empty))
-(puthash 198 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 201 ((extends_from) (%empty))
+(puthash 201 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 199 ((extends_from) (T_EXTENDS class_name))
+;; 202 ((extends_from) (T_EXTENDS class_name))
 (puthash
- 199
+ 202
  (lambda(args _terminals)
    `(
      ast-type
@@ -3636,12 +3649,12 @@
    )
  phps-mode-parser--table-translations)
 
-;; 200 ((interface_extends_list) (%empty))
-(puthash 200 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 203 ((interface_extends_list) (%empty))
+(puthash 203 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 201 ((interface_extends_list) (T_EXTENDS class_name_list))
+;; 204 ((interface_extends_list) (T_EXTENDS class_name_list))
 (puthash
- 201
+ 204
  (lambda(args _terminals)
    `(
      ast-type
@@ -3652,12 +3665,12 @@
    )
  phps-mode-parser--table-translations)
 
-;; 202 ((implements_list) (%empty))
-(puthash 202 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 205 ((implements_list) (%empty))
+(puthash 205 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 203 ((implements_list) (T_IMPLEMENTS class_name_list))
+;; 206 ((implements_list) (T_IMPLEMENTS class_name_list))
 (puthash
- 203
+ 206
  (lambda(args _terminals)
    `(
      ast-type
@@ -3668,9 +3681,9 @@
    )
  phps-mode-parser--table-translations)
 
-;; 204 ((foreach_variable) (variable))
+;; 207 ((foreach_variable) (variable))
 (puthash
- 204
+ 207
  (lambda(args terminals)
    ;; Save variable declaration in bookkeeping buffer
    (let ((variable-type (plist-get args 'ast-type)))
@@ -3718,9 +3731,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 205 ((foreach_variable) (ampersand variable))
+;; 208 ((foreach_variable) (ampersand variable))
 (puthash
- 205
+ 208
  (lambda(args terminals)
    ;; Save variable declaration in bookkeeping buffer
    (let* ((variable (nth 1 args))
@@ -3770,9 +3783,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 206 ((foreach_variable) (T_LIST "(" array_pair_list ")"))
+;; 209 ((foreach_variable) (T_LIST "(" array_pair_list ")"))
 (puthash
- 206
+ 209
  (lambda(args _terminals)
    ;; TODO Declare variable here
 
@@ -3783,9 +3796,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 207 ((foreach_variable) ("[" array_pair_list "]"))
+;; 210 ((foreach_variable) ("[" array_pair_list "]"))
 (puthash
- 207
+ 210
  (lambda(args _terminals)
    ;; TODO Declare variable here
 
@@ -3796,9 +3809,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 208 ((for_statement) (statement))
+;; 211 ((for_statement) (statement))
 (puthash
- 208
+ 211
  (lambda(args _terminals)
    `(
      ast-type
@@ -3808,9 +3821,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 209 ((for_statement) (":" inner_statement_list T_ENDFOR ";"))
+;; 212 ((for_statement) (":" inner_statement_list T_ENDFOR ";"))
 (puthash
- 209
+ 212
  (lambda(args _terminals)
    `(
      ast-type
@@ -3820,9 +3833,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 210 ((foreach_statement) (statement))
+;; 213 ((foreach_statement) (statement))
 (puthash
- 210
+ 213
  (lambda(args _terminals)
    `(
      ast-type
@@ -3831,9 +3844,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 211 ((foreach_statement) (":" inner_statement_list T_ENDFOREACH ";"))
+;; 214 ((foreach_statement) (":" inner_statement_list T_ENDFOREACH ";"))
 (puthash
- 211
+ 214
  (lambda(args _terminals)
    `(
      ast-type
@@ -3843,9 +3856,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 212 ((declare_statement) (statement))
+;; 215 ((declare_statement) (statement))
 (puthash
- 212
+ 215
  (lambda(args _terminals)
    `(
      ast-type
@@ -3855,9 +3868,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 213 ((declare_statement) (":" inner_statement_list T_ENDDECLARE ";"))
+;; 216 ((declare_statement) (":" inner_statement_list T_ENDDECLARE ";"))
 (puthash
- 213
+ 216
  (lambda(args _terminals)
    `(
      ast-type
@@ -3867,24 +3880,24 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 214 ((switch_case_list) ("{" case_list "}"))
-(puthash 214 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
+;; 217 ((switch_case_list) ("{" case_list "}"))
+(puthash 217 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
 
-;; 215 ((switch_case_list) ("{" ";" case_list "}"))
-(puthash 214 (lambda(args _terminals) (nth 2 args)) 
phps-mode-parser--table-translations)
+;; 218 ((switch_case_list) ("{" ";" case_list "}"))
+(puthash 218 (lambda(args _terminals) (nth 2 args)) 
phps-mode-parser--table-translations)
 
-;; 216 ((switch_case_list) (":" case_list T_ENDSWITCH ";"))
-(puthash 214 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
+;; 219 ((switch_case_list) (":" case_list T_ENDSWITCH ";"))
+(puthash 219 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
 
-;; 217 ((switch_case_list) (":" ";" case_list T_ENDSWITCH ";"))
-(puthash 217 (lambda(args _terminals) (nth 2 args)) 
phps-mode-parser--table-translations)
+;; 220 ((switch_case_list) (":" ";" case_list T_ENDSWITCH ";"))
+(puthash 220 (lambda(args _terminals) (nth 2 args)) 
phps-mode-parser--table-translations)
 
-;; 218 ((case_list) (%empty))
-(puthash 218 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 221 ((case_list) (%empty))
+(puthash 221 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 219 ((case_list) (case_list T_CASE expr case_separator 
inner_statement_list))
+;; 222 ((case_list) (case_list T_CASE expr case_separator 
inner_statement_list))
 (puthash
- 219
+ 222
  (lambda(args _terminals)
    `(
      ast-type
@@ -3895,9 +3908,9 @@
      ,(nth 4 args)))
  phps-mode-parser--table-translations)
 
-;; 220 ((case_list) (case_list T_DEFAULT case_separator inner_statement_list))
+;; 223 ((case_list) (case_list T_DEFAULT case_separator inner_statement_list))
 (puthash
- 220
+ 223
  (lambda(args _terminals)
    `(
      ast-type
@@ -3906,15 +3919,15 @@
      ,(nth 3 args)))
  phps-mode-parser--table-translations)
 
-;; 221 ((case_separator) (":"))
-(puthash 221 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 224 ((case_separator) (":"))
+(puthash 224 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 222 ((case_separator) (":"))
-(puthash 222 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 225 ((case_separator) (";"))
+(puthash 225 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 223 ((match) (T_MATCH "(" expr ")" "{" match_arm_list "}"))
+;; 226 ((match) (T_MATCH "(" expr ")" "{" match_arm_list "}"))
 (puthash
- 223
+ 226
  (lambda(args _terminals)
    `(
      ast-type
@@ -3926,25 +3939,25 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 224 ((match_arm_list) (%empty))
-(puthash 224 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 227 ((match_arm_list) (%empty))
+(puthash 227 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 225 ((match_arm_list) (non_empty_match_arm_list possible_comma))
-(puthash 225 (lambda(args _terminals) (nth 0 args)) 
phps-mode-parser--table-translations)
+;; 228 ((match_arm_list) (non_empty_match_arm_list possible_comma))
+(puthash 228 (lambda(args _terminals) (nth 0 args)) 
phps-mode-parser--table-translations)
 
-;; 226 ((non_empty_match_arm_list) (match_arm))
-(puthash 226 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
+;; 229 ((non_empty_match_arm_list) (match_arm))
+(puthash 229 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
 
-;; 227 ((non_empty_match_arm_list) (non_empty_match_arm_list "," match_arm))
+;; 230 ((non_empty_match_arm_list) (non_empty_match_arm_list "," match_arm))
 (puthash
- 227
+ 230
  (lambda(args _terminals)
    (append (nth 0 args) (list (nth 2 args))))
  phps-mode-parser--table-translations)
 
-;; 228 ((match_arm) (match_arm_cond_list possible_comma T_DOUBLE_ARROW expr))
+;; 231 ((match_arm) (match_arm_cond_list possible_comma T_DOUBLE_ARROW expr))
 (puthash
- 228
+ 231
  (lambda(args _terminals)
    `(
      ast-type
@@ -3955,9 +3968,9 @@
      ,(nth 3 args)))
  phps-mode-parser--table-translations)
 
-;; 229 ((match_arm) (T_DEFAULT possible_comma T_DOUBLE_ARROW expr))
+;; 232 ((match_arm) (T_DEFAULT possible_comma T_DOUBLE_ARROW expr))
 (puthash
- 229
+ 232
  (lambda(args _terminals)
    `(
      ast-type
@@ -3966,21 +3979,21 @@
      ,(nth 3 args)))
  phps-mode-parser--table-translations)
 
-;; 230 ((match_arm_cond_list) (expr))
-(puthash 230 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
+;; 233 ((match_arm_cond_list) (expr))
+(puthash 233 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
 
-;; 231 ((match_arm_cond_list) (match_arm_cond_list "," expr))
-(puthash 231 (lambda(args _terminals) (append (nth 0 args) (list (nth 2 
args)))) phps-mode-parser--table-translations)
+;; 234 ((match_arm_cond_list) (match_arm_cond_list "," expr))
+(puthash 234 (lambda(args _terminals) (append (nth 0 args) (list (nth 2 
args)))) phps-mode-parser--table-translations)
 
-;; 232 ((while_statement) (statement))
-(puthash 232 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
+;; 235 ((while_statement) (statement))
+(puthash 235 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
 
-;; 233 ((while_statement) (":" inner_statement_list T_ENDWHILE ";"))
-(puthash 233 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
+;; 236 ((while_statement) (":" inner_statement_list T_ENDWHILE ";"))
+(puthash 236 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
 
-;; 234 ((if_stmt_without_else) (T_IF "(" expr ")" statement))
+;; 237 ((if_stmt_without_else) (T_IF "(" expr ")" statement))
 (puthash
- 234
+ 237
  (lambda(args _terminals)
    `(
      ast-type
@@ -3992,9 +4005,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 235 ((if_stmt_without_else) (if_stmt_without_else T_ELSEIF "(" expr ")" 
statement))
+;; 238 ((if_stmt_without_else) (if_stmt_without_else T_ELSEIF "(" expr ")" 
statement))
 (puthash
- 235
+ 238
  (lambda(args _terminals)
    `(
      ast-type
@@ -4008,12 +4021,12 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 236 ((if_stmt) (if_stmt_without_else))
-(puthash 236 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+;; 239 ((if_stmt) (if_stmt_without_else))
+(puthash 239 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
 
-;; 237 ((if_stmt) (if_stmt_without_else T_ELSE statement))
+;; 240 ((if_stmt) (if_stmt_without_else T_ELSE statement))
 (puthash
- 237
+ 240
  (lambda(args _terminals)
    `(
      ast-type
@@ -4025,9 +4038,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 238 ((alt_if_stmt_without_else) (T_IF "(" expr ")" ":" 
inner_statement_list))
+;; 241 ((alt_if_stmt_without_else) (T_IF "(" expr ")" ":" 
inner_statement_list))
 (puthash
- 238
+ 241
  (lambda(args _terminals)
    `(
      ast-type
@@ -4039,9 +4052,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 239 ((alt_if_stmt_without_else) (alt_if_stmt_without_else T_ELSEIF "(" expr 
")" ":" inner_statement_list))
+;; 242 ((alt_if_stmt_without_else) (alt_if_stmt_without_else T_ELSEIF "(" expr 
")" ":" inner_statement_list))
 (puthash
- 239
+ 242
  (lambda(args _terminals)
    `(
      ast-type
@@ -4055,12 +4068,12 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 240 ((alt_if_stmt) (alt_if_stmt_without_else T_ENDIF ";"))
-(puthash 240 (lambda(args _terminals) (nth 0 args)) 
phps-mode-parser--table-translations)
+;; 243 ((alt_if_stmt) (alt_if_stmt_without_else T_ENDIF ";"))
+(puthash 243 (lambda(args _terminals) (nth 0 args)) 
phps-mode-parser--table-translations)
 
-;; 241 ((alt_if_stmt) (alt_if_stmt_without_else T_ELSE ":" 
inner_statement_list T_ENDIF ";"))
+;; 244 ((alt_if_stmt) (alt_if_stmt_without_else T_ELSE ":" 
inner_statement_list T_ENDIF ";"))
 (puthash
- 241
+ 244
  (lambda(args _terminals)
    `(
      ast-type
@@ -4072,21 +4085,21 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 242 ((parameter_list) (non_empty_parameter_list possible_comma))
-(puthash 242 (lambda(args _terminals) (nth 0 args)) 
phps-mode-parser--table-translations)
+;; 245 ((parameter_list) (non_empty_parameter_list possible_comma))
+(puthash 245 (lambda(args _terminals) (nth 0 args)) 
phps-mode-parser--table-translations)
 
-;; 243 ((parameter_list) (%empty))
-(puthash 243 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 246 ((parameter_list) (%empty))
+(puthash 246 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 244 ((non_empty_parameter_list) (attributed_parameter))
-(puthash 244 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
+;; 247 ((non_empty_parameter_list) (attributed_parameter))
+(puthash 247 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
 
-;; 245 ((non_empty_parameter_list) (non_empty_parameter_list "," 
attributed_parameter))
-(puthash 245 (lambda(args _terminals) (append (nth 0 args) (list (nth 2 
args)))) phps-mode-parser--table-translations)
+;; 248 ((non_empty_parameter_list) (non_empty_parameter_list "," 
attributed_parameter))
+(puthash 248 (lambda(args _terminals) (append (nth 0 args) (list (nth 2 
args)))) phps-mode-parser--table-translations)
 
-;; 246 ((attributed_parameter) (attributes parameter))
+;; 249 ((attributed_parameter) (attributes parameter))
 (puthash
- 246
+ 249
  (lambda(args _terminals)
    `(
      ast-type
@@ -4098,9 +4111,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 247 ((attributed_parameter) (parameter))
+;; 250 ((attributed_parameter) (parameter))
 (puthash
- 247
+ 250
  (lambda(args _terminals)
    `(
      ast-type
@@ -4110,27 +4123,27 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 248 ((optional_property_modifiers) (%empty))
-(puthash 248 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 251 ((optional_property_modifiers) (%empty))
+(puthash 251 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 249 ((optional_property_modifiers) (optional_property_modifiers 
property_modifier))
-(puthash 249 (lambda(args _terminals) (append (nth 0 args) (list (nth 1 
args)))) phps-mode-parser--table-translations)
+;; 252 ((optional_property_modifiers) (optional_property_modifiers 
property_modifier))
+(puthash 252 (lambda(args _terminals) (append (nth 0 args) (list (nth 1 
args)))) phps-mode-parser--table-translations)
 
-;; 250 ((property_modifier) (T_PUBLIC))
-(puthash 250 (lambda(_args _terminals) 'T_PUBLIC) 
phps-mode-parser--table-translations)
+;; 253 ((property_modifier) (T_PUBLIC))
+(puthash 253 (lambda(_args _terminals) 'T_PUBLIC) 
phps-mode-parser--table-translations)
 
-;; 251 ((property_modifier) (T_PROTECTED))
-(puthash 251 (lambda(_args _terminals) 'T_PROTECTED) 
phps-mode-parser--table-translations)
+;; 254 ((property_modifier) (T_PROTECTED))
+(puthash 254 (lambda(_args _terminals) 'T_PROTECTED) 
phps-mode-parser--table-translations)
 
-;; 252 ((property_modifier) (T_PROTECTED))
-(puthash 252 (lambda(_args _terminals) 'T_PRIVATE) 
phps-mode-parser--table-translations)
+;; 255 ((property_modifier) (T_PRIVATE))
+(puthash 255 (lambda(_args _terminals) 'T_PRIVATE) 
phps-mode-parser--table-translations)
 
-;; 253 ((property_modifier) (T_PROTECTED))
-(puthash 253 (lambda(_args _terminals) 'T_PROTECTED) 
phps-mode-parser--table-translations)
+;; 256 ((property_modifier) (T_READONLY))
+(puthash 256 (lambda(_args _terminals) 'T_READONLY) 
phps-mode-parser--table-translations)
 
-;; 254 ((parameter) (optional_property_modifiers optional_type_without_static 
is_reference is_variadic T_VARIABLE backup_doc_comment))
+;; 257 ((parameter) (optional_property_modifiers optional_type_without_static 
is_reference is_variadic T_VARIABLE backup_doc_comment))
 (puthash
- 254
+ 257
  (lambda(args terminals)
    `(
      ast-type
@@ -4152,9 +4165,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 255 ((parameter) (optional_property_modifiers optional_type_without_static 
is_reference is_variadic T_VARIABLE backup_doc_comment "=" expr))
+;; 258 ((parameter) (optional_property_modifiers optional_type_without_static 
is_reference is_variadic T_VARIABLE backup_doc_comment "=" expr))
 (puthash
- 255
+ 258
  (lambda(args terminals)
    `(
      ast-type
@@ -4180,15 +4193,15 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 256 ((optional_type_without_static) (%empty))
-(puthash 256 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 259 ((optional_type_without_static) (%empty))
+(puthash 259 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 257 ((optional_type_without_static) (type_expr_without_static))
-(puthash 257 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+;; 260 ((optional_type_without_static) (type_expr_without_static))
+(puthash 260 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
 
-;; 258 ((type_expr) (type))
+;; 261 ((type_expr) (type))
 (puthash
- 258
+ 261
  (lambda(args _terminals)
    `(
      ast-type
@@ -4198,9 +4211,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 259 ((type_expr) ("?" type))
+;; 262 ((type_expr) ("?" type))
 (puthash
- 259
+ 262
  (lambda(args _terminals)
    `(
      ast-type
@@ -4210,9 +4223,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 260 ((type_expr) (union_type))
+;; 263 ((type_expr) (union_type))
 (puthash
- 260
+ 263
  (lambda(args _terminals)
    `(
      ast-type
@@ -4222,9 +4235,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 261 ((type_expr) (intersection_type))
+;; 264 ((type_expr) (intersection_type))
 (puthash
- 261
+ 264
  (lambda(args _terminals)
    `(
      ast-type
@@ -4234,89 +4247,118 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 262 ((type) (type_without_static))
-(puthash 262 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+;; 265 ((type) (type_without_static))
+(puthash 265 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+
+;; 266 ((type) (T_STATIC))
+(puthash 266 (lambda(_args _terminals) 'T_STATIC) 
phps-mode-parser--table-translations)
+
+;; 267 ((union_type_element) (type))
+(puthash
+ 267
+ (lambda(args _terminals)
+   `(
+     ast-type
+     simple-union-type-element
+     type
+     ,args
+     ))
+ phps-mode-parser--table-translations)
+
+;; 268 ((union_type_element) ("(" intersection_type ")"))
+(puthash
+ 268
+ (lambda(args _terminals)
+   `(
+     ast-type
+     intersection-union-type-element
+     type
+     ,(nth 1 args)))
+ phps-mode-parser--table-translations)
+
+;; 269 ((union_type) (union_type_element "|" union_type_element))
+(puthash
+ 269
+ (lambda(args _terminals)
+   (list (nth 0 args) (nth 2 args)))
+ phps-mode-parser--table-translations)
 
-;; 263 ((type) (T_STATIC))
-(puthash 263 (lambda(_args _terminals) 'T_STATIC) 
phps-mode-parser--table-translations)
+;; 270 ((union_type) (union_type "|" union_type_element))
+(puthash
+ 270
+ (lambda(args _terminals)
+   (append (nth 0 args) (list (nth 2 args))))
+ phps-mode-parser--table-translations)
 
-;; 264 ((union_type) (type "|" type))
-(puthash 264 (lambda(args _terminals) (list (nth 0 args) (nth 2 args))) 
phps-mode-parser--table-translations)
+;; 271 ((intersection_type) (type T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG 
type))
+(puthash 271 (lambda(args _terminals) (list (nth 0 args) (nth 2 args))) 
phps-mode-parser--table-translations)
 
-;; 265 ((union_type) (union_type "|" type))
-(puthash 265 (lambda(args _terminals) (append (nth 0 args) (list (nth 2 
args)))) phps-mode-parser--table-translations)
+;; 272 ((intersection_type) (intersection_type 
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type))
+(puthash 272 (lambda(args _terminals) (append (nth 0 args) (list (nth 1 
args)))) phps-mode-parser--table-translations)
 
-;; 266 ((intersection_type) (type T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG 
type))
-(puthash 266 (lambda(args _terminals) (list (nth 0 args) (nth 2 args))) 
phps-mode-parser--table-translations)
+;; 273 ((type_expr_without_static) (type_without_static))
+(puthash 273 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
 
-;; 267 ((intersection_type) (intersection_type 
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type))
-(puthash 267 (lambda(args _terminals) (append (nth 0 args) (list (nth 1 
args)))) phps-mode-parser--table-translations)
+;; 274 ((type_expr_without_static) ("?" type_without_static))
+(puthash 274 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
 
-;; 268 ((type_expr_without_static) (type_without_static))
-(puthash 268 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+;; 275 ((type_expr_without_static) (union_type_without_static))
+(puthash 275 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
 
-;; 269 ((type_expr_without_static) ("?" type_without_static))
-(puthash 269 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+;; 276 ((type_expr_without_static) (intersection_type_without_static))
+(puthash 276 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
 
-;; 270 ((type_expr_without_static) (union_type_without_static))
-(puthash 270 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+;; 277 ((type_without_static) (T_ARRAY))
+(puthash 277 (lambda(_args _terminals) 'T_ARRAY) 
phps-mode-parser--table-translations)
 
-;; 271 ((type_expr_without_static) (intersection_type_without_static))
-(puthash 271 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+;; 278 ((type_without_static) (T_CALLABLE))
+(puthash 278 (lambda(_args _terminals) 'T_CALLABLE) 
phps-mode-parser--table-translations)
 
-;; 272 ((type_without_static) (T_ARRAY))
-(puthash 272 (lambda(_args _terminals) 'T_ARRAY) 
phps-mode-parser--table-translations)
+;; 279 ((type_without_static) (name))
+(puthash 279 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
 
-;; 273 ((type_without_static) (T_CALLABLE))
-(puthash 273 (lambda(_args _terminals) 'T_CALLABLE) 
phps-mode-parser--table-translations)
+;; 280 ((union_type_without_static_element) (type_without_static))
+(puthash 280 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
 
-;; 274 ((type_without_static) (name))
-(puthash 273 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+;; 281 ((union_type_without_static_element) ("(" 
intersection_type_without_static ")"))
+(puthash 281 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
 
-;; 275 ((union_type_without_static) (type_without_static "|" 
type_without_static))
-(puthash 275 (lambda(args _terminals) (list (nth 0 args) (nth 2 args))) 
phps-mode-parser--table-translations)
+;; 282 ((union_type_without_static) (union_type_without_static_element "|" 
union_type_without_static_element))
+(puthash 282 (lambda(args _terminals) (list (nth 0 args) (nth 2 args))) 
phps-mode-parser--table-translations)
 
-;; 276 ((union_type_without_static) (union_type_without_static "|" 
type_without_static))
-(puthash 276 (lambda(args _terminals) (append (nth 0 args) (list (nth 2 
args)))) phps-mode-parser--table-translations)
+;; 283 ((union_type_without_static) (union_type_without_static "|" 
union_type_without_static_element))
+(puthash 283 (lambda(args _terminals) (list (nth 0 args) (nth 2 args))) 
phps-mode-parser--table-translations)
 
-;; 277 ((intersection_type_without_static) (type_without_static 
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type_without_static))
-(puthash 277 (lambda(args _terminals) (list (nth 0 args) (nth 2 args))) 
phps-mode-parser--table-translations)
+;; 284 ((intersection_type_without_static) (type_without_static 
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type_without_static))
+(puthash 284 (lambda(args _terminals) (list (nth 0 args) (nth 2 args))) 
phps-mode-parser--table-translations)
 
-;; 278 ((intersection_type_without_static) (intersection_type_without_static 
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type_without_static))
-(puthash 278 (lambda(args _terminals) (append (nth 0 args) (list (nth 2 
args)))) phps-mode-parser--table-translations)
+;; 285 ((intersection_type_without_static) (intersection_type_without_static 
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type_without_static))
+(puthash 285 (lambda(args _terminals) (list (nth 0 args) (nth 2 args))) 
phps-mode-parser--table-translations)
 
-;; 279 ((return_type) (%empty))
-(puthash 279 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 286 ((return_type) (%empty))
+(puthash 286 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 280 ((return_type) (":" type_expr))
-(puthash 280 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
+;; 287 ((return_type) (":" type_expr))
+(puthash 287 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
 
-;; 281 ((argument_list) ("(" ")"))
-(puthash 281 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 288 ((argument_list) ("(" ")"))
+(puthash 288 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 282 ((argument_list) ("(" non_empty_argument_list possible_comma ")"))
-(puthash 282 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
+;; 289 ((argument_list) ("(" non_empty_argument_list possible_comma ")"))
+(puthash 289 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
 
-;; 283 ((argument_list) ("(" T_ELLIPSIS ")"))
-(puthash 283 (lambda(_args _terminals) 'T_ELLIPSIS) 
phps-mode-parser--table-translations)
+;; 290 ((argument_list) ("(" T_ELLIPSIS ")"))
+(puthash 290 (lambda(_args _terminals) 'T_ELLIPSIS) 
phps-mode-parser--table-translations)
 
-;; 284 ((non_empty_argument_list) (argument))
-(puthash
- 284
- (lambda(args _terminals)
-   (list args))
- phps-mode-parser--table-translations)
+;; 291 ((non_empty_argument_list) (argument))
+(puthash 291 (lambda(args _terminals) (list (nth 0 args))) 
phps-mode-parser--table-translations)
 
-;; 285 ((non_empty_argument_list) (non_empty_argument_list "," argument))
-(puthash
- 285
- (lambda(args _terminals)
-   (append (nth 0 args) (list (nth 2 args))))
- phps-mode-parser--table-translations)
+;; 292 ((non_empty_argument_list) (non_empty_argument_list "," argument))
+(puthash 292 (lambda(args _terminals) (append (nth 0 args) (list (nth 2 
args)))) phps-mode-parser--table-translations)
 
-;; 286 ((argument) (expr))
+;; 293 ((argument) (expr))
 (puthash
- 286
+ 293
  (lambda(args _terminals)
    `(
      ast-type
@@ -4327,9 +4369,9 @@
    )
  phps-mode-parser--table-translations)
 
-;; 287 ((argument) (identifier ":" expr))
+;; 294 ((argument) (identifier ":" expr))
 (puthash
- 287
+ 294
  (lambda(args _terminals)
    `(
      ast-type
@@ -4342,9 +4384,9 @@
    )
  phps-mode-parser--table-translations)
 
-;; 288 ((argument) (T_ELLIPSIS expr))
+;; 295 ((argument) (T_ELLIPSIS expr))
 (puthash
- 288
+ 295
  (lambda(args _terminals)
    `(
      ast-type
@@ -4355,24 +4397,24 @@
    )
  phps-mode-parser--table-translations)
 
-;; 289 ((global_var_list) (global_var_list "," global_var))
-(puthash 289 (lambda(args _terminals) (append (nth 0 args) (list (nth 2 
args)))) phps-mode-parser--table-translations)
+;; 296 ((global_var_list) (global_var_list "," global_var))
+(puthash 296 (lambda(args _terminals) (append (nth 0 args) (list (nth 2 
args)))) phps-mode-parser--table-translations)
 
-;; 290 ((global_var_list) (global_var))
-(puthash 290 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
+;; 297 ((global_var_list) (global_var))
+(puthash 297 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
 
-;; 291 ((global_var) (simple_variable))
-(puthash 291 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+;; 298 ((global_var) (simple_variable))
+(puthash 298 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
 
-;; 292 ((static_var_list) (static_var_list "," static_var))
-(puthash 292 (lambda(args _terminals) (append (nth 0 args) (list (nth 2 
args)))) phps-mode-parser--table-translations)
+;; 299 ((static_var_list) (static_var_list "," static_var))
+(puthash 299 (lambda(args _terminals) (append (nth 0 args) (list (nth 2 
args)))) phps-mode-parser--table-translations)
 
-;; 293 ((static_var_list) (static_var))
-(puthash 293 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
+;; 300 ((static_var_list) (static_var))
+(puthash 300 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
 
-;; 294 ((static_var) (T_VARIABLE))
+;; 301 ((static_var) (T_VARIABLE))
 (puthash
- 294
+ 301
  (lambda(args terminals)
    `(
      ast-type
@@ -4387,9 +4429,9 @@
      ,(cdr (cdr terminals))))
  phps-mode-parser--table-translations)
 
-;; 295 ((static_var) (T_VARIABLE "=" expr))
+;; 302 ((static_var) (T_VARIABLE "=" expr))
 (puthash
- 295
+ 302
  (lambda(args terminals)
    ;; TODO Should bookkeep here
    `(
@@ -4407,21 +4449,21 @@
      ,(cdr (cdr (nth 0 terminals)))))
  phps-mode-parser--table-translations)
 
-;; 296 ((class_statement_list) (class_statement_list class_statement))
+;; 303 ((class_statement_list) (class_statement_list class_statement))
 (puthash
- 296
+ 303
  (lambda(args _terminals)
    (if (car args)
        (append (car args) (cdr args))
      (cdr args)))
  phps-mode-parser--table-translations)
 
-;; 297 ((class_statement_list) (%empty))
-(puthash 297 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 304 ((class_statement_list) (%empty))
+(puthash 304 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 298 ((attributed_class_statement) (variable_modifiers 
optional_type_without_static property_list ";"))
+;; 305 ((attributed_class_statement) (variable_modifiers 
optional_type_without_static property_list ";"))
 (puthash
- 298
+305
  (lambda(args _terminals)
    `(
      ast-type
@@ -4435,9 +4477,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 299 ((attributed_class_statement) (method_modifiers T_CONST 
class_const_list ";"))
+;; 306 ((attributed_class_statement) (method_modifiers T_CONST 
class_const_list ";"))
 (puthash
- 299
+ 306
  (lambda(args terminals)
    (when-let (const-list (nth 2 args))
      (let ((const-count (length const-list))
@@ -4473,9 +4515,9 @@
      ,(cdr (cdr (car (nth 2 terminals))))))
  phps-mode-parser--table-translations)
 
-;; 300 ((attributed_class_statement) (method_modifiers function returns_ref 
identifier backup_doc_comment "(" parameter_list ")" return_type 
backup_fn_flags method_body backup_fn_flags))
+;; 307 ((attributed_class_statement) (method_modifiers function returns_ref 
identifier backup_doc_comment "(" parameter_list ")" return_type 
backup_fn_flags method_body backup_fn_flags))
 (puthash
- 300
+ 307
  (lambda(args terminals)
    `(
      ast-type
@@ -4507,9 +4549,9 @@
      nil))
  phps-mode-parser--table-translations)
 
-;; 301 ((attributed_class_statement) (enum_case))
+;; 308 ((attributed_class_statement) (enum_case))
 (puthash
- 301
+ 308
  (lambda(args _terminals)
    `(
      ast-type
@@ -4520,9 +4562,9 @@
    )
  phps-mode-parser--table-translations)
 
-;; 302 ((class_statement) (attributed_class_statement))
+;; 309 ((class_statement) (attributed_class_statement))
 (puthash
- 302
+ 309
  (lambda(args _terminals)
    (let* ((attributed-class-statement
            args)
@@ -4748,9 +4790,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 303 ((class_statement) (attributes attributed_class_statement))
+;; 310 ((class_statement) (attributes attributed_class_statement))
 (puthash
- 303
+ 310
  (lambda(args _terminals)
    (let* ((attributed-class-statement
            (nth 1 args))
@@ -4790,9 +4832,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 304 ((class_statement) (T_USE class_name_list trait_adaptations))
+;; 311 ((class_statement) (T_USE class_name_list trait_adaptations))
 (puthash
- 304
+ 311
  (lambda(args _terminals)
    `(
      ast-type
@@ -4803,39 +4845,36 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 305 ((class_name_list) (class_name))
-(puthash 305 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
+;; 312 ((class_name_list) (class_name))
+(puthash 312 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
 
-;; 306 ((class_name_list) (class_name_list "," class_name))
-(puthash 306 (lambda(args _terminals) (append (nth 0 args) (nth 2 args))) 
phps-mode-parser--table-translations)
+;; 313 ((class_name_list) (class_name_list "," class_name))
+(puthash 313 (lambda(args _terminals) (append (nth 0 args) (nth 2 args))) 
phps-mode-parser--table-translations)
 
-;; 307 ((trait_adaptations) (";"))
-(puthash 307 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 314 ((trait_adaptations) (";"))
+(puthash 314 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 308 ("{" "}"))
-(puthash 308 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 315 ("{" "}"))
+(puthash 315 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 309 ((trait_adaptations) ("{" trait_adaptation_list "}"))
-(puthash 309 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
+;; 316 ((trait_adaptations) ("{" trait_adaptation_list "}"))
+(puthash 316 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
 
-;; 310 ((trait_adaptation_list) (trait_adaptation))
-(puthash 310 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
+;; 317 ((trait_adaptation_list) (trait_adaptation))
+(puthash 317 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
 
-;; 311 ((trait_adaptation_list) (trait_adaptation_list trait_adaptation))
-(puthash 311 (lambda(args _terminals) (append (nth 0 args) (nth 1 args))) 
phps-mode-parser--table-translations)
+;; 318 ((trait_adaptation_list) (trait_adaptation_list trait_adaptation))
+(puthash 318 (lambda(args _terminals) (append (nth 0 args) (nth 1 args))) 
phps-mode-parser--table-translations)
 
-;; 312 ((trait_adaptation) (trait_precedence ";"))
-(puthash 312 (lambda(args _terminals) (nth 0 args)) 
phps-mode-parser--table-translations)
+;; 319 ((trait_adaptation) (trait_precedence ";"))
+(puthash 319 (lambda(args _terminals) (nth 0 args)) 
phps-mode-parser--table-translations)
 
-;; 313 ((trait_adaptation) (trait_alias ";"))
-(puthash
- 313
- (lambda(args _terminals) (nth 0 args))
- phps-mode-parser--table-translations)
+;; 320 ((trait_adaptation) (trait_alias ";"))
+(puthash 320 (lambda(args _terminals) (nth 0 args)) 
phps-mode-parser--table-translations)
 
-;; 314 ((trait_precedence) (absolute_trait_method_reference T_INSTEADOF 
class_name_list))
+;; 321 ((trait_precedence) (absolute_trait_method_reference T_INSTEADOF 
class_name_list))
 (puthash
- 314
+ 321
  (lambda(args _terminals)
    `(
      ast-type
@@ -4847,9 +4886,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 315 ((trait_alias) (trait_method_reference T_AS T_STRING))
+;; 322 ((trait_alias) (trait_method_reference T_AS T_STRING))
 (puthash
- 315
+ 322
  (lambda(args _terminals)
    `(
      ast-type
@@ -4861,9 +4900,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 316 ((trait_alias) (trait_method_reference T_AS reserved_non_modifiers))
+;; 323 ((trait_alias) (trait_method_reference T_AS reserved_non_modifiers))
 (puthash
- 316
+ 323
  (lambda(args _terminals)
    `(
      ast-type
@@ -4875,9 +4914,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 317 ((trait_alias) (trait_method_reference T_AS member_modifier identifier))
+;; 324 ((trait_alias) (trait_method_reference T_AS member_modifier identifier))
 (puthash
- 317
+ 324
  (lambda(args _terminals)
    `(
      ast-type
@@ -4891,9 +4930,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 318 ((trait_alias) (trait_method_reference T_AS member_modifier))
+;; 325 ((trait_alias) (trait_method_reference T_AS member_modifier))
 (puthash
- 318
+ 325
  (lambda(args _terminals)
    `(
      ast-type
@@ -4905,9 +4944,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 319 ((trait_method_reference) (identifier))
+;; 326 ((trait_method_reference) (identifier))
 (puthash
- 319
+ 326
  (lambda(args _terminals)
    `(
      ast-type
@@ -4916,9 +4955,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 320 ((trait_method_reference) (absolute_trait_method_reference))
+;; 327 ((trait_method_reference) (absolute_trait_method_reference))
 (puthash
- 320
+ 327
  (lambda(args _terminals)
    `(
      ast-type
@@ -4928,9 +4967,9 @@
    )
  phps-mode-parser--table-translations)
 
-;; 321 ((absolute_trait_method_reference) (class_name T_PAAMAYIM_NEKUDOTAYIM 
identifier))
+;; 328 ((absolute_trait_method_reference) (class_name T_PAAMAYIM_NEKUDOTAYIM 
identifier))
 (puthash
- 321
+ 328
  (lambda(args _terminals)
    `(
      ast-type
@@ -4942,68 +4981,60 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 322 ((method_body) (";"))
-(puthash 322 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 329 ((method_body) (";"))
+(puthash 329 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 323 ((method_body) ("{" inner_statement_list "}"))
-(puthash 323 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
+;; 330 ((method_body) ("{" inner_statement_list "}"))
+(puthash 330 (lambda(args _terminals) (nth 1 args)) 
phps-mode-parser--table-translations)
 
-;; 324 ((variable_modifiers) (non_empty_member_modifiers))
-(puthash 324 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+;; 331 ((variable_modifiers) (non_empty_member_modifiers))
+(puthash 331 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
 
-;; 325 ((variable_modifiers) (T_VAR))
-(puthash 325 (lambda(_args _terminals) '(public)) 
phps-mode-parser--table-translations)
+;; 332 ((variable_modifiers) (T_VAR))
+(puthash 332 (lambda(_args _terminals) '(public)) 
phps-mode-parser--table-translations)
 
-;; 326 ((method_modifiers) (%empty))
-(puthash 326 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
+;; 333 ((method_modifiers) (%empty))
+(puthash 333 (lambda(_args _terminals) nil) 
phps-mode-parser--table-translations)
 
-;; 327 ((method_modifiers) (non_empty_member_modifiers))
-(puthash 327 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
+;; 334 ((method_modifiers) (non_empty_member_modifiers))
+(puthash 334 (lambda(args _terminals) args) 
phps-mode-parser--table-translations)
 
-;; 328 ((non_empty_member_modifiers) (member_modifier))
-(puthash 328 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
+;; 335 ((non_empty_member_modifiers) (member_modifier))
+(puthash 335 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
 
-;; 329 ((non_empty_member_modifiers) (non_empty_member_modifiers 
member_modifier))
-(puthash 329 (lambda(args _terminals) (append (nth 0 args) (list (nth 1 
args)))) phps-mode-parser--table-translations)
+;; 336 ((non_empty_member_modifiers) (non_empty_member_modifiers 
member_modifier))
+(puthash 336 (lambda(args _terminals) (append (nth 0 args) (list (nth 1 
args)))) phps-mode-parser--table-translations)
 
-;; 330 ((member_modifier) (T_PUBLIC))
-(puthash 330 (lambda(_args _terminals) 'public) 
phps-mode-parser--table-translations)
+;; 337 ((member_modifier) (T_PUBLIC))
+(puthash 337 (lambda(_args _terminals) 'public) 
phps-mode-parser--table-translations)
 
-;; 331 ((member_modifier) (T_PROTECTED))
-(puthash 331 (lambda(_args _terminals) 'protected) 
phps-mode-parser--table-translations)
+;; 338 ((member_modifier) (T_PROTECTED))
+(puthash 338 (lambda(_args _terminals) 'protected) 
phps-mode-parser--table-translations)
 
-;; 332 ((member_modifier) (T_PRIVATE))
-(puthash 332 (lambda(_args _terminals) 'private) 
phps-mode-parser--table-translations)
+;; 339 ((member_modifier) (T_PRIVATE))
+(puthash 339 (lambda(_args _terminals) 'private) 
phps-mode-parser--table-translations)
 
-;; 333 ((member_modifier) (T_STATIC))
-(puthash 333 (lambda(_args _terminals) 'static) 
phps-mode-parser--table-translations)
+;; 340 ((member_modifier) (T_STATIC))
+(puthash 340 (lambda(_args _terminals) 'static) 
phps-mode-parser--table-translations)
 
-;; 334 ((member_modifier) (T_ABSTRACT))
-(puthash 334 (lambda(_args _terminals) 'abstract) 
phps-mode-parser--table-translations)
+;; 341 ((member_modifier) (T_ABSTRACT))
+(puthash 341 (lambda(_args _terminals) 'abstract) 
phps-mode-parser--table-translations)
 
-;; 335 ((member_modifier) (T_FINAL))
-(puthash 335 (lambda(_args _terminals) 'final) 
phps-mode-parser--table-translations)
+;; 342 ((member_modifier) (T_FINAL))
+(puthash 342 (lambda(_args _terminals) 'final) 
phps-mode-parser--table-translations)
 
-;; 336 ((member_modifier) (T_READONLY))
-(puthash 336 (lambda(_args _terminals) 'readonly) 
phps-mode-parser--table-translations)
+;; 343 ((member_modifier) (T_READONLY))
+(puthash 343 (lambda(_args _terminals) 'readonly) 
phps-mode-parser--table-translations)
 
-;; 337 ((property_list) (property_list "," property))
-(puthash
- 337
- (lambda(args _terminals)
-   (append (nth 0 args) (list (nth 2 args))))
- phps-mode-parser--table-translations)
+;; 344 ((property_list) (property_list "," property))
+(puthash 344 (lambda(args _terminals) (append (nth 0 args) (list (nth 2 
args)))) phps-mode-parser--table-translations)
 
-;; 338 ((property_list) (property))
-(puthash
- 338
- (lambda(args _terminals)
-   (list args))
- phps-mode-parser--table-translations)
+;; 345 ((property_list) (property))
+(puthash 345 (lambda(args _terminals) (list args)) 
phps-mode-parser--table-translations)
 
-;; 339 ((property) (T_VARIABLE backup_doc_comment))
+;; 346 ((property) (T_VARIABLE backup_doc_comment))
 (puthash
- 339
+ 346
  (lambda(args terminals)
    `(
      ast-type
@@ -5020,9 +5051,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 340 ((property) (T_VARIABLE "=" expr backup_doc_comment))
+;; 347 ((property) (T_VARIABLE "=" expr backup_doc_comment))
 (puthash
- 340
+ 347
  (lambda(args terminals)
    `(
      ast-type
@@ -5041,23 +5072,23 @@
      ,(cdr (cdr (nth 0 terminals)))))
  phps-mode-parser--table-translations)
 
-;; 341 ((class_const_list) (class_const_list "," class_const_decl))
+;; 348 ((class_const_list) (class_const_list "," class_const_decl))
 (puthash
- 341
+ 348
  (lambda(args _terminals)
    `(append ,(nth 1 args) ,(nth 3 args)))
  phps-mode-parser--table-translations)
 
-;; 342 ((class_const_list) (class_const_decl))
+;; 349 ((class_const_list) (class_const_decl))
 (puthash
- 342
+ 349
  (lambda(args _terminals)
    (list args))
  phps-mode-parser--table-translations)
 
-;; 343 ((class_const_decl) (identifier "=" expr backup_doc_comment))
+;; 350 ((class_const_decl) (identifier "=" expr backup_doc_comment))
 (puthash
- 343
+ 350
  (lambda(args _terminals)
    `(
      ast-type
@@ -5070,17 +5101,10 @@
      ,(nth 3 args)))
  phps-mode-parser--table-translations)
 
-;; 344 ((const_decl) (T_STRING "=" expr backup_doc_comment))
+;; 351 ((const_decl) (T_STRING "=" expr backup_doc_comment))
 (puthash
- 344
- (lambda(args terminals)
-   (push
-    (list
-     (nth 0 args)
-     phps-mode-parser-sdt--bookkeeping-namespace
-     (car (cdr (nth 0 terminals)))
-     (cdr (cdr (nth 0 terminals))))
-    phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack)
+ 351
+ (lambda(args _terminals)
    `(
      ast-type
      constant-string-assignment
@@ -5092,9 +5116,9 @@
      ,(nth 3 args)))
  phps-mode-parser--table-translations)
 
-;; 345 ((echo_expr_list) (echo_expr_list "," echo_expr))
+;; 352 ((echo_expr_list) (echo_expr_list "," echo_expr))
 (puthash
- 345
+ 352
  (lambda(args _terminals)
    `(
      ast-type
@@ -5105,9 +5129,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 346 ((echo_expr_list) (echo_expr))
+;; 353 ((echo_expr_list) (echo_expr))
 (puthash
- 346
+ 353
  (lambda(args _terminals)
    `(
      ast-type
@@ -5116,9 +5140,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 347 ((echo_expr) (expr))
+;; 354 ((echo_expr) (expr))
 (puthash
- 347
+ 354
  (lambda(args _terminals)
    `(
      ast-type
@@ -5127,18 +5151,18 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 348 ((for_exprs) (%empty))
+;; 355 ((for_exprs) (%empty))
 (puthash
- 348
+ 355
  (lambda(_args _terminals)
    `(
      ast-type
      empty-for-exprs))
  phps-mode-parser--table-translations)
 
-;; 349 ((for_exprs) (non_empty_for_exprs))
+;; 356 ((for_exprs) (non_empty_for_exprs))
 (puthash
- 349
+ 356
  (lambda(args _terminals)
    `(
      ast-type
@@ -5148,9 +5172,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 350 ((non_empty_for_exprs) (non_empty_for_exprs "," expr))
+;; 357 ((non_empty_for_exprs) (non_empty_for_exprs "," expr))
 (puthash
- 350
+ 357
  (lambda(args _terminals)
    `(
      ast-type
@@ -5162,9 +5186,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 351 ((non_empty_for_exprs) (expr))
+;; 358 ((non_empty_for_exprs) (expr))
 (puthash
- 351
+ 358
  (lambda(args _terminals)
    `(
      ast-type
@@ -5174,9 +5198,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 352 ((anonymous_class) (T_CLASS ctor_arguments extends_from implements_list 
backup_doc_comment "{" class_statement_list "}"))
+;; 359 ((anonymous_class) (T_CLASS ctor_arguments extends_from implements_list 
backup_doc_comment "{" class_statement_list "}"))
 (puthash
- 352
+ 359
  (lambda(args _terminals)
    `(
      ast-type
@@ -5194,9 +5218,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 353 ((new_expr) (T_NEW class_name_reference ctor_arguments))
+;; 360 ((new_expr) (T_NEW class_name_reference ctor_arguments))
 (puthash
- 353
+ 360
  (lambda(args _terminals)
    `(
      ast-type
@@ -5208,9 +5232,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 354 ((new_expr) (T_NEW anonymous_class))
+;; 361 ((new_expr) (T_NEW anonymous_class))
 (puthash
- 354
+ 361
  (lambda(args _terminals)
    `(
      ast-type
@@ -5220,9 +5244,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 355 ((new_expr) (T_NEW attributes anonymous_class))
+;; 362 ((new_expr) (T_NEW attributes anonymous_class))
 (puthash
- 355
+ 362
  (lambda(args _terminals)
    `(
      ast-type
@@ -5234,9 +5258,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 356 ((expr) (variable))
+;; 363 ((expr) (variable))
 (puthash
- 356
+ 363
  (lambda(args _terminals)
    `(
      ast-type
@@ -5245,9 +5269,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 357 ((expr) (T_LIST "(" array_pair_list ")" "=" expr))
+;; 364 ((expr) (T_LIST "(" array_pair_list ")" "=" expr))
 (puthash
- 357
+ 364
  (lambda(args _terminals)
    (let ((array-pair-list (nth 2 args)))
      (dolist (array-item array-pair-list)
@@ -5290,9 +5314,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 358 ((expr) ("[" array_pair_list "]" "=" expr))
+;; 365 ((expr) ("[" array_pair_list "]" "=" expr))
 (puthash
- 358
+ 365
  (lambda(args _terminals)
    (let ((array-pair-list (nth 1 args)))
      (dolist (array-item array-pair-list)
@@ -5336,9 +5360,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 359 ((expr) (variable "=" expr))
+;; 366 ((expr) (variable "=" expr))
 (puthash
- 359
+ 366
  (lambda(args terminals)
    ;; Save variable declaration in bookkeeping buffer
    (let ((variable-type (plist-get (nth 0 args) 'ast-type)))
@@ -5394,9 +5418,9 @@
      ,(cdr (cdr (nth 0 terminals)))))
  phps-mode-parser--table-translations)
 
-;; 360 ((expr) (variable "=" ampersand variable))
+;; 367 ((expr) (variable "=" ampersand variable))
 (puthash
- 360
+ 367
  (lambda(args terminals)
    ;; Save variable declaration in bookkeeping buffer
    (let ((variable-type1 (plist-get (nth 0 args) 'ast-type)))
@@ -5452,9 +5476,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 361 ((expr) (T_CLONE expr))
+;; 368 ((expr) (T_CLONE expr))
 (puthash
- 361
+ 368
  (lambda(args _terminals)
    `(
      ast-type
@@ -5464,9 +5488,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 362 ((expr) (variable T_PLUS_EQUAL expr))
+;; 369 ((expr) (variable T_PLUS_EQUAL expr))
 (puthash
- 362
+ 369
  (lambda(args _terminals)
    `(
      ast-type
@@ -5478,9 +5502,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 363 ((expr) (variable T_MINUS_EQUAL expr))
+;; 370 ((expr) (variable T_MINUS_EQUAL expr))
 (puthash
- 363
+ 370
  (lambda(args _terminals)
    `(
      ast-type
@@ -5492,9 +5516,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 364 ((expr) (variable T_MUL_EQUAL expr))
+;; 371 ((expr) (variable T_MUL_EQUAL expr))
 (puthash
- 364
+ 371
  (lambda(args _terminals)
    `(
      ast-type
@@ -5506,9 +5530,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 365 ((expr) (variable T_POW_EQUAL expr))
+;; 372 ((expr) (variable T_POW_EQUAL expr))
 (puthash
- 365
+ 372
  (lambda(args _terminals)
    `(
      ast-type
@@ -5520,9 +5544,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 366 ((expr) (variable T_DIV_EQUAL expr))
+;; 373 ((expr) (variable T_DIV_EQUAL expr))
 (puthash
- 366
+ 373
  (lambda(args _terminals)
    `(
      ast-type
@@ -5534,9 +5558,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 367 ((expr) (variable T_CONCAT_EQUAL expr))
+;; 374 ((expr) (variable T_CONCAT_EQUAL expr))
 (puthash
- 367
+ 374
  (lambda(args _terminals)
    `(
      ast-type
@@ -5548,9 +5572,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 368 ((expr) (variable T_MOD_EQUAL expr))
+;; 375 ((expr) (variable T_MOD_EQUAL expr))
 (puthash
- 368
+ 375
  (lambda(args _terminals)
    `(
      ast-type
@@ -5562,9 +5586,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 369 ((expr) (variable T_AND_EQUAL expr))
+;; 376 ((expr) (variable T_AND_EQUAL expr))
 (puthash
- 369
+ 376
  (lambda(args _terminals)
    `(
      ast-type
@@ -5576,9 +5600,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 370 ((expr) (variable T_OR_EQUAL expr))
+;; 377 ((expr) (variable T_OR_EQUAL expr))
 (puthash
- 370
+ 377
  (lambda(args _terminals)
    `(
      ast-type
@@ -5590,9 +5614,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 371 ((expr) (variable T_XOR_EQUAL expr))
+;; 378 ((expr) (variable T_XOR_EQUAL expr))
 (puthash
- 371
+ 378
  (lambda(args _terminals)
    `(
      ast-type
@@ -5604,9 +5628,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 372 ((expr) (variable T_SL_EQUAL expr))
+;; 379 ((expr) (variable T_SL_EQUAL expr))
 (puthash
- 372
+ 379
  (lambda(args _terminals)
    `(
      ast-type
@@ -5618,9 +5642,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 373 ((expr) (variable T_SR_EQUAL expr))
+;; 380 ((expr) (variable T_SR_EQUAL expr))
 (puthash
- 373
+ 380
  (lambda(args _terminals)
    `(
      ast-type
@@ -5632,9 +5656,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 374 ((expr) (variable T_COALESCE_EQUAL expr))
+;; 381 ((expr) (variable T_COALESCE_EQUAL expr))
 (puthash
- 374
+ 381
  (lambda(args _terminals)
    `(
      ast-type
@@ -5646,9 +5670,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 375 ((expr) (variable T_INC))
+;; 382 ((expr) (variable T_INC))
 (puthash
- 375
+ 382
  (lambda(args _terminals)
    `(
      ast-type
@@ -5658,9 +5682,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 376 ((expr) (T_INC variable))
+;; 383 ((expr) (T_INC variable))
 (puthash
- 376
+ 383
  (lambda(args _terminals)
    `(
      ast-type
@@ -5670,9 +5694,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 377 ((expr) (variable T_DEC))
+;; 384 ((expr) (variable T_DEC))
 (puthash
- 377
+ 384
  (lambda(args _terminals)
    `(
      ast-type
@@ -5682,9 +5706,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 378 ((expr) (T_DEC variable))
+;; 385 ((expr) (T_DEC variable))
 (puthash
- 378
+ 385
  (lambda(args _terminals)
    `(
      ast-type
@@ -5694,9 +5718,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 379 ((expr) (expr T_BOOLEAN_OR expr))
+;; 386 ((expr) (expr T_BOOLEAN_OR expr))
 (puthash
- 379
+ 386
  (lambda(args _terminals)
    `(
      ast-type
@@ -5708,9 +5732,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 380 ((expr) (expr T_BOOLEAN_AND expr))
+;; 387 ((expr) (expr T_BOOLEAN_AND expr))
 (puthash
- 380
+ 387
  (lambda(args _terminals)
    `(
      ast-type
@@ -5722,9 +5746,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 381 ((expr) (expr T_LOGICAL_OR expr))
+;; 388 ((expr) (expr T_LOGICAL_OR expr))
 (puthash
- 381
+ 388
  (lambda(args _terminals)
    `(
      ast-type
@@ -5736,9 +5760,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 382 ((expr) (expr T_LOGICAL_AND expr))
+;; 389 ((expr) (expr T_LOGICAL_AND expr))
 (puthash
- 382
+ 389
  (lambda(args _terminals)
    `(
      ast-type
@@ -5750,9 +5774,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 383 ((expr) (expr T_LOGICAL_XOR expr))
+;; 390 ((expr) (expr T_LOGICAL_XOR expr))
 (puthash
- 383
+ 390
  (lambda(args _terminals)
    `(
      ast-type
@@ -5764,9 +5788,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 384 ((expr) (expr "|" expr))
+;; 391 ((expr) (expr "|" expr))
 (puthash
- 384
+ 391
  (lambda(args _terminals)
    `(
      ast-type
@@ -5778,9 +5802,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 385 ((expr) (expr T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG expr))
+;; 392 ((expr) (expr T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG expr))
 (puthash
- 385
+ 392
  (lambda(args _terminals)
    `(
      ast-type
@@ -5792,9 +5816,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 386 ((expr) (expr T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG expr))
+;; 393 ((expr) (expr T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG expr))
 (puthash
- 386
+ 393
  (lambda(args _terminals)
    `(
      ast-type
@@ -5806,9 +5830,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 387 ((expr) (expr "^" expr))
+;; 394 ((expr) (expr "^" expr))
 (puthash
- 387
+ 394
  (lambda(args _terminals)
    `(
      ast-type
@@ -5820,9 +5844,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 388 ((expr) (expr "." expr))
+;; 395 ((expr) (expr "." expr))
 (puthash
- 388
+ 395
  (lambda(args _terminals)
    `(
      ast-type
@@ -5834,9 +5858,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 389 ((expr) (expr "+" expr))
+;; 396 ((expr) (expr "+" expr))
 (puthash
- 389
+ 396
  (lambda(args _terminals)
    `(
      ast-type
@@ -5848,9 +5872,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 390 ((expr) (expr "-" expr))
+;; 397 ((expr) (expr "-" expr))
 (puthash
- 390
+ 397
  (lambda(args _terminals)
    `(
      ast-type
@@ -5862,9 +5886,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 391 ((expr) (expr "*" expr))
+;; 398 ((expr) (expr "*" expr))
 (puthash
- 391
+ 398
  (lambda(args _terminals)
    `(
      ast-type
@@ -5876,9 +5900,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 392 ((expr) (expr T_POW expr))
+;; 399 ((expr) (expr T_POW expr))
 (puthash
- 392
+ 399
  (lambda(args _terminals)
    `(
      ast-type
@@ -5890,9 +5914,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 393 ((expr) (expr "/" expr))
+;; 400 ((expr) (expr "/" expr))
 (puthash
- 393
+ 400
  (lambda(args _terminals)
    `(
      ast-type
@@ -5904,9 +5928,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 394 ((expr) (expr "%" expr))
+;; 401 ((expr) (expr "%" expr))
 (puthash
- 394
+ 401
  (lambda(args _terminals)
    `(
      ast-type
@@ -5918,9 +5942,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 395 ((expr) (expr T_SL expr))
+;; 402 ((expr) (expr T_SL expr))
 (puthash
- 395
+ 402
  (lambda(args _terminals)
    `(
      ast-type
@@ -5932,9 +5956,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 396 ((expr) (expr T_SR expr))
+;; 403 ((expr) (expr T_SR expr))
 (puthash
- 396
+ 403
  (lambda(args _terminals)
    `(
      ast-type
@@ -5946,9 +5970,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 397 ((expr) ("+" expr))
+;; 404 ((expr) ("+" expr))
 (puthash
- 397
+ 404
  (lambda(args _terminals)
    `(
      ast-type
@@ -5958,9 +5982,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 398 ((expr) ("-" expr))
+;; 405 ((expr) ("-" expr))
 (puthash
- 398
+ 405
  (lambda(args _terminals)
    `(
      ast-type
@@ -5970,9 +5994,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 399 ((expr) ("!" expr))
+;; 406 ((expr) ("!" expr))
 (puthash
- 399
+ 406
  (lambda(args _terminals)
    `(
      ast-type
@@ -5982,9 +6006,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 400 ((expr) ("~" expr))
+;; 407 ((expr) ("~" expr))
 (puthash
- 400
+ 407
  (lambda(args _terminals)
    `(
      ast-type
@@ -5994,9 +6018,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 401 ((expr) (expr T_IS_IDENTICAL expr))
+;; 408 ((expr) (expr T_IS_IDENTICAL expr))
 (puthash
- 401
+ 408
  (lambda(args _terminals)
    `(
      ast-type
@@ -6008,9 +6032,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 402 ((expr) (expr T_IS_NOT_IDENTICAL expr))
+;; 409 ((expr) (expr T_IS_NOT_IDENTICAL expr))
 (puthash
- 402
+ 409
  (lambda(args _terminals)
    `(
      ast-type
@@ -6022,9 +6046,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 403 ((expr) (expr T_IS_EQUAL expr))
+;; 410 ((expr) (expr T_IS_EQUAL expr))
 (puthash
- 403
+ 410
  (lambda(args _terminals)
    `(
      ast-type
@@ -6036,9 +6060,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 404 ((expr) (expr T_IS_NOT_EQUAL expr))
+;; 411 ((expr) (expr T_IS_NOT_EQUAL expr))
 (puthash
- 404
+ 411
  (lambda(args _terminals)
    `(
      ast-type
@@ -6050,9 +6074,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 405 ((expr) (expr "<" expr))
+;; 412 ((expr) (expr "<" expr))
 (puthash
- 405
+ 412
  (lambda(args _terminals)
    `(
      ast-type
@@ -6064,9 +6088,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 406 ((expr) (expr T_IS_SMALLER_OR_EQUAL expr))
+;; 413 ((expr) (expr T_IS_SMALLER_OR_EQUAL expr))
 (puthash
- 406
+ 413
  (lambda(args _terminals)
    `(
      ast-type
@@ -6078,9 +6102,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 407 ((expr) (expr ">" expr))
+;; 414 ((expr) (expr ">" expr))
 (puthash
- 407
+ 414
  (lambda(args _terminals)
    `(
      ast-type
@@ -6092,9 +6116,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 408 ((expr) (expr T_IS_GREATER_OR_EQUAL expr))
+;; 415 ((expr) (expr T_IS_GREATER_OR_EQUAL expr))
 (puthash
- 408
+ 415
  (lambda(args _terminals)
    `(
      ast-type
@@ -6106,9 +6130,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 409 ((expr) (expr T_SPACESHIP expr))
+;; 416 ((expr) (expr T_SPACESHIP expr))
 (puthash
- 409
+ 416
  (lambda(args _terminals)
    `(
      ast-type
@@ -6120,9 +6144,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 410 ((expr) (expr T_INSTANCEOF class_name_reference))
+;; 417 ((expr) (expr T_INSTANCEOF class_name_reference))
 (puthash
- 410
+ 417
  (lambda(args _terminals)
    `(
      ast-type
@@ -6134,16 +6158,16 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 411 ((expr) ("(" expr ")"))
+;; 418 ((expr) ("(" expr ")"))
 (puthash
- 411
+ 418
  (lambda(args _terminals)
    (nth 1 args))
  phps-mode-parser--table-translations)
 
-;; 412 ((expr) (new_expr))
+;; 419 ((expr) (new_expr))
 (puthash
- 412
+ 419
  (lambda(args _terminals)
    `(
      ast-type
@@ -6152,9 +6176,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 413 ((expr) (expr "?" expr ":" expr))
+;; 420 ((expr) (expr "?" expr ":" expr))
 (puthash
- 413
+ 420
  (lambda(args _terminals)
    `(
      ast-type
@@ -6167,9 +6191,9 @@
      ,(nth 4 args)))
  phps-mode-parser--table-translations)
 
-;; 414 ((expr) (expr "?" ":" expr))
+;; 421 ((expr) (expr "?" ":" expr))
 (puthash
- 414
+ 421
  (lambda(args _terminals)
    `(
      ast-type
@@ -6182,9 +6206,9 @@
      ,(nth 3 args)))
  phps-mode-parser--table-translations)
 
-;; 415 ((expr) (expr T_COALESCE expr))
+;; 422 ((expr) (expr T_COALESCE expr))
 (puthash
- 415
+ 422
  (lambda(args _terminals)
    `(
      ast-type
@@ -6195,9 +6219,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 416 ((expr) (internal_functions_in_yacc))
+;; 423 ((expr) (internal_functions_in_yacc))
 (puthash
- 416
+ 423
  (lambda(args _terminals)
    `(
      ast-type
@@ -6206,9 +6230,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 417 ((expr) (T_INT_CAST expr))
+;; 424 ((expr) (T_INT_CAST expr))
 (puthash
- 417
+ 424
  (lambda(args _terminals)
    `(
      ast-type
@@ -6217,9 +6241,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 418 ((expr) (T_DOUBLE_CAST expr))
+;; 425 ((expr) (T_DOUBLE_CAST expr))
 (puthash
- 418
+ 425
  (lambda(args _terminals)
    `(
      ast-type
@@ -6228,9 +6252,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 419 ((expr) (T_STRING_CAST expr))
+;; 426 ((expr) (T_STRING_CAST expr))
 (puthash
- 419
+ 426
  (lambda(args _terminals)
    `(
      ast-type
@@ -6239,9 +6263,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 420 ((expr) (T_ARRAY_CAST expr))
+;; 427 ((expr) (T_ARRAY_CAST expr))
 (puthash
- 420
+ 427
  (lambda(args _terminals)
    `(
      ast-type
@@ -6250,9 +6274,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 421 ((expr) (T_OBJECT_CAST expr))
+;; 428 ((expr) (T_OBJECT_CAST expr))
 (puthash
- 421
+ 428
  (lambda(args _terminals)
    `(
      ast-type
@@ -6261,9 +6285,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 422 ((expr) (T_BOOL_CAST expr))
+;; 429 ((expr) (T_BOOL_CAST expr))
 (puthash
- 422
+ 429
  (lambda(args _terminals)
    `(
      ast-type
@@ -6272,9 +6296,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 423 ((expr) (T_UNSET_CAST expr))
+;; 430 ((expr) (T_UNSET_CAST expr))
 (puthash
- 423
+ 430
  (lambda(args _terminals)
    `(
      ast-type
@@ -6283,9 +6307,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 424 ((expr) (T_EXIT exit_expr))
+;; 431 ((expr) (T_EXIT exit_expr))
 (puthash
- 424
+ 431
  (lambda(args _terminals)
    `(
      ast-type
@@ -6294,9 +6318,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 425 ((expr) ("@" expr))
+;; 432 ((expr) ("@" expr))
 (puthash
- 425
+ 432
  (lambda(args _terminals)
    `(
      ast-type
@@ -6305,9 +6329,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 426 ((expr) (scalar))
+;; 433 ((expr) (scalar))
 (puthash
- 426
+ 433
  (lambda(args _terminals)
    `(
      ast-type
@@ -6316,9 +6340,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 427 ((expr) ("`" backticks_expr "`"))
+;; 434 ((expr) ("`" backticks_expr "`"))
 (puthash
- 427
+ 434
  (lambda(args _terminals)
    `(
      ast-type
@@ -6327,9 +6351,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 428 ((expr) (T_PRINT expr))
+;; 435 ((expr) (T_PRINT expr))
 (puthash
- 428
+ 435
  (lambda(args _terminals)
    `(
      ast-type
@@ -6338,18 +6362,18 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 429 ((expr) (T_YIELD))
+;; 436 ((expr) (T_YIELD))
 (puthash
- 429
+ 436
  (lambda(_args _terminals)
    `(
      ast-type
      expr-yield))
  phps-mode-parser--table-translations)
 
-;; 430 ((expr) (T_YIELD expr))
+;; 437 ((expr) (T_YIELD expr))
 (puthash
- 430
+ 437
  (lambda(args _terminals)
    `(
      ast-type
@@ -6358,9 +6382,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 431 ((expr) (T_YIELD expr T_DOUBLE_ARROW expr))
+;; 438 ((expr) (T_YIELD expr T_DOUBLE_ARROW expr))
 (puthash
- 431
+ 438
  (lambda(args _terminals)
    `(
      ast-type
@@ -6371,9 +6395,9 @@
      ,(nth 3 args)))
  phps-mode-parser--table-translations)
 
-;; 432 ((expr) (T_YIELD_FROM expr))
+;; 439 ((expr) (T_YIELD_FROM expr))
 (puthash
- 432
+ 439
  (lambda(args _terminals)
    `(
      ast-type
@@ -6382,9 +6406,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 433 ((expr) (T_THROW expr))
+;; 440 ((expr) (T_THROW expr))
 (puthash
- 433
+ 440
  (lambda(args _terminals)
    `(
      ast-type
@@ -6393,9 +6417,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 434 ((expr) (inline_function))
+;; 441 ((expr) (inline_function))
 (puthash
- 434
+ 441
  (lambda(args _terminals)
    `(
      ast-type
@@ -6404,9 +6428,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 435 ((expr) (attributes inline_function))
+;; 442 ((expr) (attributes inline_function))
 (puthash
- 435
+ 442
  (lambda(args _terminals)
    `(
      ast-type
@@ -6417,9 +6441,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 436 ((expr) (T_STATIC inline_function))
+;; 443 ((expr) (T_STATIC inline_function))
 (puthash
- 436
+ 443
  (lambda(args _terminals)
    `(
      ast-type
@@ -6428,9 +6452,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 437 ((expr) (attributes T_STATIC inline_function))
+;; 444 ((expr) (attributes T_STATIC inline_function))
 (puthash
- 437
+ 444
  (lambda(args _terminals)
    `(
      ast-type
@@ -6441,9 +6465,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 438 ((expr) (match))
+;; 445 ((expr) (match))
 (puthash
- 438
+ 445
  (lambda(args _terminals)
    `(
      ast-type
@@ -6452,9 +6476,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 439 ((inline_function) (function returns_ref backup_doc_comment "(" 
parameter_list ")" lexical_vars return_type backup_fn_flags "{" 
inner_statement_list "}" backup_fn_flags))
+;; 446 ((inline_function) (function returns_ref backup_doc_comment "(" 
parameter_list ")" lexical_vars return_type backup_fn_flags "{" 
inner_statement_list "}" backup_fn_flags))
 (puthash
- 439
+ 446
  (lambda(args terminals)
    (let ((function-start
           (cdr (cdr (nth 9 terminals))))
@@ -6590,9 +6614,9 @@
      ,(nth 12 args)))
  phps-mode-parser--table-translations)
 
-;; 440 ((inline_function) (fn returns_ref backup_doc_comment "(" 
parameter_list ")" return_type T_DOUBLE_ARROW backup_fn_flags backup_lex_pos 
expr backup_fn_flags))
+;; 447 ((inline_function) (fn returns_ref backup_doc_comment "(" 
parameter_list ")" return_type T_DOUBLE_ARROW backup_fn_flags backup_lex_pos 
expr backup_fn_flags))
 (puthash
- 440
+ 447
  (lambda(args _terminals)
    (let ((namespace
           phps-mode-parser-sdt--bookkeeping-namespace)
@@ -6678,63 +6702,63 @@
      ,(nth 11 args)))
  phps-mode-parser--table-translations)
 
-;; 441 ((fn) (T_FN))
+;; 448 ((fn) (T_FN))
 (puthash
- 441
+ 448
  (lambda(_args _terminals)
    `(
      ast-type
      fn))
  phps-mode-parser--table-translations)
 
-;; 442 ((function) (T_FUNCTION))
+;; 449 ((function) (T_FUNCTION))
 (puthash
- 442
+ 449
  (lambda(_args _terminals)
    `(
      ast-type
      function))
  phps-mode-parser--table-translations)
 
-;; 443 ((backup_doc_comment) (%empty))
+;; 450 ((backup_doc_comment) (%empty))
 (puthash
- 443
+ 450
  (lambda(_args _terminals) nil)
  phps-mode-parser--table-translations)
 
-;; 444 ((backup_fn_flags) (%empty))
+;; 451 ((backup_fn_flags) (%empty))
 (puthash
- 444
+ 451
  (lambda(_args _terminals) nil)
  phps-mode-parser--table-translations)
 
-;; 445 ((backup_lex_pos) (%empty))
+;; 452 ((backup_lex_pos) (%empty))
 (puthash
- 445
+ 452
  (lambda(_args _terminals) nil)
  phps-mode-parser--table-translations)
 
-;; 446 ((returns_ref) (%empty))
+;; 453 ((returns_ref) (%empty))
 (puthash
- 446
+ 453
  (lambda(_args _terminals) nil)
  phps-mode-parser--table-translations)
 
-;; 447 ((returns_ref) (ampersand))
+;; 454 ((returns_ref) (ampersand))
 (puthash
- 447
+ 454
  (lambda(_args _terminals) t)
  phps-mode-parser--table-translations)
 
-;; 448 ((lexical_vars) (%empty))
+;; 455 ((lexical_vars) (%empty))
 (puthash
- 448
+ 455
  (lambda(_args _terminals) nil)
  phps-mode-parser--table-translations)
 
-;; 449 ((lexical_vars) (T_USE "(" lexical_var_list possible_comma ")"))
+;; 456 ((lexical_vars) (T_USE "(" lexical_var_list possible_comma ")"))
 (puthash
- 449
+ 456
  (lambda(args _terminals)
    `(
      ast-type
@@ -6743,23 +6767,23 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 450 ((lexical_var_list) (lexical_var_list "," lexical_var))
+;; 457 ((lexical_var_list) (lexical_var_list "," lexical_var))
 (puthash
- 450
+ 457
  (lambda(args _terminals)
    (append (nth 0 args) (nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 451 ((lexical_var_list) (lexical_var))
+;; 458 ((lexical_var_list) (lexical_var))
 (puthash
- 451
+ 458
  (lambda(args _terminals)
    (list args))
  phps-mode-parser--table-translations)
 
-;; 452 ((lexical_var) (T_VARIABLE))
+;; 459 ((lexical_var) (T_VARIABLE))
 (puthash
- 452
+ 459
  (lambda(args terminals)
    `(
      ast-type
@@ -6772,9 +6796,9 @@
      ,(cdr (cdr terminals))))
  phps-mode-parser--table-translations)
 
-;; 453 ((lexical_var) (ampersand T_VARIABLE))
+;; 460 ((lexical_var) (ampersand T_VARIABLE))
 (puthash
- 453
+ 460
  (lambda(args terminals)
    `(
      ast-type
@@ -6786,72 +6810,10 @@
      ,(cdr (cdr (nth 1 terminals)))))
  phps-mode-parser--table-translations)
 
-;; 454 ((function_call) (name argument_list))
+;; 461 ((function_call) (name argument_list))
 (puthash
- 454
- (lambda(args terminals)
-   (when (and
-          (equal (plist-get (nth 0 args) 'ast-type) 'string-name)
-          (string= (downcase (plist-get (nth 0 args) 'name)) "define"))
-     (let* ((arguments (nth 1 args))
-            (key-argument (nth 0 arguments))
-            (key-argument-type (plist-get key-argument 'ast-type)))
-       (when (equal key-argument-type 'argument))
-       (let* ((key-argument-value (plist-get key-argument 'value))
-              (key-argument-value-type (plist-get key-argument-value 
'ast-type)))
-         (when (equal key-argument-value-type 'expr-scalar)
-           (let* ((key-scalar (plist-get key-argument-value 'scalar))
-                  (key-scalar-type (plist-get key-scalar 'ast-type)))
-             (when (equal key-scalar-type 'scalar-dereferencable-scalar)
-               (let* ((dereferenced-scalar (plist-get key-scalar 
'dereferenceable-scalar))
-                      (dereferenced-scalar-type (plist-get dereferenced-scalar 
'ast-type)))
-                 (when
-                     (equal
-                      dereferenced-scalar-type
-                      'dereferencable-scalar-constant-encapsed-string)
-                   (let* ((constant-name
-                          (substring
-                           (plist-get
-                            dereferenced-scalar
-                            'constant-encapsed-string)
-                           1
-                           -1))
-                         (constant-start
-                          (1+ (car (cdr (nth 0 (nth 1 (nth 1 terminals)))))))
-                         (constant-end
-                          (1- (cdr (cdr (nth 0 (nth 1 (nth 1 terminals)))))))
-                         (constant-namespace)
-                         (string-pos 0)
-                         (namespace-pos
-                          (string-search "\\" constant-name string-pos))
-                         (namespace-last-pos namespace-pos))
-
-                     ;; Exclude constants starting with \\ since they are 
silently invalid
-                     (unless (equal namespace-pos 0)
-
-                       ;; Extract any potential constant namespace here
-                       (when namespace-pos
-                         (setq string-pos (1+ string-pos))
-                         (setq namespace-pos (string-search "\\" constant-name 
string-pos))
-                         (while namespace-pos
-                           (setq namespace-last-pos namespace-pos)
-                           (setq string-pos (1+ string-pos))
-                           (setq namespace-pos (string-search "\\" 
constant-name string-pos)))
-                         (setq
-                          constant-namespace
-                          (substring constant-name 0 namespace-last-pos))
-                         (setq
-                          constant-name
-                          (substring constant-name (1+ namespace-last-pos))))
-
-                       ;; (message "constant-name: %S %S" constant-name 
constant-namespace)
-                       (push
-                        (list
-                         constant-name
-                         (if constant-namespace `((namespace 
,constant-namespace)) nil)
-                         constant-start
-                         constant-end)
-                        
phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack)))))))))))
+ 461
+ (lambda(args _terminals)
    `(
      ast-type
      function-call
@@ -6861,9 +6823,20 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 455 ((function_call) (class_name T_PAAMAYIM_NEKUDOTAYIM member_name 
argument_list))
+;; 462 ((function_call) (T_READONLY argument_list))
 (puthash
- 455
+ 462
+ (lambda(args _terminals)
+   `(
+     ast-type
+     readonly-function-call
+     argument-list
+     ,(nth 1 args)))
+ phps-mode-parser--table-translations)
+
+;; 463 ((function_call) (class_name T_PAAMAYIM_NEKUDOTAYIM member_name 
argument_list))
+(puthash
+ 463
  (lambda(args _terminals)
    `(
      ast-type
@@ -6876,9 +6849,9 @@
      ,(nth 3 args)))
  phps-mode-parser--table-translations)
 
-;; 456 ((function_call) (variable_class_name T_PAAMAYIM_NEKUDOTAYIM 
member_name argument_list))
+;; 464 ((function_call) (variable_class_name T_PAAMAYIM_NEKUDOTAYIM 
member_name argument_list))
 (puthash
- 456
+ 464
  (lambda(args _terminals)
    `(
      ast-type
@@ -6891,9 +6864,9 @@
      ,(nth 3 args)))
  phps-mode-parser--table-translations)
 
-;; 457 ((function_call) (callable_expr argument_list))
+;; 465 ((function_call) (callable_expr argument_list))
 (puthash
- 457
+ 465
  (lambda(args _terminals)
    `(
      ast-type
@@ -6904,18 +6877,18 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 458 ((class_name) (T_STATIC))
+;; 466 ((class_name) (T_STATIC))
 (puthash
- 458
+ 466
  (lambda(_args _terminals)
    `(
      ast-type
      class-name-static))
  phps-mode-parser--table-translations)
 
-;; 459 ((class_name) (name))
+;; 467 ((class_name) (name))
 (puthash
- 459
+ 467
  (lambda(args _terminals)
    `(
      ast-type
@@ -6924,9 +6897,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 460 ((class_name_reference) (class_name))
+;; 468 ((class_name_reference) (class_name))
 (puthash
- 460
+ 468
  (lambda(args _terminals)
    `(
      ast-type
@@ -6935,9 +6908,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 461 ((class_name_reference) (new_variable))
+;; 469 ((class_name_reference) (new_variable))
 (puthash
- 461
+ 469
  (lambda(args _terminals)
    `(
      ast-type
@@ -6946,9 +6919,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 462 ((class_name_reference) ("(" expr ")"))
+;; 470 ((class_name_reference) ("(" expr ")"))
 (puthash
- 462
+ 470
  (lambda(args _terminals)
    `(
      ast-type
@@ -6957,18 +6930,18 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 463 ((exit_expr) (%empty))
+;; 471 ((exit_expr) (%empty))
 (puthash
- 463
+ 471
  (lambda(_args _terminals)
    `(
      ast-type
      exit-expr))
  phps-mode-parser--table-translations)
 
-;; 464 ((exit_expr) ("(" optional_expr ")"))
+;; 472 ((exit_expr) ("(" optional_expr ")"))
 (puthash
- 464
+ 472
  (lambda(args _terminals)
    `(
      ast-type
@@ -6977,18 +6950,18 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 465 ((backticks_expr) (%empty))
+;; 473 ((backticks_expr) (%empty))
 (puthash
- 465
+ 473
  (lambda(_args _terminals)
    `(
      ast-type
      backticks-expr-empty))
  phps-mode-parser--table-translations)
 
-;; 466 ((backticks_expr) (T_ENCAPSED_AND_WHITESPACE))
+;; 474 ((backticks_expr) (T_ENCAPSED_AND_WHITESPACE))
 (puthash
- 466
+ 474
  (lambda(args _terminals)
    `(
      ast-type
@@ -6997,9 +6970,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 467 ((backticks_expr) (encaps_list))
+;; 475 ((backticks_expr) (encaps_list))
 (puthash
- 467
+ 475
  (lambda(args _terminals)
    `(
      ast-type
@@ -7008,18 +6981,18 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 468 ((ctor_arguments) (%empty))
+;; 476 ((ctor_arguments) (%empty))
 (puthash
- 468
+ 476
  (lambda(_args _terminals)
    `(
      ast-type
      ctor-arguments-empty))
  phps-mode-parser--table-translations)
 
-;; 469 ((ctor_arguments) (argument_list))
+;; 477 ((ctor_arguments) (argument_list))
 (puthash
- 469
+ 477
  (lambda(args _terminals)
    `(
      ast-type
@@ -7028,9 +7001,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 470 ((dereferenceable_scalar) (T_ARRAY "(" array_pair_list ")"))
+;; 478 ((dereferenceable_scalar) (T_ARRAY "(" array_pair_list ")"))
 (puthash
- 470
+ 478
  (lambda(args _terminals)
    `(
      ast-type
@@ -7040,9 +7013,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 471 ((dereferenceable_scalar) ("[" array_pair_list "]"))
+;; 479 ((dereferenceable_scalar) ("[" array_pair_list "]"))
 (puthash
- 471
+ 479
  (lambda(args _terminals)
    `(
      ast-type
@@ -7052,9 +7025,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 472 ((dereferenceable_scalar) (T_CONSTANT_ENCAPSED_STRING))
+;; 480 ((dereferenceable_scalar) (T_CONSTANT_ENCAPSED_STRING))
 (puthash
- 472
+ 480
  (lambda(args _terminals)
    `(
      ast-type
@@ -7064,9 +7037,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 473 ((dereferenceable_scalar) ("\"" encaps_list "\""))
+;; 481 ((dereferenceable_scalar) ("\"" encaps_list "\""))
 (puthash
- 473
+ 481
  (lambda(args _terminals)
    `(
      ast-type
@@ -7076,9 +7049,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 474 ((scalar) (T_LNUMBER))
+;; 482 ((scalar) (T_LNUMBER))
 (puthash
- 474
+ 482
  (lambda(args _terminals)
    `(
      ast-type
@@ -7088,9 +7061,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 475 ((scalar) (T_DNUMBER))
+;; 483 ((scalar) (T_DNUMBER))
 (puthash
- 475
+ 483
  (lambda(args _terminals)
    `(
      ast-type
@@ -7100,9 +7073,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 476 ((scalar) (T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC))
+;; 484 ((scalar) (T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC))
 (puthash
- 476
+ 484
  (lambda(args _terminals)
    `(
      ast-type
@@ -7112,9 +7085,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 477 ((scalar) (T_START_HEREDOC T_END_HEREDOC))
+;; 485 ((scalar) (T_START_HEREDOC T_END_HEREDOC))
 (puthash
- 477
+ 485
  (lambda(_args _terminals)
    `(
      ast-type
@@ -7124,9 +7097,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 478 ((scalar) (T_START_HEREDOC encaps_list T_END_HEREDOC))
+;; 486 ((scalar) (T_START_HEREDOC encaps_list T_END_HEREDOC))
 (puthash
- 478
+ 486
  (lambda(args _terminals)
    `(
      ast-type
@@ -7136,9 +7109,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 479 ((scalar) (dereferenceable_scalar))
+;; 487 ((scalar) (dereferenceable_scalar))
 (puthash
- 479
+ 487
  (lambda(args _terminals)
    `(
      ast-type
@@ -7148,9 +7121,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 480 ((scalar) (constant))
+;; 488 ((scalar) (constant))
 (puthash
- 480
+ 488
  (lambda(args _terminals)
    `(
      ast-type
@@ -7160,9 +7133,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 481 ((scalar) (class_constant))
+;; 489 ((scalar) (class_constant))
 (puthash
- 481
+ 489
  (lambda(args _terminals)
    `(
      ast-type
@@ -7172,9 +7145,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 482 ((constant) (name))
+;; 490 ((constant) (name))
 (puthash
- 482
+ 490
  (lambda(args _terminals)
 
    ;; TODO Should bookkeep symbol read here
@@ -7251,9 +7224,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 483 ((constant) (T_LINE))
+;; 491 ((constant) (T_LINE))
 (puthash
- 483
+ 491
  (lambda(_args _terminals)
    `(
      ast-type
@@ -7261,9 +7234,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 484 ((constant) (T_FILE))
+;; 492 ((constant) (T_FILE))
 (puthash
- 484
+ 492
  (lambda(_args _terminals)
    `(
      ast-type
@@ -7271,9 +7244,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 485 ((constant) (T_DIR))
+;; 493 ((constant) (T_DIR))
 (puthash
- 485
+ 493
  (lambda(_args _terminals)
    `(
      ast-type
@@ -7281,9 +7254,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 486 ((constant) (T_TRAIT_C))
+;; 494 ((constant) (T_TRAIT_C))
 (puthash
- 486
+ 494
  (lambda(_args _terminals)
    `(
      ast-type
@@ -7291,9 +7264,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 487 ((constant) (T_METHOD_C))
+;; 495 ((constant) (T_METHOD_C))
 (puthash
- 487
+ 495
  (lambda(_args _terminals)
    `(
      ast-type
@@ -7301,9 +7274,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 488 ((constant) (T_FUNC_C))
+;; 496 ((constant) (T_FUNC_C))
 (puthash
- 488
+ 496
  (lambda(_args _terminals)
    `(
      ast-type
@@ -7311,9 +7284,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 489 ((constant) (T_NS_C))
+;; 497 ((constant) (T_NS_C))
 (puthash
- 489
+ 497
  (lambda(_args _terminals)
    `(
      ast-type
@@ -7321,9 +7294,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 490 ((constant) (T_CLASS_C))
+;; 498 ((constant) (T_CLASS_C))
 (puthash
- 490
+ 498
  (lambda(_args _terminals)
    `(
      ast-type
@@ -7331,9 +7304,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 491 ((class_constant) (class_name T_PAAMAYIM_NEKUDOTAYIM identifier))
+;; 499 ((class_constant) (class_name T_PAAMAYIM_NEKUDOTAYIM identifier))
 (puthash
- 491
+ 499
  (lambda(args _terminals)
    `(
      ast-type
@@ -7344,9 +7317,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 492 ((class_constant) (variable_class_name T_PAAMAYIM_NEKUDOTAYIM 
identifier))
+;; 500 ((class_constant) (variable_class_name T_PAAMAYIM_NEKUDOTAYIM 
identifier))
 (puthash
- 492
+ 500
  (lambda(args _terminals)
    `(
      ast-type
@@ -7357,18 +7330,18 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 493 ((optional_expr) (%empty))
+;; 501 ((optional_expr) (%empty))
 (puthash
- 493
+ 501
  (lambda(_args _terminals)
    `(
      ast-type
      optional-expr-empty))
  phps-mode-parser--table-translations)
 
-;; 494 ((optional_expr) (expr))
+;; 502 ((optional_expr) (expr))
 (puthash
- 494
+ 502
  (lambda(args _terminals)
    `(
      ast-type
@@ -7377,9 +7350,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 495 ((variable_class_name) (fully_dereferenceable))
+;; 503 ((variable_class_name) (fully_dereferenceable))
 (puthash
- 495
+ 503
  (lambda(args _terminals)
    `(
      ast-type
@@ -7388,9 +7361,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 496 ((fully_dereferenceable) (variable))
+;; 504 ((fully_dereferenceable) (variable))
 (puthash
- 496
+ 504
  (lambda(args _terminals)
    `(
      ast-type
@@ -7399,9 +7372,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 497 ((fully_dereferenceable) ("(" expr ")"))
+;; 505 ((fully_dereferenceable) ("(" expr ")"))
 (puthash
- 497
+ 505
  (lambda(args _terminals)
    `(
      ast-type
@@ -7410,9 +7383,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 498 ((fully_dereferenceable) (dereferenceable_scalar))
+;; 506 ((fully_dereferenceable) (dereferenceable_scalar))
 (puthash
- 498
+ 506
  (lambda(args _terminals)
    `(
      ast-type
@@ -7421,9 +7394,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 499 ((fully_dereferenceable) (class_constant))
+;; 507 ((fully_dereferenceable) (class_constant))
 (puthash
- 499
+ 507
  (lambda(args _terminals)
    `(
      ast-type
@@ -7432,9 +7405,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 500 ((array_object_dereferenceable) (fully_dereferenceable))
+;; 508 ((array_object_dereferenceable) (fully_dereferenceable))
 (puthash
- 500
+ 508
  (lambda(args _terminals)
    `(
      ast-type
@@ -7443,9 +7416,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 501 ((array_object_dereferenceable) (constant))
+;; 509 ((array_object_dereferenceable) (constant))
 (puthash
- 501
+ 509
  (lambda(args _terminals)
    `(
      ast-type
@@ -7454,9 +7427,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 502 ((callable_expr) (callable_variable))
+;; 510 ((callable_expr) (callable_variable))
 (puthash
- 502
+ 510
  (lambda(args _terminals)
    `(
      ast-type
@@ -7465,9 +7438,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 503 ((callable_expr) ("(" expr ")"))
+;; 511 ((callable_expr) ("(" expr ")"))
 (puthash
- 503
+ 511
  (lambda(args _terminals)
    `(
      ast-type
@@ -7476,9 +7449,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 504 ((callable_expr) (dereferenceable_scalar))
+;; 512 ((callable_expr) (dereferenceable_scalar))
 (puthash
- 504
+ 512
  (lambda(args _terminals)
    `(
      ast-type
@@ -7486,9 +7459,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 505 ((callable_variable) (simple_variable))
+;; 513 ((callable_variable) (simple_variable))
 (puthash
- 505
+ 513
  (lambda(args _terminals)
    `(
      ast-type
@@ -7497,9 +7470,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 506 ((callable_variable) (array_object_dereferenceable "[" optional_expr 
"]"))
+;; 514 ((callable_variable) (array_object_dereferenceable "[" optional_expr 
"]"))
 (puthash
- 506
+ 514
  (lambda(args _terminals)
    `(
      ast-type
@@ -7510,9 +7483,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 507 ((callable_variable) (array_object_dereferenceable "{" expr "}"))
+;; 515 ((callable_variable) (array_object_dereferenceable "{" expr "}"))
 (puthash
- 507
+ 515
  (lambda(args _terminals)
    `(
      ast-type
@@ -7523,9 +7496,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 508 ((callable_variable) (array_object_dereferenceable T_OBJECT_OPERATOR 
property_name argument_list))
+;; 516 ((callable_variable) (array_object_dereferenceable T_OBJECT_OPERATOR 
property_name argument_list))
 (puthash
- 508
+ 516
  (lambda(args _terminals)
    `(
      ast-type
@@ -7538,9 +7511,9 @@
      ,(nth 3 args)))
  phps-mode-parser--table-translations)
 
-;; 509 ((callable_variable) (array_object_dereferenceable 
T_NULLSAFE_OBJECT_OPERATOR property_name argument_list))
+;; 517 ((callable_variable) (array_object_dereferenceable 
T_NULLSAFE_OBJECT_OPERATOR property_name argument_list))
 (puthash
- 509
+ 517
  (lambda(args _terminals)
    `(
      ast-type
@@ -7553,9 +7526,9 @@
      ,(nth 3 args)))
  phps-mode-parser--table-translations)
 
-;; 510 ((callable_variable) (function_call))
+;; 518 ((callable_variable) (function_call))
 (puthash
- 510
+ 518
  (lambda(args _terminals)
    `(
      ast-type
@@ -7564,9 +7537,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 511 ((variable) (callable_variable))
+;; 519 ((variable) (callable_variable))
 (puthash
- 511
+ 519
  (lambda(args _terminals)
    `(
      ast-type
@@ -7575,9 +7548,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 512 ((variable) (static_member))
+;; 520 ((variable) (static_member))
 (puthash
- 512
+ 520
  (lambda(args _terminals)
    `(
      ast-type
@@ -7586,9 +7559,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 513 ((variable) (array_object_dereferenceable T_OBJECT_OPERATOR 
property_name))
+;; 521 ((variable) (array_object_dereferenceable T_OBJECT_OPERATOR 
property_name))
 (puthash
- 513
+ 521
  (lambda(args terminals)
    (let* ((array-object-dereferenceable (nth 0 args))
           (array-object-dereferenceable-type
@@ -7671,9 +7644,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 514 ((variable) (array_object_dereferenceable T_NULLSAFE_OBJECT_OPERATOR 
property_name))
+;; 522 ((variable) (array_object_dereferenceable T_NULLSAFE_OBJECT_OPERATOR 
property_name))
 (puthash
- 514
+ 522
  (lambda(args _terminals)
    `(
      ast-type
@@ -7684,9 +7657,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 515 ((simple_variable) (T_VARIABLE))
+;; 523 ((simple_variable) (T_VARIABLE))
 (puthash
- 515
+ 523
  (lambda(args terminals)
    (let ((symbol-name
            args)
@@ -7714,9 +7687,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 516 ((simple_variable) ("$" "{" expr "}"))
+;; 524 ((simple_variable) ("$" "{" expr "}"))
 (puthash
- 516
+ 524
  (lambda(args _terminals)
    `(
      ast-type
@@ -7724,9 +7697,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 517 ((simple_variable) ("$" simple_variable))
+;; 525 ((simple_variable) ("$" simple_variable))
 (puthash
- 517
+ 525
  (lambda(args terminals)
    `(
      ast-type
@@ -7739,9 +7712,9 @@
      ))
  phps-mode-parser--table-translations)
 
-;; 518 ((static_member) (class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable))
+;; 526 ((static_member) (class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable))
 (puthash
- 518
+ 526
  (lambda(args _terminals)
    (let* ((class-name (nth 0 args))
           (class-name-type (plist-get class-name 'ast-type)))
@@ -7768,9 +7741,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 519 ((static_member) (variable_class_name T_PAAMAYIM_NEKUDOTAYIM 
simple_variable))
+;; 527 ((static_member) (variable_class_name T_PAAMAYIM_NEKUDOTAYIM 
simple_variable))
 (puthash
- 519
+ 527
  (lambda(args _terminals)
    ;; TODO Add bookkeeping here
    `(
@@ -7782,9 +7755,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 520 ((new_variable) (simple_variable))
+;; 528 ((new_variable) (simple_variable))
 (puthash
- 520
+ 528
  (lambda(args _terminals)
    `(
      ast-type
@@ -7793,9 +7766,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 521 ((new_variable) (new_variable "[" optional_expr "]"))
+;; 529 ((new_variable) (new_variable "[" optional_expr "]"))
 (puthash
- 521
+ 529
  (lambda(args _terminals)
    `(
      ast-type
@@ -7806,9 +7779,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 522 ((new_variable) (new_variable "{" expr "}"))
+;; 530 ((new_variable) (new_variable "{" expr "}"))
 (puthash
- 522
+ 530
  (lambda(args _terminals)
    `(
      ast-type
@@ -7819,9 +7792,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 523 ((new_variable) (new_variable T_OBJECT_OPERATOR property_name))
+;; 531 ((new_variable) (new_variable T_OBJECT_OPERATOR property_name))
 (puthash
- 523
+ 531
  (lambda(args _terminals)
    `(
      ast-type
@@ -7832,9 +7805,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 524 ((new_variable) (new_variable T_NULLSAFE_OBJECT_OPERATOR property_name))
+;; 532 ((new_variable) (new_variable T_NULLSAFE_OBJECT_OPERATOR property_name))
 (puthash
- 524
+ 532
  (lambda(args _terminals)
    `(
      ast-type
@@ -7845,9 +7818,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 525 ((new_variable) (class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable))
+;; 533 ((new_variable) (class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable))
 (puthash
- 525
+ 533
  (lambda(args _terminals)
    `(
      ast-type
@@ -7858,9 +7831,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 526 ((new_variable) (new_variable T_PAAMAYIM_NEKUDOTAYIM simple_variable))
+;; 534 ((new_variable) (new_variable T_PAAMAYIM_NEKUDOTAYIM simple_variable))
 (puthash
- 526
+ 534
  (lambda(args _terminals)
    `(
      ast-type
@@ -7871,9 +7844,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 527 ((member_name) (identifier))
+;; 535 ((member_name) (identifier))
 (puthash
- 527
+ 535
  (lambda(args _terminals)
    `(
      ast-type
@@ -7882,9 +7855,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 528 ((member_name) ("{" expr "}"))
+;; 536 ((member_name) ("{" expr "}"))
 (puthash
- 528
+ 536
  (lambda(args _terminals)
    `(
      ast-type
@@ -7893,9 +7866,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 529 ((member_name) (simple_variable))
+;; 537 ((member_name) (simple_variable))
 (puthash
- 529
+ 537
  (lambda(args _terminals)
    `(
      ast-type
@@ -7904,9 +7877,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 530 ((property_name) (T_STRING))
+;; 538 ((property_name) (T_STRING))
 (puthash
- 530
+ 538
  (lambda(args _terminals)
    `(
      ast-type
@@ -7915,9 +7888,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 531 ((property_name) ("{" expr "}"))
+;; 539 ((property_name) ("{" expr "}"))
 (puthash
- 531
+ 539
  (lambda(args _terminals)
    `(
      ast-type
@@ -7926,9 +7899,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 532 ((property_name) (simple_variable))
+;; 540 ((property_name) (simple_variable))
 (puthash
- 532
+ 540
  (lambda(args _terminals)
    `(
      ast-type
@@ -7937,46 +7910,46 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 533 ((array_pair_list) (non_empty_array_pair_list))
+;; 541 ((array_pair_list) (non_empty_array_pair_list))
 (puthash
- 533
+ 541
  (lambda(args _terminals)
    args)
  phps-mode-parser--table-translations)
 
-;; 534 ((possible_array_pair) (%empty))
+;; 542 ((possible_array_pair) (%empty))
 (puthash
- 534
+ 542
  (lambda(_args _terminals)
    nil)
  phps-mode-parser--table-translations)
 
-;; 535 ((possible_array_pair) (array_pair))
+;; 543 ((possible_array_pair) (array_pair))
 (puthash
- 535
+ 543
  (lambda(args _terminals)
    args)
  phps-mode-parser--table-translations)
 
-;; 536 ((non_empty_array_pair_list) (non_empty_array_pair_list "," 
possible_array_pair))
+;; 544 ((non_empty_array_pair_list) (non_empty_array_pair_list "," 
possible_array_pair))
 (puthash
- 536
+ 544
  (lambda(args _terminals)
    (if (nth 2 args)
        (append (nth 0 args) (list (nth 2 args)))
      (nth 0 args)))
  phps-mode-parser--table-translations)
 
-;; 537 ((non_empty_array_pair_list) (possible_array_pair))
+;; 545 ((non_empty_array_pair_list) (possible_array_pair))
 (puthash
- 537
+ 545
  (lambda(args _terminals)
    (list args))
  phps-mode-parser--table-translations)
 
-;; 538 ((array_pair) (expr T_DOUBLE_ARROW expr))
+;; 546 ((array_pair) (expr T_DOUBLE_ARROW expr))
 (puthash
- 538
+ 546
  (lambda(args _terminals)
    `(
      ast-type
@@ -7987,9 +7960,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 539 ((array_pair) (expr))
+;; 547 ((array_pair) (expr))
 (puthash
- 539
+ 547
  (lambda(args _terminals)
    `(
      ast-type
@@ -7998,9 +7971,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 540 ((array_pair) (expr T_DOUBLE_ARROW ampersand variable))
+;; 548 ((array_pair) (expr T_DOUBLE_ARROW ampersand variable))
 (puthash
- 540
+ 548
  (lambda(args _terminals)
    `(
      ast-type
@@ -8011,9 +7984,9 @@
      ,(nth 3 args)))
  phps-mode-parser--table-translations)
 
-;; 541 ((array_pair) (ampersand variable))
+;; 549 ((array_pair) (ampersand variable))
 (puthash
- 541
+ 549
  (lambda(args _terminals)
    `(
      ast-type
@@ -8022,9 +7995,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 542 ((array_pair) (T_ELLIPSIS expr))
+;; 550 ((array_pair) (T_ELLIPSIS expr))
 (puthash
- 542
+ 550
  (lambda(args _terminals)
    `(
      ast-type
@@ -8033,9 +8006,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 543 ((array_pair) (expr T_DOUBLE_ARROW T_LIST "(" array_pair_list ")"))
+;; 551 ((array_pair) (expr T_DOUBLE_ARROW T_LIST "(" array_pair_list ")"))
 (puthash
- 543
+ 551
  (lambda(args _terminals)
    `(
      ast-type
@@ -8046,9 +8019,9 @@
      ,(nth 4 args)))
  phps-mode-parser--table-translations)
 
-;; 544 ((array_pair) (T_LIST "(" array_pair_list ")"))
+;; 552 ((array_pair) (T_LIST "(" array_pair_list ")"))
 (puthash
- 544
+ 552
  (lambda(args _terminals)
    `(
      ast-type
@@ -8057,9 +8030,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 545 ((encaps_list) (encaps_list encaps_var))
+;; 553 ((encaps_list) (encaps_list encaps_var))
 (puthash
- 545
+ 553
  (lambda(args _terminals)
    `(
      ast-type
@@ -8067,9 +8040,9 @@
      ,(append (nth 0 args) (list (nth 1 args)))))
  phps-mode-parser--table-translations)
 
-;; 546 ((encaps_list) (encaps_list T_ENCAPSED_AND_WHITESPACE))
+;; 554 ((encaps_list) (encaps_list T_ENCAPSED_AND_WHITESPACE))
 (puthash
- 546
+ 554
  (lambda(args _terminals)
    `(
      ast-type
@@ -8080,9 +8053,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 547 ((encaps_list) (encaps_var))
+;; 555 ((encaps_list) (encaps_var))
 (puthash
- 547
+ 555
  (lambda(args _terminals)
    `(
      ast-type
@@ -8091,9 +8064,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 548 ((encaps_list) (T_ENCAPSED_AND_WHITESPACE encaps_var))
+;; 556 ((encaps_list) (T_ENCAPSED_AND_WHITESPACE encaps_var))
 (puthash
- 548
+ 556
  (lambda(args _terminals)
    `(
      ast-type
@@ -8104,9 +8077,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 549 ((encaps_var) (T_VARIABLE))
+;; 557 ((encaps_var) (T_VARIABLE))
 (puthash
- 549
+ 557
  (lambda(args _terminals)
    `(
      ast-type
@@ -8115,9 +8088,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 550 ((encaps_var) (T_VARIABLE "[" encaps_var_offset "]"))
+;; 558 ((encaps_var) (T_VARIABLE "[" encaps_var_offset "]"))
 (puthash
- 550
+ 558
  (lambda(args _terminals)
    `(
      ast-type
@@ -8128,9 +8101,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 551 ((encaps_var) (T_VARIABLE T_OBJECT_OPERATOR T_STRING))
+;; 559 ((encaps_var) (T_VARIABLE T_OBJECT_OPERATOR T_STRING))
 (puthash
- 551
+ 559
  (lambda(args _terminals)
    `(
      ast-type
@@ -8141,9 +8114,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 552 ((encaps_var) (T_VARIABLE T_NULLSAFE_OBJECT_OPERATOR T_STRING))
+;; 560 ((encaps_var) (T_VARIABLE T_NULLSAFE_OBJECT_OPERATOR T_STRING))
 (puthash
- 552
+ 560
  (lambda(args _terminals)
    `(
      ast-type
@@ -8154,9 +8127,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 553 ((encaps_var) (T_DOLLAR_OPEN_CURLY_BRACES expr "}"))
+;; 561 ((encaps_var) (T_DOLLAR_OPEN_CURLY_BRACES expr "}"))
 (puthash
- 553
+ 561
  (lambda(args _terminals)
    `(
      ast-type
@@ -8165,9 +8138,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 554 ((encaps_var) (T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME "}"))
+;; 562 ((encaps_var) (T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME "}"))
 (puthash
- 554
+ 562
  (lambda(args _terminals)
    `(
      ast-type
@@ -8176,9 +8149,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 555 ((encaps_var) (T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME "[" expr "]" 
"}"))
+;; 563 ((encaps_var) (T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME "[" expr "]" 
"}"))
 (puthash
- 555
+ 563
  (lambda(args _terminals)
    `(
      ast-type
@@ -8189,9 +8162,9 @@
      ,(nth 3 args)))
  phps-mode-parser--table-translations)
 
-;; 556 ((encaps_var) (T_CURLY_OPEN variable "}"))
+;; 564 ((encaps_var) (T_CURLY_OPEN variable "}"))
 (puthash
- 556
+ 564
  (lambda(args _terminals)
    `(
      ast-type
@@ -8200,9 +8173,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 557 ((encaps_var_offset) (T_STRING))
+;; 565 ((encaps_var_offset) (T_STRING))
 (puthash
- 557
+ 565
  (lambda(args _terminals)
    `(
      ast-type
@@ -8211,9 +8184,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 558 ((encaps_var_offset) (T_NUM_STRING))
+;; 566 ((encaps_var_offset) (T_NUM_STRING))
 (puthash
- 558
+ 566
  (lambda(args _terminals)
    `(
      ast-type
@@ -8222,9 +8195,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 559 ((encaps_var_offset) ("-" T_NUM_STRING))
+;; 567 ((encaps_var_offset) ("-" T_NUM_STRING))
 (puthash
- 559
+ 567
  (lambda(args _terminals)
    `(
      ast-type
@@ -8233,9 +8206,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 560 ((encaps_var_offset) (T_VARIABLE))
+;; 568 ((encaps_var_offset) (T_VARIABLE))
 (puthash
- 560
+ 568
  (lambda(args _terminals)
    `(
      ast-type
@@ -8244,9 +8217,9 @@
      ,args))
  phps-mode-parser--table-translations)
 
-;; 561 ((internal_functions_in_yacc) (T_ISSET "(" isset_variables 
possible_comma ")"))
+;; 569 ((internal_functions_in_yacc) (T_ISSET "(" isset_variables 
possible_comma ")"))
 (puthash
- 561
+ 569
  (lambda(args terminals)
    (when phps-mode-parser-sdt--bookkeeping-symbol-stack
      (let ((isset-start (car (cdr (nth 1 terminals))))
@@ -8271,9 +8244,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 562 ((internal_functions_in_yacc) (T_EMPTY "(" expr ")"))
+;; 570 ((internal_functions_in_yacc) (T_EMPTY "(" expr ")"))
 (puthash
- 562
+ 570
  (lambda(args terminals)
    (when phps-mode-parser-sdt--bookkeeping-symbol-stack
      (let ((empty-start (car (cdr (nth 1 terminals))))
@@ -8298,9 +8271,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 563 ((internal_functions_in_yacc) (T_INCLUDE expr))
+;; 571 ((internal_functions_in_yacc) (T_INCLUDE expr))
 (puthash
- 563
+ 571
  (lambda(args _terminals)
    `(
      ast-type
@@ -8309,9 +8282,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 564 ((internal_functions_in_yacc) (T_INCLUDE_ONCE expr))
+;; 572 ((internal_functions_in_yacc) (T_INCLUDE_ONCE expr))
 (puthash
- 564
+ 572
  (lambda(args _terminals)
    `(
      ast-type
@@ -8320,9 +8293,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 565 ((internal_functions_in_yacc) (T_EVAL "(" expr ")"))
+;; 573 ((internal_functions_in_yacc) (T_EVAL "(" expr ")"))
 (puthash
- 565
+ 573
  (lambda(args _terminals)
    `(
      ast-type
@@ -8331,9 +8304,9 @@
      ,(nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 566 ((internal_functions_in_yacc) (T_REQUIRE expr))
+;; 574 ((internal_functions_in_yacc) (T_REQUIRE expr))
 (puthash
- 566
+ 574
  (lambda(args _terminals)
    `(
      ast-type
@@ -8342,9 +8315,9 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 567 ((internal_functions_in_yacc) (T_REQUIRE_ONCE expr))
+;; 575 ((internal_functions_in_yacc) (T_REQUIRE_ONCE expr))
 (puthash
- 567
+ 575
  (lambda(args _terminals)
    `(
      ast-type
@@ -8353,23 +8326,23 @@
      ,(nth 1 args)))
  phps-mode-parser--table-translations)
 
-;; 568 ((isset_variables) (isset_variable))
+;; 576 ((isset_variables) (isset_variable))
 (puthash
- 568
+ 576
  (lambda(args _terminals)
    (list args))
  phps-mode-parser--table-translations)
 
-;; 569 ((isset_variables) (isset_variables "," isset_variable))
+;; 577 ((isset_variables) (isset_variables "," isset_variable))
 (puthash
- 569
+ 577
  (lambda(args _terminals)
    (append (nth 0 args) (nth 2 args)))
  phps-mode-parser--table-translations)
 
-;; 570 ((isset_variable) (expr))
+;; 578 ((isset_variable) (expr))
 (puthash
- 570
+ 578
  (lambda(args _terminals)
    args)
  phps-mode-parser--table-translations)
diff --git a/phps-mode-parser.el b/phps-mode-parser.el
index 64f7b8f1eb..ee9b559e53 100644
--- a/phps-mode-parser.el
+++ b/phps-mode-parser.el
@@ -26,27 +26,27 @@
 
 (defvar
   phps-mode-parser--action-tables
-  #s(hash-table size 28048 test equal rehash-size 1.5 rehash-threshold 0.8125 
data (0 0 1 1 2 2 3 3 4 4 5 2 6 2 7 2 8 8 9 2 10 10 11 11 12 2 13 13 14 2 15 15 
16 16 17 17 18 2 19 16 20 20 21 15 22 22 23 11 24 24 25 25 26 26 27 2 28 2 29 
11 30 16 31 11 32 32 33 33 34 34 35 35 36 11 37 11 38 38 39 39 40 40 41 16 42 
11 43 11 44 22 45 2 46 2 47 47 48 16 49 2 50 11 51 51 52 11 53 53 54 11 55 55 
56 56 57 57 58 58 59 59 60 60 61 61 62 2 63 2 64 2 65 2 66 15 67 67 68 68 69 69 
70 2 71 11 72 2 73 1 [...]
+  #s(hash-table size 42072 test equal rehash-size 1.5 rehash-threshold 0.8125 
data (0 0 1 1 2 2 3 3 4 4 5 2 6 2 7 2 8 8 9 2 10 10 11 11 12 2 13 13 14 2 15 15 
16 16 17 17 18 2 19 16 20 20 21 15 22 22 23 11 24 24 25 25 26 26 27 2 28 2 29 
11 30 16 31 11 32 32 33 33 34 34 35 35 36 11 37 11 38 38 39 39 40 40 41 16 42 
11 43 11 44 22 45 2 46 2 47 47 48 16 49 2 50 11 51 51 52 11 53 53 54 11 55 55 
56 56 57 57 58 58 59 59 60 60 61 61 62 2 63 2 64 64 65 2 66 2 67 15 68 68 69 69 
70 70 71 2 72 11 73  [...]
   "The generated action-tables.")
 
 (defvar
   phps-mode-parser--distinct-action-tables
-  #s(hash-table size 12466 test equal rehash-size 1.5 rehash-threshold 0.8125 
data (0 ((("!") reduce 84) (("\"") reduce 84) (($) reduce 84) (("$") reduce 84) 
(("(") reduce 84) (("+") reduce 84) (("-") reduce 84) ((";") reduce 84) (("@") 
reduce 84) ((T_ABSTRACT) reduce 84) ((T_ARRAY) reduce 84) ((T_ARRAY_CAST) 
reduce 84) ((T_ATTRIBUTE) reduce 84) ((T_BOOL_CAST) reduce 84) ((T_BREAK) 
reduce 84) ((T_CLASS) reduce 84) ((T_CLASS_C) reduce 84) ((T_CLONE) reduce 84) 
((T_CONST) reduce 84) ((T_CO [...]
+  #s(hash-table size 12466 test equal rehash-size 1.5 rehash-threshold 0.8125 
data (0 ((("!") reduce 84) (("\"") reduce 84) (($) reduce 84) (("$") reduce 84) 
(("(") reduce 84) (("+") reduce 84) (("-") reduce 84) ((";") reduce 84) (("@") 
reduce 84) ((T_ABSTRACT) reduce 84) ((T_ARRAY) reduce 84) ((T_ARRAY_CAST) 
reduce 84) ((T_ATTRIBUTE) reduce 84) ((T_BOOL_CAST) reduce 84) ((T_BREAK) 
reduce 84) ((T_CLASS) reduce 84) ((T_CLASS_C) reduce 84) ((T_CLONE) reduce 84) 
((T_CONST) reduce 84) ((T_CO [...]
   "The generated distinct action-tables.")
 
 (defvar
   phps-mode-parser--goto-tables
-  #s(hash-table size 28048 test equal rehash-size 1.5 rehash-threshold 0.8125 
data (0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 8 11 10 12 11 13 12 14 13 15 
14 16 15 17 8 18 16 19 17 20 8 21 18 22 19 23 20 24 8 25 8 26 21 27 22 28 23 29 
24 30 25 31 26 32 27 33 8 34 8 35 8 36 28 37 29 38 8 39 8 40 30 41 31 42 32 43 
33 44 34 45 35 46 36 47 8 48 37 49 38 50 39 51 8 52 40 53 8 54 41 55 8 56 42 57 
8 58 8 59 8 60 43 61 8 62 44 63 45 64 46 65 47 66 48 67 49 68 50 69 51 70 52 71 
53 72 54 73 55 74 [...]
+  #s(hash-table size 42072 test equal rehash-size 1.5 rehash-threshold 0.8125 
data (0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 8 11 10 12 11 13 12 14 13 15 
14 16 15 17 8 18 16 19 17 20 8 21 18 22 19 23 20 24 8 25 8 26 21 27 22 28 23 29 
24 30 25 31 26 32 27 33 8 34 8 35 8 36 28 37 29 38 8 39 8 40 30 41 31 42 32 43 
33 44 34 45 35 46 36 47 8 48 37 49 38 50 39 51 8 52 40 53 8 54 41 55 8 56 42 57 
8 58 8 59 8 60 43 61 8 62 44 63 45 64 46 65 47 66 48 67 49 68 50 69 51 70 52 71 
53 72 54 73 55 74 [...]
   "The generated goto-tables.")
 
 (defvar
   phps-mode-parser--distinct-goto-tables
-  #s(hash-table size 18699 test equal rehash-size 1.5 rehash-threshold 0.8125 
data (0 ((top_statement_list 1)) 1 (("!" 2) ("\"" 3) ("$" 4) ("(" 5) ("+" 6) 
("-" 7) (";" 8) ("@" 9) (T_ABSTRACT 10) (T_ARRAY 11) (T_ARRAY_CAST 12) 
(T_ATTRIBUTE 13) (T_BOOL_CAST 14) (T_BREAK 15) (T_CLASS 16) (T_CLASS_C 17) 
(T_CLONE 18) (T_CONST 19) (T_CONSTANT_ENCAPSED_STRING 20) (T_CONTINUE 21) 
(T_DEC 22) (T_DECLARE 23) (T_DIR 24) (T_DNUMBER 25) (T_DO 26) (T_DOUBLE_CAST 
27) (T_ECHO 28) (T_EMPTY 29) (T_ENUM 30) [...]
+  #s(hash-table size 18699 test equal rehash-size 1.5 rehash-threshold 0.8125 
data (0 ((top_statement_list 1)) 1 (("!" 2) ("\"" 3) ("$" 4) ("(" 5) ("+" 6) 
("-" 7) (";" 8) ("@" 9) (T_ABSTRACT 10) (T_ARRAY 11) (T_ARRAY_CAST 12) 
(T_ATTRIBUTE 13) (T_BOOL_CAST 14) (T_BREAK 15) (T_CLASS 16) (T_CLASS_C 17) 
(T_CLONE 18) (T_CONST 19) (T_CONSTANT_ENCAPSED_STRING 20) (T_CONTINUE 21) 
(T_DEC 22) (T_DECLARE 23) (T_DIR 24) (T_DNUMBER 25) (T_DO 26) (T_DOUBLE_CAST 
27) (T_ECHO 28) (T_EMPTY 29) (T_ENUM 30) [...]
   "The generated distinct goto-tables.")
 
 (defvar
   phps-mode-parser--table-productions-number-reverse
-  #s(hash-table size 730 test equal rehash-size 1.5 rehash-threshold 0.8125 
data (0 ((start) (top_statement_list)) 1 ((reserved_non_modifiers) (T_INCLUDE)) 
2 ((reserved_non_modifiers) (T_INCLUDE_ONCE)) 3 ((reserved_non_modifiers) 
(T_EVAL)) 4 ((reserved_non_modifiers) (T_REQUIRE)) 5 ((reserved_non_modifiers) 
(T_REQUIRE_ONCE)) 6 ((reserved_non_modifiers) (T_LOGICAL_OR)) 7 
((reserved_non_modifiers) (T_LOGICAL_XOR)) 8 ((reserved_non_modifiers) 
(T_LOGICAL_AND)) 9 ((reserved_non_modifiers) (T_ [...]
+  #s(hash-table size 730 test equal rehash-size 1.5 rehash-threshold 0.8125 
data (0 ((start) (top_statement_list)) 1 ((reserved_non_modifiers) (T_INCLUDE)) 
2 ((reserved_non_modifiers) (T_INCLUDE_ONCE)) 3 ((reserved_non_modifiers) 
(T_EVAL)) 4 ((reserved_non_modifiers) (T_REQUIRE)) 5 ((reserved_non_modifiers) 
(T_REQUIRE_ONCE)) 6 ((reserved_non_modifiers) (T_LOGICAL_OR)) 7 
((reserved_non_modifiers) (T_LOGICAL_XOR)) 8 ((reserved_non_modifiers) 
(T_LOGICAL_AND)) 9 ((reserved_non_modifiers) (T_ [...]
   "The hash-table indexed by production-number and value is production.")
 
 (defvar
@@ -61,7 +61,7 @@
 
 (defvar
   phps-mode-parser--table-non-terminal-p
-  #s(hash-table size 217 test equal rehash-size 1.5 rehash-threshold 0.8125 
data (isset_variable t isset_variables t encaps_var_offset t encaps_var t 
possible_array_pair t array_pair t non_empty_array_pair_list t static_member t 
function_call t property_name t array_object_dereferenceable t 
callable_variable t fully_dereferenceable t class_constant t constant t 
dereferenceable_scalar t encaps_list t new_variable t callable_expr t 
variable_class_name t member_name t lexical_var t lexical_ [...]
+  #s(hash-table size 217 test equal rehash-size 1.5 rehash-threshold 0.8125 
data (isset_variable t isset_variables t encaps_var_offset t encaps_var t 
possible_array_pair t array_pair t non_empty_array_pair_list t static_member t 
function_call t property_name t array_object_dereferenceable t 
callable_variable t fully_dereferenceable t class_constant t constant t 
dereferenceable_scalar t encaps_list t new_variable t callable_expr t 
variable_class_name t member_name t lexical_var t lexical_ [...]
   "The hash-table of valid non-terminals.")
 
 (defvar
@@ -313,9 +313,9 @@
     translation-symbol-table-list
     history)
   "Perform a LR-parse via lex-analyzer, optionally PERFORM-SDT means to
-  perform syntax-directed translation and optioanlly start at INPUT-TAPE-INDEX
-  with PUSHDOWN-LIST, OUTPUT, TRANSLATION, TRANSLATION-SYMBOL-TABLE-LIST
-  and HISTORY."
+  perform syntax-directed translation and optioanlly start at
+  INPUT-TAPE-INDEX with PUSHDOWN-LIST, OUTPUT, TRANSLATION,
+  TRANSLATION-SYMBOL-TABLE-LIST and HISTORY."
   (unless input-tape-index
     (setq input-tape-index 1))
   (unless pushdown-list
@@ -741,8 +741,8 @@
      output
      translation
      history)
-  "Perform a LR-parse via lex-analyzer, optionally at INPUT-TAPE-INDEX with
-  PUSHDOWN-LIST, OUTPUT, TRANSLATION and HISTORY."
+  "Perform a LR-parse via lex-analyzer, optionally at INPUT-TAPE-INDEX
+  with PUSHDOWN-LIST, OUTPUT, TRANSLATION and HISTORY."
   (let ((result
          (phps-mode-parser--parse
           nil
@@ -760,8 +760,8 @@
      output
      translation
      history)
-  "Perform a LR-parse via lex-analyzer, optionally at INPUT-TAPE-INDEX with
-  PUSHDOWN-LIST, OUTPUT, TRANSLATION and HISTORY."
+  "Perform a LR-parse via lex-analyzer, optionally at INPUT-TAPE-INDEX
+  with PUSHDOWN-LIST, OUTPUT, TRANSLATION and HISTORY."
   (let ((result
          (phps-mode-parser--parse
           t
diff --git a/phps-mode-test.el b/phps-mode-test.el
index 8fb1c925ab..4fadfff0d9 100644
--- a/phps-mode-test.el
+++ b/phps-mode-test.el
@@ -190,6 +190,20 @@ Each element is a list: (list key value), optionally 
UN-SORTED."
                  (< (car a) (car b)))))))
       nil)))
 
+(defun phps-mode-test--output-parse-productions (parse)
+  "Output productions by PARSE trail."
+  (message "Left-to-right with right-most derivation in reverse:\n%S\n" parse)
+  (dolist (production-number parse)
+    (let ((production
+           (phps-mode-parser--get-grammar-production-by-number
+            production-number)))
+      (message
+       "%d: %S -> %S"
+       production-number
+       (car (car production))
+       (car (cdr production)))))
+  (message "\n"))
+
 (transient-mark-mode t)
 (electric-pair-mode t)
 (setq phps-mode-async-process nil)
diff --git a/test/phps-mode-test-ast.el b/test/phps-mode-test-ast.el
index 9ae41ab542..e6655b8156 100644
--- a/test/phps-mode-test-ast.el
+++ b/test/phps-mode-test-ast.el
@@ -24,17 +24,7 @@
    name
    (lambda()
      (let ((parse (phps-mode-parser-parse)))
-       (message "Left-to-right parse with right-most derivation in 
reverse:\n%S\n" parse)
-       (dolist (production-number parse)
-         (let ((production
-                (phps-mode-parser--get-grammar-production-by-number
-                 production-number)))
-           (message
-            "%d: %S -> %S"
-            production-number
-            (car (car production))
-            (car (cdr production))))))
-     (message "\n")
+       (phps-mode-test--output-parse-productions parse))
      (phps-mode-ast--generate)
 
      (unless (equal
diff --git a/test/phps-mode-test-parser.el b/test/phps-mode-test-parser.el
index ff00ce3ad1..a68ec950a5 100644
--- a/test/phps-mode-test-parser.el
+++ b/test/phps-mode-test-parser.el
@@ -11,7 +11,7 @@
 ;;; Code:
 
 (require 'ert)
-(require 'phps-mode)
+(require 'phps-mode-test)
 (require 'phps-mode-lex-analyzer)
 
 (defun phps-mode-test-parser--buffer-contents (buffer-contents name logic)
@@ -69,26 +69,64 @@
   "Run test for parser."
   (message "-- Running tests for parser basic... --\n")
 
+  (phps-mode-test-parser--buffer-contents
+   "<?php\nclass Falsy\n{\n    public function alwaysFalse(): false { /* ... 
*/ }\n\n    public function alwaysTrue(): true { /* ... */ }\n\n    public 
function alwaysNull(): null { /* ... */ }\n}\n"
+   "PHP 8.2 - allow null, false, and true as stand-alone types"
+   (lambda()
+
+     (let ((parse (phps-mode-parser-parse)))
+       (phps-mode-test--output-parse-productions parse)
+       (should
+        (equal
+         '(84 201 205 450 304 337 335 334 449 453 81 450 246 91 279 265 261 
287 451 140 330 451 307 309 303 337 335 334 449 453 81 450 246 91 279 265 261 
287 451 140 330 451 307 309 303 337 335 334 449 453 81 450 246 91 279 265 261 
287 451 140 330 451 307 309 303 187 103 108 83)
+         parse)))))
+
+  (phps-mode-test-parser--buffer-contents
+   "<?php\ntrait Foo\n{\n    public const CONSTANT = 1;\n}\n\nclass Bar\n{\n   
 use Foo;\n}\n"
+   "PHP 8.2 - Constants in traits"
+   (lambda()
+
+     (let ((parse (phps-mode-parser-parse)))
+       (phps-mode-test--output-parse-productions parse)
+       (should
+        (equal
+         '(84 450 304 337 335 334 81 482 433 450 350 349 306 309 303 193 104 
108 83 201 205 450 304 91 467 312 314 311 303 187 103 108 83)
+         parse)))))
+
+  (phps-mode-test-parser--buffer-contents
+   "<?php\nreadonly class BlogData\n{\n    public string $title;\n\n    public 
Status $status;\n\n    public function __construct(string $title, Status 
$status)\n    {\n        $this->title = $title;\n        $this->status = 
$status;\n    }\n}\n"
+   "PHP 8.2 - readonly classes"
+   (lambda()
+
+     (let ((parse (phps-mode-parser-parse)))
+       (phps-mode-test--output-parse-productions parse)
+       (should
+        (equal
+         '(84 192 188 201 205 450 304 337 335 331 91 279 273 260 450 346 345 
305 309 303 337 335 331 91 279 273 260 450 346 345 305 309 303 337 335 334 449 
453 81 450 251 91 279 273 260 182 184 450 257 250 247 251 91 279 273 260 182 
184 450 257 250 248 123 245 286 451 140 523 513 519 504 508 538 521 523 513 519 
363 366 159 141 139 523 513 519 504 508 538 521 523 513 519 363 366 159 141 139 
330 451 307 309 303 186 103 108 83)
+         parse)))))
+
+  (phps-mode-test-parser--buffer-contents
+   "<?php\nclass Foo {\n    public function bar((A&B)|null $entity) {\n        
return $entity;\n    }\n}\n"
+   "PHP 8.2 - disjunctive normal form (DNF) types"
+   (lambda()
+
+     (let ((parse (phps-mode-parser-parse)))
+       (phps-mode-test--output-parse-productions parse)
+       (should
+        (equal
+         '(84 201 205 450 304 337 335 334 449 453 81 450 251 91 279 91 279 284 
281 91 279 280 282 275 260 182 184 450 257 250 247 123 245 286 451 140 523 513 
519 363 502 154 141 139 330 451 307 309 303 187 103 108 83)
+         parse)))))
+
   (phps-mode-test-parser--buffer-contents
    "<?php echo 'hello';"
    "Basic echo test"
    (lambda()
 
      (let ((parse (phps-mode-parser-parse)))
-       (message "Left-to-right parse with right-most derivation in 
reverse:\n%S\n" parse)
-       (dolist (production-number parse)
-         (let ((production
-                (phps-mode-parser--get-grammar-production-by-number
-                 production-number)))
-           (message
-            "%d: %S -> %S"
-            production-number
-            (car (car production))
-            (car (cdr production)))))
-       (message "\n")
+       (phps-mode-test--output-parse-productions parse)
        (should
         (equal
-         '(84 472 479 426 347 346 157 107 83)
+         '(84 480 487 433 354 353 157 107 83)
          parse)))))
 
   (phps-mode-test-parser--buffer-contents
@@ -97,7 +135,7 @@
    (lambda()
      (should
       (equal
-       '(84 472 479 426 347 346 157 107 83 164 107 83)
+       '(84 480 487 433 354 353 157 107 83 164 107 83)
        (phps-mode-parser-parse)))))
 
   (phps-mode-test-parser--buffer-contents
@@ -106,7 +144,7 @@
    (lambda()
      (should
       (equal
-       '(84 472 479 426 347 346 157 107 83)
+       '(84 480 487 433 354 353 157 107 83)
        (phps-mode-parser-parse)))))
 
   (phps-mode-test-parser--buffer-contents
@@ -128,20 +166,10 @@
    "Advanced echo test with 2 echo sections"
    (lambda()
      (let ((parse (phps-mode-parser-parse)))
-       (message "Left-to-right parse with right-most derivation in 
reverse:\n%S\n" parse)
-       (dolist (production-number parse)
-         (let ((production
-                (phps-mode-parser--get-grammar-production-by-number
-                 production-number)))
-           (message
-            "%d: %S -> %S"
-            production-number
-            (car (car production))
-            (car (cdr production)))))
-       (message "\n")
+       (phps-mode-test--output-parse-productions parse)
        (should
         (equal
-         '(84 472 479 426 347 346 157 107 83 164 107 83 158 107 83 472 479 426 
347 346 157 107 83 164 107 83 158 107 83)
+         '(84 480 487 433 354 353 157 107 83 164 107 83 158 107 83 480 487 433 
354 353 157 107 83 164 107 83 158 107 83)
          parse)))))
 
   (phps-mode-test-parser--buffer-contents
@@ -149,20 +177,10 @@
    "Simple function defintion"
    (lambda()
      (let ((parse (phps-mode-parser-parse)))
-       (message "Left-to-right parse with right-most derivation in 
reverse:\n%S\n" parse)
-       (dolist (production-number parse)
-         (let ((production
-                (phps-mode-parser--get-grammar-production-by-number
-                 production-number)))
-           (message
-            "%d: %S -> %S"
-            production-number
-            (car (car production))
-            (car (cdr production)))))
-       (message "\n")
+       (phps-mode-test--output-parse-productions parse)
        (should
         (equal
-         '(84 442 446 443 248 256 180 182 443 254 247 244 123 242 279 444 140 
515 505 511 474 426 359 159 141 139 515 505 511 356 494 154 141 139 444 179 102 
108 83)
+         '(84 449 453 179 450 251 259 182 184 450 257 250 247 123 245 286 451 
140 523 513 519 482 433 366 159 141 139 523 513 519 363 502 154 141 139 451 181 
102 108 83)
          parse)))))
 
   (phps-mode-test-parser--buffer-contents
@@ -170,20 +188,10 @@
    "Simple function defintion inside un-bracketed namespace"
    (lambda()
      (let ((parse (phps-mode-parser-parse)))
-       (message "Left-to-right parse with right-most derivation in 
reverse:\n%S\n" parse)
-       (dolist (production-number parse)
-         (let ((production
-                (phps-mode-parser--get-grammar-production-by-number
-                 production-number)))
-           (message
-            "%d: %S -> %S"
-            production-number
-            (car (car production))
-            (car (cdr production)))))
-       (message "\n")
+       (phps-mode-test--output-parse-productions parse)
        (should
         (equal
-         '(84 81 85 111 83 442 446 443 248 256 180 182 443 254 247 244 123 242 
279 444 140 515 505 511 474 426 359 159 141 139 515 505 511 356 494 154 141 139 
444 179 102 108 83)
+         '(84 81 85 111 83 449 453 179 450 251 259 182 184 450 257 250 247 123 
245 286 451 140 523 513 519 482 433 366 159 141 139 523 513 519 363 502 154 141 
139 451 181 102 108 83)
          parse)))))
 
   (phps-mode-test-parser--buffer-contents
@@ -191,20 +199,10 @@
    "Simple function defintion inside bracketed namespace"
    (lambda()
      (let ((parse (phps-mode-parser-parse)))
-       (message "Left-to-right parse with right-most derivation in 
reverse:\n%S\n" parse)
-       (dolist (production-number parse)
-         (let ((production
-                (phps-mode-parser--get-grammar-production-by-number
-                 production-number)))
-           (message
-            "%d: %S -> %S"
-            production-number
-            (car (car production))
-            (car (cdr production)))))
-       (message "\n")
+       (phps-mode-test--output-parse-productions parse)
        (should
         (equal
-         '(84 81 85 84 442 446 443 248 256 180 182 443 254 247 244 123 242 279 
444 140 515 505 511 474 426 359 159 141 139 515 505 511 356 494 154 141 139 444 
179 102 108 83 112 83)
+         '(84 81 85 84 449 453 179 450 251 259 182 184 450 257 250 247 123 245 
286 451 140 523 513 519 482 433 366 159 141 139 523 513 519 363 502 154 141 139 
451 181 102 108 83 112 83)
          parse)))))
 
   (phps-mode-test-parser--buffer-contents
@@ -212,20 +210,10 @@
    "Simple function defintion and property inside class inside non-bracketed 
namespace"
    (lambda()
      (let ((parse (phps-mode-parser-parse)))
-       (message "Left-to-right parse with right-most derivation in 
reverse:\n%S\n" parse)
-       (dolist (production-number parse)
-         (let ((production
-                (phps-mode-parser--get-grammar-production-by-number
-                 production-number)))
-           (message
-            "%d: %S -> %S"
-            production-number
-            (car (car production))
-            (car (cdr production)))))
-       (message "\n")
+       (phps-mode-test--output-parse-productions parse)
        (should
         (equal
-         '(84 81 85 111 83 198 202 443 297 332 328 324 256 472 479 426 443 340 
338 298 302 296 330 328 327 442 446 81 443 248 256 180 182 443 254 247 244 123 
242 279 444 140 515 505 511 474 426 359 159 141 139 515 505 511 356 494 154 141 
139 323 444 300 302 296 185 103 108 83)
+         '(84 81 85 111 83 201 205 450 304 339 335 331 259 480 487 433 450 347 
345 305 309 303 337 335 334 449 453 81 450 251 259 182 184 450 257 250 247 123 
245 286 451 140 523 513 519 482 433 366 159 141 139 523 513 519 363 502 154 141 
139 330 451 307 309 303 187 103 108 83)
          parse)))))
 
   (phps-mode-test-parser--buffer-contents



reply via email to

[Prev in Thread] Current Thread [Next in Thread]