parse Unset stmt
This commit is contained in:
parent
aa1c9b9257
commit
7863670c5c
1
lexer.go
1
lexer.go
@ -7669,6 +7669,7 @@ yyrule2: // .
|
||||
tb := []byte{}
|
||||
for {
|
||||
if c == -1 {
|
||||
tb = l.TokenBytes(nil)
|
||||
break
|
||||
}
|
||||
if '?' == rune(c) {
|
||||
|
1
lexer.l
1
lexer.l
@ -158,6 +158,7 @@ NEW_LINE (\r|\n|\r\n)
|
||||
|
||||
for {
|
||||
if c == -1 {
|
||||
tb = l.TokenBytes(nil);
|
||||
break;
|
||||
}
|
||||
|
||||
|
28
parser.y
28
parser.y
@ -215,6 +215,8 @@ func (n node) attribute(key string, value string) node {
|
||||
%type <node> static_var
|
||||
%type <node> echo_expr_list
|
||||
%type <node> echo_expr
|
||||
%type <node> unset_variables
|
||||
%type <node> unset_variable
|
||||
|
||||
%%
|
||||
|
||||
@ -305,6 +307,11 @@ statement:
|
||||
| T_ECHO echo_expr_list ';' { $$ = $2; }
|
||||
| T_INLINE_HTML { $$ = Node("Echo").append(Node("InlineHtml").attribute("value", $1)) }
|
||||
| expr ';' { $$ = $1; }
|
||||
| T_UNSET '(' unset_variables possible_comma ')' ';'
|
||||
{
|
||||
$$ = Node("Unset").append($3);
|
||||
}
|
||||
|
||||
|
||||
if_stmt_without_else:
|
||||
T_IF '(' expr ')' statement
|
||||
@ -415,6 +422,20 @@ echo_expr:
|
||||
expr { $$ = Node("Echo").append($1) }
|
||||
;
|
||||
|
||||
unset_variables:
|
||||
unset_variable { $$ = Node("UnsetVariablesList").append($1) }
|
||||
| unset_variables ',' unset_variable { $$ = $1.append($3) }
|
||||
;
|
||||
|
||||
unset_variable:
|
||||
variable { $$ = $1 }
|
||||
;
|
||||
|
||||
possible_comma:
|
||||
/* empty */
|
||||
| ','
|
||||
;
|
||||
|
||||
class_declaration_statement:
|
||||
class_modifiers T_CLASS T_STRING '{' '}' { $$ = $1.attribute("name", $3) }
|
||||
| T_CLASS T_STRING '{' '}' { $$ = Node("Class").attribute("name", $2) }
|
||||
@ -613,12 +634,9 @@ simple_variable:
|
||||
|
||||
const src = `a<?
|
||||
|
||||
static $a, $b = $c;
|
||||
|
||||
?> test<?php
|
||||
|
||||
echo $a, $b = $c;
|
||||
unset($a, $b, );
|
||||
|
||||
?> test
|
||||
`
|
||||
|
||||
func main() {
|
||||
|
Loading…
Reference in New Issue
Block a user