$accept
start
END
start
top_statement_list
reserved_non_modifiers
T_INCLUDE
T_INCLUDE_ONCE
T_EVAL
T_REQUIRE
T_REQUIRE_ONCE
T_LOGICAL_OR
T_LOGICAL_XOR
T_LOGICAL_AND
T_INSTANCEOF
T_NEW
T_CLONE
T_EXIT
T_IF
T_ELSEIF
T_ELSE
T_ENDIF
T_ECHO
T_DO
T_WHILE
T_ENDWHILE
T_FOR
T_ENDFOR
T_FOREACH
T_ENDFOREACH
T_DECLARE
T_ENDDECLARE
T_AS
T_TRY
T_CATCH
T_FINALLY
T_THROW
T_USE
T_INSTEADOF
T_GLOBAL
T_VAR
T_UNSET
T_ISSET
T_EMPTY
T_CONTINUE
T_GOTO
T_FUNCTION
T_CONST
T_RETURN
T_PRINT
T_YIELD
T_LIST
T_SWITCH
T_ENDSWITCH
T_CASE
T_DEFAULT
T_BREAK
T_ARRAY
T_CALLABLE
T_EXTENDS
T_IMPLEMENTS
T_NAMESPACE
T_TRAIT
T_INTERFACE
T_CLASS
T_CLASS_C
T_TRAIT_C
T_FUNC_C
T_METHOD_C
T_LINE
T_FILE
T_DIR
T_NS_C
T_FN
T_MATCH
T_ENUM
T_PROPERTY_C
semi_reserved
reserved_non_modifiers
T_STATIC
T_ABSTRACT
T_FINAL
T_PRIVATE
T_PROTECTED
T_PUBLIC
T_READONLY
ampersand
T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG
identifier
T_STRING
semi_reserved
top_statement_list
top_statement_list
top_statement
namespace_declaration_name
identifier
T_NAME_QUALIFIED
namespace_name
T_STRING
T_NAME_QUALIFIED
legacy_namespace_name
namespace_name
T_NAME_FULLY_QUALIFIED
name
T_STRING
T_NAME_QUALIFIED
T_NAME_FULLY_QUALIFIED
T_NAME_RELATIVE
attribute_decl
class_name
class_name
argument_list
attribute_group
attribute_decl
attribute_group
','
attribute_decl
attribute
T_ATTRIBUTE
attribute_group
possible_comma
']'
attributes
attribute
attributes
attribute
attributed_statement
function_declaration_statement
class_declaration_statement
trait_declaration_statement
interface_declaration_statement
enum_declaration_statement
top_statement
statement
attributed_statement
attributes
attributed_statement
T_HALT_COMPILER
'('
')'
';'
T_NAMESPACE
namespace_declaration_name
';'
T_NAMESPACE
namespace_declaration_name
$@1
'{'
top_statement_list
'}'
T_NAMESPACE
$@2
'{'
top_statement_list
'}'
T_USE
mixed_group_use_declaration
';'
T_USE
use_type
group_use_declaration
';'
T_USE
use_declarations
';'
T_USE
use_type
use_declarations
';'
T_CONST
const_list
';'
$@1
$@2
use_type
T_FUNCTION
T_CONST
group_use_declaration
legacy_namespace_name
T_NS_SEPARATOR
'{'
unprefixed_use_declarations
possible_comma
'}'
mixed_group_use_declaration
legacy_namespace_name
T_NS_SEPARATOR
'{'
inline_use_declarations
possible_comma
'}'
possible_comma
','
inline_use_declarations
inline_use_declarations
','
inline_use_declaration
inline_use_declaration
unprefixed_use_declarations
unprefixed_use_declarations
','
unprefixed_use_declaration
unprefixed_use_declaration
use_declarations
use_declarations
','
use_declaration
use_declaration
inline_use_declaration
unprefixed_use_declaration
use_type
unprefixed_use_declaration
unprefixed_use_declaration
namespace_name
namespace_name
T_AS
T_STRING
use_declaration
legacy_namespace_name
legacy_namespace_name
T_AS
T_STRING
const_list
const_list
','
const_decl
const_decl
inner_statement_list
inner_statement_list
inner_statement
inner_statement
statement
attributed_statement
attributes
attributed_statement
T_HALT_COMPILER
'('
')'
';'
statement
'{'
inner_statement_list
'}'
if_stmt
alt_if_stmt
T_WHILE
'('
expr
')'
while_statement
T_DO
statement
T_WHILE
'('
expr
')'
';'
T_FOR
'('
for_exprs
';'
for_exprs
';'
for_exprs
')'
for_statement
T_SWITCH
'('
expr
')'
switch_case_list
T_BREAK
optional_expr
';'
T_CONTINUE
optional_expr
';'
T_RETURN
optional_expr
';'
T_GLOBAL
global_var_list
';'
T_STATIC
static_var_list
';'
T_ECHO
echo_expr_list
';'
T_INLINE_HTML
expr
';'
T_UNSET
'('
unset_variables
possible_comma
')'
';'
T_FOREACH
'('
expr
T_AS
foreach_variable
')'
foreach_statement
T_FOREACH
'('
expr
T_AS
foreach_variable
T_DOUBLE_ARROW
foreach_variable
')'
foreach_statement
T_DECLARE
'('
const_list
')'
$@3
declare_statement
';'
T_TRY
'{'
inner_statement_list
'}'
catch_list
finally_statement
T_GOTO
T_STRING
';'
T_STRING
':'
T_VOID_CAST
expr
';'
$@3
catch_list
catch_list
T_CATCH
'('
catch_name_list
optional_variable
')'
'{'
inner_statement_list
'}'
catch_name_list
class_name
catch_name_list
'|'
class_name
optional_variable
T_VARIABLE
finally_statement
T_FINALLY
'{'
inner_statement_list
'}'
unset_variables
unset_variable
unset_variables
','
unset_variable
unset_variable
variable
function_name
T_STRING
T_READONLY
function_declaration_statement
function
returns_ref
function_name
backup_doc_comment
'('
parameter_list
')'
return_type
backup_fn_flags
'{'
inner_statement_list
'}'
backup_fn_flags
is_reference
T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG
is_variadic
T_ELLIPSIS
@4
class_declaration_statement
class_modifiers
T_CLASS
@4
T_STRING
extends_from
implements_list
backup_doc_comment
'{'
class_statement_list
'}'
T_CLASS
@5
T_STRING
extends_from
implements_list
backup_doc_comment
'{'
class_statement_list
'}'
@5
class_modifiers
class_modifier
class_modifiers
class_modifier
anonymous_class_modifiers
class_modifier
anonymous_class_modifiers
class_modifier
anonymous_class_modifiers_optional
anonymous_class_modifiers
class_modifier
T_ABSTRACT
T_FINAL
T_READONLY
@6
trait_declaration_statement
T_TRAIT
@6
T_STRING
backup_doc_comment
'{'
class_statement_list
'}'
@7
interface_declaration_statement
T_INTERFACE
@7
T_STRING
interface_extends_list
backup_doc_comment
'{'
class_statement_list
'}'
@8
enum_declaration_statement
T_ENUM
@8
T_STRING
enum_backing_type
implements_list
backup_doc_comment
'{'
class_statement_list
'}'
enum_backing_type
':'
type_expr
enum_case
T_CASE
backup_doc_comment
identifier
enum_case_expr
';'
enum_case_expr
'='
expr
extends_from
T_EXTENDS
class_name
interface_extends_list
T_EXTENDS
class_name_list
implements_list
T_IMPLEMENTS
class_name_list
foreach_variable
variable
ampersand
variable
T_LIST
'('
array_pair_list
')'
'['
array_pair_list
']'
for_statement
statement
':'
inner_statement_list
T_ENDFOR
';'
foreach_statement
statement
':'
inner_statement_list
T_ENDFOREACH
';'
declare_statement
statement
':'
inner_statement_list
T_ENDDECLARE
';'
switch_case_list
'{'
case_list
'}'
'{'
';'
case_list
'}'
':'
case_list
T_ENDSWITCH
';'
':'
';'
case_list
T_ENDSWITCH
';'
case_list
case_list
T_CASE
expr
case_separator
inner_statement_list
case_list
T_DEFAULT
case_separator
inner_statement_list
case_separator
':'
';'
match
T_MATCH
'('
expr
')'
'{'
match_arm_list
'}'
match_arm_list
non_empty_match_arm_list
possible_comma
non_empty_match_arm_list
match_arm
non_empty_match_arm_list
','
match_arm
match_arm
match_arm_cond_list
possible_comma
T_DOUBLE_ARROW
expr
T_DEFAULT
possible_comma
T_DOUBLE_ARROW
expr
match_arm_cond_list
expr
match_arm_cond_list
','
expr
while_statement
statement
':'
inner_statement_list
T_ENDWHILE
';'
if_stmt_without_else
T_IF
'('
expr
')'
statement
if_stmt_without_else
T_ELSEIF
'('
expr
')'
statement
if_stmt
if_stmt_without_else
if_stmt_without_else
T_ELSE
statement
alt_if_stmt_without_else
T_IF
'('
expr
')'
':'
inner_statement_list
alt_if_stmt_without_else
T_ELSEIF
'('
expr
')'
':'
inner_statement_list
alt_if_stmt
alt_if_stmt_without_else
T_ENDIF
';'
alt_if_stmt_without_else
T_ELSE
':'
inner_statement_list
T_ENDIF
';'
parameter_list
non_empty_parameter_list
possible_comma
non_empty_parameter_list
attributed_parameter
non_empty_parameter_list
','
attributed_parameter
attributed_parameter
attributes
parameter
parameter
optional_cpp_modifiers
non_empty_member_modifiers
parameter
optional_cpp_modifiers
optional_type_without_static
is_reference
is_variadic
T_VARIABLE
backup_doc_comment
optional_property_hook_list
optional_cpp_modifiers
optional_type_without_static
is_reference
is_variadic
T_VARIABLE
backup_doc_comment
'='
expr
optional_property_hook_list
optional_type_without_static
type_expr_without_static
type_expr
type
'?'
type
union_type
intersection_type
type
type_without_static
T_STATIC
union_type_element
type
'('
intersection_type
')'
union_type
union_type_element
'|'
union_type_element
union_type
'|'
union_type_element
intersection_type
type
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG
type
intersection_type
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG
type
type_expr_without_static
type_without_static
'?'
type_without_static
union_type_without_static
intersection_type_without_static
type_without_static
T_ARRAY
T_CALLABLE
name
union_type_without_static_element
type_without_static
'('
intersection_type_without_static
')'
union_type_without_static
union_type_without_static_element
'|'
union_type_without_static_element
union_type_without_static
'|'
union_type_without_static_element
intersection_type_without_static
type_without_static
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG
type_without_static
intersection_type_without_static
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG
type_without_static
return_type
':'
type_expr
argument_list
'('
')'
'('
non_empty_argument_list
possible_comma
')'
'('
T_ELLIPSIS
')'
non_empty_argument_list
argument
non_empty_argument_list
','
argument
argument
expr
identifier
':'
expr
T_ELLIPSIS
expr
global_var_list
global_var_list
','
global_var
global_var
global_var
simple_variable
static_var_list
static_var_list
','
static_var
static_var
static_var
T_VARIABLE
T_VARIABLE
'='
expr
class_statement_list
class_statement_list
class_statement
attributed_class_statement
property_modifiers
optional_type_without_static
property_list
';'
property_modifiers
optional_type_without_static
hooked_property
class_const_modifiers
T_CONST
class_const_list
';'
class_const_modifiers
T_CONST
type_expr
class_const_list
';'
method_modifiers
function
returns_ref
identifier
backup_doc_comment
'('
parameter_list
')'
return_type
backup_fn_flags
method_body
backup_fn_flags
enum_case
class_statement
attributed_class_statement
attributes
attributed_class_statement
T_USE
class_name_list
trait_adaptations
class_name_list
class_name
class_name_list
','
class_name
trait_adaptations
';'
'{'
'}'
'{'
trait_adaptation_list
'}'
trait_adaptation_list
trait_adaptation
trait_adaptation_list
trait_adaptation
trait_adaptation
trait_precedence
';'
trait_alias
';'
trait_precedence
absolute_trait_method_reference
T_INSTEADOF
class_name_list
trait_alias
trait_method_reference
T_AS
T_STRING
trait_method_reference
T_AS
reserved_non_modifiers
trait_method_reference
T_AS
member_modifier
identifier
trait_method_reference
T_AS
member_modifier
trait_method_reference
identifier
absolute_trait_method_reference
absolute_trait_method_reference
class_name
T_PAAMAYIM_NEKUDOTAYIM
identifier
method_body
';'
'{'
inner_statement_list
'}'
property_modifiers
non_empty_member_modifiers
T_VAR
method_modifiers
non_empty_member_modifiers
class_const_modifiers
non_empty_member_modifiers
non_empty_member_modifiers
member_modifier
non_empty_member_modifiers
member_modifier
member_modifier
T_PUBLIC
T_PROTECTED
T_PRIVATE
T_PUBLIC_SET
T_PROTECTED_SET
T_PRIVATE_SET
T_STATIC
T_ABSTRACT
T_FINAL
T_READONLY
property_list
property_list
','
property
property
property
T_VARIABLE
backup_doc_comment
T_VARIABLE
'='
expr
backup_doc_comment
hooked_property
T_VARIABLE
backup_doc_comment
'{'
property_hook_list
'}'
T_VARIABLE
'='
expr
backup_doc_comment
'{'
property_hook_list
'}'
property_hook_list
property_hook_list
property_hook
property_hook_list
attributes
property_hook
optional_property_hook_list
'{'
property_hook_list
'}'
property_hook_modifiers
non_empty_member_modifiers
@9
property_hook
property_hook_modifiers
returns_ref
T_STRING
backup_doc_comment
@9
optional_parameter_list
backup_fn_flags
property_hook_body
backup_fn_flags
property_hook_body
';'
'{'
inner_statement_list
'}'
T_DOUBLE_ARROW
expr
';'
optional_parameter_list
'('
parameter_list
')'
class_const_list
class_const_list
','
class_const_decl
class_const_decl
class_const_decl
T_STRING
'='
expr
backup_doc_comment
semi_reserved
'='
expr
backup_doc_comment
const_decl
T_STRING
'='
expr
backup_doc_comment
echo_expr_list
echo_expr_list
','
echo_expr
echo_expr
echo_expr
expr
for_exprs
non_empty_for_exprs
non_empty_for_exprs
non_empty_for_exprs
','
expr
expr
@10
anonymous_class
anonymous_class_modifiers_optional
T_CLASS
@10
ctor_arguments
extends_from
implements_list
backup_doc_comment
'{'
class_statement_list
'}'
new_dereferenceable
T_NEW
class_name_reference
argument_list
T_NEW
anonymous_class
T_NEW
attributes
anonymous_class
new_non_dereferenceable
T_NEW
class_name_reference
expr
variable
T_LIST
'('
array_pair_list
')'
'='
expr
'['
array_pair_list
']'
'='
expr
variable
'='
expr
variable
'='
ampersand
variable
T_CLONE
expr
variable
T_PLUS_EQUAL
expr
variable
T_MINUS_EQUAL
expr
variable
T_MUL_EQUAL
expr
variable
T_POW_EQUAL
expr
variable
T_DIV_EQUAL
expr
variable
T_CONCAT_EQUAL
expr
variable
T_MOD_EQUAL
expr
variable
T_AND_EQUAL
expr
variable
T_OR_EQUAL
expr
variable
T_XOR_EQUAL
expr
variable
T_SL_EQUAL
expr
variable
T_SR_EQUAL
expr
variable
T_COALESCE_EQUAL
expr
variable
T_INC
T_INC
variable
variable
T_DEC
T_DEC
variable
expr
T_BOOLEAN_OR
expr
expr
T_BOOLEAN_AND
expr
expr
T_LOGICAL_OR
expr
expr
T_LOGICAL_AND
expr
expr
T_LOGICAL_XOR
expr
expr
'|'
expr
expr
T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG
expr
expr
T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG
expr
expr
'^'
expr
expr
'.'
expr
expr
'+'
expr
expr
'-'
expr
expr
'*'
expr
expr
T_POW
expr
expr
'/'
expr
expr
'%'
expr
expr
T_SL
expr
expr
T_SR
expr
'+'
expr
'-'
expr
'!'
expr
'~'
expr
expr
T_IS_IDENTICAL
expr
expr
T_IS_NOT_IDENTICAL
expr
expr
T_IS_EQUAL
expr
expr
T_IS_NOT_EQUAL
expr
expr
'<'
expr
expr
T_IS_SMALLER_OR_EQUAL
expr
expr
'>'
expr
expr
T_IS_GREATER_OR_EQUAL
expr
expr
T_SPACESHIP
expr
expr
T_INSTANCEOF
class_name_reference
'('
expr
')'
new_dereferenceable
new_non_dereferenceable
expr
'?'
expr
':'
expr
expr
'?'
':'
expr
expr
T_COALESCE
expr
internal_functions_in_yacc
T_INT_CAST
expr
T_DOUBLE_CAST
expr
T_STRING_CAST
expr
T_ARRAY_CAST
expr
T_OBJECT_CAST
expr
T_BOOL_CAST
expr
T_UNSET_CAST
expr
T_EXIT
ctor_arguments
'@'
expr
scalar
'`'
backticks_expr
'`'
T_PRINT
expr
T_YIELD
T_YIELD
expr
T_YIELD
expr
T_DOUBLE_ARROW
expr
T_YIELD_FROM
expr
T_THROW
expr
inline_function
attributes
inline_function
T_STATIC
inline_function
attributes
T_STATIC
inline_function
match
inline_function
function
returns_ref
backup_doc_comment
'('
parameter_list
')'
lexical_vars
return_type
backup_fn_flags
'{'
inner_statement_list
'}'
backup_fn_flags
fn
returns_ref
backup_doc_comment
'('
parameter_list
')'
return_type
T_DOUBLE_ARROW
backup_fn_flags
backup_lex_pos
expr
backup_fn_flags
fn
T_FN
function
T_FUNCTION
backup_doc_comment
$@11
backup_fn_flags
$@11
backup_lex_pos
returns_ref
ampersand
lexical_vars
T_USE
'('
lexical_var_list
possible_comma
')'
lexical_var_list
lexical_var_list
','
lexical_var
lexical_var
lexical_var
T_VARIABLE
ampersand
T_VARIABLE
function_call
name
argument_list
T_READONLY
argument_list
class_name
T_PAAMAYIM_NEKUDOTAYIM
member_name
argument_list
variable_class_name
T_PAAMAYIM_NEKUDOTAYIM
member_name
argument_list
callable_expr
@12
argument_list
@12
class_name
T_STATIC
name
class_name_reference
class_name
new_variable
'('
expr
')'
backticks_expr
T_ENCAPSED_AND_WHITESPACE
encaps_list
ctor_arguments
argument_list
dereferenceable_scalar
T_ARRAY
'('
array_pair_list
')'
'['
array_pair_list
']'
T_CONSTANT_ENCAPSED_STRING
'"'
encaps_list
'"'
scalar
T_LNUMBER
T_DNUMBER
T_START_HEREDOC
T_ENCAPSED_AND_WHITESPACE
T_END_HEREDOC
T_START_HEREDOC
T_END_HEREDOC
T_START_HEREDOC
encaps_list
T_END_HEREDOC
dereferenceable_scalar
constant
class_constant
constant
name
T_LINE
T_FILE
T_DIR
T_TRAIT_C
T_METHOD_C
T_FUNC_C
T_PROPERTY_C
T_NS_C
T_CLASS_C
class_constant
class_name
T_PAAMAYIM_NEKUDOTAYIM
identifier
variable_class_name
T_PAAMAYIM_NEKUDOTAYIM
identifier
class_name
T_PAAMAYIM_NEKUDOTAYIM
'{'
expr
'}'
variable_class_name
T_PAAMAYIM_NEKUDOTAYIM
'{'
expr
'}'
optional_expr
expr
variable_class_name
fully_dereferenceable
fully_dereferenceable
variable
'('
expr
')'
dereferenceable_scalar
class_constant
new_dereferenceable
array_object_dereferenceable
fully_dereferenceable
constant
callable_expr
callable_variable
'('
expr
')'
dereferenceable_scalar
new_dereferenceable
callable_variable
simple_variable
array_object_dereferenceable
'['
optional_expr
']'
array_object_dereferenceable
T_OBJECT_OPERATOR
property_name
argument_list
array_object_dereferenceable
T_NULLSAFE_OBJECT_OPERATOR
property_name
argument_list
function_call
variable
callable_variable
static_member
array_object_dereferenceable
T_OBJECT_OPERATOR
property_name
array_object_dereferenceable
T_NULLSAFE_OBJECT_OPERATOR
property_name
simple_variable
T_VARIABLE
'$'
'{'
expr
'}'
'$'
simple_variable
static_member
class_name
T_PAAMAYIM_NEKUDOTAYIM
simple_variable
variable_class_name
T_PAAMAYIM_NEKUDOTAYIM
simple_variable
new_variable
simple_variable
new_variable
'['
optional_expr
']'
new_variable
T_OBJECT_OPERATOR
property_name
new_variable
T_NULLSAFE_OBJECT_OPERATOR
property_name
class_name
T_PAAMAYIM_NEKUDOTAYIM
simple_variable
new_variable
T_PAAMAYIM_NEKUDOTAYIM
simple_variable
member_name
identifier
'{'
expr
'}'
simple_variable
property_name
T_STRING
'{'
expr
'}'
simple_variable
array_pair_list
non_empty_array_pair_list
possible_array_pair
array_pair
non_empty_array_pair_list
non_empty_array_pair_list
','
possible_array_pair
possible_array_pair
array_pair
expr
T_DOUBLE_ARROW
expr
expr
expr
T_DOUBLE_ARROW
ampersand
variable
ampersand
variable
T_ELLIPSIS
expr
expr
T_DOUBLE_ARROW
T_LIST
'('
array_pair_list
')'
T_LIST
'('
array_pair_list
')'
encaps_list
encaps_list
encaps_var
encaps_list
T_ENCAPSED_AND_WHITESPACE
encaps_var
T_ENCAPSED_AND_WHITESPACE
encaps_var
encaps_var
T_VARIABLE
T_VARIABLE
'['
encaps_var_offset
']'
T_VARIABLE
T_OBJECT_OPERATOR
T_STRING
T_VARIABLE
T_NULLSAFE_OBJECT_OPERATOR
T_STRING
T_DOLLAR_OPEN_CURLY_BRACES
expr
'}'
T_DOLLAR_OPEN_CURLY_BRACES
T_STRING_VARNAME
'}'
T_DOLLAR_OPEN_CURLY_BRACES
T_STRING_VARNAME
'['
expr
']'
'}'
T_CURLY_OPEN
variable
'}'
encaps_var_offset
T_STRING
T_NUM_STRING
'-'
T_NUM_STRING
T_VARIABLE
internal_functions_in_yacc
T_ISSET
'('
isset_variables
possible_comma
')'
T_EMPTY
'('
expr
')'
T_INCLUDE
expr
T_INCLUDE_ONCE
expr
T_EVAL
'('
expr
')'
T_REQUIRE
expr
T_REQUIRE_ONCE
expr
isset_variables
isset_variable
isset_variables
','
isset_variable
isset_variable
expr