refactoring: update ast structure of "MethodCall" and "PropertyFetch" nodes
This commit is contained in:
parent
2c09138600
commit
0f2341bfa9
190
internal/php5/php5.go
generated
190
internal/php5/php5.go
generated
@ -340,7 +340,7 @@ const yyEofCode = 1
|
||||
const yyErrCode = 2
|
||||
const yyInitialStackSize = 16
|
||||
|
||||
// line internal/php5/php5.y:5651
|
||||
// line internal/php5/php5.y:5661
|
||||
|
||||
// line yacctab:1
|
||||
var yyExca = [...]int{
|
||||
@ -7246,7 +7246,9 @@ yydefault:
|
||||
)
|
||||
yyDollar[3].list = append(yyDollar[3].list, yyDollar[4].list[1:len(yyDollar[4].list)]...)
|
||||
case *ast.ExprPropertyFetch:
|
||||
yyDollar[4].list[0].(*ast.ExprMethodCall).OpenCurlyBracketTkn = l.OpenCurlyBracketTkn
|
||||
yyDollar[4].list[0].(*ast.ExprMethodCall).Method = l.Property
|
||||
yyDollar[4].list[0].(*ast.ExprMethodCall).CloseCurlyBracketTkn = l.CloseCurlyBracketTkn
|
||||
yyDollar[4].list[0].(*ast.ExprMethodCall).ObjectOperatorTkn = l.ObjectOperatorTkn
|
||||
yyDollar[3].list = append(yyDollar[3].list[:len(yyDollar[3].list)-1], yyDollar[4].list...)
|
||||
}
|
||||
@ -7302,25 +7304,25 @@ yydefault:
|
||||
}
|
||||
case 437:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:4767
|
||||
// line internal/php5/php5.y:4769
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 438:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php5/php5.y:4774
|
||||
// line internal/php5/php5.y:4776
|
||||
{
|
||||
yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...)
|
||||
}
|
||||
case 439:
|
||||
yyDollar = yyS[yypt-0 : yypt+1]
|
||||
// line internal/php5/php5.y:4778
|
||||
// line internal/php5/php5.y:4780
|
||||
{
|
||||
yyVAL.list = []ast.Vertex{}
|
||||
}
|
||||
case 440:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:4786
|
||||
// line internal/php5/php5.y:4788
|
||||
{
|
||||
yyDollar[2].list[0].(*ast.ExprPropertyFetch).ObjectOperatorTkn = yyDollar[1].token
|
||||
|
||||
@ -7339,7 +7341,9 @@ yydefault:
|
||||
)
|
||||
yyDollar[2].list = append(yyDollar[2].list, yyDollar[3].list[1:len(yyDollar[3].list)]...)
|
||||
case *ast.ExprPropertyFetch:
|
||||
yyDollar[3].list[0].(*ast.ExprMethodCall).OpenCurlyBracketTkn = l.OpenCurlyBracketTkn
|
||||
yyDollar[3].list[0].(*ast.ExprMethodCall).Method = l.Property
|
||||
yyDollar[3].list[0].(*ast.ExprMethodCall).CloseCurlyBracketTkn = l.CloseCurlyBracketTkn
|
||||
yyDollar[3].list[0].(*ast.ExprMethodCall).ObjectOperatorTkn = l.ObjectOperatorTkn
|
||||
yyDollar[2].list = append(yyDollar[2].list[:len(yyDollar[2].list)-1], yyDollar[3].list...)
|
||||
}
|
||||
@ -7349,7 +7353,7 @@ yydefault:
|
||||
}
|
||||
case 441:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:4816
|
||||
// line internal/php5/php5.y:4820
|
||||
{
|
||||
fetch := &ast.ExprArrayDimFetch{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token),
|
||||
@ -7363,7 +7367,7 @@ yydefault:
|
||||
}
|
||||
case 442:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:4828
|
||||
// line internal/php5/php5.y:4832
|
||||
{
|
||||
fetch := &ast.ExprArrayDimFetch{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token),
|
||||
@ -7377,7 +7381,7 @@ yydefault:
|
||||
}
|
||||
case 443:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:4843
|
||||
// line internal/php5/php5.y:4847
|
||||
{
|
||||
yyVAL.node = &ast.ExprMethodCall{
|
||||
Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node),
|
||||
@ -7389,31 +7393,31 @@ yydefault:
|
||||
}
|
||||
case 444:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:4856
|
||||
// line internal/php5/php5.y:4860
|
||||
{
|
||||
yyVAL.list = []ast.Vertex{yyDollar[1].node}
|
||||
}
|
||||
case 445:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:4860
|
||||
// line internal/php5/php5.y:4864
|
||||
{
|
||||
yyVAL.list = yyDollar[1].list
|
||||
}
|
||||
case 446:
|
||||
yyDollar = yyS[yypt-0 : yypt+1]
|
||||
// line internal/php5/php5.y:4864
|
||||
// line internal/php5/php5.y:4868
|
||||
{
|
||||
yyVAL.list = nil
|
||||
}
|
||||
case 447:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:4871
|
||||
// line internal/php5/php5.y:4875
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 448:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php5/php5.y:4875
|
||||
// line internal/php5/php5.y:4879
|
||||
{
|
||||
for i := len(yyDollar[1].list) - 1; i >= 0; i-- {
|
||||
yyDollar[1].list[i].(*ast.ExprVariable).VarName = yyDollar[2].node
|
||||
@ -7425,7 +7429,7 @@ yydefault:
|
||||
}
|
||||
case 449:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:4888
|
||||
// line internal/php5/php5.y:4892
|
||||
{
|
||||
yyVAL.node = &ast.ExprStaticPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||
@ -7436,7 +7440,7 @@ yydefault:
|
||||
}
|
||||
case 450:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:4897
|
||||
// line internal/php5/php5.y:4901
|
||||
{
|
||||
yyVAL.node = &ast.ExprStaticPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||
@ -7447,13 +7451,13 @@ yydefault:
|
||||
}
|
||||
case 451:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:4909
|
||||
// line internal/php5/php5.y:4913
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 452:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:4916
|
||||
// line internal/php5/php5.y:4920
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayDimFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
|
||||
@ -7465,7 +7469,7 @@ yydefault:
|
||||
}
|
||||
case 453:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:4926
|
||||
// line internal/php5/php5.y:4930
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayDimFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
|
||||
@ -7477,31 +7481,31 @@ yydefault:
|
||||
}
|
||||
case 454:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:4939
|
||||
// line internal/php5/php5.y:4943
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 455:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:4943
|
||||
// line internal/php5/php5.y:4947
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 456:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:4947
|
||||
// line internal/php5/php5.y:4951
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 457:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:4955
|
||||
// line internal/php5/php5.y:4959
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 458:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php5/php5.y:4959
|
||||
// line internal/php5/php5.y:4963
|
||||
{
|
||||
for i := len(yyDollar[1].list) - 1; i >= 0; i-- {
|
||||
yyDollar[1].list[i].(*ast.ExprVariable).VarName = yyDollar[2].node
|
||||
@ -7513,13 +7517,13 @@ yydefault:
|
||||
}
|
||||
case 459:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:4969
|
||||
// line internal/php5/php5.y:4973
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 460:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:4976
|
||||
// line internal/php5/php5.y:4980
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayDimFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
|
||||
@ -7531,7 +7535,7 @@ yydefault:
|
||||
}
|
||||
case 461:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:4986
|
||||
// line internal/php5/php5.y:4990
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayDimFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
|
||||
@ -7543,13 +7547,13 @@ yydefault:
|
||||
}
|
||||
case 462:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:4996
|
||||
// line internal/php5/php5.y:5000
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 463:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5004
|
||||
// line internal/php5/php5.y:5008
|
||||
{
|
||||
yyVAL.node = &ast.ExprVariable{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||
@ -7562,7 +7566,7 @@ yydefault:
|
||||
}
|
||||
case 464:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:5015
|
||||
// line internal/php5/php5.y:5019
|
||||
{
|
||||
yyVAL.node = &ast.ExprVariable{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||
@ -7574,25 +7578,25 @@ yydefault:
|
||||
}
|
||||
case 465:
|
||||
yyDollar = yyS[yypt-0 : yypt+1]
|
||||
// line internal/php5/php5.y:5028
|
||||
// line internal/php5/php5.y:5032
|
||||
{
|
||||
yyVAL.node = nil
|
||||
}
|
||||
case 466:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5032
|
||||
// line internal/php5/php5.y:5036
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 467:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5040
|
||||
// line internal/php5/php5.y:5044
|
||||
{
|
||||
yyVAL.list = yyDollar[1].list
|
||||
}
|
||||
case 468:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5044
|
||||
// line internal/php5/php5.y:5048
|
||||
{
|
||||
yyVAL.list = []ast.Vertex{
|
||||
&ast.ExprPropertyFetch{
|
||||
@ -7603,7 +7607,7 @@ yydefault:
|
||||
}
|
||||
case 469:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:5056
|
||||
// line internal/php5/php5.y:5060
|
||||
{
|
||||
fetch := &ast.ExprArrayDimFetch{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token),
|
||||
@ -7617,7 +7621,7 @@ yydefault:
|
||||
}
|
||||
case 470:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:5068
|
||||
// line internal/php5/php5.y:5072
|
||||
{
|
||||
fetch := &ast.ExprArrayDimFetch{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token),
|
||||
@ -7631,18 +7635,24 @@ yydefault:
|
||||
}
|
||||
case 471:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5080
|
||||
// line internal/php5/php5.y:5084
|
||||
{
|
||||
yyVAL.list = []ast.Vertex{
|
||||
&ast.ExprPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node),
|
||||
Property: yyDollar[1].node,
|
||||
},
|
||||
property := &ast.ExprPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node),
|
||||
Property: yyDollar[1].node,
|
||||
}
|
||||
|
||||
if brackets, ok := yyDollar[1].node.(*ast.ParserBrackets); ok {
|
||||
property.OpenCurlyBracketTkn = brackets.OpenBracketTkn
|
||||
property.Property = brackets.Child
|
||||
property.CloseCurlyBracketTkn = brackets.CloseBracketTkn
|
||||
}
|
||||
|
||||
yyVAL.list = []ast.Vertex{property}
|
||||
}
|
||||
case 472:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5092
|
||||
// line internal/php5/php5.y:5102
|
||||
{
|
||||
yyVAL.node = &ast.Identifier{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||
@ -7652,7 +7662,7 @@ yydefault:
|
||||
}
|
||||
case 473:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:5100
|
||||
// line internal/php5/php5.y:5110
|
||||
{
|
||||
yyVAL.node = &ast.ParserBrackets{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||
@ -7663,7 +7673,7 @@ yydefault:
|
||||
}
|
||||
case 474:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5112
|
||||
// line internal/php5/php5.y:5122
|
||||
{
|
||||
yyVAL.list = []ast.Vertex{
|
||||
&ast.ExprVariable{
|
||||
@ -7674,7 +7684,7 @@ yydefault:
|
||||
}
|
||||
case 475:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php5/php5.y:5121
|
||||
// line internal/php5/php5.y:5131
|
||||
{
|
||||
yyVAL.list = append(yyDollar[1].list, &ast.ExprVariable{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[2].token),
|
||||
@ -7683,7 +7693,7 @@ yydefault:
|
||||
}
|
||||
case 476:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:5131
|
||||
// line internal/php5/php5.y:5141
|
||||
{
|
||||
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)
|
||||
@ -7692,7 +7702,7 @@ yydefault:
|
||||
}
|
||||
case 477:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5138
|
||||
// line internal/php5/php5.y:5148
|
||||
{
|
||||
yyVAL.node = &ast.ParserSeparatedList{
|
||||
Items: []ast.Vertex{yyDollar[1].node},
|
||||
@ -7700,7 +7710,7 @@ yydefault:
|
||||
}
|
||||
case 478:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5148
|
||||
// line internal/php5/php5.y:5158
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayItem{
|
||||
Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node),
|
||||
@ -7709,7 +7719,7 @@ yydefault:
|
||||
}
|
||||
case 479:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:5155
|
||||
// line internal/php5/php5.y:5165
|
||||
{
|
||||
pairList := yyDollar[3].node.(*ast.ParserSeparatedList)
|
||||
fistPair := pairList.Items[0].(*ast.ExprArrayItem)
|
||||
@ -7732,19 +7742,19 @@ yydefault:
|
||||
}
|
||||
case 480:
|
||||
yyDollar = yyS[yypt-0 : yypt+1]
|
||||
// line internal/php5/php5.y:5176
|
||||
// line internal/php5/php5.y:5186
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayItem{}
|
||||
}
|
||||
case 481:
|
||||
yyDollar = yyS[yypt-0 : yypt+1]
|
||||
// line internal/php5/php5.y:5184
|
||||
// line internal/php5/php5.y:5194
|
||||
{
|
||||
yyVAL.node = &ast.ParserSeparatedList{}
|
||||
}
|
||||
case 482:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php5/php5.y:5188
|
||||
// line internal/php5/php5.y:5198
|
||||
{
|
||||
if yyDollar[2].token != nil {
|
||||
yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token)
|
||||
@ -7755,7 +7765,7 @@ yydefault:
|
||||
}
|
||||
case 483:
|
||||
yyDollar = yyS[yypt-5 : yypt+1]
|
||||
// line internal/php5/php5.y:5200
|
||||
// line internal/php5/php5.y:5210
|
||||
{
|
||||
arrayItem := &ast.ExprArrayItem{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node),
|
||||
@ -7771,7 +7781,7 @@ yydefault:
|
||||
}
|
||||
case 484:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:5214
|
||||
// line internal/php5/php5.y:5224
|
||||
{
|
||||
arrayItem := &ast.ExprArrayItem{
|
||||
Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[3].node),
|
||||
@ -7785,7 +7795,7 @@ yydefault:
|
||||
}
|
||||
case 485:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:5226
|
||||
// line internal/php5/php5.y:5236
|
||||
{
|
||||
yyVAL.node = &ast.ParserSeparatedList{
|
||||
Items: []ast.Vertex{
|
||||
@ -7800,7 +7810,7 @@ yydefault:
|
||||
}
|
||||
case 486:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5239
|
||||
// line internal/php5/php5.y:5249
|
||||
{
|
||||
yyVAL.node = &ast.ParserSeparatedList{
|
||||
Items: []ast.Vertex{
|
||||
@ -7813,7 +7823,7 @@ yydefault:
|
||||
}
|
||||
case 487:
|
||||
yyDollar = yyS[yypt-6 : yypt+1]
|
||||
// line internal/php5/php5.y:5250
|
||||
// line internal/php5/php5.y:5260
|
||||
{
|
||||
arrayItem := &ast.ExprArrayItem{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[3].node, yyDollar[6].node),
|
||||
@ -7830,7 +7840,7 @@ yydefault:
|
||||
}
|
||||
case 488:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:5265
|
||||
// line internal/php5/php5.y:5275
|
||||
{
|
||||
arrayItem := &ast.ExprArrayItem{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node),
|
||||
@ -7845,7 +7855,7 @@ yydefault:
|
||||
}
|
||||
case 489:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:5278
|
||||
// line internal/php5/php5.y:5288
|
||||
{
|
||||
yyVAL.node = &ast.ParserSeparatedList{
|
||||
Items: []ast.Vertex{
|
||||
@ -7861,7 +7871,7 @@ yydefault:
|
||||
}
|
||||
case 490:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php5/php5.y:5292
|
||||
// line internal/php5/php5.y:5302
|
||||
{
|
||||
yyVAL.node = &ast.ParserSeparatedList{
|
||||
Items: []ast.Vertex{
|
||||
@ -7875,13 +7885,13 @@ yydefault:
|
||||
}
|
||||
case 491:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php5/php5.y:5307
|
||||
// line internal/php5/php5.y:5317
|
||||
{
|
||||
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
|
||||
}
|
||||
case 492:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php5/php5.y:5311
|
||||
// line internal/php5/php5.y:5321
|
||||
{
|
||||
yyVAL.list = append(
|
||||
yyDollar[1].list,
|
||||
@ -7894,13 +7904,13 @@ yydefault:
|
||||
}
|
||||
case 493:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5322
|
||||
// line internal/php5/php5.y:5332
|
||||
{
|
||||
yyVAL.list = []ast.Vertex{yyDollar[1].node}
|
||||
}
|
||||
case 494:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php5/php5.y:5326
|
||||
// line internal/php5/php5.y:5336
|
||||
{
|
||||
yyVAL.list = []ast.Vertex{
|
||||
&ast.ScalarEncapsedStringPart{
|
||||
@ -7913,7 +7923,7 @@ yydefault:
|
||||
}
|
||||
case 495:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5340
|
||||
// line internal/php5/php5.y:5350
|
||||
{
|
||||
yyVAL.node = &ast.ExprVariable{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||
@ -7926,7 +7936,7 @@ yydefault:
|
||||
}
|
||||
case 496:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:5351
|
||||
// line internal/php5/php5.y:5361
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayDimFetch{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||
@ -7945,7 +7955,7 @@ yydefault:
|
||||
}
|
||||
case 497:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:5368
|
||||
// line internal/php5/php5.y:5378
|
||||
{
|
||||
yyVAL.node = &ast.ExprPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||
@ -7967,7 +7977,7 @@ yydefault:
|
||||
}
|
||||
case 498:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:5388
|
||||
// line internal/php5/php5.y:5398
|
||||
{
|
||||
yyVAL.node = &ast.ParserBrackets{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||
@ -7981,7 +7991,7 @@ yydefault:
|
||||
}
|
||||
case 499:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:5400
|
||||
// line internal/php5/php5.y:5410
|
||||
{
|
||||
yyVAL.node = &ast.ParserBrackets{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||
@ -7999,7 +8009,7 @@ yydefault:
|
||||
}
|
||||
case 500:
|
||||
yyDollar = yyS[yypt-6 : yypt+1]
|
||||
// line internal/php5/php5.y:5416
|
||||
// line internal/php5/php5.y:5426
|
||||
{
|
||||
yyVAL.node = &ast.ParserBrackets{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token),
|
||||
@ -8023,7 +8033,7 @@ yydefault:
|
||||
}
|
||||
case 501:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:5438
|
||||
// line internal/php5/php5.y:5448
|
||||
{
|
||||
yyVAL.node = &ast.ParserBrackets{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||
@ -8034,7 +8044,7 @@ yydefault:
|
||||
}
|
||||
case 502:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5450
|
||||
// line internal/php5/php5.y:5460
|
||||
{
|
||||
yyVAL.node = &ast.ScalarString{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||
@ -8044,7 +8054,7 @@ yydefault:
|
||||
}
|
||||
case 503:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5458
|
||||
// line internal/php5/php5.y:5468
|
||||
{
|
||||
// TODO: add option to handle 64 bit integer
|
||||
if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil {
|
||||
@ -8063,7 +8073,7 @@ yydefault:
|
||||
}
|
||||
case 504:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5475
|
||||
// line internal/php5/php5.y:5485
|
||||
{
|
||||
yyVAL.node = &ast.ExprVariable{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||
@ -8076,7 +8086,7 @@ yydefault:
|
||||
}
|
||||
case 505:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:5489
|
||||
// line internal/php5/php5.y:5499
|
||||
{
|
||||
yyVAL.node = &ast.ExprIsset{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||
@ -8089,7 +8099,7 @@ yydefault:
|
||||
}
|
||||
case 506:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:5500
|
||||
// line internal/php5/php5.y:5510
|
||||
{
|
||||
yyVAL.node = &ast.ExprEmpty{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||
@ -8101,7 +8111,7 @@ yydefault:
|
||||
}
|
||||
case 507:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:5510
|
||||
// line internal/php5/php5.y:5520
|
||||
{
|
||||
yyVAL.node = &ast.ExprEmpty{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||
@ -8113,7 +8123,7 @@ yydefault:
|
||||
}
|
||||
case 508:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php5/php5.y:5520
|
||||
// line internal/php5/php5.y:5530
|
||||
{
|
||||
yyVAL.node = &ast.ExprInclude{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||
@ -8123,7 +8133,7 @@ yydefault:
|
||||
}
|
||||
case 509:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php5/php5.y:5528
|
||||
// line internal/php5/php5.y:5538
|
||||
{
|
||||
yyVAL.node = &ast.ExprIncludeOnce{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||
@ -8133,7 +8143,7 @@ yydefault:
|
||||
}
|
||||
case 510:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php5/php5.y:5536
|
||||
// line internal/php5/php5.y:5546
|
||||
{
|
||||
yyVAL.node = &ast.ExprEval{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||
@ -8145,7 +8155,7 @@ yydefault:
|
||||
}
|
||||
case 511:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php5/php5.y:5546
|
||||
// line internal/php5/php5.y:5556
|
||||
{
|
||||
yyVAL.node = &ast.ExprRequire{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||
@ -8155,7 +8165,7 @@ yydefault:
|
||||
}
|
||||
case 512:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php5/php5.y:5554
|
||||
// line internal/php5/php5.y:5564
|
||||
{
|
||||
yyVAL.node = &ast.ExprRequireOnce{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||
@ -8165,7 +8175,7 @@ yydefault:
|
||||
}
|
||||
case 513:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5565
|
||||
// line internal/php5/php5.y:5575
|
||||
{
|
||||
yyVAL.node = &ast.ParserSeparatedList{
|
||||
Items: []ast.Vertex{yyDollar[1].node},
|
||||
@ -8173,7 +8183,7 @@ yydefault:
|
||||
}
|
||||
case 514:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:5571
|
||||
// line internal/php5/php5.y:5581
|
||||
{
|
||||
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)
|
||||
@ -8182,19 +8192,19 @@ yydefault:
|
||||
}
|
||||
case 515:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5581
|
||||
// line internal/php5/php5.y:5591
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 516:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php5/php5.y:5585
|
||||
// line internal/php5/php5.y:5595
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 517:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:5592
|
||||
// line internal/php5/php5.y:5602
|
||||
{
|
||||
yyVAL.node = &ast.ExprClassConstFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
|
||||
@ -8209,7 +8219,7 @@ yydefault:
|
||||
}
|
||||
case 518:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:5605
|
||||
// line internal/php5/php5.y:5615
|
||||
{
|
||||
yyVAL.node = &ast.ExprClassConstFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
|
||||
@ -8224,7 +8234,7 @@ yydefault:
|
||||
}
|
||||
case 519:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:5621
|
||||
// line internal/php5/php5.y:5631
|
||||
{
|
||||
yyVAL.node = &ast.ExprClassConstFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
|
||||
@ -8239,7 +8249,7 @@ yydefault:
|
||||
}
|
||||
case 520:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php5/php5.y:5637
|
||||
// line internal/php5/php5.y:5647
|
||||
{
|
||||
yyVAL.node = &ast.ExprClassConstFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
|
||||
|
@ -4709,7 +4709,9 @@ variable:
|
||||
)
|
||||
$3 = append($3, $4[1:len($4)]...)
|
||||
case *ast.ExprPropertyFetch:
|
||||
$4[0].(*ast.ExprMethodCall).OpenCurlyBracketTkn = l.OpenCurlyBracketTkn
|
||||
$4[0].(*ast.ExprMethodCall).Method = l.Property
|
||||
$4[0].(*ast.ExprMethodCall).CloseCurlyBracketTkn = l.CloseCurlyBracketTkn
|
||||
$4[0].(*ast.ExprMethodCall).ObjectOperatorTkn = l.ObjectOperatorTkn
|
||||
$3 = append($3[:len($3)-1], $4...)
|
||||
}
|
||||
@ -4801,7 +4803,9 @@ variable_property:
|
||||
)
|
||||
$2 = append($2, $3[1:len($3)]...)
|
||||
case *ast.ExprPropertyFetch:
|
||||
$3[0].(*ast.ExprMethodCall).OpenCurlyBracketTkn = l.OpenCurlyBracketTkn
|
||||
$3[0].(*ast.ExprMethodCall).Method = l.Property
|
||||
$3[0].(*ast.ExprMethodCall).CloseCurlyBracketTkn = l.CloseCurlyBracketTkn
|
||||
$3[0].(*ast.ExprMethodCall).ObjectOperatorTkn = l.ObjectOperatorTkn
|
||||
$2 = append($2[:len($2)-1], $3...)
|
||||
}
|
||||
@ -5078,12 +5082,18 @@ object_dim_list:
|
||||
}
|
||||
| variable_name
|
||||
{
|
||||
$$ = []ast.Vertex{
|
||||
&ast.ExprPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodePosition($1),
|
||||
Property: $1,
|
||||
},
|
||||
property := &ast.ExprPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodePosition($1),
|
||||
Property: $1,
|
||||
}
|
||||
|
||||
if brackets, ok := $1.(*ast.ParserBrackets); ok {
|
||||
property.OpenCurlyBracketTkn = brackets.OpenBracketTkn
|
||||
property.Property = brackets.Child
|
||||
property.CloseCurlyBracketTkn = brackets.CloseBracketTkn
|
||||
}
|
||||
|
||||
$$ = []ast.Vertex{ property }
|
||||
}
|
||||
;
|
||||
|
||||
|
194
internal/php7/php7.go
generated
194
internal/php7/php7.go
generated
@ -339,7 +339,7 @@ const yyEofCode = 1
|
||||
const yyErrCode = 2
|
||||
const yyInitialStackSize = 16
|
||||
|
||||
// line internal/php7/php7.y:4350
|
||||
// line internal/php7/php7.y:4374
|
||||
|
||||
// line yacctab:1
|
||||
var yyExca = [...]int{
|
||||
@ -6390,7 +6390,7 @@ yydefault:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:3740
|
||||
{
|
||||
yyVAL.node = &ast.ExprMethodCall{
|
||||
methodCall := &ast.ExprMethodCall{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node),
|
||||
Var: yyDollar[1].node,
|
||||
ObjectOperatorTkn: yyDollar[2].token,
|
||||
@ -6400,39 +6400,55 @@ yydefault:
|
||||
SeparatorTkns: yyDollar[4].node.(*ast.ArgumentList).SeparatorTkns,
|
||||
CloseParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).CloseParenthesisTkn,
|
||||
}
|
||||
|
||||
if brackets, ok := yyDollar[3].node.(*ast.ParserBrackets); ok {
|
||||
methodCall.OpenCurlyBracketTkn = brackets.OpenBracketTkn
|
||||
methodCall.Method = brackets.Child
|
||||
methodCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn
|
||||
}
|
||||
|
||||
yyVAL.node = methodCall
|
||||
}
|
||||
case 437:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3753
|
||||
// line internal/php7/php7.y:3761
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 438:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3760
|
||||
// line internal/php7/php7.y:3768
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 439:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3764
|
||||
// line internal/php7/php7.y:3772
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 440:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:3768
|
||||
// line internal/php7/php7.y:3776
|
||||
{
|
||||
yyVAL.node = &ast.ExprPropertyFetch{
|
||||
propertyFetch := &ast.ExprPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||
Var: yyDollar[1].node,
|
||||
ObjectOperatorTkn: yyDollar[2].token,
|
||||
Property: yyDollar[3].node,
|
||||
}
|
||||
|
||||
if brackets, ok := yyDollar[3].node.(*ast.ParserBrackets); ok {
|
||||
propertyFetch.OpenCurlyBracketTkn = brackets.OpenBracketTkn
|
||||
propertyFetch.Property = brackets.Child
|
||||
propertyFetch.CloseCurlyBracketTkn = brackets.CloseBracketTkn
|
||||
}
|
||||
|
||||
yyVAL.node = propertyFetch
|
||||
}
|
||||
case 441:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3780
|
||||
// line internal/php7/php7.y:3796
|
||||
{
|
||||
yyVAL.node = &ast.ExprVariable{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||
@ -6445,7 +6461,7 @@ yydefault:
|
||||
}
|
||||
case 442:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:3791
|
||||
// line internal/php7/php7.y:3807
|
||||
{
|
||||
yyVAL.node = &ast.ExprVariable{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||
@ -6457,7 +6473,7 @@ yydefault:
|
||||
}
|
||||
case 443:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:3801
|
||||
// line internal/php7/php7.y:3817
|
||||
{
|
||||
yyVAL.node = &ast.ExprVariable{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||
@ -6467,7 +6483,7 @@ yydefault:
|
||||
}
|
||||
case 444:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:3812
|
||||
// line internal/php7/php7.y:3828
|
||||
{
|
||||
yyVAL.node = &ast.ExprStaticPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||
@ -6478,7 +6494,7 @@ yydefault:
|
||||
}
|
||||
case 445:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:3821
|
||||
// line internal/php7/php7.y:3837
|
||||
{
|
||||
yyVAL.node = &ast.ExprStaticPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||
@ -6489,13 +6505,13 @@ yydefault:
|
||||
}
|
||||
case 446:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3833
|
||||
// line internal/php7/php7.y:3849
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 447:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:3837
|
||||
// line internal/php7/php7.y:3853
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayDimFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
|
||||
@ -6507,7 +6523,7 @@ yydefault:
|
||||
}
|
||||
case 448:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:3847
|
||||
// line internal/php7/php7.y:3863
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayDimFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
|
||||
@ -6519,18 +6535,26 @@ yydefault:
|
||||
}
|
||||
case 449:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:3857
|
||||
// line internal/php7/php7.y:3873
|
||||
{
|
||||
yyVAL.node = &ast.ExprPropertyFetch{
|
||||
propertyFetch := &ast.ExprPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||
Var: yyDollar[1].node,
|
||||
ObjectOperatorTkn: yyDollar[2].token,
|
||||
Property: yyDollar[3].node,
|
||||
}
|
||||
|
||||
if brackets, ok := yyDollar[3].node.(*ast.ParserBrackets); ok {
|
||||
propertyFetch.OpenCurlyBracketTkn = brackets.OpenBracketTkn
|
||||
propertyFetch.Property = brackets.Child
|
||||
propertyFetch.CloseCurlyBracketTkn = brackets.CloseBracketTkn
|
||||
}
|
||||
|
||||
yyVAL.node = propertyFetch
|
||||
}
|
||||
case 450:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:3866
|
||||
// line internal/php7/php7.y:3890
|
||||
{
|
||||
yyVAL.node = &ast.ExprStaticPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||
@ -6541,7 +6565,7 @@ yydefault:
|
||||
}
|
||||
case 451:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:3875
|
||||
// line internal/php7/php7.y:3899
|
||||
{
|
||||
yyVAL.node = &ast.ExprStaticPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||
@ -6551,33 +6575,6 @@ yydefault:
|
||||
}
|
||||
}
|
||||
case 452:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3887
|
||||
{
|
||||
yyVAL.node = &ast.Identifier{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||
IdentifierTkn: yyDollar[1].token,
|
||||
Value: yyDollar[1].token.Value,
|
||||
}
|
||||
}
|
||||
case 453:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:3895
|
||||
{
|
||||
yyVAL.node = &ast.ParserBrackets{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||
OpenBracketTkn: yyDollar[1].token,
|
||||
Child: yyDollar[2].node,
|
||||
CloseBracketTkn: yyDollar[3].token,
|
||||
}
|
||||
}
|
||||
case 454:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3904
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 455:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3911
|
||||
{
|
||||
@ -6587,7 +6584,7 @@ yydefault:
|
||||
Value: yyDollar[1].token.Value,
|
||||
}
|
||||
}
|
||||
case 456:
|
||||
case 453:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:3919
|
||||
{
|
||||
@ -6598,15 +6595,42 @@ yydefault:
|
||||
CloseBracketTkn: yyDollar[3].token,
|
||||
}
|
||||
}
|
||||
case 457:
|
||||
case 454:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3928
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 458:
|
||||
case 455:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3935
|
||||
{
|
||||
yyVAL.node = &ast.Identifier{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||
IdentifierTkn: yyDollar[1].token,
|
||||
Value: yyDollar[1].token.Value,
|
||||
}
|
||||
}
|
||||
case 456:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:3943
|
||||
{
|
||||
yyVAL.node = &ast.ParserBrackets{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||
OpenBracketTkn: yyDollar[1].token,
|
||||
Child: yyDollar[2].node,
|
||||
CloseBracketTkn: yyDollar[3].token,
|
||||
}
|
||||
}
|
||||
case 457:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3952
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 458:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3959
|
||||
{
|
||||
pairList := yyDollar[1].node.(*ast.ParserSeparatedList)
|
||||
fistPair := pairList.Items[0].(*ast.ExprArrayItem)
|
||||
@ -6619,19 +6643,19 @@ yydefault:
|
||||
}
|
||||
case 459:
|
||||
yyDollar = yyS[yypt-0 : yypt+1]
|
||||
// line internal/php7/php7.y:3949
|
||||
// line internal/php7/php7.y:3973
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayItem{}
|
||||
}
|
||||
case 460:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3953
|
||||
// line internal/php7/php7.y:3977
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 461:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:3960
|
||||
// line internal/php7/php7.y:3984
|
||||
{
|
||||
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)
|
||||
@ -6640,7 +6664,7 @@ yydefault:
|
||||
}
|
||||
case 462:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3967
|
||||
// line internal/php7/php7.y:3991
|
||||
{
|
||||
yyVAL.node = &ast.ParserSeparatedList{
|
||||
Items: []ast.Vertex{yyDollar[1].node},
|
||||
@ -6648,7 +6672,7 @@ yydefault:
|
||||
}
|
||||
case 463:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:3976
|
||||
// line internal/php7/php7.y:4000
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayItem{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||
@ -6659,7 +6683,7 @@ yydefault:
|
||||
}
|
||||
case 464:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3985
|
||||
// line internal/php7/php7.y:4009
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayItem{
|
||||
Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node),
|
||||
@ -6668,7 +6692,7 @@ yydefault:
|
||||
}
|
||||
case 465:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:3992
|
||||
// line internal/php7/php7.y:4016
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayItem{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node),
|
||||
@ -6680,7 +6704,7 @@ yydefault:
|
||||
}
|
||||
case 466:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4002
|
||||
// line internal/php7/php7.y:4026
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayItem{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||
@ -6690,7 +6714,7 @@ yydefault:
|
||||
}
|
||||
case 467:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4010
|
||||
// line internal/php7/php7.y:4034
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayItem{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||
@ -6700,7 +6724,7 @@ yydefault:
|
||||
}
|
||||
case 468:
|
||||
yyDollar = yyS[yypt-6 : yypt+1]
|
||||
// line internal/php7/php7.y:4018
|
||||
// line internal/php7/php7.y:4042
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayItem{
|
||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token),
|
||||
@ -6718,7 +6742,7 @@ yydefault:
|
||||
}
|
||||
case 469:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4034
|
||||
// line internal/php7/php7.y:4058
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayItem{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||
@ -6734,13 +6758,13 @@ yydefault:
|
||||
}
|
||||
case 470:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4051
|
||||
// line internal/php7/php7.y:4075
|
||||
{
|
||||
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
|
||||
}
|
||||
case 471:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4055
|
||||
// line internal/php7/php7.y:4079
|
||||
{
|
||||
yyVAL.list = append(
|
||||
yyDollar[1].list,
|
||||
@ -6753,13 +6777,13 @@ yydefault:
|
||||
}
|
||||
case 472:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4066
|
||||
// line internal/php7/php7.y:4090
|
||||
{
|
||||
yyVAL.list = []ast.Vertex{yyDollar[1].node}
|
||||
}
|
||||
case 473:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4070
|
||||
// line internal/php7/php7.y:4094
|
||||
{
|
||||
yyVAL.list = []ast.Vertex{
|
||||
&ast.ScalarEncapsedStringPart{
|
||||
@ -6772,7 +6796,7 @@ yydefault:
|
||||
}
|
||||
case 474:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4084
|
||||
// line internal/php7/php7.y:4108
|
||||
{
|
||||
yyVAL.node = &ast.ExprVariable{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||
@ -6785,7 +6809,7 @@ yydefault:
|
||||
}
|
||||
case 475:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4095
|
||||
// line internal/php7/php7.y:4119
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayDimFetch{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||
@ -6804,7 +6828,7 @@ yydefault:
|
||||
}
|
||||
case 476:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4112
|
||||
// line internal/php7/php7.y:4136
|
||||
{
|
||||
yyVAL.node = &ast.ExprPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||
@ -6826,7 +6850,7 @@ yydefault:
|
||||
}
|
||||
case 477:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4132
|
||||
// line internal/php7/php7.y:4156
|
||||
{
|
||||
yyVAL.node = &ast.ParserBrackets{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||
@ -6840,7 +6864,7 @@ yydefault:
|
||||
}
|
||||
case 478:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4144
|
||||
// line internal/php7/php7.y:4168
|
||||
{
|
||||
yyVAL.node = &ast.ParserBrackets{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||
@ -6858,7 +6882,7 @@ yydefault:
|
||||
}
|
||||
case 479:
|
||||
yyDollar = yyS[yypt-6 : yypt+1]
|
||||
// line internal/php7/php7.y:4160
|
||||
// line internal/php7/php7.y:4184
|
||||
{
|
||||
yyVAL.node = &ast.ParserBrackets{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token),
|
||||
@ -6882,7 +6906,7 @@ yydefault:
|
||||
}
|
||||
case 480:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4182
|
||||
// line internal/php7/php7.y:4206
|
||||
{
|
||||
yyVAL.node = &ast.ParserBrackets{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||
@ -6893,7 +6917,7 @@ yydefault:
|
||||
}
|
||||
case 481:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4194
|
||||
// line internal/php7/php7.y:4218
|
||||
{
|
||||
yyVAL.node = &ast.ScalarString{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||
@ -6903,7 +6927,7 @@ yydefault:
|
||||
}
|
||||
case 482:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4202
|
||||
// line internal/php7/php7.y:4226
|
||||
{
|
||||
// TODO: add option to handle 64 bit integer
|
||||
if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil {
|
||||
@ -6922,7 +6946,7 @@ yydefault:
|
||||
}
|
||||
case 483:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4219
|
||||
// line internal/php7/php7.y:4243
|
||||
{
|
||||
_, err := strconv.Atoi(string(yyDollar[2].token.Value))
|
||||
isInt := err == nil
|
||||
@ -6948,7 +6972,7 @@ yydefault:
|
||||
}
|
||||
case 484:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4243
|
||||
// line internal/php7/php7.y:4267
|
||||
{
|
||||
yyVAL.node = &ast.ExprVariable{
|
||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||
@ -6961,7 +6985,7 @@ yydefault:
|
||||
}
|
||||
case 485:
|
||||
yyDollar = yyS[yypt-5 : yypt+1]
|
||||
// line internal/php7/php7.y:4257
|
||||
// line internal/php7/php7.y:4281
|
||||
{
|
||||
if yyDollar[4].token != nil {
|
||||
yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[4].token)
|
||||
@ -6978,7 +7002,7 @@ yydefault:
|
||||
}
|
||||
case 486:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4272
|
||||
// line internal/php7/php7.y:4296
|
||||
{
|
||||
yyVAL.node = &ast.ExprEmpty{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||
@ -6990,7 +7014,7 @@ yydefault:
|
||||
}
|
||||
case 487:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4282
|
||||
// line internal/php7/php7.y:4306
|
||||
{
|
||||
yyVAL.node = &ast.ExprInclude{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||
@ -7000,7 +7024,7 @@ yydefault:
|
||||
}
|
||||
case 488:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4290
|
||||
// line internal/php7/php7.y:4314
|
||||
{
|
||||
yyVAL.node = &ast.ExprIncludeOnce{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||
@ -7010,7 +7034,7 @@ yydefault:
|
||||
}
|
||||
case 489:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4298
|
||||
// line internal/php7/php7.y:4322
|
||||
{
|
||||
yyVAL.node = &ast.ExprEval{
|
||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||
@ -7022,7 +7046,7 @@ yydefault:
|
||||
}
|
||||
case 490:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4308
|
||||
// line internal/php7/php7.y:4332
|
||||
{
|
||||
yyVAL.node = &ast.ExprRequire{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||
@ -7032,7 +7056,7 @@ yydefault:
|
||||
}
|
||||
case 491:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4316
|
||||
// line internal/php7/php7.y:4340
|
||||
{
|
||||
yyVAL.node = &ast.ExprRequireOnce{
|
||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||
@ -7042,7 +7066,7 @@ yydefault:
|
||||
}
|
||||
case 492:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4327
|
||||
// line internal/php7/php7.y:4351
|
||||
{
|
||||
yyVAL.node = &ast.ParserSeparatedList{
|
||||
Items: []ast.Vertex{yyDollar[1].node},
|
||||
@ -7050,7 +7074,7 @@ yydefault:
|
||||
}
|
||||
case 493:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4333
|
||||
// line internal/php7/php7.y:4357
|
||||
{
|
||||
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)
|
||||
@ -7059,7 +7083,7 @@ yydefault:
|
||||
}
|
||||
case 494:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4343
|
||||
// line internal/php7/php7.y:4367
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
|
@ -3738,7 +3738,7 @@ callable_variable:
|
||||
}
|
||||
| dereferencable T_OBJECT_OPERATOR property_name argument_list
|
||||
{
|
||||
$$ = &ast.ExprMethodCall{
|
||||
methodCall := &ast.ExprMethodCall{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition($1, $4),
|
||||
Var: $1,
|
||||
ObjectOperatorTkn: $2,
|
||||
@ -3748,6 +3748,14 @@ callable_variable:
|
||||
SeparatorTkns: $4.(*ast.ArgumentList).SeparatorTkns,
|
||||
CloseParenthesisTkn: $4.(*ast.ArgumentList).CloseParenthesisTkn,
|
||||
}
|
||||
|
||||
if brackets, ok := $3.(*ast.ParserBrackets); ok {
|
||||
methodCall.OpenCurlyBracketTkn = brackets.OpenBracketTkn
|
||||
methodCall.Method = brackets.Child
|
||||
methodCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn
|
||||
}
|
||||
|
||||
$$ = methodCall
|
||||
}
|
||||
| function_call
|
||||
{
|
||||
@ -3766,12 +3774,20 @@ variable:
|
||||
}
|
||||
| dereferencable T_OBJECT_OPERATOR property_name
|
||||
{
|
||||
$$ = &ast.ExprPropertyFetch{
|
||||
propertyFetch := &ast.ExprPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition($1, $3),
|
||||
Var: $1,
|
||||
ObjectOperatorTkn: $2,
|
||||
Property: $3,
|
||||
}
|
||||
|
||||
if brackets, ok := $3.(*ast.ParserBrackets); ok {
|
||||
propertyFetch.OpenCurlyBracketTkn = brackets.OpenBracketTkn
|
||||
propertyFetch.Property = brackets.Child
|
||||
propertyFetch.CloseCurlyBracketTkn = brackets.CloseBracketTkn
|
||||
}
|
||||
|
||||
$$ = propertyFetch
|
||||
}
|
||||
;
|
||||
|
||||
@ -3855,12 +3871,20 @@ new_variable:
|
||||
}
|
||||
| new_variable T_OBJECT_OPERATOR property_name
|
||||
{
|
||||
$$ = &ast.ExprPropertyFetch{
|
||||
propertyFetch := &ast.ExprPropertyFetch{
|
||||
Position: yylex.(*Parser).builder.NewNodesPosition($1, $3),
|
||||
Var: $1,
|
||||
ObjectOperatorTkn: $2,
|
||||
Property: $3,
|
||||
}
|
||||
|
||||
if brackets, ok := $3.(*ast.ParserBrackets); ok {
|
||||
propertyFetch.OpenCurlyBracketTkn = brackets.OpenBracketTkn
|
||||
propertyFetch.Property = brackets.Child
|
||||
propertyFetch.CloseCurlyBracketTkn = brackets.CloseBracketTkn
|
||||
}
|
||||
|
||||
$$ = propertyFetch
|
||||
}
|
||||
| class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable
|
||||
{
|
||||
|
@ -1501,14 +1501,16 @@ func (n *ExprList) GetPosition() *position.Position {
|
||||
|
||||
// ExprMethodCall node
|
||||
type ExprMethodCall struct {
|
||||
Position *position.Position
|
||||
Var Vertex
|
||||
ObjectOperatorTkn *token.Token
|
||||
Method Vertex
|
||||
OpenParenthesisTkn *token.Token
|
||||
Arguments []Vertex
|
||||
SeparatorTkns []*token.Token
|
||||
CloseParenthesisTkn *token.Token
|
||||
Position *position.Position
|
||||
Var Vertex
|
||||
ObjectOperatorTkn *token.Token
|
||||
OpenCurlyBracketTkn *token.Token
|
||||
Method Vertex
|
||||
CloseCurlyBracketTkn *token.Token
|
||||
OpenParenthesisTkn *token.Token
|
||||
Arguments []Vertex
|
||||
SeparatorTkns []*token.Token
|
||||
CloseParenthesisTkn *token.Token
|
||||
}
|
||||
|
||||
func (n *ExprMethodCall) Accept(v NodeVisitor) {
|
||||
@ -1615,10 +1617,12 @@ func (n *ExprPrint) GetPosition() *position.Position {
|
||||
|
||||
// ExprPropertyFetch node
|
||||
type ExprPropertyFetch struct {
|
||||
Position *position.Position
|
||||
Var Vertex
|
||||
ObjectOperatorTkn *token.Token
|
||||
Property Vertex
|
||||
Position *position.Position
|
||||
Var Vertex
|
||||
ObjectOperatorTkn *token.Token
|
||||
OpenCurlyBracketTkn *token.Token
|
||||
Property Vertex
|
||||
CloseCurlyBracketTkn *token.Token
|
||||
}
|
||||
|
||||
func (n *ExprPropertyFetch) Accept(v NodeVisitor) {
|
||||
|
@ -1326,7 +1326,9 @@ func (v *Dumper) ExprMethodCall(n *ast.ExprMethodCall) {
|
||||
v.dumpPosition(n.Position)
|
||||
v.dumpVertex("Var", n.Var)
|
||||
v.dumpToken("ObjectOperatorTkn", n.ObjectOperatorTkn)
|
||||
v.dumpToken("OpenCurlyBracketTkn", n.OpenCurlyBracketTkn)
|
||||
v.dumpVertex("Method", n.Method)
|
||||
v.dumpToken("CloseCurlyBracketTkn", n.CloseCurlyBracketTkn)
|
||||
v.dumpToken("OpenParenthesisTkn", n.OpenParenthesisTkn)
|
||||
v.dumpVertexList("Arguments", n.Arguments)
|
||||
v.dumpTokenList("SeparatorTkns", n.SeparatorTkns)
|
||||
@ -1419,7 +1421,9 @@ func (v *Dumper) ExprPropertyFetch(n *ast.ExprPropertyFetch) {
|
||||
v.dumpPosition(n.Position)
|
||||
v.dumpVertex("Var", n.Var)
|
||||
v.dumpToken("ObjectOperatorTkn", n.ObjectOperatorTkn)
|
||||
v.dumpToken("OpenCurlyBracketTkn", n.OpenCurlyBracketTkn)
|
||||
v.dumpVertex("Property", n.Property)
|
||||
v.dumpToken("CloseCurlyBracketTkn", n.CloseCurlyBracketTkn)
|
||||
|
||||
v.indent--
|
||||
v.print(v.indent, "},\n")
|
||||
|
@ -1290,6 +1290,17 @@ func (f *formatter) ExprList(n *ast.ExprList) {
|
||||
func (f *formatter) ExprMethodCall(n *ast.ExprMethodCall) {
|
||||
n.Var.Accept(f)
|
||||
n.ObjectOperatorTkn = f.newToken(token.T_OBJECT_OPERATOR, []byte("->"))
|
||||
|
||||
n.OpenCurlyBracketTkn = nil
|
||||
n.CloseCurlyBracketTkn = nil
|
||||
switch n.Method.(type) {
|
||||
case *ast.Identifier:
|
||||
case *ast.ExprVariable:
|
||||
default:
|
||||
n.OpenCurlyBracketTkn = f.newToken('{', []byte("{"))
|
||||
n.CloseCurlyBracketTkn = f.newToken('}', []byte("}"))
|
||||
}
|
||||
|
||||
n.Method.Accept(f)
|
||||
|
||||
n.OpenParenthesisTkn = f.newToken('(', []byte("("))
|
||||
@ -1346,6 +1357,17 @@ func (f *formatter) ExprPrint(n *ast.ExprPrint) {
|
||||
func (f *formatter) ExprPropertyFetch(n *ast.ExprPropertyFetch) {
|
||||
n.Var.Accept(f)
|
||||
n.ObjectOperatorTkn = f.newToken(token.T_OBJECT_OPERATOR, []byte("->"))
|
||||
|
||||
n.OpenCurlyBracketTkn = nil
|
||||
n.CloseCurlyBracketTkn = nil
|
||||
switch n.Property.(type) {
|
||||
case *ast.Identifier:
|
||||
case *ast.ExprVariable:
|
||||
default:
|
||||
n.OpenCurlyBracketTkn = f.newToken('{', []byte("{"))
|
||||
n.CloseCurlyBracketTkn = f.newToken('}', []byte("}"))
|
||||
}
|
||||
|
||||
n.Property.Accept(f)
|
||||
}
|
||||
|
||||
|
@ -4216,6 +4216,34 @@ func TestFormatter_ExprMethodCall(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestFormatter_ExprMethodCall_Expr(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
n := &ast.ExprMethodCall{
|
||||
Var: &ast.ExprVariable{
|
||||
VarName: &ast.Identifier{
|
||||
Value: []byte("$foo"),
|
||||
},
|
||||
},
|
||||
Method: &ast.ScalarString{
|
||||
Value: []byte("'bar'"),
|
||||
},
|
||||
}
|
||||
|
||||
f := visitor.NewFormatter().WithState(visitor.FormatterStatePHP).WithIndent(1)
|
||||
n.Accept(f)
|
||||
|
||||
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
||||
n.Accept(p)
|
||||
|
||||
expected := `$foo->{'bar'}()`
|
||||
actual := o.String()
|
||||
|
||||
if expected != actual {
|
||||
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFormatter_ExprMethodCall_Arguments(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
@ -4483,6 +4511,34 @@ func TestFormatter_ExprPropertyFetch(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestFormatter_ExprPropertyFetch_Expr(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
n := &ast.ExprPropertyFetch{
|
||||
Var: &ast.ExprVariable{
|
||||
VarName: &ast.Identifier{
|
||||
Value: []byte("$foo"),
|
||||
},
|
||||
},
|
||||
Property: &ast.ScalarString{
|
||||
Value: []byte("'bar'"),
|
||||
},
|
||||
}
|
||||
|
||||
f := visitor.NewFormatter().WithState(visitor.FormatterStatePHP).WithIndent(1)
|
||||
n.Accept(f)
|
||||
|
||||
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
||||
n.Accept(p)
|
||||
|
||||
expected := `$foo->{'bar'}`
|
||||
actual := o.String()
|
||||
|
||||
if expected != actual {
|
||||
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFormatter_ExprRequire(t *testing.T) {
|
||||
o := bytes.NewBufferString("")
|
||||
|
||||
|
@ -772,7 +772,9 @@ func (p *printer) ExprList(n *ast.ExprList) {
|
||||
func (p *printer) ExprMethodCall(n *ast.ExprMethodCall) {
|
||||
p.printNode(n.Var)
|
||||
p.printToken(n.ObjectOperatorTkn, []byte("->"))
|
||||
p.printToken(n.OpenCurlyBracketTkn, nil)
|
||||
p.printNode(n.Method)
|
||||
p.printToken(n.CloseCurlyBracketTkn, nil)
|
||||
p.printToken(n.OpenParenthesisTkn, []byte("("))
|
||||
p.printSeparatedList(n.Arguments, n.SeparatorTkns, []byte(","))
|
||||
p.printToken(n.CloseParenthesisTkn, []byte(")"))
|
||||
@ -814,7 +816,9 @@ func (p *printer) ExprPrint(n *ast.ExprPrint) {
|
||||
func (p *printer) ExprPropertyFetch(n *ast.ExprPropertyFetch) {
|
||||
p.printNode(n.Var)
|
||||
p.printToken(n.ObjectOperatorTkn, []byte("->"))
|
||||
p.printToken(n.OpenCurlyBracketTkn, nil)
|
||||
p.printNode(n.Property)
|
||||
p.printToken(n.CloseCurlyBracketTkn, nil)
|
||||
}
|
||||
|
||||
func (p *printer) ExprRequire(n *ast.ExprRequire) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user