refactoring: update ast structure of "ArrayItem" node
This commit is contained in:
parent
8bf1fa822d
commit
0f5f5e7dc7
@ -30786,61 +30786,53 @@ func TestExprArray_Items(t *testing.T) {
|
|||||||
StartPos: 15,
|
StartPos: 15,
|
||||||
EndPos: 18,
|
EndPos: 18,
|
||||||
},
|
},
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: &token.Token{
|
||||||
|
ID: token.ID(38),
|
||||||
|
Value: []byte("&"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 15,
|
StartPos: 15,
|
||||||
EndPos: 18,
|
EndPos: 16,
|
||||||
},
|
},
|
||||||
AmpersandTkn: &token.Token{
|
FreeFloating: []*token.Token{
|
||||||
ID: token.ID(38),
|
{
|
||||||
Value: []byte("&"),
|
ID: token.T_WHITESPACE,
|
||||||
Position: &position.Position{
|
Value: []byte(" "),
|
||||||
StartLine: 1,
|
Position: &position.Position{
|
||||||
EndLine: 1,
|
StartLine: 1,
|
||||||
StartPos: 15,
|
EndLine: 1,
|
||||||
EndPos: 16,
|
StartPos: 14,
|
||||||
},
|
EndPos: 15,
|
||||||
FreeFloating: []*token.Token{
|
|
||||||
{
|
|
||||||
ID: token.T_WHITESPACE,
|
|
||||||
Value: []byte(" "),
|
|
||||||
Position: &position.Position{
|
|
||||||
StartLine: 1,
|
|
||||||
EndLine: 1,
|
|
||||||
StartPos: 14,
|
|
||||||
EndPos: 15,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Var: &ast.ExprVariable{
|
},
|
||||||
|
Val: &ast.ExprVariable{
|
||||||
|
Position: &position.Position{
|
||||||
|
StartLine: 1,
|
||||||
|
EndLine: 1,
|
||||||
|
StartPos: 16,
|
||||||
|
EndPos: 18,
|
||||||
|
},
|
||||||
|
VarName: &ast.Identifier{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 16,
|
StartPos: 16,
|
||||||
EndPos: 18,
|
EndPos: 18,
|
||||||
},
|
},
|
||||||
VarName: &ast.Identifier{
|
IdentifierTkn: &token.Token{
|
||||||
|
ID: token.T_VARIABLE,
|
||||||
|
Value: []byte("$b"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 16,
|
StartPos: 16,
|
||||||
EndPos: 18,
|
EndPos: 18,
|
||||||
},
|
},
|
||||||
IdentifierTkn: &token.Token{
|
|
||||||
ID: token.T_VARIABLE,
|
|
||||||
Value: []byte("$b"),
|
|
||||||
Position: &position.Position{
|
|
||||||
StartLine: 1,
|
|
||||||
EndLine: 1,
|
|
||||||
StartPos: 16,
|
|
||||||
EndPos: 18,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Value: []byte("$b"),
|
|
||||||
},
|
},
|
||||||
|
Value: []byte("$b"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -39025,61 +39017,53 @@ func TestExprShortArray_Items(t *testing.T) {
|
|||||||
StartPos: 10,
|
StartPos: 10,
|
||||||
EndPos: 13,
|
EndPos: 13,
|
||||||
},
|
},
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: &token.Token{
|
||||||
|
ID: token.ID(38),
|
||||||
|
Value: []byte("&"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 10,
|
StartPos: 10,
|
||||||
EndPos: 13,
|
EndPos: 11,
|
||||||
},
|
},
|
||||||
AmpersandTkn: &token.Token{
|
FreeFloating: []*token.Token{
|
||||||
ID: token.ID(38),
|
{
|
||||||
Value: []byte("&"),
|
ID: token.T_WHITESPACE,
|
||||||
Position: &position.Position{
|
Value: []byte(" "),
|
||||||
StartLine: 1,
|
Position: &position.Position{
|
||||||
EndLine: 1,
|
StartLine: 1,
|
||||||
StartPos: 10,
|
EndLine: 1,
|
||||||
EndPos: 11,
|
StartPos: 9,
|
||||||
},
|
EndPos: 10,
|
||||||
FreeFloating: []*token.Token{
|
|
||||||
{
|
|
||||||
ID: token.T_WHITESPACE,
|
|
||||||
Value: []byte(" "),
|
|
||||||
Position: &position.Position{
|
|
||||||
StartLine: 1,
|
|
||||||
EndLine: 1,
|
|
||||||
StartPos: 9,
|
|
||||||
EndPos: 10,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Var: &ast.ExprVariable{
|
},
|
||||||
|
Val: &ast.ExprVariable{
|
||||||
|
Position: &position.Position{
|
||||||
|
StartLine: 1,
|
||||||
|
EndLine: 1,
|
||||||
|
StartPos: 11,
|
||||||
|
EndPos: 13,
|
||||||
|
},
|
||||||
|
VarName: &ast.Identifier{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 11,
|
StartPos: 11,
|
||||||
EndPos: 13,
|
EndPos: 13,
|
||||||
},
|
},
|
||||||
VarName: &ast.Identifier{
|
IdentifierTkn: &token.Token{
|
||||||
|
ID: token.T_VARIABLE,
|
||||||
|
Value: []byte("$b"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 11,
|
StartPos: 11,
|
||||||
EndPos: 13,
|
EndPos: 13,
|
||||||
},
|
},
|
||||||
IdentifierTkn: &token.Token{
|
|
||||||
ID: token.T_VARIABLE,
|
|
||||||
Value: []byte("$b"),
|
|
||||||
Position: &position.Position{
|
|
||||||
StartLine: 1,
|
|
||||||
EndLine: 1,
|
|
||||||
StartPos: 11,
|
|
||||||
EndPos: 13,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Value: []byte("$b"),
|
|
||||||
},
|
},
|
||||||
|
Value: []byte("$b"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
100
internal/php5/php5.go
generated
100
internal/php5/php5.go
generated
@ -340,7 +340,7 @@ const yyEofCode = 1
|
|||||||
const yyErrCode = 2
|
const yyErrCode = 2
|
||||||
const yyInitialStackSize = 16
|
const yyInitialStackSize = 16
|
||||||
|
|
||||||
// line internal/php5/php5.y:5669
|
// line internal/php5/php5.y:5657
|
||||||
|
|
||||||
// line yacctab:1
|
// line yacctab:1
|
||||||
var yyExca = [...]int{
|
var yyExca = [...]int{
|
||||||
@ -7825,11 +7825,8 @@ yydefault:
|
|||||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[3].node, yyDollar[6].node),
|
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[3].node, yyDollar[6].node),
|
||||||
Key: yyDollar[3].node,
|
Key: yyDollar[3].node,
|
||||||
DoubleArrowTkn: yyDollar[4].token,
|
DoubleArrowTkn: yyDollar[4].token,
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: yyDollar[5].token,
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[5].token, yyDollar[6].node),
|
Val: yyDollar[6].node,
|
||||||
AmpersandTkn: yyDollar[5].token,
|
|
||||||
Var: yyDollar[6].node,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
@ -7839,15 +7836,12 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 488:
|
case 488:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php5/php5.y:5274
|
// line internal/php5/php5.y:5271
|
||||||
{
|
{
|
||||||
arrayItem := &ast.ExprArrayItem{
|
arrayItem := &ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node),
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: yyDollar[3].token,
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node),
|
Val: yyDollar[4].node,
|
||||||
AmpersandTkn: yyDollar[3].token,
|
|
||||||
Var: yyDollar[4].node,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
@ -7857,7 +7851,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 489:
|
case 489:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php5/php5.y:5290
|
// line internal/php5/php5.y:5284
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ParserSeparatedList{
|
yyVAL.node = &ast.ParserSeparatedList{
|
||||||
Items: []ast.Vertex{
|
Items: []ast.Vertex{
|
||||||
@ -7865,41 +7859,35 @@ yydefault:
|
|||||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node),
|
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node),
|
||||||
Key: yyDollar[1].node,
|
Key: yyDollar[1].node,
|
||||||
DoubleArrowTkn: yyDollar[2].token,
|
DoubleArrowTkn: yyDollar[2].token,
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: yyDollar[3].token,
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node),
|
Val: yyDollar[4].node,
|
||||||
AmpersandTkn: yyDollar[3].token,
|
|
||||||
Var: yyDollar[4].node,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 490:
|
case 490:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php5/php5.y:5307
|
// line internal/php5/php5.y:5298
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ParserSeparatedList{
|
yyVAL.node = &ast.ParserSeparatedList{
|
||||||
Items: []ast.Vertex{
|
Items: []ast.Vertex{
|
||||||
&ast.ExprArrayItem{
|
&ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: yyDollar[1].token,
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
Val: yyDollar[2].node,
|
||||||
AmpersandTkn: yyDollar[1].token,
|
|
||||||
Var: yyDollar[2].node,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 491:
|
case 491:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php5/php5.y:5325
|
// line internal/php5/php5.y:5313
|
||||||
{
|
{
|
||||||
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
|
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
|
||||||
}
|
}
|
||||||
case 492:
|
case 492:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php5/php5.y:5329
|
// line internal/php5/php5.y:5317
|
||||||
{
|
{
|
||||||
yyVAL.list = append(
|
yyVAL.list = append(
|
||||||
yyDollar[1].list,
|
yyDollar[1].list,
|
||||||
@ -7912,13 +7900,13 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 493:
|
case 493:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php5/php5.y:5340
|
// line internal/php5/php5.y:5328
|
||||||
{
|
{
|
||||||
yyVAL.list = []ast.Vertex{yyDollar[1].node}
|
yyVAL.list = []ast.Vertex{yyDollar[1].node}
|
||||||
}
|
}
|
||||||
case 494:
|
case 494:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php5/php5.y:5344
|
// line internal/php5/php5.y:5332
|
||||||
{
|
{
|
||||||
yyVAL.list = []ast.Vertex{
|
yyVAL.list = []ast.Vertex{
|
||||||
&ast.ScalarEncapsedStringPart{
|
&ast.ScalarEncapsedStringPart{
|
||||||
@ -7931,7 +7919,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 495:
|
case 495:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php5/php5.y:5358
|
// line internal/php5/php5.y:5346
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprVariable{
|
yyVAL.node = &ast.ExprVariable{
|
||||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||||
@ -7944,7 +7932,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 496:
|
case 496:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php5/php5.y:5369
|
// line internal/php5/php5.y:5357
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprArrayDimFetch{
|
yyVAL.node = &ast.ExprArrayDimFetch{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||||
@ -7963,7 +7951,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 497:
|
case 497:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php5/php5.y:5386
|
// line internal/php5/php5.y:5374
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprPropertyFetch{
|
yyVAL.node = &ast.ExprPropertyFetch{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||||
@ -7985,7 +7973,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 498:
|
case 498:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php5/php5.y:5406
|
// line internal/php5/php5.y:5394
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ParserBrackets{
|
yyVAL.node = &ast.ParserBrackets{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||||
@ -7999,7 +7987,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 499:
|
case 499:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php5/php5.y:5418
|
// line internal/php5/php5.y:5406
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ParserBrackets{
|
yyVAL.node = &ast.ParserBrackets{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||||
@ -8017,7 +8005,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 500:
|
case 500:
|
||||||
yyDollar = yyS[yypt-6 : yypt+1]
|
yyDollar = yyS[yypt-6 : yypt+1]
|
||||||
// line internal/php5/php5.y:5434
|
// line internal/php5/php5.y:5422
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ParserBrackets{
|
yyVAL.node = &ast.ParserBrackets{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token),
|
||||||
@ -8041,7 +8029,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 501:
|
case 501:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php5/php5.y:5456
|
// line internal/php5/php5.y:5444
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ParserBrackets{
|
yyVAL.node = &ast.ParserBrackets{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||||
@ -8052,7 +8040,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 502:
|
case 502:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php5/php5.y:5468
|
// line internal/php5/php5.y:5456
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ScalarString{
|
yyVAL.node = &ast.ScalarString{
|
||||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||||
@ -8062,7 +8050,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 503:
|
case 503:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php5/php5.y:5476
|
// line internal/php5/php5.y:5464
|
||||||
{
|
{
|
||||||
// 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 {
|
||||||
@ -8081,7 +8069,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 504:
|
case 504:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php5/php5.y:5493
|
// line internal/php5/php5.y:5481
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprVariable{
|
yyVAL.node = &ast.ExprVariable{
|
||||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||||
@ -8094,7 +8082,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 505:
|
case 505:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php5/php5.y:5507
|
// line internal/php5/php5.y:5495
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprIsset{
|
yyVAL.node = &ast.ExprIsset{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||||
@ -8107,7 +8095,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 506:
|
case 506:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php5/php5.y:5518
|
// line internal/php5/php5.y:5506
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprEmpty{
|
yyVAL.node = &ast.ExprEmpty{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||||
@ -8119,7 +8107,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 507:
|
case 507:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php5/php5.y:5528
|
// line internal/php5/php5.y:5516
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprEmpty{
|
yyVAL.node = &ast.ExprEmpty{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||||
@ -8131,7 +8119,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 508:
|
case 508:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php5/php5.y:5538
|
// line internal/php5/php5.y:5526
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprInclude{
|
yyVAL.node = &ast.ExprInclude{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||||
@ -8141,7 +8129,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 509:
|
case 509:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php5/php5.y:5546
|
// line internal/php5/php5.y:5534
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprIncludeOnce{
|
yyVAL.node = &ast.ExprIncludeOnce{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||||
@ -8151,7 +8139,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 510:
|
case 510:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php5/php5.y:5554
|
// line internal/php5/php5.y:5542
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprEval{
|
yyVAL.node = &ast.ExprEval{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||||
@ -8163,7 +8151,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 511:
|
case 511:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php5/php5.y:5564
|
// line internal/php5/php5.y:5552
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprRequire{
|
yyVAL.node = &ast.ExprRequire{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||||
@ -8173,7 +8161,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 512:
|
case 512:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php5/php5.y:5572
|
// line internal/php5/php5.y:5560
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprRequireOnce{
|
yyVAL.node = &ast.ExprRequireOnce{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||||
@ -8183,7 +8171,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 513:
|
case 513:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php5/php5.y:5583
|
// line internal/php5/php5.y:5571
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ParserSeparatedList{
|
yyVAL.node = &ast.ParserSeparatedList{
|
||||||
Items: []ast.Vertex{yyDollar[1].node},
|
Items: []ast.Vertex{yyDollar[1].node},
|
||||||
@ -8191,7 +8179,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 514:
|
case 514:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php5/php5.y:5589
|
// line internal/php5/php5.y:5577
|
||||||
{
|
{
|
||||||
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)
|
||||||
@ -8200,19 +8188,19 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 515:
|
case 515:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php5/php5.y:5599
|
// line internal/php5/php5.y:5587
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
case 516:
|
case 516:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php5/php5.y:5603
|
// line internal/php5/php5.y:5591
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
case 517:
|
case 517:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php5/php5.y:5610
|
// line internal/php5/php5.y:5598
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprClassConstFetch{
|
yyVAL.node = &ast.ExprClassConstFetch{
|
||||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
|
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
|
||||||
@ -8227,7 +8215,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 518:
|
case 518:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php5/php5.y:5623
|
// line internal/php5/php5.y:5611
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprClassConstFetch{
|
yyVAL.node = &ast.ExprClassConstFetch{
|
||||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
|
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
|
||||||
@ -8242,7 +8230,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 519:
|
case 519:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php5/php5.y:5639
|
// line internal/php5/php5.y:5627
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprClassConstFetch{
|
yyVAL.node = &ast.ExprClassConstFetch{
|
||||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
|
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
|
||||||
@ -8257,7 +8245,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 520:
|
case 520:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php5/php5.y:5655
|
// line internal/php5/php5.y:5643
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprClassConstFetch{
|
yyVAL.node = &ast.ExprClassConstFetch{
|
||||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
|
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
|
||||||
|
@ -5255,14 +5255,11 @@ non_empty_array_pair_list:
|
|||||||
| non_empty_array_pair_list ',' expr T_DOUBLE_ARROW '&' w_variable
|
| non_empty_array_pair_list ',' expr T_DOUBLE_ARROW '&' w_variable
|
||||||
{
|
{
|
||||||
arrayItem := &ast.ExprArrayItem{
|
arrayItem := &ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewNodesPosition($3, $6),
|
Position: yylex.(*Parser).builder.NewNodesPosition($3, $6),
|
||||||
Key: $3,
|
Key: $3,
|
||||||
DoubleArrowTkn: $4,
|
DoubleArrowTkn: $4,
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: $5,
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition($5, $6),
|
Val: $6,
|
||||||
AmpersandTkn: $5,
|
|
||||||
Var: $6,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2)
|
$1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2)
|
||||||
@ -5273,12 +5270,9 @@ non_empty_array_pair_list:
|
|||||||
| non_empty_array_pair_list ',' '&' w_variable
|
| non_empty_array_pair_list ',' '&' w_variable
|
||||||
{
|
{
|
||||||
arrayItem := &ast.ExprArrayItem{
|
arrayItem := &ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition($3, $4),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition($3, $4),
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: $3,
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition($3, $4),
|
Val: $4,
|
||||||
AmpersandTkn: $3,
|
|
||||||
Var: $4,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2)
|
$1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2)
|
||||||
@ -5291,14 +5285,11 @@ non_empty_array_pair_list:
|
|||||||
$$ = &ast.ParserSeparatedList{
|
$$ = &ast.ParserSeparatedList{
|
||||||
Items: []ast.Vertex{
|
Items: []ast.Vertex{
|
||||||
&ast.ExprArrayItem{
|
&ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewNodesPosition($1, $4),
|
Position: yylex.(*Parser).builder.NewNodesPosition($1, $4),
|
||||||
Key: $1,
|
Key: $1,
|
||||||
DoubleArrowTkn: $2,
|
DoubleArrowTkn: $2,
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: $3,
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition($3, $4),
|
Val: $4,
|
||||||
AmpersandTkn: $3,
|
|
||||||
Var: $4,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -5308,12 +5299,9 @@ non_empty_array_pair_list:
|
|||||||
$$ = &ast.ParserSeparatedList{
|
$$ = &ast.ParserSeparatedList{
|
||||||
Items: []ast.Vertex{
|
Items: []ast.Vertex{
|
||||||
&ast.ExprArrayItem{
|
&ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition($1, $2),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition($1, $2),
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: $1,
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition($1, $2),
|
Val: $2,
|
||||||
AmpersandTkn: $1,
|
|
||||||
Var: $2,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -34718,61 +34718,53 @@ func TestExprArray_Items(t *testing.T) {
|
|||||||
StartPos: 15,
|
StartPos: 15,
|
||||||
EndPos: 18,
|
EndPos: 18,
|
||||||
},
|
},
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: &token.Token{
|
||||||
|
ID: token.ID(38),
|
||||||
|
Value: []byte("&"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 15,
|
StartPos: 15,
|
||||||
EndPos: 18,
|
EndPos: 16,
|
||||||
},
|
},
|
||||||
AmpersandTkn: &token.Token{
|
FreeFloating: []*token.Token{
|
||||||
ID: token.ID(38),
|
{
|
||||||
Value: []byte("&"),
|
ID: token.T_WHITESPACE,
|
||||||
Position: &position.Position{
|
Value: []byte(" "),
|
||||||
StartLine: 1,
|
Position: &position.Position{
|
||||||
EndLine: 1,
|
StartLine: 1,
|
||||||
StartPos: 15,
|
EndLine: 1,
|
||||||
EndPos: 16,
|
StartPos: 14,
|
||||||
},
|
EndPos: 15,
|
||||||
FreeFloating: []*token.Token{
|
|
||||||
{
|
|
||||||
ID: token.T_WHITESPACE,
|
|
||||||
Value: []byte(" "),
|
|
||||||
Position: &position.Position{
|
|
||||||
StartLine: 1,
|
|
||||||
EndLine: 1,
|
|
||||||
StartPos: 14,
|
|
||||||
EndPos: 15,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Var: &ast.ExprVariable{
|
},
|
||||||
|
Val: &ast.ExprVariable{
|
||||||
|
Position: &position.Position{
|
||||||
|
StartLine: 1,
|
||||||
|
EndLine: 1,
|
||||||
|
StartPos: 16,
|
||||||
|
EndPos: 18,
|
||||||
|
},
|
||||||
|
VarName: &ast.Identifier{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 16,
|
StartPos: 16,
|
||||||
EndPos: 18,
|
EndPos: 18,
|
||||||
},
|
},
|
||||||
VarName: &ast.Identifier{
|
IdentifierTkn: &token.Token{
|
||||||
|
ID: token.T_VARIABLE,
|
||||||
|
Value: []byte("$b"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 16,
|
StartPos: 16,
|
||||||
EndPos: 18,
|
EndPos: 18,
|
||||||
},
|
},
|
||||||
IdentifierTkn: &token.Token{
|
|
||||||
ID: token.T_VARIABLE,
|
|
||||||
Value: []byte("$b"),
|
|
||||||
Position: &position.Position{
|
|
||||||
StartLine: 1,
|
|
||||||
EndLine: 1,
|
|
||||||
StartPos: 16,
|
|
||||||
EndPos: 18,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Value: []byte("$b"),
|
|
||||||
},
|
},
|
||||||
|
Value: []byte("$b"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -43983,61 +43975,53 @@ func TestExprShortArray_Items(t *testing.T) {
|
|||||||
StartPos: 10,
|
StartPos: 10,
|
||||||
EndPos: 13,
|
EndPos: 13,
|
||||||
},
|
},
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: &token.Token{
|
||||||
|
ID: token.ID(38),
|
||||||
|
Value: []byte("&"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 10,
|
StartPos: 10,
|
||||||
EndPos: 13,
|
EndPos: 11,
|
||||||
},
|
},
|
||||||
AmpersandTkn: &token.Token{
|
FreeFloating: []*token.Token{
|
||||||
ID: token.ID(38),
|
{
|
||||||
Value: []byte("&"),
|
ID: token.T_WHITESPACE,
|
||||||
Position: &position.Position{
|
Value: []byte(" "),
|
||||||
StartLine: 1,
|
Position: &position.Position{
|
||||||
EndLine: 1,
|
StartLine: 1,
|
||||||
StartPos: 10,
|
EndLine: 1,
|
||||||
EndPos: 11,
|
StartPos: 9,
|
||||||
},
|
EndPos: 10,
|
||||||
FreeFloating: []*token.Token{
|
|
||||||
{
|
|
||||||
ID: token.T_WHITESPACE,
|
|
||||||
Value: []byte(" "),
|
|
||||||
Position: &position.Position{
|
|
||||||
StartLine: 1,
|
|
||||||
EndLine: 1,
|
|
||||||
StartPos: 9,
|
|
||||||
EndPos: 10,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Var: &ast.ExprVariable{
|
},
|
||||||
|
Val: &ast.ExprVariable{
|
||||||
|
Position: &position.Position{
|
||||||
|
StartLine: 1,
|
||||||
|
EndLine: 1,
|
||||||
|
StartPos: 11,
|
||||||
|
EndPos: 13,
|
||||||
|
},
|
||||||
|
VarName: &ast.Identifier{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 11,
|
StartPos: 11,
|
||||||
EndPos: 13,
|
EndPos: 13,
|
||||||
},
|
},
|
||||||
VarName: &ast.Identifier{
|
IdentifierTkn: &token.Token{
|
||||||
|
ID: token.T_VARIABLE,
|
||||||
|
Value: []byte("$b"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 11,
|
StartPos: 11,
|
||||||
EndPos: 13,
|
EndPos: 13,
|
||||||
},
|
},
|
||||||
IdentifierTkn: &token.Token{
|
|
||||||
ID: token.T_VARIABLE,
|
|
||||||
Value: []byte("$b"),
|
|
||||||
Position: &position.Position{
|
|
||||||
StartLine: 1,
|
|
||||||
EndLine: 1,
|
|
||||||
StartPos: 11,
|
|
||||||
EndPos: 13,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Value: []byte("$b"),
|
|
||||||
},
|
},
|
||||||
|
Value: []byte("$b"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
76
internal/php7/php7.go
generated
76
internal/php7/php7.go
generated
@ -339,7 +339,7 @@ const yyEofCode = 1
|
|||||||
const yyErrCode = 2
|
const yyErrCode = 2
|
||||||
const yyInitialStackSize = 16
|
const yyInitialStackSize = 16
|
||||||
|
|
||||||
// line internal/php7/php7.y:4359
|
// line internal/php7/php7.y:4353
|
||||||
|
|
||||||
// line yacctab:1
|
// line yacctab:1
|
||||||
var yyExca = [...]int{
|
var yyExca = [...]int{
|
||||||
@ -6677,29 +6677,23 @@ yydefault:
|
|||||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node),
|
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node),
|
||||||
Key: yyDollar[1].node,
|
Key: yyDollar[1].node,
|
||||||
DoubleArrowTkn: yyDollar[2].token,
|
DoubleArrowTkn: yyDollar[2].token,
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: yyDollar[3].token,
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node),
|
Val: 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:4008
|
// line internal/php7/php7.y:4005
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprArrayItem{
|
yyVAL.node = &ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: yyDollar[1].token,
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
Val: 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:4019
|
// line internal/php7/php7.y:4013
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprArrayItem{
|
yyVAL.node = &ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||||
@ -6709,7 +6703,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 468:
|
case 468:
|
||||||
yyDollar = yyS[yypt-6 : yypt+1]
|
yyDollar = yyS[yypt-6 : yypt+1]
|
||||||
// line internal/php7/php7.y:4027
|
// line internal/php7/php7.y:4021
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprArrayItem{
|
yyVAL.node = &ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token),
|
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token),
|
||||||
@ -6727,7 +6721,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 469:
|
case 469:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php7/php7.y:4043
|
// line internal/php7/php7.y:4037
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprArrayItem{
|
yyVAL.node = &ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||||
@ -6743,13 +6737,13 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 470:
|
case 470:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:4060
|
// line internal/php7/php7.y:4054
|
||||||
{
|
{
|
||||||
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:4064
|
// line internal/php7/php7.y:4058
|
||||||
{
|
{
|
||||||
yyVAL.list = append(
|
yyVAL.list = append(
|
||||||
yyDollar[1].list,
|
yyDollar[1].list,
|
||||||
@ -6762,13 +6756,13 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 472:
|
case 472:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:4075
|
// line internal/php7/php7.y:4069
|
||||||
{
|
{
|
||||||
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:4079
|
// line internal/php7/php7.y:4073
|
||||||
{
|
{
|
||||||
yyVAL.list = []ast.Vertex{
|
yyVAL.list = []ast.Vertex{
|
||||||
&ast.ScalarEncapsedStringPart{
|
&ast.ScalarEncapsedStringPart{
|
||||||
@ -6781,7 +6775,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 474:
|
case 474:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:4093
|
// line internal/php7/php7.y:4087
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprVariable{
|
yyVAL.node = &ast.ExprVariable{
|
||||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||||
@ -6794,7 +6788,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 475:
|
case 475:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php7/php7.y:4104
|
// line internal/php7/php7.y:4098
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprArrayDimFetch{
|
yyVAL.node = &ast.ExprArrayDimFetch{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||||
@ -6813,7 +6807,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 476:
|
case 476:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:4121
|
// line internal/php7/php7.y:4115
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprPropertyFetch{
|
yyVAL.node = &ast.ExprPropertyFetch{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||||
@ -6835,7 +6829,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 477:
|
case 477:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:4141
|
// line internal/php7/php7.y:4135
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ParserBrackets{
|
yyVAL.node = &ast.ParserBrackets{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||||
@ -6849,7 +6843,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 478:
|
case 478:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:4153
|
// line internal/php7/php7.y:4147
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ParserBrackets{
|
yyVAL.node = &ast.ParserBrackets{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||||
@ -6867,7 +6861,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 479:
|
case 479:
|
||||||
yyDollar = yyS[yypt-6 : yypt+1]
|
yyDollar = yyS[yypt-6 : yypt+1]
|
||||||
// line internal/php7/php7.y:4169
|
// line internal/php7/php7.y:4163
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ParserBrackets{
|
yyVAL.node = &ast.ParserBrackets{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token),
|
||||||
@ -6891,7 +6885,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 480:
|
case 480:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:4191
|
// line internal/php7/php7.y:4185
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ParserBrackets{
|
yyVAL.node = &ast.ParserBrackets{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||||
@ -6902,7 +6896,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 481:
|
case 481:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:4203
|
// line internal/php7/php7.y:4197
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ScalarString{
|
yyVAL.node = &ast.ScalarString{
|
||||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||||
@ -6912,7 +6906,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 482:
|
case 482:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:4211
|
// line internal/php7/php7.y:4205
|
||||||
{
|
{
|
||||||
// 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 {
|
||||||
@ -6931,7 +6925,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 483:
|
case 483:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:4228
|
// line internal/php7/php7.y:4222
|
||||||
{
|
{
|
||||||
_, err := strconv.Atoi(string(yyDollar[2].token.Value))
|
_, err := strconv.Atoi(string(yyDollar[2].token.Value))
|
||||||
isInt := err == nil
|
isInt := err == nil
|
||||||
@ -6957,7 +6951,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 484:
|
case 484:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:4252
|
// line internal/php7/php7.y:4246
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprVariable{
|
yyVAL.node = &ast.ExprVariable{
|
||||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||||
@ -6970,7 +6964,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 485:
|
case 485:
|
||||||
yyDollar = yyS[yypt-5 : yypt+1]
|
yyDollar = yyS[yypt-5 : yypt+1]
|
||||||
// line internal/php7/php7.y:4266
|
// line internal/php7/php7.y:4260
|
||||||
{
|
{
|
||||||
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)
|
||||||
@ -6987,7 +6981,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 486:
|
case 486:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php7/php7.y:4281
|
// line internal/php7/php7.y:4275
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprEmpty{
|
yyVAL.node = &ast.ExprEmpty{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||||
@ -6999,7 +6993,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 487:
|
case 487:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:4291
|
// line internal/php7/php7.y:4285
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprInclude{
|
yyVAL.node = &ast.ExprInclude{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||||
@ -7009,7 +7003,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 488:
|
case 488:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:4299
|
// line internal/php7/php7.y:4293
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprIncludeOnce{
|
yyVAL.node = &ast.ExprIncludeOnce{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||||
@ -7019,7 +7013,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 489:
|
case 489:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php7/php7.y:4307
|
// line internal/php7/php7.y:4301
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprEval{
|
yyVAL.node = &ast.ExprEval{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||||
@ -7031,7 +7025,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 490:
|
case 490:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:4317
|
// line internal/php7/php7.y:4311
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprRequire{
|
yyVAL.node = &ast.ExprRequire{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||||
@ -7041,7 +7035,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 491:
|
case 491:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:4325
|
// line internal/php7/php7.y:4319
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprRequireOnce{
|
yyVAL.node = &ast.ExprRequireOnce{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||||
@ -7051,7 +7045,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 492:
|
case 492:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:4336
|
// line internal/php7/php7.y:4330
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ParserSeparatedList{
|
yyVAL.node = &ast.ParserSeparatedList{
|
||||||
Items: []ast.Vertex{yyDollar[1].node},
|
Items: []ast.Vertex{yyDollar[1].node},
|
||||||
@ -7059,7 +7053,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 493:
|
case 493:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:4342
|
// line internal/php7/php7.y:4336
|
||||||
{
|
{
|
||||||
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)
|
||||||
@ -7068,7 +7062,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 494:
|
case 494:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:4352
|
// line internal/php7/php7.y:4346
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
|
@ -3994,25 +3994,19 @@ array_pair:
|
|||||||
| expr T_DOUBLE_ARROW '&' variable
|
| expr T_DOUBLE_ARROW '&' variable
|
||||||
{
|
{
|
||||||
$$ = &ast.ExprArrayItem{
|
$$ = &ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewNodesPosition($1, $4),
|
Position: yylex.(*Parser).builder.NewNodesPosition($1, $4),
|
||||||
Key: $1,
|
Key: $1,
|
||||||
DoubleArrowTkn: $2,
|
DoubleArrowTkn: $2,
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: $3,
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition($3, $4),
|
Val: $4,
|
||||||
AmpersandTkn: $3,
|
|
||||||
Var: $4,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
| '&' variable
|
| '&' variable
|
||||||
{
|
{
|
||||||
$$ = &ast.ExprArrayItem{
|
$$ = &ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition($1, $2),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition($1, $2),
|
||||||
Val: &ast.ExprReference{
|
AmpersandTkn: $1,
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition($1, $2),
|
Val: $2,
|
||||||
AmpersandTkn: $1,
|
|
||||||
Var: $2,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
| T_ELLIPSIS expr
|
| T_ELLIPSIS expr
|
||||||
|
@ -1177,6 +1177,7 @@ type ExprArrayItem struct {
|
|||||||
EllipsisTkn *token.Token
|
EllipsisTkn *token.Token
|
||||||
Key Vertex
|
Key Vertex
|
||||||
DoubleArrowTkn *token.Token
|
DoubleArrowTkn *token.Token
|
||||||
|
AmpersandTkn *token.Token
|
||||||
Val Vertex
|
Val Vertex
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1056,6 +1056,7 @@ func (v *Dumper) ExprArrayItem(n *ast.ExprArrayItem) {
|
|||||||
v.dumpToken("EllipsisTkn", n.EllipsisTkn)
|
v.dumpToken("EllipsisTkn", n.EllipsisTkn)
|
||||||
v.dumpVertex("Key", n.Key)
|
v.dumpVertex("Key", n.Key)
|
||||||
v.dumpToken("DoubleArrowTkn", n.DoubleArrowTkn)
|
v.dumpToken("DoubleArrowTkn", n.DoubleArrowTkn)
|
||||||
|
v.dumpToken("AmpersandTkn", n.AmpersandTkn)
|
||||||
v.dumpVertex("Val", n.Val)
|
v.dumpVertex("Val", n.Val)
|
||||||
|
|
||||||
v.indent--
|
v.indent--
|
||||||
|
@ -641,6 +641,7 @@ func (p *printer) ExprArrayItem(n *ast.ExprArrayItem) {
|
|||||||
p.printToken(n.EllipsisTkn, nil)
|
p.printToken(n.EllipsisTkn, nil)
|
||||||
p.printNode(n.Key)
|
p.printNode(n.Key)
|
||||||
p.printToken(n.DoubleArrowTkn, p.ifNode(n.Key, []byte("=>")))
|
p.printToken(n.DoubleArrowTkn, p.ifNode(n.Key, []byte("=>")))
|
||||||
|
p.printToken(n.AmpersandTkn, nil)
|
||||||
p.printNode(n.Val)
|
p.printNode(n.Val)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1559,9 +1559,31 @@ func TestPrinterPrintExprArrayItem(t *testing.T) {
|
|||||||
|
|
||||||
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
||||||
n := &ast.ExprArrayItem{
|
n := &ast.ExprArrayItem{
|
||||||
Val: &ast.ExprReference{Var: &ast.ExprVariable{
|
Val: &ast.ExprVariable{
|
||||||
VarName: &ast.Identifier{Value: []byte("$world")},
|
VarName: &ast.Identifier{Value: []byte("$world")},
|
||||||
}},
|
},
|
||||||
|
}
|
||||||
|
n.Accept(p)
|
||||||
|
|
||||||
|
expected := `$world`
|
||||||
|
actual := o.String()
|
||||||
|
|
||||||
|
if expected != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPrinterPrintExprArrayItem_Reference(t *testing.T) {
|
||||||
|
o := bytes.NewBufferString("")
|
||||||
|
|
||||||
|
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
||||||
|
n := &ast.ExprArrayItem{
|
||||||
|
AmpersandTkn: &token.Token{
|
||||||
|
Value: []byte("&"),
|
||||||
|
},
|
||||||
|
Val: &ast.ExprVariable{
|
||||||
|
VarName: &ast.Identifier{Value: []byte("$world")},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
n.Accept(p)
|
n.Accept(p)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user