refactoring: update ast structure of "Variable" node
This commit is contained in:
parent
69919594fd
commit
2c09138600
@ -16726,90 +16726,82 @@ func TestStmtGlobal_Vars(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
VarName: &ast.ParserBrackets{
|
OpenCurlyBracketTkn: &token.Token{
|
||||||
|
ID: token.ID(123),
|
||||||
|
Value: []byte("{"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 24,
|
StartPos: 24,
|
||||||
EndPos: 31,
|
EndPos: 25,
|
||||||
},
|
},
|
||||||
OpenBracketTkn: &token.Token{
|
},
|
||||||
ID: token.ID(123),
|
VarName: &ast.ExprFunctionCall{
|
||||||
Value: []byte("{"),
|
Position: &position.Position{
|
||||||
Position: &position.Position{
|
StartLine: 1,
|
||||||
StartLine: 1,
|
EndLine: 1,
|
||||||
EndLine: 1,
|
StartPos: 25,
|
||||||
StartPos: 24,
|
EndPos: 30,
|
||||||
EndPos: 25,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
Child: &ast.ExprFunctionCall{
|
Function: &ast.NameName{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 25,
|
StartPos: 25,
|
||||||
EndPos: 30,
|
EndPos: 28,
|
||||||
},
|
},
|
||||||
Function: &ast.NameName{
|
Parts: []ast.Vertex{
|
||||||
Position: &position.Position{
|
&ast.NameNamePart{
|
||||||
StartLine: 1,
|
Position: &position.Position{
|
||||||
EndLine: 1,
|
StartLine: 1,
|
||||||
StartPos: 25,
|
EndLine: 1,
|
||||||
EndPos: 28,
|
StartPos: 25,
|
||||||
},
|
EndPos: 28,
|
||||||
Parts: []ast.Vertex{
|
},
|
||||||
&ast.NameNamePart{
|
StringTkn: &token.Token{
|
||||||
|
ID: token.T_STRING,
|
||||||
|
Value: []byte("foo"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 25,
|
StartPos: 25,
|
||||||
EndPos: 28,
|
EndPos: 28,
|
||||||
},
|
},
|
||||||
StringTkn: &token.Token{
|
|
||||||
ID: token.T_STRING,
|
|
||||||
Value: []byte("foo"),
|
|
||||||
Position: &position.Position{
|
|
||||||
StartLine: 1,
|
|
||||||
EndLine: 1,
|
|
||||||
StartPos: 25,
|
|
||||||
EndPos: 28,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Value: []byte("foo"),
|
|
||||||
},
|
},
|
||||||
},
|
Value: []byte("foo"),
|
||||||
},
|
|
||||||
OpenParenthesisTkn: &token.Token{
|
|
||||||
ID: token.ID(40),
|
|
||||||
Value: []byte("("),
|
|
||||||
Position: &position.Position{
|
|
||||||
StartLine: 1,
|
|
||||||
EndLine: 1,
|
|
||||||
StartPos: 28,
|
|
||||||
EndPos: 29,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CloseParenthesisTkn: &token.Token{
|
|
||||||
ID: token.ID(41),
|
|
||||||
Value: []byte(")"),
|
|
||||||
Position: &position.Position{
|
|
||||||
StartLine: 1,
|
|
||||||
EndLine: 1,
|
|
||||||
StartPos: 29,
|
|
||||||
EndPos: 30,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
CloseBracketTkn: &token.Token{
|
OpenParenthesisTkn: &token.Token{
|
||||||
ID: token.ID(125),
|
ID: token.ID(40),
|
||||||
Value: []byte("}"),
|
Value: []byte("("),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 30,
|
StartPos: 28,
|
||||||
EndPos: 31,
|
EndPos: 29,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
CloseParenthesisTkn: &token.Token{
|
||||||
|
ID: token.ID(41),
|
||||||
|
Value: []byte(")"),
|
||||||
|
Position: &position.Position{
|
||||||
|
StartLine: 1,
|
||||||
|
EndLine: 1,
|
||||||
|
StartPos: 29,
|
||||||
|
EndPos: 30,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
CloseCurlyBracketTkn: &token.Token{
|
||||||
|
ID: token.ID(125),
|
||||||
|
Value: []byte("}"),
|
||||||
|
Position: &position.Position{
|
||||||
|
StartLine: 1,
|
||||||
|
EndLine: 1,
|
||||||
|
StartPos: 30,
|
||||||
|
EndPos: 31,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
740
internal/php5/php5.go
generated
740
internal/php5/php5.go
generated
File diff suppressed because it is too large
Load Diff
@ -2022,14 +2022,11 @@ global_var:
|
|||||||
| '$' '{' expr '}'
|
| '$' '{' expr '}'
|
||||||
{
|
{
|
||||||
$$ = &ast.ExprVariable{
|
$$ = &ast.ExprVariable{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition($1, $4),
|
Position: yylex.(*Parser).builder.NewTokensPosition($1, $4),
|
||||||
DollarTkn: $1,
|
DollarTkn: $1,
|
||||||
VarName: &ast.ParserBrackets{
|
OpenCurlyBracketTkn: $2,
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition($2, $4),
|
VarName: $3,
|
||||||
OpenBracketTkn: $2,
|
CloseCurlyBracketTkn: $4,
|
||||||
Child: $3,
|
|
||||||
CloseBracketTkn: $4,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
@ -5017,14 +5014,11 @@ compound_variable:
|
|||||||
| '$' '{' expr '}'
|
| '$' '{' expr '}'
|
||||||
{
|
{
|
||||||
$$ = &ast.ExprVariable{
|
$$ = &ast.ExprVariable{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition($1, $4),
|
Position: yylex.(*Parser).builder.NewTokensPosition($1, $4),
|
||||||
DollarTkn: $1,
|
DollarTkn: $1,
|
||||||
VarName: &ast.ParserBrackets{
|
OpenCurlyBracketTkn: $2,
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition($2, $4),
|
VarName: $3,
|
||||||
OpenBracketTkn: $2,
|
CloseCurlyBracketTkn: $4,
|
||||||
Child: $3,
|
|
||||||
CloseBracketTkn: $4,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
@ -18412,90 +18412,82 @@ func TestStmtGlobal_Vars(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
VarName: &ast.ParserBrackets{
|
OpenCurlyBracketTkn: &token.Token{
|
||||||
|
ID: token.ID(123),
|
||||||
|
Value: []byte("{"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 24,
|
StartPos: 24,
|
||||||
EndPos: 31,
|
EndPos: 25,
|
||||||
},
|
},
|
||||||
OpenBracketTkn: &token.Token{
|
},
|
||||||
ID: token.ID(123),
|
VarName: &ast.ExprFunctionCall{
|
||||||
Value: []byte("{"),
|
Position: &position.Position{
|
||||||
Position: &position.Position{
|
StartLine: 1,
|
||||||
StartLine: 1,
|
EndLine: 1,
|
||||||
EndLine: 1,
|
StartPos: 25,
|
||||||
StartPos: 24,
|
EndPos: 30,
|
||||||
EndPos: 25,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
Child: &ast.ExprFunctionCall{
|
Function: &ast.NameName{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 25,
|
StartPos: 25,
|
||||||
EndPos: 30,
|
EndPos: 28,
|
||||||
},
|
},
|
||||||
Function: &ast.NameName{
|
Parts: []ast.Vertex{
|
||||||
Position: &position.Position{
|
&ast.NameNamePart{
|
||||||
StartLine: 1,
|
Position: &position.Position{
|
||||||
EndLine: 1,
|
StartLine: 1,
|
||||||
StartPos: 25,
|
EndLine: 1,
|
||||||
EndPos: 28,
|
StartPos: 25,
|
||||||
},
|
EndPos: 28,
|
||||||
Parts: []ast.Vertex{
|
},
|
||||||
&ast.NameNamePart{
|
StringTkn: &token.Token{
|
||||||
|
ID: token.T_STRING,
|
||||||
|
Value: []byte("foo"),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 25,
|
StartPos: 25,
|
||||||
EndPos: 28,
|
EndPos: 28,
|
||||||
},
|
},
|
||||||
StringTkn: &token.Token{
|
|
||||||
ID: token.T_STRING,
|
|
||||||
Value: []byte("foo"),
|
|
||||||
Position: &position.Position{
|
|
||||||
StartLine: 1,
|
|
||||||
EndLine: 1,
|
|
||||||
StartPos: 25,
|
|
||||||
EndPos: 28,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Value: []byte("foo"),
|
|
||||||
},
|
},
|
||||||
},
|
Value: []byte("foo"),
|
||||||
},
|
|
||||||
OpenParenthesisTkn: &token.Token{
|
|
||||||
ID: token.ID(40),
|
|
||||||
Value: []byte("("),
|
|
||||||
Position: &position.Position{
|
|
||||||
StartLine: 1,
|
|
||||||
EndLine: 1,
|
|
||||||
StartPos: 28,
|
|
||||||
EndPos: 29,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CloseParenthesisTkn: &token.Token{
|
|
||||||
ID: token.ID(41),
|
|
||||||
Value: []byte(")"),
|
|
||||||
Position: &position.Position{
|
|
||||||
StartLine: 1,
|
|
||||||
EndLine: 1,
|
|
||||||
StartPos: 29,
|
|
||||||
EndPos: 30,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
CloseBracketTkn: &token.Token{
|
OpenParenthesisTkn: &token.Token{
|
||||||
ID: token.ID(125),
|
ID: token.ID(40),
|
||||||
Value: []byte("}"),
|
Value: []byte("("),
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 1,
|
StartLine: 1,
|
||||||
EndLine: 1,
|
EndLine: 1,
|
||||||
StartPos: 30,
|
StartPos: 28,
|
||||||
EndPos: 31,
|
EndPos: 29,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
CloseParenthesisTkn: &token.Token{
|
||||||
|
ID: token.ID(41),
|
||||||
|
Value: []byte(")"),
|
||||||
|
Position: &position.Position{
|
||||||
|
StartLine: 1,
|
||||||
|
EndLine: 1,
|
||||||
|
StartPos: 29,
|
||||||
|
EndPos: 30,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
CloseCurlyBracketTkn: &token.Token{
|
||||||
|
ID: token.ID(125),
|
||||||
|
Value: []byte("}"),
|
||||||
|
Position: &position.Position{
|
||||||
|
StartLine: 1,
|
||||||
|
EndLine: 1,
|
||||||
|
StartPos: 30,
|
||||||
|
EndPos: 31,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
119
internal/php7/php7.go
generated
119
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:4353
|
// line internal/php7/php7.y:4350
|
||||||
|
|
||||||
// line yacctab:1
|
// line yacctab:1
|
||||||
var yyExca = [...]int{
|
var yyExca = [...]int{
|
||||||
@ -6448,19 +6448,16 @@ yydefault:
|
|||||||
// line internal/php7/php7.y:3791
|
// line internal/php7/php7.y:3791
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprVariable{
|
yyVAL.node = &ast.ExprVariable{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
|
||||||
DollarTkn: yyDollar[1].token,
|
DollarTkn: yyDollar[1].token,
|
||||||
VarName: &ast.ParserBrackets{
|
OpenCurlyBracketTkn: yyDollar[2].token,
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token),
|
VarName: yyDollar[3].node,
|
||||||
OpenBracketTkn: yyDollar[2].token,
|
CloseCurlyBracketTkn: yyDollar[4].token,
|
||||||
Child: yyDollar[3].node,
|
|
||||||
CloseBracketTkn: yyDollar[4].token,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 443:
|
case 443:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:3804
|
// line internal/php7/php7.y:3801
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprVariable{
|
yyVAL.node = &ast.ExprVariable{
|
||||||
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
|
||||||
@ -6470,7 +6467,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 444:
|
case 444:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:3815
|
// line internal/php7/php7.y:3812
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprStaticPropertyFetch{
|
yyVAL.node = &ast.ExprStaticPropertyFetch{
|
||||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||||
@ -6481,7 +6478,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 445:
|
case 445:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:3824
|
// line internal/php7/php7.y:3821
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprStaticPropertyFetch{
|
yyVAL.node = &ast.ExprStaticPropertyFetch{
|
||||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||||
@ -6492,13 +6489,13 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 446:
|
case 446:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:3836
|
// line internal/php7/php7.y:3833
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
case 447:
|
case 447:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php7/php7.y:3840
|
// line internal/php7/php7.y:3837
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprArrayDimFetch{
|
yyVAL.node = &ast.ExprArrayDimFetch{
|
||||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
|
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
|
||||||
@ -6510,7 +6507,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 448:
|
case 448:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php7/php7.y:3850
|
// line internal/php7/php7.y:3847
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprArrayDimFetch{
|
yyVAL.node = &ast.ExprArrayDimFetch{
|
||||||
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
|
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
|
||||||
@ -6522,7 +6519,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 449:
|
case 449:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:3860
|
// line internal/php7/php7.y:3857
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprPropertyFetch{
|
yyVAL.node = &ast.ExprPropertyFetch{
|
||||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||||
@ -6533,7 +6530,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 450:
|
case 450:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:3869
|
// line internal/php7/php7.y:3866
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprStaticPropertyFetch{
|
yyVAL.node = &ast.ExprStaticPropertyFetch{
|
||||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||||
@ -6544,7 +6541,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 451:
|
case 451:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:3878
|
// line internal/php7/php7.y:3875
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprStaticPropertyFetch{
|
yyVAL.node = &ast.ExprStaticPropertyFetch{
|
||||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||||
@ -6555,7 +6552,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 452:
|
case 452:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:3890
|
// line internal/php7/php7.y:3887
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.Identifier{
|
yyVAL.node = &ast.Identifier{
|
||||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||||
@ -6565,7 +6562,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 453:
|
case 453:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:3898
|
// line internal/php7/php7.y:3895
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -6576,13 +6573,13 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 454:
|
case 454:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:3907
|
// line internal/php7/php7.y:3904
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
case 455:
|
case 455:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:3914
|
// line internal/php7/php7.y:3911
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.Identifier{
|
yyVAL.node = &ast.Identifier{
|
||||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||||
@ -6592,7 +6589,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 456:
|
case 456:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:3922
|
// line internal/php7/php7.y:3919
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -6603,13 +6600,13 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 457:
|
case 457:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:3931
|
// line internal/php7/php7.y:3928
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
case 458:
|
case 458:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:3938
|
// line internal/php7/php7.y:3935
|
||||||
{
|
{
|
||||||
pairList := yyDollar[1].node.(*ast.ParserSeparatedList)
|
pairList := yyDollar[1].node.(*ast.ParserSeparatedList)
|
||||||
fistPair := pairList.Items[0].(*ast.ExprArrayItem)
|
fistPair := pairList.Items[0].(*ast.ExprArrayItem)
|
||||||
@ -6622,19 +6619,19 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 459:
|
case 459:
|
||||||
yyDollar = yyS[yypt-0 : yypt+1]
|
yyDollar = yyS[yypt-0 : yypt+1]
|
||||||
// line internal/php7/php7.y:3952
|
// line internal/php7/php7.y:3949
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprArrayItem{}
|
yyVAL.node = &ast.ExprArrayItem{}
|
||||||
}
|
}
|
||||||
case 460:
|
case 460:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:3956
|
// line internal/php7/php7.y:3953
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
case 461:
|
case 461:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:3963
|
// line internal/php7/php7.y:3960
|
||||||
{
|
{
|
||||||
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)
|
||||||
@ -6643,7 +6640,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 462:
|
case 462:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:3970
|
// line internal/php7/php7.y:3967
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ParserSeparatedList{
|
yyVAL.node = &ast.ParserSeparatedList{
|
||||||
Items: []ast.Vertex{yyDollar[1].node},
|
Items: []ast.Vertex{yyDollar[1].node},
|
||||||
@ -6651,7 +6648,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 463:
|
case 463:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:3979
|
// line internal/php7/php7.y:3976
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprArrayItem{
|
yyVAL.node = &ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
|
||||||
@ -6662,7 +6659,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 464:
|
case 464:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:3988
|
// line internal/php7/php7.y:3985
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprArrayItem{
|
yyVAL.node = &ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node),
|
Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node),
|
||||||
@ -6671,7 +6668,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 465:
|
case 465:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php7/php7.y:3995
|
// line internal/php7/php7.y:3992
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprArrayItem{
|
yyVAL.node = &ast.ExprArrayItem{
|
||||||
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node),
|
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node),
|
||||||
@ -6683,7 +6680,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 466:
|
case 466:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:4005
|
// line internal/php7/php7.y:4002
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -6693,7 +6690,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 467:
|
case 467:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:4013
|
// line internal/php7/php7.y:4010
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -6703,7 +6700,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 468:
|
case 468:
|
||||||
yyDollar = yyS[yypt-6 : yypt+1]
|
yyDollar = yyS[yypt-6 : yypt+1]
|
||||||
// line internal/php7/php7.y:4021
|
// line internal/php7/php7.y:4018
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -6721,7 +6718,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 469:
|
case 469:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php7/php7.y:4037
|
// line internal/php7/php7.y:4034
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -6737,13 +6734,13 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 470:
|
case 470:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:4054
|
// line internal/php7/php7.y:4051
|
||||||
{
|
{
|
||||||
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:4058
|
// line internal/php7/php7.y:4055
|
||||||
{
|
{
|
||||||
yyVAL.list = append(
|
yyVAL.list = append(
|
||||||
yyDollar[1].list,
|
yyDollar[1].list,
|
||||||
@ -6756,13 +6753,13 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 472:
|
case 472:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:4069
|
// line internal/php7/php7.y:4066
|
||||||
{
|
{
|
||||||
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:4073
|
// line internal/php7/php7.y:4070
|
||||||
{
|
{
|
||||||
yyVAL.list = []ast.Vertex{
|
yyVAL.list = []ast.Vertex{
|
||||||
&ast.ScalarEncapsedStringPart{
|
&ast.ScalarEncapsedStringPart{
|
||||||
@ -6775,7 +6772,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 474:
|
case 474:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:4087
|
// line internal/php7/php7.y:4084
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprVariable{
|
yyVAL.node = &ast.ExprVariable{
|
||||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||||
@ -6788,7 +6785,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 475:
|
case 475:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php7/php7.y:4098
|
// line internal/php7/php7.y:4095
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -6807,7 +6804,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 476:
|
case 476:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:4115
|
// line internal/php7/php7.y:4112
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -6829,7 +6826,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 477:
|
case 477:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:4135
|
// line internal/php7/php7.y:4132
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -6843,7 +6840,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 478:
|
case 478:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:4147
|
// line internal/php7/php7.y:4144
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -6861,7 +6858,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 479:
|
case 479:
|
||||||
yyDollar = yyS[yypt-6 : yypt+1]
|
yyDollar = yyS[yypt-6 : yypt+1]
|
||||||
// line internal/php7/php7.y:4163
|
// line internal/php7/php7.y:4160
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -6885,7 +6882,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 480:
|
case 480:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:4185
|
// line internal/php7/php7.y:4182
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -6896,7 +6893,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 481:
|
case 481:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:4197
|
// line internal/php7/php7.y:4194
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ScalarString{
|
yyVAL.node = &ast.ScalarString{
|
||||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||||
@ -6906,7 +6903,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 482:
|
case 482:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:4205
|
// line internal/php7/php7.y:4202
|
||||||
{
|
{
|
||||||
// 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 {
|
||||||
@ -6925,7 +6922,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 483:
|
case 483:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:4222
|
// line internal/php7/php7.y:4219
|
||||||
{
|
{
|
||||||
_, err := strconv.Atoi(string(yyDollar[2].token.Value))
|
_, err := strconv.Atoi(string(yyDollar[2].token.Value))
|
||||||
isInt := err == nil
|
isInt := err == nil
|
||||||
@ -6951,7 +6948,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 484:
|
case 484:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:4246
|
// line internal/php7/php7.y:4243
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ExprVariable{
|
yyVAL.node = &ast.ExprVariable{
|
||||||
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
|
||||||
@ -6964,7 +6961,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 485:
|
case 485:
|
||||||
yyDollar = yyS[yypt-5 : yypt+1]
|
yyDollar = yyS[yypt-5 : yypt+1]
|
||||||
// line internal/php7/php7.y:4260
|
// line internal/php7/php7.y:4257
|
||||||
{
|
{
|
||||||
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)
|
||||||
@ -6981,7 +6978,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 486:
|
case 486:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php7/php7.y:4275
|
// line internal/php7/php7.y:4272
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -6993,7 +6990,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 487:
|
case 487:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:4285
|
// line internal/php7/php7.y:4282
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -7003,7 +7000,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 488:
|
case 488:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:4293
|
// line internal/php7/php7.y:4290
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -7013,7 +7010,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 489:
|
case 489:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
// line internal/php7/php7.y:4301
|
// line internal/php7/php7.y:4298
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -7025,7 +7022,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 490:
|
case 490:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:4311
|
// line internal/php7/php7.y:4308
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -7035,7 +7032,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 491:
|
case 491:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
// line internal/php7/php7.y:4319
|
// line internal/php7/php7.y:4316
|
||||||
{
|
{
|
||||||
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),
|
||||||
@ -7045,7 +7042,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 492:
|
case 492:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:4330
|
// line internal/php7/php7.y:4327
|
||||||
{
|
{
|
||||||
yyVAL.node = &ast.ParserSeparatedList{
|
yyVAL.node = &ast.ParserSeparatedList{
|
||||||
Items: []ast.Vertex{yyDollar[1].node},
|
Items: []ast.Vertex{yyDollar[1].node},
|
||||||
@ -7053,7 +7050,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 493:
|
case 493:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
// line internal/php7/php7.y:4336
|
// line internal/php7/php7.y:4333
|
||||||
{
|
{
|
||||||
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)
|
||||||
@ -7062,7 +7059,7 @@ yydefault:
|
|||||||
}
|
}
|
||||||
case 494:
|
case 494:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
// line internal/php7/php7.y:4346
|
// line internal/php7/php7.y:4343
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
|
@ -3790,14 +3790,11 @@ simple_variable:
|
|||||||
| '$' '{' expr '}'
|
| '$' '{' expr '}'
|
||||||
{
|
{
|
||||||
$$ = &ast.ExprVariable{
|
$$ = &ast.ExprVariable{
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition($1, $4),
|
Position: yylex.(*Parser).builder.NewTokensPosition($1, $4),
|
||||||
DollarTkn: $1,
|
DollarTkn: $1,
|
||||||
VarName: &ast.ParserBrackets{
|
OpenCurlyBracketTkn: $2,
|
||||||
Position: yylex.(*Parser).builder.NewTokensPosition($2, $4),
|
VarName: $3,
|
||||||
OpenBracketTkn: $2,
|
CloseCurlyBracketTkn: $4,
|
||||||
Child: $3,
|
|
||||||
CloseBracketTkn: $4,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
| '$' simple_variable
|
| '$' simple_variable
|
||||||
|
@ -1761,9 +1761,11 @@ func (n *ExprUnaryPlus) GetPosition() *position.Position {
|
|||||||
|
|
||||||
// ExprVariable node
|
// ExprVariable node
|
||||||
type ExprVariable struct {
|
type ExprVariable struct {
|
||||||
Position *position.Position
|
Position *position.Position
|
||||||
DollarTkn *token.Token
|
DollarTkn *token.Token
|
||||||
VarName Vertex
|
OpenCurlyBracketTkn *token.Token
|
||||||
|
VarName Vertex
|
||||||
|
CloseCurlyBracketTkn *token.Token
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *ExprVariable) Accept(v NodeVisitor) {
|
func (n *ExprVariable) Accept(v NodeVisitor) {
|
||||||
|
@ -1537,7 +1537,9 @@ func (v *Dumper) ExprVariable(n *ast.ExprVariable) {
|
|||||||
|
|
||||||
v.dumpPosition(n.Position)
|
v.dumpPosition(n.Position)
|
||||||
v.dumpToken("DollarTkn", n.DollarTkn)
|
v.dumpToken("DollarTkn", n.DollarTkn)
|
||||||
|
v.dumpToken("OpenCurlyBracketTkn", n.OpenCurlyBracketTkn)
|
||||||
v.dumpVertex("VarName", n.VarName)
|
v.dumpVertex("VarName", n.VarName)
|
||||||
|
v.dumpToken("CloseCurlyBracketTkn", n.CloseCurlyBracketTkn)
|
||||||
|
|
||||||
v.indent--
|
v.indent--
|
||||||
v.print(v.indent, "},\n")
|
v.print(v.indent, "},\n")
|
||||||
|
@ -1417,6 +1417,16 @@ func (f *formatter) ExprVariable(n *ast.ExprVariable) {
|
|||||||
n.DollarTkn = f.newToken('$', []byte("$"))
|
n.DollarTkn = f.newToken('$', []byte("$"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
n.OpenCurlyBracketTkn = nil
|
||||||
|
n.CloseCurlyBracketTkn = nil
|
||||||
|
switch n.VarName.(type) {
|
||||||
|
case *ast.Identifier:
|
||||||
|
case *ast.ExprVariable:
|
||||||
|
default:
|
||||||
|
n.OpenCurlyBracketTkn = f.newToken('{', []byte("{"))
|
||||||
|
n.CloseCurlyBracketTkn = f.newToken('}', []byte("}"))
|
||||||
|
}
|
||||||
|
|
||||||
n.VarName.Accept(f)
|
n.VarName.Accept(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4877,6 +4877,29 @@ func TestFormatter_ExprVariable_Variable(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFormatter_ExprVariable_Expression(t *testing.T) {
|
||||||
|
o := bytes.NewBufferString("")
|
||||||
|
|
||||||
|
n := &ast.ExprVariable{
|
||||||
|
VarName: &ast.ScalarString{
|
||||||
|
Value: []byte("'foo'"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
f := visitor.NewFormatter().WithState(visitor.FormatterStatePHP).WithIndent(1)
|
||||||
|
n.Accept(f)
|
||||||
|
|
||||||
|
p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP)
|
||||||
|
n.Accept(p)
|
||||||
|
|
||||||
|
expected := `${'foo'}`
|
||||||
|
actual := o.String()
|
||||||
|
|
||||||
|
if expected != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestFormatter_ExprYield(t *testing.T) {
|
func TestFormatter_ExprYield(t *testing.T) {
|
||||||
o := bytes.NewBufferString("")
|
o := bytes.NewBufferString("")
|
||||||
|
|
||||||
|
@ -868,7 +868,9 @@ func (p *printer) ExprUnaryPlus(n *ast.ExprUnaryPlus) {
|
|||||||
|
|
||||||
func (p *printer) ExprVariable(n *ast.ExprVariable) {
|
func (p *printer) ExprVariable(n *ast.ExprVariable) {
|
||||||
p.printToken(n.DollarTkn, nil)
|
p.printToken(n.DollarTkn, nil)
|
||||||
|
p.printToken(n.OpenCurlyBracketTkn, nil)
|
||||||
p.printNode(n.VarName)
|
p.printNode(n.VarName)
|
||||||
|
p.printToken(n.CloseCurlyBracketTkn, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *printer) ExprYield(n *ast.ExprYield) {
|
func (p *printer) ExprYield(n *ast.ExprYield) {
|
||||||
|
@ -2609,13 +2609,19 @@ func TestPrinterPrintVariable(t *testing.T) {
|
|||||||
DollarTkn: &token.Token{
|
DollarTkn: &token.Token{
|
||||||
Value: []byte("$"),
|
Value: []byte("$"),
|
||||||
},
|
},
|
||||||
|
OpenCurlyBracketTkn: &token.Token{
|
||||||
|
Value: []byte("{"),
|
||||||
|
},
|
||||||
VarName: &ast.ExprVariable{
|
VarName: &ast.ExprVariable{
|
||||||
VarName: &ast.Identifier{Value: []byte("$var")},
|
VarName: &ast.Identifier{Value: []byte("$var")},
|
||||||
},
|
},
|
||||||
|
CloseCurlyBracketTkn: &token.Token{
|
||||||
|
Value: []byte("}"),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
n.Accept(p)
|
n.Accept(p)
|
||||||
|
|
||||||
expected := `$$var`
|
expected := `${$var}`
|
||||||
actual := o.String()
|
actual := o.String()
|
||||||
|
|
||||||
if expected != actual {
|
if expected != actual {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user