parse isset
This commit is contained in:
parent
9418775874
commit
9edffc663e
32
parser.y
32
parser.y
@ -305,6 +305,9 @@ func (n node) attribute(key string, value string) node {
|
|||||||
%type <node> ctor_arguments
|
%type <node> ctor_arguments
|
||||||
%type <node> class_name_reference
|
%type <node> class_name_reference
|
||||||
%type <node> new_variable
|
%type <node> new_variable
|
||||||
|
%type <node> internal_functions_in_yacc
|
||||||
|
%type <node> isset_variables
|
||||||
|
%type <node> isset_variable
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
@ -1010,12 +1013,7 @@ expr_without_variable:
|
|||||||
| expr '?' expr ':' expr { $$ = Node("Ternary").append($1).append($3).append($5); }
|
| expr '?' expr ':' expr { $$ = Node("Ternary").append($1).append($3).append($5); }
|
||||||
| expr '?' ':' expr { $$ = Node("Ternary").append($1).append($4); }
|
| expr '?' ':' expr { $$ = Node("Ternary").append($1).append($4); }
|
||||||
| expr T_COALESCE expr { $$ = Node("Coalesce").append($1).append($3); }
|
| expr T_COALESCE expr { $$ = Node("Coalesce").append($1).append($3); }
|
||||||
| T_EMPTY '(' expr ')' { $$ = Node("Empty").append($3); }
|
| internal_functions_in_yacc { $$ = $1}
|
||||||
| T_INCLUDE expr { $$ = Node("Include").append($2); }
|
|
||||||
| T_INCLUDE_ONCE expr { $$ = Node("IncludeOnce").append($2); }
|
|
||||||
| T_EVAL '(' expr ')' { $$ = Node("Eval").append($3); }
|
|
||||||
| T_REQUIRE expr { $$ = Node("Require").append($2); }
|
|
||||||
| T_REQUIRE_ONCE expr { $$ = Node("RequireOnce").append($2); }
|
|
||||||
| T_INT_CAST expr { $$ = Node("CastInt").append($2); }
|
| T_INT_CAST expr { $$ = Node("CastInt").append($2); }
|
||||||
| T_DOUBLE_CAST expr { $$ = Node("CastDouble").append($2); }
|
| T_DOUBLE_CAST expr { $$ = Node("CastDouble").append($2); }
|
||||||
| T_STRING_CAST expr { $$ = Node("CastString").append($2); }
|
| T_STRING_CAST expr { $$ = Node("CastString").append($2); }
|
||||||
@ -1076,6 +1074,25 @@ encaps_var_offset:
|
|||||||
| T_VARIABLE { $$ = Node("OffsetVariable").attribute("value", $1) }
|
| T_VARIABLE { $$ = Node("OffsetVariable").attribute("value", $1) }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
internal_functions_in_yacc:
|
||||||
|
T_ISSET '(' isset_variables possible_comma ')' { $$ = $3; }
|
||||||
|
| T_EMPTY '(' expr ')' { $$ = Node("Empty").append($3); }
|
||||||
|
| T_INCLUDE expr { $$ = Node("Include").append($2); }
|
||||||
|
| T_INCLUDE_ONCE expr { $$ = Node("IncludeOnce").append($2); }
|
||||||
|
| T_EVAL '(' expr ')' { $$ = Node("Eval").append($3); }
|
||||||
|
| T_REQUIRE expr { $$ = Node("Require").append($2); }
|
||||||
|
| T_REQUIRE_ONCE expr { $$ = Node("RequireOnce").append($2); }
|
||||||
|
;
|
||||||
|
|
||||||
|
isset_variables:
|
||||||
|
isset_variable { $$ = $1; }
|
||||||
|
| isset_variables ',' isset_variable { $$ = Node("AndIsset").append($1).append($3); }
|
||||||
|
;
|
||||||
|
|
||||||
|
isset_variable:
|
||||||
|
expr { $$ = Node("Isset").append($1) }
|
||||||
|
;
|
||||||
|
|
||||||
constant:
|
constant:
|
||||||
name { $$ = Node("Const").append($1) }
|
name { $$ = Node("Const").append($1) }
|
||||||
| class_name T_PAAMAYIM_NEKUDOTAYIM identifier { $$ = Node("Const").append($1).append($3) }
|
| class_name T_PAAMAYIM_NEKUDOTAYIM identifier { $$ = Node("Const").append($1).append($3) }
|
||||||
@ -1203,8 +1220,7 @@ new_variable:
|
|||||||
%%
|
%%
|
||||||
|
|
||||||
const src = `<?php
|
const src = `<?php
|
||||||
$a instanceof \Test;
|
isset($a, $b);
|
||||||
new $Test[]();
|
|
||||||
`
|
`
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
Loading…
Reference in New Issue
Block a user