Skip to content

Instantly share code, notes, and snippets.

@flavius
Created April 18, 2011 07:59
Show Gist options
  • Save flavius/924965 to your computer and use it in GitHub Desktop.
Save flavius/924965 to your computer and use it in GitHub Desktop.
%left INCLUDE INCLUDE_ONCE EVAL REQUIRE REQUIRE_ONCE.
%left COMMA.
%left LOGICAL_OR.
%left LOGICAL_XOR.
%left LOGICAL_AND.
%right PRINT.
%left EQUAL PLUS_EQUAL MINUS_EQUAL MUL_EQUAL DIV_EQUAL CONCAT_EQUAL MOD_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL SL_EQUAL SR_EQUAL.
%left QUESTION_MARK COLON.
%left BOOLEAN_OR.
%left BOOLEAN_AND.
%left BW_OR.
%left BW_XOR.
%left BW_AND.
%nonassoc IS_EQUAL IS_NOT_EQUAL IS_IDENTICAL IS_NOT_IDENTICAL.
%nonassoc IS_SMALLER IS_SMALLER_OR_EQUAL IS_GREATER IS_GREATER_OR_EQUAL.
%left SL SR.
%left PLUS MINUS DOT.
%left MULT DIV MOD.
%right BOOL_NOT.
%nonassoc INSTANCEOF.
%right BW_NOT INC DEC INT_CAST NUMERIC_CAST SCALAR_CAST DOUBLE_CAST STRING_CAST ARRAY_CAST OBJECT_CAST BOOL_CAST UNSET_CAST AT.
%right RBRACKET.
%nonassoc NEW CLONE.
%nonassoc EXIT.
%nonassoc IF.
%left ELSEIF.
%left ELSE.
%left ENDIF.
%right STATIC ABSTRACT FINAL PRIVATE PROTECTED PUBLIC.
// dummy tokens
%nonassoc OPEN_TAG OPEN_TAG_WITH_ECHO WHITESPACE COMMENT CLOSE_TAG DOC_COMMENT.
start ::= top_statement_list.
top_statement_list_i ::= top_statement_list.
top_statement_list ::= top_statement_list_i top_statement.
top_statement_list ::=.
namespace_name ::= STRING.
namespace_name ::= namespace_name NS_SEPARATOR STRING.
namespace_start_i ::= NAMESPACE.
namespace_start ::= namespace_start_i LBRACE.
namespace_start2_i ::= NAMESPACE namespace_name.
namespace_start2 ::= namespace_start2_i LBRACE.
namespace_start3 ::= NAMESPACE namespace_name.
top_statement ::= statement_ns.
top_statement ::= function_declaration_statement.
top_statement ::= class_declaration_statement_ns.
top_statement ::= HALT_COMPILER LPAREN RPAREN SEMICOLON.
top_statement ::= namespace_start3 SEMICOLON.
top_statement ::= namespace_start2 top_statement_list RBRACE.
top_statement ::= namespace_start top_statement_list RBRACE.
top_statement ::= USE use_declarations SEMICOLON.
top_statement ::= constant_declaration SEMICOLON.
use_declarations ::= use_declarations COMMA use_declaration.
use_declarations ::= use_declaration.
use_declaration ::= namespace_name.
use_declaration ::= namespace_name AS STRING.
use_declaration ::= NS_SEPARATOR namespace_name.
use_declaration ::= NS_SEPARATOR namespace_name AS STRING.
constant_declaration ::= constant_declaration COMMA STRING EQUAL static_scalar.
constant_declaration ::= CONST STRING EQUAL static_scalar.
inner_statement_list_i ::= inner_statement_list.
inner_statement_list ::= inner_statement_list_i inner_statement.
inner_statement_list ::=.
inner_statement ::= statement.
inner_statement ::= function_declaration_statement.
inner_statement ::= class_declaration_statement.
inner_statement ::= HALT_COMPILER LPAREN RPAREN SEMICOLON.
statement ::= unticked_statement.
statement ::= STRING COLON.
statement_ns ::= unticked_statement_ns.
statement_ns ::= STRING COLON.
elseif_list_i ::= elseif_list ELSEIF LPAREN expr RPAREN.
elseif_list ::=.
elseif_list ::= elseif_list_i statement.
else ::=.
else ::= ELSE statement.
if_cond ::= IF LPAREN expr RPAREN.
if_cond_then ::= if_cond statement.
if ::= if_cond_then elseif_list else.
if_cond_ns ::= IF LPAREN expr RPAREN.
if_cond_then_ns ::= if_cond_ns statement.
if_ns ::= if_cond_then_ns elseif_list else.
elseif_alt_list_i ::= elseif_alt_list ELSEIF LPAREN expr RPAREN COLON.
elseif_alt_list ::=.
elseif_alt_list ::= elseif_alt_list_i inner_statement_list.
else_alt ::=.
else_alt ::= ELSE COLON inner_statement_list.
if_alt_cond ::= IF LPAREN expr RPAREN COLON.
if_alt_cond_then ::= if_alt_cond inner_statement_list.
if_alt ::= if_alt_cond_then elseif_alt_list else_alt ENDIF SEMICOLON.
if_alt_cond_ns ::= IF LPAREN expr RPAREN COLON.
if_alt_cond_then_ns ::= if_alt_cond_ns inner_statement_list.
if_alt_ns ::= if_alt_cond_then_ns elseif_alt_list else_alt ENDIF SEMICOLON.
while_statement ::= statement.
while_statement ::= COLON inner_statement_list ENDWHILE SEMICOLON.
while_begin ::= WHILE LPAREN.
while_cond ::= while_begin expr RPAREN.
while ::= while_cond while_statement.
while_begin_ns ::= WHILE LPAREN.
while_cond_ns ::= while_begin_ns expr RPAREN.
while_ns ::= while_cond_ns while_statement.
do_start ::= DO.
do_statement ::= do_start statement WHILE LPAREN.
do_while ::= do_statement expr RPAREN SEMICOLON.
do_start_ns ::= DO.
do_statement_ns ::= do_start_ns statement WHILE LPAREN.
do_while_ns ::= do_statement_ns expr RPAREN SEMICOLON.
for_expr ::=.
for_expr ::= non_empty_for_expr.
non_empty_for_expr_i ::= non_empty_for_expr COMMA.
non_empty_for_expr ::= non_empty_for_expr_i expr.
non_empty_for_expr ::= expr.
for_statement ::= statement.
for_statement ::= COLON inner_statement_list ENDFOR SEMICOLON.
for_begin ::= FOR LPAREN for_expr SEMICOLON.
for_cont ::= for_begin for_expr SEMICOLON.
for_cont_2 ::= for_cont for_expr RPAREN.
for ::= for_cont_2 for_statement.
for_begin_ns ::= FOR LPAREN for_expr SEMICOLON.
for_cont_ns ::= for_begin_ns for_expr SEMICOLON.
for_cont_2_ns ::= for_cont_ns for_expr RPAREN.
for_ns ::= for_cont_2_ns for_statement.
switch_case_list ::= LBRACE case_list RBRACE.
switch_case_list ::= LBRACE SEMICOLON case_list RBRACE.
switch_case_list ::= COLON case_list ENDSWITCH SEMICOLON.
switch_case_list ::= COLON SEMICOLON case_list ENDSWITCH SEMICOLON.
case_list_i ::= case_list CASE expr case_separator.
case_list_ii ::= case_list DEFAULT case_separator.
case_list ::=.
case_list ::= case_list_i inner_statement_list.
case_list ::= case_list_ii inner_statement_list.
case_separator ::= COLON.
case_separator ::= SEMICOLON.
switch_i ::= SWITCH LPAREN expr RPAREN.
switch ::= switch_i switch_case_list.
switch_i_ns ::= SWITCH LPAREN expr RPAREN.
switch_ns ::= switch_i_ns switch_case_list.
declare_statement ::= statement.
declare_statement ::= COLON inner_statement_list ENDDECLARE SEMICOLON.
declare_list ::= STRING EQUAL static_scalar.
declare_list ::= declare_list COMMA STRING EQUAL static_scalar.
declare_i ::= DECLARE.
declare ::= declare_i LPAREN declare_list RPAREN declare_statement.
declare_i_ns ::= DECLARE.
declare_ns ::= declare_i_ns LPAREN declare_list RPAREN declare_statement.
foreach_optional_arg ::=.
foreach_optional_arg ::= DOUBLE_ARROW foreach_variable.
foreach_variable ::= variable.
foreach_variable ::= BW_AND variable.
foreach_statement ::= statement.
foreach_statement ::= COLON inner_statement_list ENDFOREACH SEMICOLON.
foreach_ii ::= FOREACH LPAREN variable AS.
foreach_i ::= foreach_ii foreach_variable foreach_optional_arg RPAREN.
foreach ::= foreach_i foreach_statement.
foreach_ii_ns ::= FOREACH LPAREN variable AS.
foreach_i_ns ::= foreach_ii_ns foreach_variable foreach_optional_arg RPAREN.
foreach_ns ::= foreach_i_ns foreach_statement.
foreach2_ii ::= FOREACH LPAREN expr_wo_var AS.
foreach2_i ::= foreach2_ii variable foreach_optional_arg RPAREN.
foreach2 ::= foreach2_i foreach_statement.
foreach2_ii_ns ::= FOREACH LPAREN expr_wo_var AS.
foreach2_i_ns ::= foreach2_ii_ns variable foreach_optional_arg RPAREN.
foreach2_ns ::= foreach2_i_ns foreach_statement.
additional_catches ::=.
additional_catches ::= non_empty_additional_catches.
non_empty_additional_catches ::= additional_catch.
non_empty_additional_catches ::= non_empty_additional_catches additional_catch.
additional_catch_i ::= CATCH LPAREN fully_qualified_class_name.
additional_catch_ii ::= additional_catch_i VARIABLE RPAREN.
additional_catch ::= additional_catch_ii LBRACE inner_statement_list RBRACE.
try_catch_v ::= TRY.
try_catch_iv ::= try_catch_v LBRACE inner_statement_list RBRACE CATCH LPAREN.
try_catch_iii ::= try_catch_iv fully_qualified_class_name.
try_catch_ii ::= try_catch_iii VARIABLE RPAREN.
try_catch_i ::= try_catch_ii LBRACE inner_statement_list RBRACE.
try_catch ::= try_catch_i additional_catches.
try_catch_v_ns ::= TRY.
try_catch_iv_ns ::= try_catch_v_ns LBRACE inner_statement_list RBRACE CATCH LPAREN.
try_catch_iii_ns ::= try_catch_iv_ns fully_qualified_class_name.
try_catch_ii_ns ::= try_catch_iii_ns VARIABLE RPAREN.
try_catch_i_ns ::= try_catch_ii_ns LBRACE inner_statement_list RBRACE.
try_catch_ns ::= try_catch_i_ns additional_catches.
unticked_statement ::= LBRACE inner_statement_list RBRACE.
unticked_statement ::= SEMICOLON.
unticked_statement ::= foreach.
unticked_statement ::= foreach2.
unticked_statement ::= declare.
unticked_statement ::= try_catch.
unticked_statement ::= while.
unticked_statement ::= for.
unticked_statement ::= do_while.
unticked_statement ::= switch.
unticked_statement ::= if.
unticked_statement ::= if_alt.
unticked_statement ::= global SEMICOLON.
unticked_statement ::= static SEMICOLON.
unticked_statement ::= echo SEMICOLON.
unticked_statement ::= unset SEMICOLON.
unticked_statement ::= break SEMICOLON.
unticked_statement ::= continue SEMICOLON.
unticked_statement ::= return SEMICOLON.
unticked_statement ::= INLINE_HTML.
unticked_statement ::= expr_expr SEMICOLON.
unticked_statement ::= throw SEMICOLON.
unticked_statement ::= goto SEMICOLON.
unticked_statement_ns ::= LBRACE inner_statement_list RBRACE.
unticked_statement_ns ::= SEMICOLON.
unticked_statement_ns ::= foreach_ns.
unticked_statement_ns ::= foreach2_ns.
unticked_statement_ns ::= declare_ns.
unticked_statement_ns ::= try_catch_ns.
unticked_statement_ns ::= while_ns.
unticked_statement_ns ::= for_ns.
unticked_statement_ns ::= do_while_ns.
unticked_statement_ns ::= switch_ns.
unticked_statement_ns ::= if_ns.
unticked_statement_ns ::= if_alt_ns.
unticked_statement_ns ::= global_ns SEMICOLON.
unticked_statement_ns ::= static_ns SEMICOLON.
unticked_statement_ns ::= echo_ns SEMICOLON.
unticked_statement_ns ::= unset_ns SEMICOLON.
unticked_statement_ns ::= break_ns SEMICOLON.
unticked_statement_ns ::= continue_ns SEMICOLON.
unticked_statement_ns ::= return_ns SEMICOLON.
unticked_statement_ns ::= INLINE_HTML.
unticked_statement_ns ::= expr_expr_ns SEMICOLON.
unticked_statement_ns ::= throw_ns SEMICOLON.
unticked_statement_ns ::= goto_ns SEMICOLON.
global ::= GLOBAL global_var_list.
global_ns ::= GLOBAL global_var_list.
static ::= STATIC static_var_list.
static_ns ::= STATIC static_var_list.
unset ::= UNSET LPAREN unset_variables RPAREN.
unset_ns ::= UNSET LPAREN unset_variables RPAREN.
break ::= BREAK.
break ::= BREAK expr.
break_ns ::= BREAK.
break_ns ::= BREAK expr.
continue ::= CONTINUE.
continue ::= CONTINUE expr.
continue_ns ::= CONTINUE.
continue_ns ::= CONTINUE expr.
return ::= RETURN.
return ::= return_expr.
return_ns ::= RETURN.
return_ns ::= return_expr.
echo ::= ECHO echo_expr_list.
echo_ns ::= ECHO echo_expr_list.
throw ::= THROW expr.
throw_ns ::= THROW expr.
expr_expr ::= expr.
expr_expr_ns ::= expr.
return_expr ::= RETURN variable.
return_expr ::= RETURN expr_wo_var.
goto ::= GOTO STRING.
goto_ns ::= GOTO STRING.
unset_variables ::= unset_variable.
unset_variables ::= unset_variables COMMA unset_variable.
unset_variable ::= variable.
function_declaration_statement ::= unticked_function_declaration_statement RBRACE.
class_declaration_statement ::= unticked_class_declaration_statement RBRACE.
class_declaration_statement_ns ::= unticked_class_declaration_statement_ns RBRACE.
is_reference ::=.
is_reference ::= BW_AND.
unticked_function_declaration_statement_iii ::= function is_reference STRING.
unticked_function_declaration_statement_ii ::= unticked_function_declaration_statement_iii LPAREN parameters RPAREN.
unticked_function_declaration_statement_i ::= unticked_function_declaration_statement_ii LBRACE inner_statement_list.
unticked_function_declaration_statement ::= unticked_function_declaration_statement_i.
unticked_class_declaration_statement_i ::= class_entry_type STRING extends_from.
unticked_class_declaration_statement_ii ::= interface_entry STRING.
unticked_class_declaration_statement ::= unticked_class_declaration_statement_i implements_list LBRACE class_statements.
unticked_class_declaration_statement ::= unticked_class_declaration_statement_ii interface_extends_list LBRACE class_statements.
unticked_class_declaration_statement_ns ::= unticked_class_declaration_statement_i implements_list LBRACE class_statements.
unticked_class_declaration_statement_ns ::= unticked_class_declaration_statement_ii interface_extends_list LBRACE class_statements.
class_entry_type ::= CLASS.
class_entry_type ::= ABSTRACT CLASS.
class_entry_type ::= TRAIT.
class_entry_type ::= FINAL CLASS.
extends_from ::=.
extends_from ::= EXTENDS fully_qualified_class_name.
interface_entry ::= INTERFACE.
interface_extends_list ::=.
interface_extends_list ::= EXTENDS interface_list.
implements_list ::=.
implements_list ::= IMPLEMENTS interface_list.
interface_list ::= fully_qualified_class_name.
interface_list ::= interface_list COMMA fully_qualified_class_name.
parameters ::=.
parameters ::= parameters_list.
parameters_list ::= type_hint VARIABLE.
parameters_list ::= type_hint BW_AND VARIABLE.
parameters_list ::= type_hint BW_AND VARIABLE EQUAL static_scalar.
parameters_list ::= type_hint VARIABLE EQUAL static_scalar.
parameters_list ::= parameters_list COMMA type_hint VARIABLE.
parameters_list ::= parameters_list COMMA type_hint BW_AND VARIABLE.
parameters_list ::= parameters_list COMMA type_hint BW_AND VARIABLE EQUAL static_scalar.
parameters_list ::= parameters_list COMMA type_hint VARIABLE EQUAL static_scalar.
type_hint ::=.
type_hint ::= ARRAY.
type_hint ::= BOOL_HINT.
type_hint ::= STRING_HINT.
type_hint ::= INT_HINT.
type_hint ::= DOUBLE_HINT.
type_hint ::= RESOURCE_HINT.
type_hint ::= OBJECT_HINT.
type_hint ::= SCALAR_HINT.
type_hint ::= NUMERIC_HINT.
type_hint ::= fully_qualified_class_name.
fcall_parameters ::=.
fcall_parameters ::= fcall_parameters_list.
fcall_parameters_list ::= expr_wo_var.
fcall_parameters_list ::= variable.
fcall_parameters_list ::= BW_AND w_variable.
fcall_parameters_list ::= fcall_parameters_list COMMA expr_wo_var.
fcall_parameters_list ::= fcall_parameters_list COMMA variable.
fcall_parameters_list ::= fcall_parameters_list COMMA BW_AND w_variable.
global_var_list ::= global_var_list COMMA global_var.
global_var_list ::= global_var.
global_var ::= VARIABLE.
global_var ::= DOLLAR r_variable.
global_var ::= DOLLAR LBRACE expr RBRACE.
static_var_list ::= static_var_list COMMA VARIABLE.
static_var_list ::= static_var_list COMMA VARIABLE EQUAL static_scalar.
static_var_list ::= VARIABLE.
static_var_list ::= VARIABLE EQUAL static_scalar.
class_statements ::=.
class_statements ::= class_statements class_statement.
class_statement_i ::= variable_modifiers.
class_statement_ii ::= method_modifiers function is_reference STRING.
class_statement ::= class_statement_i class_variables SEMICOLON.
class_statement ::= class_constants SEMICOLON.
class_statement ::= trait_use_statement.
method_body_i ::= LPAREN parameters RPAREN LBRACE inner_statement_list.
method_body ::= class_statement_ii method_body_i.
method_body_abstract ::= class_statement_ii LPAREN parameters RPAREN.
class_statement ::= method_body_abstract SEMICOLON.
class_statement ::= method_body RBRACE.
trait_use_statement ::= USE trait_list trait_adaptations.
trait_list ::= fully_qualified_class_name.
trait_list ::= trait_list COMMA fully_qualified_class_name.
trait_adaptations ::= SEMICOLON.
trait_adaptations ::= LBRACE trait_adaptations_list RBRACE.
trait_adaptations_list ::=.
trait_adaptations_list ::= trait_adaptations_list trait_adaptation_statement.
trait_adaptation_statement ::= trait_precedence SEMICOLON.
trait_adaptation_statement ::= trait_alias SEMICOLON.
trait_precedence ::= trait_method_reference_fully_qualified INSTEADOF trait_reference_list.
trait_reference_list ::= fully_qualified_class_name.
trait_reference_list ::= trait_reference_list COMMA fully_qualified_class_name.
trait_method_reference ::= STRING.
trait_method_reference ::= trait_method_reference_fully_qualified.
trait_method_reference_fully_qualified ::= fully_qualified_class_name PAAMAYIM_NEKUDOTAYIM STRING.
trait_alias ::= trait_method_reference AS trait_modifiers STRING.
trait_alias ::= trait_method_reference AS member_modifier.
trait_modifiers ::=.
trait_modifiers ::= member_modifier.
variable_modifiers ::= member_modifiers_list.
variable_modifiers ::= VAR.
method_modifiers ::=.
method_modifiers ::= member_modifiers_list.
member_modifiers_list ::= member_modifier.
member_modifiers_list ::= member_modifiers_list member_modifier.
member_modifier ::= PUBLIC.
member_modifier ::= PROTECTED.
member_modifier ::= PRIVATE.
member_modifier ::= STATIC.
member_modifier ::= ABSTRACT.
member_modifier ::= FINAL.
class_variables ::= class_variables COMMA VARIABLE.
class_variables ::= class_variables COMMA VARIABLE EQUAL static_scalar.
class_variables ::= VARIABLE.
class_variables ::= VARIABLE EQUAL static_scalar.
class_constants ::= class_constants COMMA STRING EQUAL static_scalar.
class_constants ::= CONST STRING EQUAL static_scalar.
echo_expr_list ::= expr.
echo_expr_list ::= echo_expr_list COMMA expr.
new_i ::= NEW class_name_reference.
new_ii ::= variable EQUAL BW_AND new_i.
list_i ::= LIST LPAREN.
list ::= list_i assignment_list RPAREN EQUAL expr.
expr_wo_var ::= list.
expr_wo_var ::= variable EQUAL expr.
expr_wo_var ::= variable EQUAL BW_AND variable.
expr_wo_var ::= new_ii ctor_arguments.
expr_wo_var ::= new_i ctor_arguments.
expr_wo_var ::= CLONE expr.
expr_wo_var ::= variable PLUS_EQUAL expr.
expr_wo_var ::= variable MINUS_EQUAL expr.
expr_wo_var ::= variable MUL_EQUAL expr.
expr_wo_var ::= variable DIV_EQUAL expr.
expr_wo_var ::= variable CONCAT_EQUAL expr.
expr_wo_var ::= variable MOD_EQUAL expr.
expr_wo_var ::= variable AND_EQUAL expr.
expr_wo_var ::= variable OR_EQUAL expr.
expr_wo_var ::= variable XOR_EQUAL expr.
expr_wo_var ::= variable SL_EQUAL expr.
expr_wo_var ::= variable SR_EQUAL expr.
expr_wo_var ::= rw_variable INC.
expr_wo_var ::= INC rw_variable.
expr_wo_var ::= rw_variable DEC.
expr_wo_var ::= DEC rw_variable.
expr_wo_var ::= bool_or_expr.
expr_wo_var ::= bool_and_expr.
expr_wo_var ::= logic_or_expr.
expr_wo_var ::= logic_and_expr.
expr_wo_var ::= expr LOGICAL_XOR expr.
expr_wo_var ::= expr BW_OR expr.
expr_wo_var ::= expr BW_AND expr.
expr_wo_var ::= expr BW_XOR expr.
expr_wo_var ::= expr DOT expr.
expr_wo_var ::= expr PLUS expr.
expr_wo_var ::= expr MINUS expr.
expr_wo_var ::= expr MULT expr.
expr_wo_var ::= expr DIV expr.
expr_wo_var ::= expr MOD expr.
expr_wo_var ::= expr SL expr.
expr_wo_var ::= expr SR expr.
expr_wo_var ::= BOOL_NOT expr.
expr_wo_var ::= BW_NOT expr.
expr_wo_var ::= expr IS_IDENTICAL expr.
expr_wo_var ::= expr IS_NOT_IDENTICAL expr.
expr_wo_var ::= expr IS_EQUAL expr.
expr_wo_var ::= expr IS_NOT_EQUAL expr.
expr_wo_var ::= expr IS_SMALLER expr.
expr_wo_var ::= expr IS_SMALLER_OR_EQUAL expr.
expr_wo_var ::= expr IS_GREATER expr.
expr_wo_var ::= expr IS_GREATER_OR_EQUAL expr.
expr_wo_var ::= expr INSTANCEOF class_name_reference.
expr_wo_var ::= LPAREN expr RPAREN.
expr_wo_var ::= ternary.
expr_wo_var ::= short_ternary.
expr_wo_var ::= internal_functions_in_yacc.
expr_wo_var ::= INT_CAST expr.
expr_wo_var ::= DOUBLE_CAST expr.
expr_wo_var ::= STRING_CAST expr.
expr_wo_var ::= ARRAY_CAST expr.
expr_wo_var ::= OBJECT_CAST expr.
expr_wo_var ::= BOOL_CAST expr.
expr_wo_var ::= SCALAR_CAST expr.
expr_wo_var ::= NUMERIC_CAST expr.
expr_wo_var ::= UNSET_CAST expr.
expr_wo_var ::= EXIT exit_expr.
expr_wo_var ::= silent expr. [IF]
expr_wo_var ::= ARRAY LPAREN array_pairs RPAREN.
expr_wo_var ::= scalar.
expr_wo_var ::= BACKQUOTE backticks_expr BACKQUOTE.
expr_wo_var ::= PRINT expr.
expr_wo_var ::= closure.
expr_wo_var ::= PLUS expr. [INC]
expr_wo_var ::= MINUS expr. [INC]
closure ::= closure_i parameters RPAREN lexical_vars LBRACE inner_statement_list RBRACE.
closure ::= closure_ii parameters RPAREN lexical_vars LBRACE inner_statement_list RBRACE.
bool_or_expr_i ::= expr BOOLEAN_OR.
bool_or_expr ::= bool_or_expr_i expr.
bool_and_expr_i ::= expr BOOLEAN_AND.
bool_and_expr ::= bool_and_expr_i expr.
logic_or_expr_i ::= expr LOGICAL_OR.
logic_or_expr ::= logic_or_expr_i expr.
logic_and_expr_i ::= expr LOGICAL_AND.
logic_and_expr ::= logic_and_expr_i expr.
ternary_ii ::= expr QUESTION_MARK.
ternary_i ::= ternary_ii expr COLON.
ternary ::= ternary_i expr.
short_ternary_i ::= expr QUESTION_MARK COLON.
short_ternary ::= short_ternary_i expr.
closure_i ::= function is_reference LPAREN.
closure_ii ::= STATIC function is_reference LPAREN.
silent ::= AT.
function ::= FUNCTION.
lexical_vars ::=.
lexical_vars ::= USE LPAREN lexical_var_list RPAREN.
lexical_var_list ::= lexical_var_list COMMA VARIABLE.
lexical_var_list ::= lexical_var_list COMMA BW_AND VARIABLE.
lexical_var_list ::= VARIABLE.
lexical_var_list ::= BW_AND VARIABLE.
function_call_ns_i ::= namespace_name LPAREN.
function_call_ns_ii ::= NAMESPACE NS_SEPARATOR namespace_name LPAREN.
function_call_ns_iii ::= NS_SEPARATOR namespace_name LPAREN.
function_call_cls_i ::= class_name PAAMAYIM_NEKUDOTAYIM STRING LPAREN.
function_call_cls_ii ::= class_name PAAMAYIM_NEKUDOTAYIM variable_without_objects LPAREN.
function_call_var_i ::= variable_class_name PAAMAYIM_NEKUDOTAYIM STRING LPAREN.
function_call_var_ii ::= variable_class_name PAAMAYIM_NEKUDOTAYIM variable_without_objects LPAREN.
function_call_var_iii ::= variable_without_objects LPAREN.
function_call ::= function_call_ns_i fcall_parameters RPAREN.
function_call ::= function_call_ns_ii fcall_parameters RPAREN.
function_call ::= function_call_ns_iii fcall_parameters RPAREN.
function_call ::= function_call_cls_i fcall_parameters RPAREN.
function_call ::= function_call_cls_ii fcall_parameters RPAREN.
function_call ::= function_call_var_i fcall_parameters RPAREN.
function_call ::= function_call_var_ii fcall_parameters RPAREN.
function_call ::= function_call_var_iii fcall_parameters RPAREN.
class_name ::= STATIC.
class_name ::= namespace_name.
class_name ::= NAMESPACE NS_SEPARATOR namespace_name.
class_name ::= NS_SEPARATOR namespace_name.
fully_qualified_class_name ::= namespace_name.
fully_qualified_class_name ::= NAMESPACE NS_SEPARATOR namespace_name.
fully_qualified_class_name ::= NS_SEPARATOR namespace_name.
class_name_reference ::= class_name.
class_name_reference ::= dynamic_class_name_reference.
dynamic_class_name_reference_i ::= base_variable OBJECT_OPERATOR.
dynamic_class_name_reference_ii ::= dynamic_class_name_reference_i object_property.
dynamic_class_name_reference ::= dynamic_class_name_reference_ii dynamic_class_name_variable_properties.
dynamic_class_name_reference ::= base_variable.
dynamic_class_name_variable_properties ::=.
dynamic_class_name_variable_properties ::= dynamic_class_name_variable_properties dynamic_class_name_variable_property.
dynamic_class_name_variable_property ::= OBJECT_OPERATOR object_property.
exit_expr ::=.
exit_expr ::= LPAREN RPAREN.
exit_expr ::= LPAREN expr RPAREN.
backticks_expr ::=.
backticks_expr ::= ENCAPSED_AND_WHITESPACE.
backticks_expr ::= encaps_list.
ctor_arguments ::=.
ctor_arguments ::= LPAREN fcall_parameters RPAREN.
common_scalar ::= LNUMBER.
common_scalar ::= DNUMBER.
common_scalar ::= CONSTANT_ENCAPSED_STRING.
common_scalar ::= LINE.
common_scalar ::= FILE.
common_scalar ::= DIR.
common_scalar ::= CLASS_C.
common_scalar ::= METHOD_C.
common_scalar ::= FUNC_C.
common_scalar ::= NS_C.
common_scalar ::= START_HEREDOC ENCAPSED_AND_WHITESPACE END_HEREDOC.
common_scalar ::= START_HEREDOC END_HEREDOC.
static_scalar ::= common_scalar.
static_scalar ::= namespace_name.
static_scalar ::= NAMESPACE NS_SEPARATOR namespace_name.
static_scalar ::= NS_SEPARATOR namespace_name.
static_scalar ::= PLUS static_scalar.
static_scalar ::= MINUS static_scalar.
static_scalar ::= ARRAY LPAREN static_array_pair_list RPAREN.
static_scalar ::= static_class_constant.
static_class_constant ::= class_name PAAMAYIM_NEKUDOTAYIM STRING.
scalar ::= STRING_VARNAME.
scalar ::= class_constant.
scalar ::= namespace_name.
scalar ::= NAMESPACE NS_SEPARATOR namespace_name.
scalar ::= NS_SEPARATOR namespace_name.
scalar ::= common_scalar.
scalar ::= QUOTE encaps_list QUOTE.
scalar ::= START_HEREDOC encaps_list END_HEREDOC.
static_array_pair_list ::=.
static_array_pair_list ::= non_empty_static_array_pair_list possible_comma.
possible_comma ::=.
possible_comma ::= COMMA.
non_empty_static_array_pair_list ::= non_empty_static_array_pair_list COMMA static_scalar DOUBLE_ARROW static_scalar.
non_empty_static_array_pair_list ::= non_empty_static_array_pair_list COMMA static_scalar.
non_empty_static_array_pair_list ::= static_scalar DOUBLE_ARROW static_scalar.
non_empty_static_array_pair_list ::= static_scalar.
expr ::= r_variable.
expr ::= expr_wo_var.
r_variable ::= variable.
w_variable ::= variable.
rw_variable ::= variable.
variable_i ::= base_variable_with_function_calls OBJECT_OPERATOR.
variable_ii ::= object_property.
variable ::= variable_i variable_ii method_or_not variable_properties.
variable ::= base_variable_with_function_calls.
variable_properties ::=.
variable_properties ::= variable_properties variable_property.
variable_property_i ::= OBJECT_OPERATOR object_property.
variable_property ::= variable_property_i method_or_not.
array_method_dereference ::= array_method_dereference LBRACKET dim_offset RBRACKET.
array_method_dereference ::= method LBRACKET dim_offset RBRACKET.
method_i ::= LPAREN.
method ::= method_i fcall_parameters RPAREN.
method_or_not ::=.
method_or_not ::= method.
method_or_not ::= array_method_dereference.
variable_without_objects ::= reference_variable.
variable_without_objects ::= simple_indirect_reference reference_variable.
static_member ::= class_name PAAMAYIM_NEKUDOTAYIM variable_without_objects.
static_member ::= variable_class_name PAAMAYIM_NEKUDOTAYIM variable_without_objects.
variable_class_name ::= reference_variable.
array_function_dereference_i ::= function_call.
array_function_dereference ::= array_function_dereference LBRACKET dim_offset RBRACKET.
array_function_dereference ::= array_function_dereference_i LBRACKET dim_offset RBRACKET.
base_variable_with_function_calls ::= base_variable.
base_variable_with_function_calls ::= array_function_dereference.
base_variable_with_function_calls ::= function_call.
base_variable ::= reference_variable.
base_variable ::= simple_indirect_reference reference_variable.
base_variable ::= static_member.
reference_variable ::= reference_variable LBRACKET dim_offset RBRACKET.
reference_variable ::= reference_variable LBRACE expr RBRACE.
reference_variable ::= compound_variable.
compound_variable ::= VARIABLE.
compound_variable ::= DOLLAR LBRACE expr RBRACE.
dim_offset ::=.
dim_offset ::= expr.
object_property ::= object_dim_list.
object_property ::= variable_without_objects.
object_dim_list ::= object_dim_list LBRACKET dim_offset RBRACKET.
object_dim_list ::= object_dim_list LBRACE expr RBRACE.
object_dim_list ::= variable_name.
variable_name ::= STRING.
variable_name ::= LBRACE expr RBRACE.
simple_indirect_reference ::= DOLLAR.
simple_indirect_reference ::= simple_indirect_reference DOLLAR.
assignment_list ::= assignment_list COMMA assignment_list_element.
assignment_list ::= assignment_list_element.
assignment_list_element_i ::= LIST LPAREN.
assignment_list_element ::= variable.
assignment_list_element ::= assignment_list_element_i assignment_list RPAREN.
assignment_list_element ::=.
array_pairs ::=.
array_pairs ::= array_pairs_list possible_comma.
array_pairs_list ::= array_pairs_list COMMA expr DOUBLE_ARROW expr.
array_pairs_list ::= array_pairs_list COMMA expr.
array_pairs_list ::= array_pairs_list COMMA expr DOUBLE_ARROW BW_AND w_variable.
array_pairs_list ::= array_pairs_list COMMA BW_AND w_variable.
array_pairs_list ::= expr DOUBLE_ARROW expr.
array_pairs_list ::= expr.
array_pairs_list ::= expr DOUBLE_ARROW BW_AND w_variable.
array_pairs_list ::= BW_AND w_variable.
encaps_list ::= encaps_list encaps_var.
encaps_list ::= encaps_list ENCAPSED_AND_WHITESPACE.
encaps_list ::= encaps_var.
encaps_list ::= ENCAPSED_AND_WHITESPACE encaps_var.
encaps_var_i ::= VARIABLE LBRACKET.
encaps_var ::= VARIABLE.
encaps_var ::= encaps_var_i encaps_var_offset RBRACKET.
encaps_var ::= VARIABLE OBJECT_OPERATOR STRING.
encaps_var ::= DOLLAR_OPEN_CURLY_BRACES expr RBRACE.
encaps_var ::= DOLLAR_OPEN_CURLY_BRACES STRING_VARNAME LBRACKET expr RBRACKET RBRACE.
encaps_var ::= CURLY_OPEN variable RBRACE.
encaps_var_offset ::= STRING.
encaps_var_offset ::= NUM_STRING.
encaps_var_offset ::= VARIABLE.
internal_functions_in_yacc ::= ISSET LPAREN isset_variables RPAREN.
internal_functions_in_yacc ::= EMPTY LPAREN variable RPAREN.
internal_functions_in_yacc ::= INCLUDE expr.
internal_functions_in_yacc ::= INCLUDE_ONCE expr.
internal_functions_in_yacc ::= EVAL LPAREN expr RPAREN.
internal_functions_in_yacc ::= REQUIRE expr.
internal_functions_in_yacc ::= REQUIRE_ONCE expr.
isset_variables_i ::= isset_variables COMMA.
isset_variables ::= variable.
isset_variables ::= isset_variables_i variable.
class_constant ::= class_name PAAMAYIM_NEKUDOTAYIM STRING.
class_constant ::= variable_class_name PAAMAYIM_NEKUDOTAYIM STRING.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment