[refactoring] update ast structure of "Print", "Reference", "Require" and "RequireOnce" nodes

This commit is contained in:
Vadym Slizov 2020-12-03 22:20:50 +02:00
parent 45e959056b
commit 592c9b9aff
No known key found for this signature in database
GPG Key ID: AEA2A9388EF42A4A
5 changed files with 491 additions and 469 deletions

472
internal/php5/php5.go generated

File diff suppressed because it is too large Load Diff

View File

@ -1609,13 +1609,13 @@ foreach_variable:
} }
| '&' variable | '&' variable
{ {
$$ = &ast.ExprReference{ast.Node{}, $2} $$ = &ast.ExprReference{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
AmpersandTkn: $1,
// save comments Var: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
| T_LIST '(' assignment_list ')' | T_LIST '(' assignment_list ')'
{ {
@ -3943,13 +3943,13 @@ expr_without_variable:
} }
| T_PRINT expr | T_PRINT expr
{ {
$$ = &ast.ExprPrint{ast.Node{}, $2} $$ = &ast.ExprPrint{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
PrintTkn: $1,
// save comments Expr: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
| T_YIELD | T_YIELD
{ {
@ -4182,6 +4182,7 @@ lexical_var_list:
Node: ast.Node{ Node: ast.Node{
Position: position.NewTokensPosition($3, $4), Position: position.NewTokensPosition($3, $4),
}, },
AmpersandTkn: $3,
Var: &ast.ExprVariable{ Var: &ast.ExprVariable{
Node: ast.Node{ Node: ast.Node{
Position: position.NewTokenPosition($4), Position: position.NewTokenPosition($4),
@ -4228,6 +4229,7 @@ lexical_var_list:
Node: ast.Node{ Node: ast.Node{
Position: position.NewTokensPosition($1, $2), Position: position.NewTokensPosition($1, $2),
}, },
AmpersandTkn: $1,
Var: &ast.ExprVariable{ Var: &ast.ExprVariable{
Node: ast.Node{ Node: ast.Node{
Position: position.NewTokenPosition($2), Position: position.NewTokenPosition($2),
@ -6100,7 +6102,8 @@ non_empty_array_pair_list:
Node: ast.Node{ Node: ast.Node{
Position: position.NewTokenNodePosition($5, $6), Position: position.NewTokenNodePosition($5, $6),
}, },
Var: $6, AmpersandTkn: $5,
Var: $6,
}, },
} }
@ -6119,7 +6122,8 @@ non_empty_array_pair_list:
Node: ast.Node{ Node: ast.Node{
Position: position.NewTokenNodePosition($3, $4), Position: position.NewTokenNodePosition($3, $4),
}, },
Var: $4, AmpersandTkn: $3,
Var: $4,
}, },
} }
@ -6142,7 +6146,8 @@ non_empty_array_pair_list:
Node: ast.Node{ Node: ast.Node{
Position: position.NewTokenNodePosition($3, $4), Position: position.NewTokenNodePosition($3, $4),
}, },
Var: $4, AmpersandTkn: $3,
Var: $4,
}, },
}, },
}, },
@ -6160,7 +6165,8 @@ non_empty_array_pair_list:
Node: ast.Node{ Node: ast.Node{
Position: position.NewTokenNodePosition($1, $2), Position: position.NewTokenNodePosition($1, $2),
}, },
Var: $2, AmpersandTkn: $1,
Var: $2,
}, },
}, },
}, },
@ -6471,23 +6477,23 @@ internal_functions_in_yacc:
} }
| T_REQUIRE expr | T_REQUIRE expr
{ {
$$ = &ast.ExprRequire{ast.Node{}, $2} $$ = &ast.ExprRequire{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
RequireTkn: $1,
// save comments Expr: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
| T_REQUIRE_ONCE expr | T_REQUIRE_ONCE expr
{ {
$$ = &ast.ExprRequireOnce{ast.Node{}, $2} $$ = &ast.ExprRequireOnce{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
RequireOnceTkn: $1,
// save comments Expr: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
; ;

315
internal/php7/php7.go generated
View File

@ -343,7 +343,7 @@ const yyEofCode = 1
const yyErrCode = 2 const yyErrCode = 2
const yyInitialStackSize = 16 const yyInitialStackSize = 16
// line internal/php7/php7.y:5008 // line internal/php7/php7.y:5011
// line yacctab:1 // line yacctab:1
var yyExca = [...]int{ var yyExca = [...]int{
@ -3812,13 +3812,13 @@ yydefault:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:1445 // line internal/php7/php7.y:1445
{ {
yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node} yyVAL.node = &ast.ExprReference{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) },
AmpersandTkn: yyDollar[1].token,
// save comments Var: yyDollar[2].node,
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) }
} }
case 186: case 186:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
@ -6156,13 +6156,13 @@ yydefault:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:3583 // line internal/php7/php7.y:3583
{ {
yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} yyVAL.node = &ast.ExprPrint{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) },
PrintTkn: yyDollar[1].token,
// save comments Expr: yyDollar[2].node,
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) }
} }
case 367: case 367:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
@ -6347,27 +6347,28 @@ yydefault:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:3761 // line internal/php7/php7.y:3761
{ {
identifier := &ast.Identifier{ yyVAL.node = &ast.ExprReference{
Node: ast.Node{ Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[2].token), Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token),
},
AmpersandTkn: yyDollar[1].token,
Var: &ast.ExprVariable{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[2].token),
},
VarName: &ast.Identifier{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[2].token),
},
IdentifierTkn: yyDollar[2].token,
Value: yyDollar[2].token.Value,
},
}, },
IdentifierTkn: yyDollar[2].token,
Value: yyDollar[2].token.Value,
} }
variable := &ast.ExprVariable{ast.Node{}, identifier}
yyVAL.node = &ast.ExprReference{ast.Node{}, variable}
// save position
variable.GetNode().Position = position.NewTokenPosition(yyDollar[2].token)
yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, yyDollar[2].token.SkippedTokens)
} }
case 384: case 384:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:3784 // line internal/php7/php7.y:3785
{ {
yyVAL.node = &ast.ExprFunctionCall{ yyVAL.node = &ast.ExprFunctionCall{
Node: ast.Node{ Node: ast.Node{
@ -6381,7 +6382,7 @@ yydefault:
} }
case 385: case 385:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3796 // line internal/php7/php7.y:3797
{ {
yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)}
@ -6394,7 +6395,7 @@ yydefault:
} }
case 386: case 386:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3807 // line internal/php7/php7.y:3808
{ {
yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)}
@ -6407,7 +6408,7 @@ yydefault:
} }
case 387: case 387:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:3818 // line internal/php7/php7.y:3819
{ {
yyVAL.node = &ast.ExprFunctionCall{ yyVAL.node = &ast.ExprFunctionCall{
Node: ast.Node{ Node: ast.Node{
@ -6421,7 +6422,7 @@ yydefault:
} }
case 388: case 388:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3833 // line internal/php7/php7.y:3834
{ {
yyVAL.node = &ast.Identifier{ yyVAL.node = &ast.Identifier{
Node: ast.Node{ Node: ast.Node{
@ -6433,31 +6434,31 @@ yydefault:
} }
case 389: case 389:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3843 // line internal/php7/php7.y:3844
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 390: case 390:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3850 // line internal/php7/php7.y:3851
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 391: case 391:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3854 // line internal/php7/php7.y:3855
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 392: case 392:
yyDollar = yyS[yypt-0 : yypt+1] yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:3861 // line internal/php7/php7.y:3862
{ {
yyVAL.node = nil yyVAL.node = nil
} }
case 393: case 393:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3865 // line internal/php7/php7.y:3866
{ {
yyVAL.node = &ast.ParserBrackets{ yyVAL.node = &ast.ParserBrackets{
Node: ast.Node{ Node: ast.Node{
@ -6474,13 +6475,13 @@ yydefault:
} }
case 394: case 394:
yyDollar = yyS[yypt-0 : yypt+1] yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:3883 // line internal/php7/php7.y:3884
{ {
yyVAL.list = []ast.Vertex{} yyVAL.list = []ast.Vertex{}
} }
case 395: case 395:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3887 // line internal/php7/php7.y:3888
{ {
yyVAL.list = []ast.Vertex{ yyVAL.list = []ast.Vertex{
&ast.ScalarEncapsedStringPart{ &ast.ScalarEncapsedStringPart{
@ -6494,25 +6495,25 @@ yydefault:
} }
case 396: case 396:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3899 // line internal/php7/php7.y:3900
{ {
yyVAL.list = yyDollar[1].list yyVAL.list = yyDollar[1].list
} }
case 397: case 397:
yyDollar = yyS[yypt-0 : yypt+1] yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:3906 // line internal/php7/php7.y:3907
{ {
yyVAL.node = nil yyVAL.node = nil
} }
case 398: case 398:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3910 // line internal/php7/php7.y:3911
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 399: case 399:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3917 // line internal/php7/php7.y:3918
{ {
yyVAL.node = &ast.ExprArray{ yyVAL.node = &ast.ExprArray{
Node: ast.Node{ Node: ast.Node{
@ -6527,7 +6528,7 @@ yydefault:
} }
case 400: case 400:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3930 // line internal/php7/php7.y:3931
{ {
yyVAL.node = &ast.ExprArray{ yyVAL.node = &ast.ExprArray{
Node: ast.Node{ Node: ast.Node{
@ -6541,7 +6542,7 @@ yydefault:
} }
case 401: case 401:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3942 // line internal/php7/php7.y:3943
{ {
yyVAL.node = &ast.ScalarString{ yyVAL.node = &ast.ScalarString{
Node: ast.Node{ Node: ast.Node{
@ -6553,7 +6554,7 @@ yydefault:
} }
case 402: case 402:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3955 // line internal/php7/php7.y:3956
{ {
yyVAL.node = &ast.ScalarLnumber{ yyVAL.node = &ast.ScalarLnumber{
Node: ast.Node{ Node: ast.Node{
@ -6565,7 +6566,7 @@ yydefault:
} }
case 403: case 403:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3965 // line internal/php7/php7.y:3966
{ {
yyVAL.node = &ast.ScalarDnumber{ yyVAL.node = &ast.ScalarDnumber{
Node: ast.Node{ Node: ast.Node{
@ -6577,7 +6578,7 @@ yydefault:
} }
case 404: case 404:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3975 // line internal/php7/php7.y:3976
{ {
yyVAL.node = &ast.ScalarMagicConstant{ yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{ Node: ast.Node{
@ -6589,7 +6590,7 @@ yydefault:
} }
case 405: case 405:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3985 // line internal/php7/php7.y:3986
{ {
yyVAL.node = &ast.ScalarMagicConstant{ yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{ Node: ast.Node{
@ -6601,7 +6602,7 @@ yydefault:
} }
case 406: case 406:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3995 // line internal/php7/php7.y:3996
{ {
yyVAL.node = &ast.ScalarMagicConstant{ yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{ Node: ast.Node{
@ -6613,7 +6614,7 @@ yydefault:
} }
case 407: case 407:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4005 // line internal/php7/php7.y:4006
{ {
yyVAL.node = &ast.ScalarMagicConstant{ yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{ Node: ast.Node{
@ -6625,7 +6626,7 @@ yydefault:
} }
case 408: case 408:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4015 // line internal/php7/php7.y:4016
{ {
yyVAL.node = &ast.ScalarMagicConstant{ yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{ Node: ast.Node{
@ -6637,7 +6638,7 @@ yydefault:
} }
case 409: case 409:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4025 // line internal/php7/php7.y:4026
{ {
yyVAL.node = &ast.ScalarMagicConstant{ yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{ Node: ast.Node{
@ -6649,7 +6650,7 @@ yydefault:
} }
case 410: case 410:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4035 // line internal/php7/php7.y:4036
{ {
yyVAL.node = &ast.ScalarMagicConstant{ yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{ Node: ast.Node{
@ -6661,7 +6662,7 @@ yydefault:
} }
case 411: case 411:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4045 // line internal/php7/php7.y:4046
{ {
yyVAL.node = &ast.ScalarMagicConstant{ yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{ Node: ast.Node{
@ -6673,7 +6674,7 @@ yydefault:
} }
case 412: case 412:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4055 // line internal/php7/php7.y:4056
{ {
yyVAL.node = &ast.ScalarHeredoc{ yyVAL.node = &ast.ScalarHeredoc{
Node: ast.Node{ Node: ast.Node{
@ -6694,7 +6695,7 @@ yydefault:
} }
case 413: case 413:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4074 // line internal/php7/php7.y:4075
{ {
yyVAL.node = &ast.ScalarHeredoc{ yyVAL.node = &ast.ScalarHeredoc{
Node: ast.Node{ Node: ast.Node{
@ -6706,7 +6707,7 @@ yydefault:
} }
case 414: case 414:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4084 // line internal/php7/php7.y:4085
{ {
yyVAL.node = &ast.ScalarEncapsed{ yyVAL.node = &ast.ScalarEncapsed{
Node: ast.Node{ Node: ast.Node{
@ -6719,7 +6720,7 @@ yydefault:
} }
case 415: case 415:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4095 // line internal/php7/php7.y:4096
{ {
yyVAL.node = &ast.ScalarHeredoc{ yyVAL.node = &ast.ScalarHeredoc{
Node: ast.Node{ Node: ast.Node{
@ -6732,19 +6733,19 @@ yydefault:
} }
case 416: case 416:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4106 // line internal/php7/php7.y:4107
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 417: case 417:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4110 // line internal/php7/php7.y:4111
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 418: case 418:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4117 // line internal/php7/php7.y:4118
{ {
yyVAL.node = &ast.ExprConstFetch{ yyVAL.node = &ast.ExprConstFetch{
Node: ast.Node{ Node: ast.Node{
@ -6755,7 +6756,7 @@ yydefault:
} }
case 419: case 419:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4126 // line internal/php7/php7.y:4127
{ {
yyVAL.node = &ast.ExprClassConstFetch{ yyVAL.node = &ast.ExprClassConstFetch{
Node: ast.Node{ Node: ast.Node{
@ -6774,7 +6775,7 @@ yydefault:
} }
case 420: case 420:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4143 // line internal/php7/php7.y:4144
{ {
yyVAL.node = &ast.ExprClassConstFetch{ yyVAL.node = &ast.ExprClassConstFetch{
Node: ast.Node{ Node: ast.Node{
@ -6793,43 +6794,43 @@ yydefault:
} }
case 421: case 421:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4163 // line internal/php7/php7.y:4164
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 422: case 422:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4167 // line internal/php7/php7.y:4168
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 423: case 423:
yyDollar = yyS[yypt-0 : yypt+1] yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:4174 // line internal/php7/php7.y:4175
{ {
yyVAL.node = nil yyVAL.node = nil
} }
case 424: case 424:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4178 // line internal/php7/php7.y:4179
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 425: case 425:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4185 // line internal/php7/php7.y:4186
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 426: case 426:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4192 // line internal/php7/php7.y:4193
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 427: case 427:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4196 // line internal/php7/php7.y:4197
{ {
yyVAL.node = &ast.ParserBrackets{ yyVAL.node = &ast.ParserBrackets{
Node: ast.Node{ Node: ast.Node{
@ -6846,19 +6847,19 @@ yydefault:
} }
case 428: case 428:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4211 // line internal/php7/php7.y:4212
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 429: case 429:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4218 // line internal/php7/php7.y:4219
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 430: case 430:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4222 // line internal/php7/php7.y:4223
{ {
yyVAL.node = &ast.ParserBrackets{ yyVAL.node = &ast.ParserBrackets{
Node: ast.Node{ Node: ast.Node{
@ -6875,19 +6876,19 @@ yydefault:
} }
case 431: case 431:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4237 // line internal/php7/php7.y:4238
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 432: case 432:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4244 // line internal/php7/php7.y:4245
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 433: case 433:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4248 // line internal/php7/php7.y:4249
{ {
yyVAL.node = &ast.ExprArrayDimFetch{ yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{ Node: ast.Node{
@ -6901,7 +6902,7 @@ yydefault:
} }
case 434: case 434:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4260 // line internal/php7/php7.y:4261
{ {
yyVAL.node = &ast.ExprArrayDimFetch{ yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{ Node: ast.Node{
@ -6915,7 +6916,7 @@ yydefault:
} }
case 435: case 435:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4272 // line internal/php7/php7.y:4273
{ {
yyVAL.node = &ast.ExprArrayDimFetch{ yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{ Node: ast.Node{
@ -6929,7 +6930,7 @@ yydefault:
} }
case 436: case 436:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4284 // line internal/php7/php7.y:4285
{ {
yyVAL.node = &ast.ExprMethodCall{ yyVAL.node = &ast.ExprMethodCall{
Node: ast.Node{ Node: ast.Node{
@ -6945,25 +6946,25 @@ yydefault:
} }
case 437: case 437:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4298 // line internal/php7/php7.y:4299
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 438: case 438:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4305 // line internal/php7/php7.y:4306
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 439: case 439:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4309 // line internal/php7/php7.y:4310
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 440: case 440:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4313 // line internal/php7/php7.y:4314
{ {
yyVAL.node = &ast.ExprPropertyFetch{ yyVAL.node = &ast.ExprPropertyFetch{
Node: ast.Node{ Node: ast.Node{
@ -6976,7 +6977,7 @@ yydefault:
} }
case 441: case 441:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4327 // line internal/php7/php7.y:4328
{ {
name := &ast.Identifier{ name := &ast.Identifier{
Node: ast.Node{ Node: ast.Node{
@ -6995,7 +6996,7 @@ yydefault:
} }
case 442: case 442:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4344 // line internal/php7/php7.y:4345
{ {
yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node}
@ -7009,7 +7010,7 @@ yydefault:
} }
case 443: case 443:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4356 // line internal/php7/php7.y:4357
{ {
yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node}
@ -7021,7 +7022,7 @@ yydefault:
} }
case 444: case 444:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4369 // line internal/php7/php7.y:4370
{ {
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -7034,7 +7035,7 @@ yydefault:
} }
case 445: case 445:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4380 // line internal/php7/php7.y:4381
{ {
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -7047,13 +7048,13 @@ yydefault:
} }
case 446: case 446:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4394 // line internal/php7/php7.y:4395
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 447: case 447:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4398 // line internal/php7/php7.y:4399
{ {
yyVAL.node = &ast.ExprArrayDimFetch{ yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{ Node: ast.Node{
@ -7067,7 +7068,7 @@ yydefault:
} }
case 448: case 448:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4410 // line internal/php7/php7.y:4411
{ {
yyVAL.node = &ast.ExprArrayDimFetch{ yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{ Node: ast.Node{
@ -7081,7 +7082,7 @@ yydefault:
} }
case 449: case 449:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4422 // line internal/php7/php7.y:4423
{ {
yyVAL.node = &ast.ExprPropertyFetch{ yyVAL.node = &ast.ExprPropertyFetch{
Node: ast.Node{ Node: ast.Node{
@ -7094,7 +7095,7 @@ yydefault:
} }
case 450: case 450:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4433 // line internal/php7/php7.y:4434
{ {
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -7107,7 +7108,7 @@ yydefault:
} }
case 451: case 451:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4444 // line internal/php7/php7.y:4445
{ {
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -7120,7 +7121,7 @@ yydefault:
} }
case 452: case 452:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4458 // line internal/php7/php7.y:4459
{ {
yyVAL.node = &ast.Identifier{ yyVAL.node = &ast.Identifier{
Node: ast.Node{ Node: ast.Node{
@ -7132,7 +7133,7 @@ yydefault:
} }
case 453: case 453:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4468 // line internal/php7/php7.y:4469
{ {
yyVAL.node = yyDollar[2].node yyVAL.node = yyDollar[2].node
@ -7142,13 +7143,13 @@ yydefault:
} }
case 454: case 454:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4476 // line internal/php7/php7.y:4477
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 455: case 455:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4483 // line internal/php7/php7.y:4484
{ {
yyVAL.node = &ast.Identifier{ yyVAL.node = &ast.Identifier{
Node: ast.Node{ Node: ast.Node{
@ -7160,7 +7161,7 @@ yydefault:
} }
case 456: case 456:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4493 // line internal/php7/php7.y:4494
{ {
yyVAL.node = yyDollar[2].node yyVAL.node = yyDollar[2].node
@ -7170,13 +7171,13 @@ yydefault:
} }
case 457: case 457:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4501 // line internal/php7/php7.y:4502
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 458: case 458:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4508 // line internal/php7/php7.y:4509
{ {
pairList := yyDollar[1].node.(*ast.ParserSeparatedList) pairList := yyDollar[1].node.(*ast.ParserSeparatedList)
fistPair := pairList.Items[0].(*ast.ExprArrayItem) fistPair := pairList.Items[0].(*ast.ExprArrayItem)
@ -7189,19 +7190,19 @@ yydefault:
} }
case 459: case 459:
yyDollar = yyS[yypt-0 : yypt+1] yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:4522 // line internal/php7/php7.y:4523
{ {
yyVAL.node = &ast.ExprArrayItem{} yyVAL.node = &ast.ExprArrayItem{}
} }
case 460: case 460:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4526 // line internal/php7/php7.y:4527
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 461: case 461:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4533 // line internal/php7/php7.y:4534
{ {
yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token)
yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node)
@ -7210,7 +7211,7 @@ yydefault:
} }
case 462: case 462:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4540 // line internal/php7/php7.y:4541
{ {
yyVAL.node = &ast.ParserSeparatedList{ yyVAL.node = &ast.ParserSeparatedList{
Items: []ast.Vertex{yyDollar[1].node}, Items: []ast.Vertex{yyDollar[1].node},
@ -7218,7 +7219,7 @@ yydefault:
} }
case 463: case 463:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4549 // line internal/php7/php7.y:4550
{ {
yyVAL.node = &ast.ExprArrayItem{ yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{ Node: ast.Node{
@ -7231,7 +7232,7 @@ yydefault:
} }
case 464: case 464:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4560 // line internal/php7/php7.y:4561
{ {
yyVAL.node = &ast.ExprArrayItem{ yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{ Node: ast.Node{
@ -7242,7 +7243,7 @@ yydefault:
} }
case 465: case 465:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4569 // line internal/php7/php7.y:4570
{ {
yyVAL.node = &ast.ExprArrayItem{ yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{ Node: ast.Node{
@ -7254,13 +7255,14 @@ yydefault:
Node: ast.Node{ Node: ast.Node{
Position: position.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), Position: position.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node),
}, },
Var: yyDollar[4].node, AmpersandTkn: yyDollar[3].token,
Var: yyDollar[4].node,
}, },
} }
} }
case 466: case 466:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4585 // line internal/php7/php7.y:4587
{ {
yyVAL.node = &ast.ExprArrayItem{ yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{ Node: ast.Node{
@ -7270,13 +7272,14 @@ yydefault:
Node: ast.Node{ Node: ast.Node{
Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
}, },
Var: yyDollar[2].node, AmpersandTkn: yyDollar[1].token,
Var: yyDollar[2].node,
}, },
} }
} }
case 467: case 467:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4599 // line internal/php7/php7.y:4602
{ {
yyVAL.node = &ast.ExprArrayItem{ yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{ Node: ast.Node{
@ -7288,7 +7291,7 @@ yydefault:
} }
case 468: case 468:
yyDollar = yyS[yypt-6 : yypt+1] yyDollar = yyS[yypt-6 : yypt+1]
// line internal/php7/php7.y:4609 // line internal/php7/php7.y:4612
{ {
yyVAL.node = &ast.ExprArrayItem{ yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{ Node: ast.Node{
@ -7310,7 +7313,7 @@ yydefault:
} }
case 469: case 469:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4629 // line internal/php7/php7.y:4632
{ {
yyVAL.node = &ast.ExprArrayItem{ yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{ Node: ast.Node{
@ -7330,13 +7333,13 @@ yydefault:
} }
case 470: case 470:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4650 // line internal/php7/php7.y:4653
{ {
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
} }
case 471: case 471:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4654 // line internal/php7/php7.y:4657
{ {
yyVAL.list = append( yyVAL.list = append(
yyDollar[1].list, yyDollar[1].list,
@ -7351,13 +7354,13 @@ yydefault:
} }
case 472: case 472:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4667 // line internal/php7/php7.y:4670
{ {
yyVAL.list = []ast.Vertex{yyDollar[1].node} yyVAL.list = []ast.Vertex{yyDollar[1].node}
} }
case 473: case 473:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4671 // line internal/php7/php7.y:4674
{ {
yyVAL.list = []ast.Vertex{ yyVAL.list = []ast.Vertex{
&ast.ScalarEncapsedStringPart{ &ast.ScalarEncapsedStringPart{
@ -7372,7 +7375,7 @@ yydefault:
} }
case 474: case 474:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4687 // line internal/php7/php7.y:4690
{ {
name := &ast.Identifier{ name := &ast.Identifier{
Node: ast.Node{ Node: ast.Node{
@ -7391,7 +7394,7 @@ yydefault:
} }
case 475: case 475:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4704 // line internal/php7/php7.y:4707
{ {
yyVAL.node = &ast.ExprArrayDimFetch{ yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{ Node: ast.Node{
@ -7416,7 +7419,7 @@ yydefault:
} }
case 476: case 476:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4727 // line internal/php7/php7.y:4730
{ {
yyVAL.node = &ast.ExprPropertyFetch{ yyVAL.node = &ast.ExprPropertyFetch{
Node: ast.Node{ Node: ast.Node{
@ -7446,7 +7449,7 @@ yydefault:
} }
case 477: case 477:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4755 // line internal/php7/php7.y:4758
{ {
variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node}
@ -7461,7 +7464,7 @@ yydefault:
} }
case 478: case 478:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4768 // line internal/php7/php7.y:4771
{ {
name := &ast.Identifier{ name := &ast.Identifier{
Node: ast.Node{ Node: ast.Node{
@ -7483,7 +7486,7 @@ yydefault:
} }
case 479: case 479:
yyDollar = yyS[yypt-6 : yypt+1] yyDollar = yyS[yypt-6 : yypt+1]
// line internal/php7/php7.y:4788 // line internal/php7/php7.y:4791
{ {
yyVAL.node = &ast.ExprArrayDimFetch{ yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{ Node: ast.Node{
@ -7510,7 +7513,7 @@ yydefault:
} }
case 480: case 480:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4813 // line internal/php7/php7.y:4816
{ {
yyVAL.node = yyDollar[2].node yyVAL.node = yyDollar[2].node
@ -7520,7 +7523,7 @@ yydefault:
} }
case 481: case 481:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4824 // line internal/php7/php7.y:4827
{ {
yyVAL.node = &ast.ScalarString{ yyVAL.node = &ast.ScalarString{
Node: ast.Node{ Node: ast.Node{
@ -7532,7 +7535,7 @@ yydefault:
} }
case 482: case 482:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4834 // line internal/php7/php7.y:4837
{ {
// TODO: add option to handle 64 bit integer // TODO: add option to handle 64 bit integer
if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil {
@ -7555,7 +7558,7 @@ yydefault:
} }
case 483: case 483:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4855 // line internal/php7/php7.y:4858
{ {
_, err := strconv.Atoi(string(yyDollar[2].token.Value)) _, err := strconv.Atoi(string(yyDollar[2].token.Value))
isInt := err == nil isInt := err == nil
@ -7583,7 +7586,7 @@ yydefault:
} }
case 484: case 484:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4881 // line internal/php7/php7.y:4884
{ {
identifier := &ast.Identifier{ identifier := &ast.Identifier{
Node: ast.Node{ Node: ast.Node{
@ -7602,7 +7605,7 @@ yydefault:
} }
case 485: case 485:
yyDollar = yyS[yypt-5 : yypt+1] yyDollar = yyS[yypt-5 : yypt+1]
// line internal/php7/php7.y:4901 // line internal/php7/php7.y:4904
{ {
if yyDollar[4].token != nil { if yyDollar[4].token != nil {
yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[4].token) yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[4].token)
@ -7621,7 +7624,7 @@ yydefault:
} }
case 486: case 486:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4918 // line internal/php7/php7.y:4921
{ {
yyVAL.node = &ast.ExprEmpty{ yyVAL.node = &ast.ExprEmpty{
Node: ast.Node{ Node: ast.Node{
@ -7635,7 +7638,7 @@ yydefault:
} }
case 487: case 487:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4930 // line internal/php7/php7.y:4933
{ {
yyVAL.node = &ast.ExprInclude{ yyVAL.node = &ast.ExprInclude{
Node: ast.Node{ Node: ast.Node{
@ -7647,7 +7650,7 @@ yydefault:
} }
case 488: case 488:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4940 // line internal/php7/php7.y:4943
{ {
yyVAL.node = &ast.ExprIncludeOnce{ yyVAL.node = &ast.ExprIncludeOnce{
Node: ast.Node{ Node: ast.Node{
@ -7659,7 +7662,7 @@ yydefault:
} }
case 489: case 489:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4950 // line internal/php7/php7.y:4953
{ {
yyVAL.node = &ast.ExprEval{ yyVAL.node = &ast.ExprEval{
Node: ast.Node{ Node: ast.Node{
@ -7673,31 +7676,31 @@ yydefault:
} }
case 490: case 490:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4962 // line internal/php7/php7.y:4965
{ {
yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} yyVAL.node = &ast.ExprRequire{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) },
RequireTkn: yyDollar[1].token,
// save comments Expr: yyDollar[2].node,
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) }
} }
case 491: case 491:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4972 // line internal/php7/php7.y:4975
{ {
yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} yyVAL.node = &ast.ExprRequireOnce{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) },
RequireOnceTkn: yyDollar[1].token,
// save comments Expr: yyDollar[2].node,
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) }
} }
case 492: case 492:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4985 // line internal/php7/php7.y:4988
{ {
yyVAL.node = &ast.ParserSeparatedList{ yyVAL.node = &ast.ParserSeparatedList{
Items: []ast.Vertex{yyDollar[1].node}, Items: []ast.Vertex{yyDollar[1].node},
@ -7705,7 +7708,7 @@ yydefault:
} }
case 493: case 493:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4991 // line internal/php7/php7.y:4994
{ {
yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token)
yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node)
@ -7714,7 +7717,7 @@ yydefault:
} }
case 494: case 494:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:5001 // line internal/php7/php7.y:5004
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }

View File

@ -1443,13 +1443,13 @@ foreach_variable:
} }
| '&' variable | '&' variable
{ {
$$ = &ast.ExprReference{ast.Node{}, $2} $$ = &ast.ExprReference{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
AmpersandTkn: $1,
// save comments Var: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
| T_LIST '(' array_pair_list ')' | T_LIST '(' array_pair_list ')'
{ {
@ -3581,13 +3581,13 @@ expr_without_variable:
} }
| T_PRINT expr | T_PRINT expr
{ {
$$ = &ast.ExprPrint{ast.Node{}, $2} $$ = &ast.ExprPrint{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
PrintTkn: $1,
// save comments Expr: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
| T_YIELD | T_YIELD
{ {
@ -3759,23 +3759,24 @@ lexical_var:
} }
| '&' T_VARIABLE | '&' T_VARIABLE
{ {
identifier := &ast.Identifier{ $$ = &ast.ExprReference{
Node: ast.Node{ Node: ast.Node{
Position: position.NewTokenPosition($2), Position: position.NewTokensPosition($1, $2),
},
AmpersandTkn: $1,
Var: &ast.ExprVariable{
Node: ast.Node{
Position: position.NewTokenPosition($2),
},
VarName: &ast.Identifier{
Node: ast.Node{
Position: position.NewTokenPosition($2),
},
IdentifierTkn: $2,
Value: $2.Value,
},
}, },
IdentifierTkn: $2,
Value: $2.Value,
} }
variable := &ast.ExprVariable{ast.Node{}, identifier}
$$ = &ast.ExprReference{ast.Node{}, variable}
// save position
variable.GetNode().Position = position.NewTokenPosition($2)
$$.GetNode().Position = position.NewTokensPosition($1, $2)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, $2.SkippedTokens)
} }
; ;
@ -4577,7 +4578,8 @@ array_pair:
Node: ast.Node{ Node: ast.Node{
Position: position.NewTokenNodePosition($3, $4), Position: position.NewTokenNodePosition($3, $4),
}, },
Var: $4, AmpersandTkn: $3,
Var: $4,
}, },
} }
} }
@ -4591,7 +4593,8 @@ array_pair:
Node: ast.Node{ Node: ast.Node{
Position: position.NewTokenNodePosition($1, $2), Position: position.NewTokenNodePosition($1, $2),
}, },
Var: $2, AmpersandTkn: $1,
Var: $2,
}, },
} }
} }
@ -4960,23 +4963,23 @@ internal_functions_in_yacc:
} }
| T_REQUIRE expr | T_REQUIRE expr
{ {
$$ = &ast.ExprRequire{ast.Node{}, $2} $$ = &ast.ExprRequire{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
RequireTkn: $1,
// save comments Expr: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
| T_REQUIRE_ONCE expr | T_REQUIRE_ONCE expr
{ {
$$ = &ast.ExprRequireOnce{ast.Node{}, $2} $$ = &ast.ExprRequireOnce{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
RequireOnceTkn: $1,
// save comments Expr: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
; ;

View File

@ -1288,7 +1288,8 @@ func (n *ExprPreInc) Accept(v NodeVisitor) {
// ExprPrint node // ExprPrint node
type ExprPrint struct { type ExprPrint struct {
Node Node
Expr Vertex PrintTkn *token.Token
Expr Vertex
} }
func (n *ExprPrint) Accept(v NodeVisitor) { func (n *ExprPrint) Accept(v NodeVisitor) {
@ -1310,7 +1311,8 @@ func (n *ExprPropertyFetch) Accept(v NodeVisitor) {
// ExprReference node // ExprReference node
type ExprReference struct { type ExprReference struct {
Node Node
Var Vertex AmpersandTkn *token.Token
Var Vertex
} }
func (n *ExprReference) Accept(v NodeVisitor) { func (n *ExprReference) Accept(v NodeVisitor) {
@ -1320,7 +1322,8 @@ func (n *ExprReference) Accept(v NodeVisitor) {
// ExprRequire node // ExprRequire node
type ExprRequire struct { type ExprRequire struct {
Node Node
Expr Vertex RequireTkn *token.Token
Expr Vertex
} }
func (n *ExprRequire) Accept(v NodeVisitor) { func (n *ExprRequire) Accept(v NodeVisitor) {
@ -1330,7 +1333,8 @@ func (n *ExprRequire) Accept(v NodeVisitor) {
// ExprRequireOnce node // ExprRequireOnce node
type ExprRequireOnce struct { type ExprRequireOnce struct {
Node Node
Expr Vertex RequireOnceTkn *token.Token
Expr Vertex
} }
func (n *ExprRequireOnce) Accept(v NodeVisitor) { func (n *ExprRequireOnce) Accept(v NodeVisitor) {