refactoring: update ast structure of "Closure" and "ClosureUse" nodes

This commit is contained in:
Vadym Slizov
2020-12-26 18:20:10 +02:00
parent 03c7979ccd
commit b85bae2ec1
14 changed files with 1092 additions and 1017 deletions

View File

@@ -36268,7 +36268,7 @@ func TestExprClosure_Use(t *testing.T) {
EndPos: 36,
},
FunctionTkn: &token.Token{
ID: token.T_FUNCTION,
ID: token.T_FUNCTION,
Value: []byte("function"),
Position: &position.Position{
StartLine: 1,
@@ -36278,7 +36278,7 @@ func TestExprClosure_Use(t *testing.T) {
},
FreeFloating: []*token.Token{
{
ID: token.T_OPEN_TAG,
ID: token.T_OPEN_TAG,
Value: []byte("<?"),
Position: &position.Position{
StartLine: 1,
@@ -36288,7 +36288,7 @@ func TestExprClosure_Use(t *testing.T) {
},
},
{
ID: token.T_WHITESPACE,
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
@@ -36300,7 +36300,7 @@ func TestExprClosure_Use(t *testing.T) {
},
},
OpenParenthesisTkn: &token.Token{
ID: token.ID(40),
ID: token.ID(40),
Value: []byte("("),
Position: &position.Position{
StartLine: 1,
@@ -36332,7 +36332,7 @@ func TestExprClosure_Use(t *testing.T) {
EndPos: 14,
},
IdentifierTkn: &token.Token{
ID: token.T_VARIABLE,
ID: token.T_VARIABLE,
Value: []byte("$a"),
Position: &position.Position{
StartLine: 1,
@@ -36367,7 +36367,7 @@ func TestExprClosure_Use(t *testing.T) {
EndPos: 18,
},
IdentifierTkn: &token.Token{
ID: token.T_VARIABLE,
ID: token.T_VARIABLE,
Value: []byte("$b"),
Position: &position.Position{
StartLine: 1,
@@ -36377,7 +36377,7 @@ func TestExprClosure_Use(t *testing.T) {
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
@@ -36395,7 +36395,7 @@ func TestExprClosure_Use(t *testing.T) {
},
SeparatorTkns: []*token.Token{
{
ID: token.ID(44),
ID: token.ID(44),
Value: []byte(","),
Position: &position.Position{
StartLine: 1,
@@ -36406,7 +36406,7 @@ func TestExprClosure_Use(t *testing.T) {
},
},
CloseParenthesisTkn: &token.Token{
ID: token.ID(41),
ID: token.ID(41),
Value: []byte(")"),
Position: &position.Position{
StartLine: 1,
@@ -36415,59 +36415,59 @@ func TestExprClosure_Use(t *testing.T) {
EndPos: 19,
},
},
ClosureUse: &ast.ExprClosureUse{
UseTkn: &token.Token{
ID: token.T_USE,
Value: []byte("use"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 20,
EndPos: 33,
EndPos: 23,
},
UseTkn: &token.Token{
ID: token.T_USE,
Value: []byte("use"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 20,
EndPos: 23,
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 19,
EndPos: 20,
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 19,
EndPos: 20,
},
},
},
OpenParenthesisTkn: &token.Token{
ID: token.ID(40),
Value: []byte("("),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 24,
EndPos: 25,
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 23,
EndPos: 24,
},
},
UseOpenParenthesisTkn: &token.Token{
ID: token.ID(40),
Value: []byte("("),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 24,
EndPos: 25,
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 23,
EndPos: 24,
},
},
},
Uses: []ast.Vertex{
&ast.ExprVariable{
},
Use: []ast.Vertex{
&ast.ExprClosureUse{
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 25,
EndPos: 27,
},
Var: &ast.ExprVariable{
Position: &position.Position{
StartLine: 1,
EndLine: 1,
@@ -36482,7 +36482,7 @@ func TestExprClosure_Use(t *testing.T) {
EndPos: 27,
},
IdentifierTkn: &token.Token{
ID: token.T_VARIABLE,
ID: token.T_VARIABLE,
Value: []byte("$c"),
Position: &position.Position{
StartLine: 1,
@@ -36494,89 +36494,89 @@ func TestExprClosure_Use(t *testing.T) {
Value: []byte("$c"),
},
},
&ast.ExprReference{
},
&ast.ExprClosureUse{
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 29,
EndPos: 32,
},
AmpersandTkn: &token.Token{
ID: token.ID(38),
Value: []byte("&"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 29,
EndPos: 32,
EndPos: 30,
},
AmpersandTkn: &token.Token{
ID: token.ID(38),
Value: []byte("&"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 29,
EndPos: 30,
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 28,
EndPos: 29,
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 28,
EndPos: 29,
},
},
},
Var: &ast.ExprVariable{
},
Var: &ast.ExprVariable{
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 30,
EndPos: 32,
},
VarName: &ast.Identifier{
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 30,
EndPos: 32,
},
VarName: &ast.Identifier{
IdentifierTkn: &token.Token{
ID: token.T_VARIABLE,
Value: []byte("$d"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 30,
EndPos: 32,
},
IdentifierTkn: &token.Token{
ID: token.T_VARIABLE,
Value: []byte("$d"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 30,
EndPos: 32,
},
},
Value: []byte("$d"),
},
Value: []byte("$d"),
},
},
},
SeparatorTkns: []*token.Token{
{
ID: token.ID(44),
Value: []byte(","),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 27,
EndPos: 28,
},
},
},
CloseParenthesisTkn: &token.Token{
ID: token.ID(41),
Value: []byte(")"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 32,
EndPos: 33,
},
},
},
UseSeparatorTkns: []*token.Token{
{
ID: token.ID(44),
Value: []byte(","),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 27,
EndPos: 28,
},
},
},
UseCloseParenthesisTkn: &token.Token{
ID: token.ID(41),
Value: []byte(")"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 32,
EndPos: 33,
},
},
OpenCurlyBracketTkn: &token.Token{
ID: token.ID(123),
ID: token.ID(123),
Value: []byte("{"),
Position: &position.Position{
StartLine: 1,
@@ -36586,7 +36586,7 @@ func TestExprClosure_Use(t *testing.T) {
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
@@ -36599,7 +36599,7 @@ func TestExprClosure_Use(t *testing.T) {
},
Stmts: []ast.Vertex{},
CloseCurlyBracketTkn: &token.Token{
ID: token.ID(125),
ID: token.ID(125),
Value: []byte("}"),
Position: &position.Position{
StartLine: 1,
@@ -36610,7 +36610,7 @@ func TestExprClosure_Use(t *testing.T) {
},
},
SemiColonTkn: &token.Token{
ID: token.ID(59),
ID: token.ID(59),
Value: []byte(";"),
Position: &position.Position{
StartLine: 1,
@@ -36621,7 +36621,8 @@ func TestExprClosure_Use(t *testing.T) {
},
},
},
EndTkn: &token.Token{},
EndTkn: &token.Token{
},
}
lexer := scanner.NewLexer([]byte(src), "7.4", nil)
@@ -36657,7 +36658,7 @@ func TestExprClosure_Use2(t *testing.T) {
EndPos: 36,
},
FunctionTkn: &token.Token{
ID: token.T_FUNCTION,
ID: token.T_FUNCTION,
Value: []byte("function"),
Position: &position.Position{
StartLine: 1,
@@ -36667,7 +36668,7 @@ func TestExprClosure_Use2(t *testing.T) {
},
FreeFloating: []*token.Token{
{
ID: token.T_OPEN_TAG,
ID: token.T_OPEN_TAG,
Value: []byte("<?"),
Position: &position.Position{
StartLine: 1,
@@ -36677,7 +36678,7 @@ func TestExprClosure_Use2(t *testing.T) {
},
},
{
ID: token.T_WHITESPACE,
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
@@ -36689,7 +36690,7 @@ func TestExprClosure_Use2(t *testing.T) {
},
},
OpenParenthesisTkn: &token.Token{
ID: token.ID(40),
ID: token.ID(40),
Value: []byte("("),
Position: &position.Position{
StartLine: 1,
@@ -36721,7 +36722,7 @@ func TestExprClosure_Use2(t *testing.T) {
EndPos: 14,
},
IdentifierTkn: &token.Token{
ID: token.T_VARIABLE,
ID: token.T_VARIABLE,
Value: []byte("$a"),
Position: &position.Position{
StartLine: 1,
@@ -36756,7 +36757,7 @@ func TestExprClosure_Use2(t *testing.T) {
EndPos: 18,
},
IdentifierTkn: &token.Token{
ID: token.T_VARIABLE,
ID: token.T_VARIABLE,
Value: []byte("$b"),
Position: &position.Position{
StartLine: 1,
@@ -36766,7 +36767,7 @@ func TestExprClosure_Use2(t *testing.T) {
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
@@ -36784,7 +36785,7 @@ func TestExprClosure_Use2(t *testing.T) {
},
SeparatorTkns: []*token.Token{
{
ID: token.ID(44),
ID: token.ID(44),
Value: []byte(","),
Position: &position.Position{
StartLine: 1,
@@ -36795,7 +36796,7 @@ func TestExprClosure_Use2(t *testing.T) {
},
},
CloseParenthesisTkn: &token.Token{
ID: token.ID(41),
ID: token.ID(41),
Value: []byte(")"),
Position: &position.Position{
StartLine: 1,
@@ -36804,104 +36805,104 @@ func TestExprClosure_Use2(t *testing.T) {
EndPos: 19,
},
},
ClosureUse: &ast.ExprClosureUse{
UseTkn: &token.Token{
ID: token.T_USE,
Value: []byte("use"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 20,
EndPos: 33,
EndPos: 23,
},
UseTkn: &token.Token{
ID: token.T_USE,
Value: []byte("use"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 20,
EndPos: 23,
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 19,
EndPos: 20,
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 19,
EndPos: 20,
},
},
},
OpenParenthesisTkn: &token.Token{
ID: token.ID(40),
Value: []byte("("),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 24,
EndPos: 25,
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 23,
EndPos: 24,
},
},
UseOpenParenthesisTkn: &token.Token{
ID: token.ID(40),
Value: []byte("("),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 24,
EndPos: 25,
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 23,
EndPos: 24,
},
},
},
Uses: []ast.Vertex{
&ast.ExprReference{
},
Use: []ast.Vertex{
&ast.ExprClosureUse{
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 25,
EndPos: 28,
},
AmpersandTkn: &token.Token{
ID: token.ID(38),
Value: []byte("&"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 25,
EndPos: 26,
},
},
Var: &ast.ExprVariable{
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 26,
EndPos: 28,
},
AmpersandTkn: &token.Token{
ID: token.ID(38),
Value: []byte("&"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 25,
EndPos: 26,
},
},
Var: &ast.ExprVariable{
VarName: &ast.Identifier{
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 26,
EndPos: 28,
},
VarName: &ast.Identifier{
IdentifierTkn: &token.Token{
ID: token.T_VARIABLE,
Value: []byte("$c"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 26,
EndPos: 28,
},
IdentifierTkn: &token.Token{
ID: token.T_VARIABLE,
Value: []byte("$c"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 26,
EndPos: 28,
},
},
Value: []byte("$c"),
},
Value: []byte("$c"),
},
},
&ast.ExprVariable{
},
&ast.ExprClosureUse{
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 30,
EndPos: 32,
},
Var: &ast.ExprVariable{
Position: &position.Position{
StartLine: 1,
EndLine: 1,
@@ -36916,7 +36917,7 @@ func TestExprClosure_Use2(t *testing.T) {
EndPos: 32,
},
IdentifierTkn: &token.Token{
ID: token.T_VARIABLE,
ID: token.T_VARIABLE,
Value: []byte("$d"),
Position: &position.Position{
StartLine: 1,
@@ -36926,7 +36927,7 @@ func TestExprClosure_Use2(t *testing.T) {
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
@@ -36941,31 +36942,31 @@ func TestExprClosure_Use2(t *testing.T) {
},
},
},
SeparatorTkns: []*token.Token{
{
ID: token.ID(44),
Value: []byte(","),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 28,
EndPos: 29,
},
},
},
CloseParenthesisTkn: &token.Token{
ID: token.ID(41),
Value: []byte(")"),
},
UseSeparatorTkns: []*token.Token{
{
ID: token.ID(44),
Value: []byte(","),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 32,
EndPos: 33,
StartPos: 28,
EndPos: 29,
},
},
},
UseCloseParenthesisTkn: &token.Token{
ID: token.ID(41),
Value: []byte(")"),
Position: &position.Position{
StartLine: 1,
EndLine: 1,
StartPos: 32,
EndPos: 33,
},
},
OpenCurlyBracketTkn: &token.Token{
ID: token.ID(123),
ID: token.ID(123),
Value: []byte("{"),
Position: &position.Position{
StartLine: 1,
@@ -36975,7 +36976,7 @@ func TestExprClosure_Use2(t *testing.T) {
},
FreeFloating: []*token.Token{
{
ID: token.T_WHITESPACE,
ID: token.T_WHITESPACE,
Value: []byte(" "),
Position: &position.Position{
StartLine: 1,
@@ -36988,7 +36989,7 @@ func TestExprClosure_Use2(t *testing.T) {
},
Stmts: []ast.Vertex{},
CloseCurlyBracketTkn: &token.Token{
ID: token.ID(125),
ID: token.ID(125),
Value: []byte("}"),
Position: &position.Position{
StartLine: 1,
@@ -36999,7 +37000,7 @@ func TestExprClosure_Use2(t *testing.T) {
},
},
SemiColonTkn: &token.Token{
ID: token.ID(59),
ID: token.ID(59),
Value: []byte(";"),
Position: &position.Position{
StartLine: 1,
@@ -37010,7 +37011,8 @@ func TestExprClosure_Use2(t *testing.T) {
},
},
},
EndTkn: &token.Token{},
EndTkn: &token.Token{
},
}
lexer := scanner.NewLexer([]byte(src), "7.4", nil)

297
internal/php7/php7.go generated
View File

@@ -339,7 +339,7 @@ const yyEofCode = 1
const yyErrCode = 2
const yyInitialStackSize = 16
// line internal/php7/php7.y:4342
// line internal/php7/php7.y:4345
// line yacctab:1
var yyExca = [...]int{
@@ -5767,25 +5767,26 @@ yydefault:
yyDollar = yyS[yypt-11 : yypt+1]
// line internal/php7/php7.y:3180
{
yyVAL.node = &ast.ExprClosure{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[11].token),
FunctionTkn: yyDollar[1].token,
AmpersandTkn: yyDollar[2].token,
OpenParenthesisTkn: yyDollar[4].token,
Params: yyDollar[5].node.(*ast.ParserSeparatedList).Items,
SeparatorTkns: yyDollar[5].node.(*ast.ParserSeparatedList).SeparatorTkns,
CloseParenthesisTkn: yyDollar[6].token,
ClosureUse: yyDollar[7].node,
ColonTkn: yyDollar[8].node.(*ast.ReturnType).ColonTkn,
ReturnType: yyDollar[8].node.(*ast.ReturnType).Type,
OpenCurlyBracketTkn: yyDollar[9].token,
Stmts: yyDollar[10].list,
CloseCurlyBracketTkn: yyDollar[11].token,
}
closure := yyDollar[7].node.(*ast.ExprClosure)
closure.Position = yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[11].token)
closure.FunctionTkn = yyDollar[1].token
closure.AmpersandTkn = yyDollar[2].token
closure.OpenParenthesisTkn = yyDollar[4].token
closure.Params = yyDollar[5].node.(*ast.ParserSeparatedList).Items
closure.SeparatorTkns = yyDollar[5].node.(*ast.ParserSeparatedList).SeparatorTkns
closure.CloseParenthesisTkn = yyDollar[6].token
closure.ColonTkn = yyDollar[8].node.(*ast.ReturnType).ColonTkn
closure.ReturnType = yyDollar[8].node.(*ast.ReturnType).Type
closure.OpenCurlyBracketTkn = yyDollar[9].token
closure.Stmts = yyDollar[10].list
closure.CloseCurlyBracketTkn = yyDollar[11].token
yyVAL.node = closure
}
case 374:
yyDollar = yyS[yypt-9 : yypt+1]
// line internal/php7/php7.y:3198
// line internal/php7/php7.y:3199
{
yyVAL.node = &ast.ExprArrowFunction{
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node),
@@ -5803,33 +5804,32 @@ yydefault:
}
case 376:
yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:3221
// line internal/php7/php7.y:3222
{
yyVAL.token = nil
}
case 377:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3225
// line internal/php7/php7.y:3226
{
yyVAL.token = yyDollar[1].token
}
case 378:
yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:3232
// line internal/php7/php7.y:3233
{
yyVAL.node = nil
yyVAL.node = &ast.ExprClosure{}
}
case 379:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3236
// line internal/php7/php7.y:3237
{
yyVAL.node = &ast.ExprClosureUse{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
UseTkn: yyDollar[1].token,
OpenParenthesisTkn: yyDollar[2].token,
Uses: yyDollar[3].node.(*ast.ParserSeparatedList).Items,
SeparatorTkns: yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns,
CloseParenthesisTkn: yyDollar[4].token,
yyVAL.node = &ast.ExprClosure{
UseTkn: yyDollar[1].token,
UseOpenParenthesisTkn: yyDollar[2].token,
Use: yyDollar[3].node.(*ast.ParserSeparatedList).Items,
UseSeparatorTkns: yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns,
UseCloseParenthesisTkn: yyDollar[4].token,
}
}
case 380:
@@ -5853,20 +5853,23 @@ yydefault:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3266
{
yyVAL.node = &ast.ExprVariable{
yyVAL.node = &ast.ExprClosureUse{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
VarName: &ast.Identifier{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
IdentifierTkn: yyDollar[1].token,
Value: yyDollar[1].token.Value,
Var: &ast.ExprVariable{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
VarName: &ast.Identifier{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
IdentifierTkn: yyDollar[1].token,
Value: yyDollar[1].token.Value,
},
},
}
}
case 383:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:3277
// line internal/php7/php7.y:3280
{
yyVAL.node = &ast.ExprReference{
yyVAL.node = &ast.ExprClosureUse{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token),
AmpersandTkn: yyDollar[1].token,
Var: &ast.ExprVariable{
@@ -5881,7 +5884,7 @@ yydefault:
}
case 384:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:3295
// line internal/php7/php7.y:3298
{
yyVAL.node = &ast.ExprFunctionCall{
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node),
@@ -5894,7 +5897,7 @@ yydefault:
}
case 385:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3306
// line internal/php7/php7.y:3309
{
yyVAL.node = &ast.ExprStaticCall{
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node),
@@ -5909,7 +5912,7 @@ yydefault:
}
case 386:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3319
// line internal/php7/php7.y:3322
{
yyVAL.node = &ast.ExprStaticCall{
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node),
@@ -5924,7 +5927,7 @@ yydefault:
}
case 387:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:3332
// line internal/php7/php7.y:3335
{
yyVAL.node = &ast.ExprFunctionCall{
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node),
@@ -5937,7 +5940,7 @@ yydefault:
}
case 388:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3346
// line internal/php7/php7.y:3349
{
yyVAL.node = &ast.Identifier{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -5947,31 +5950,31 @@ yydefault:
}
case 389:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3354
// line internal/php7/php7.y:3357
{
yyVAL.node = yyDollar[1].node
}
case 390:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3361
// line internal/php7/php7.y:3364
{
yyVAL.node = yyDollar[1].node
}
case 391:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3365
// line internal/php7/php7.y:3368
{
yyVAL.node = yyDollar[1].node
}
case 392:
yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:3372
// line internal/php7/php7.y:3375
{
yyVAL.node = nil
}
case 393:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3376
// line internal/php7/php7.y:3379
{
yyVAL.node = &ast.ParserBrackets{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
@@ -5982,13 +5985,13 @@ yydefault:
}
case 394:
yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:3388
// line internal/php7/php7.y:3391
{
yyVAL.list = []ast.Vertex{}
}
case 395:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3392
// line internal/php7/php7.y:3395
{
yyVAL.list = []ast.Vertex{
&ast.ScalarEncapsedStringPart{
@@ -6000,25 +6003,25 @@ yydefault:
}
case 396:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3402
// line internal/php7/php7.y:3405
{
yyVAL.list = yyDollar[1].list
}
case 397:
yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:3409
// line internal/php7/php7.y:3412
{
yyVAL.node = &ast.ArgumentList{}
}
case 398:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3413
// line internal/php7/php7.y:3416
{
yyVAL.node = yyDollar[1].node
}
case 399:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3420
// line internal/php7/php7.y:3423
{
yyVAL.node = &ast.ExprArray{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
@@ -6031,7 +6034,7 @@ yydefault:
}
case 400:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3431
// line internal/php7/php7.y:3434
{
yyVAL.node = &ast.ExprArray{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
@@ -6043,7 +6046,7 @@ yydefault:
}
case 401:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3441
// line internal/php7/php7.y:3444
{
yyVAL.node = &ast.ScalarString{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6053,7 +6056,7 @@ yydefault:
}
case 402:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3452
// line internal/php7/php7.y:3455
{
yyVAL.node = &ast.ScalarLnumber{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6063,7 +6066,7 @@ yydefault:
}
case 403:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3460
// line internal/php7/php7.y:3463
{
yyVAL.node = &ast.ScalarDnumber{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6073,7 +6076,7 @@ yydefault:
}
case 404:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3468
// line internal/php7/php7.y:3471
{
yyVAL.node = &ast.ScalarMagicConstant{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6083,7 +6086,7 @@ yydefault:
}
case 405:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3476
// line internal/php7/php7.y:3479
{
yyVAL.node = &ast.ScalarMagicConstant{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6093,7 +6096,7 @@ yydefault:
}
case 406:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3484
// line internal/php7/php7.y:3487
{
yyVAL.node = &ast.ScalarMagicConstant{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6103,7 +6106,7 @@ yydefault:
}
case 407:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3492
// line internal/php7/php7.y:3495
{
yyVAL.node = &ast.ScalarMagicConstant{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6113,7 +6116,7 @@ yydefault:
}
case 408:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3500
// line internal/php7/php7.y:3503
{
yyVAL.node = &ast.ScalarMagicConstant{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6123,7 +6126,7 @@ yydefault:
}
case 409:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3508
// line internal/php7/php7.y:3511
{
yyVAL.node = &ast.ScalarMagicConstant{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6133,7 +6136,7 @@ yydefault:
}
case 410:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3516
// line internal/php7/php7.y:3519
{
yyVAL.node = &ast.ScalarMagicConstant{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6143,7 +6146,7 @@ yydefault:
}
case 411:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3524
// line internal/php7/php7.y:3527
{
yyVAL.node = &ast.ScalarMagicConstant{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6153,7 +6156,7 @@ yydefault:
}
case 412:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3532
// line internal/php7/php7.y:3535
{
yyVAL.node = &ast.ScalarHeredoc{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
@@ -6170,7 +6173,7 @@ yydefault:
}
case 413:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:3547
// line internal/php7/php7.y:3550
{
yyVAL.node = &ast.ScalarHeredoc{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token),
@@ -6180,7 +6183,7 @@ yydefault:
}
case 414:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3555
// line internal/php7/php7.y:3558
{
yyVAL.node = &ast.ScalarEncapsed{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
@@ -6191,7 +6194,7 @@ yydefault:
}
case 415:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3564
// line internal/php7/php7.y:3567
{
yyVAL.node = &ast.ScalarHeredoc{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
@@ -6202,19 +6205,19 @@ yydefault:
}
case 416:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3573
// line internal/php7/php7.y:3576
{
yyVAL.node = yyDollar[1].node
}
case 417:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3577
// line internal/php7/php7.y:3580
{
yyVAL.node = yyDollar[1].node
}
case 418:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3584
// line internal/php7/php7.y:3587
{
yyVAL.node = &ast.ExprConstFetch{
Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node),
@@ -6223,7 +6226,7 @@ yydefault:
}
case 419:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3591
// line internal/php7/php7.y:3594
{
yyVAL.node = &ast.ExprClassConstFetch{
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
@@ -6238,7 +6241,7 @@ yydefault:
}
case 420:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3604
// line internal/php7/php7.y:3607
{
yyVAL.node = &ast.ExprClassConstFetch{
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
@@ -6253,43 +6256,43 @@ yydefault:
}
case 421:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3620
// line internal/php7/php7.y:3623
{
yyVAL.node = yyDollar[1].node
}
case 422:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3624
// line internal/php7/php7.y:3627
{
yyVAL.node = yyDollar[1].node
}
case 423:
yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:3631
// line internal/php7/php7.y:3634
{
yyVAL.node = nil
}
case 424:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3635
// line internal/php7/php7.y:3638
{
yyVAL.node = yyDollar[1].node
}
case 425:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3642
// line internal/php7/php7.y:3645
{
yyVAL.node = yyDollar[1].node
}
case 426:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3649
// line internal/php7/php7.y:3652
{
yyVAL.node = yyDollar[1].node
}
case 427:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3653
// line internal/php7/php7.y:3656
{
yyVAL.node = &ast.ParserBrackets{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
@@ -6300,19 +6303,19 @@ yydefault:
}
case 428:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3662
// line internal/php7/php7.y:3665
{
yyVAL.node = yyDollar[1].node
}
case 429:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3669
// line internal/php7/php7.y:3672
{
yyVAL.node = yyDollar[1].node
}
case 430:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3673
// line internal/php7/php7.y:3676
{
yyVAL.node = &ast.ParserBrackets{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
@@ -6323,19 +6326,19 @@ yydefault:
}
case 431:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3682
// line internal/php7/php7.y:3685
{
yyVAL.node = yyDollar[1].node
}
case 432:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3689
// line internal/php7/php7.y:3692
{
yyVAL.node = yyDollar[1].node
}
case 433:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3693
// line internal/php7/php7.y:3696
{
yyVAL.node = &ast.ExprArrayDimFetch{
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
@@ -6347,7 +6350,7 @@ yydefault:
}
case 434:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3703
// line internal/php7/php7.y:3706
{
yyVAL.node = &ast.ExprArrayDimFetch{
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
@@ -6359,7 +6362,7 @@ yydefault:
}
case 435:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3713
// line internal/php7/php7.y:3716
{
yyVAL.node = &ast.ExprArrayDimFetch{
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
@@ -6371,7 +6374,7 @@ yydefault:
}
case 436:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3723
// line internal/php7/php7.y:3726
{
yyVAL.node = &ast.ExprMethodCall{
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node),
@@ -6386,25 +6389,25 @@ yydefault:
}
case 437:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3736
// line internal/php7/php7.y:3739
{
yyVAL.node = yyDollar[1].node
}
case 438:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3743
// line internal/php7/php7.y:3746
{
yyVAL.node = yyDollar[1].node
}
case 439:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3747
// line internal/php7/php7.y:3750
{
yyVAL.node = yyDollar[1].node
}
case 440:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3751
// line internal/php7/php7.y:3754
{
yyVAL.node = &ast.ExprPropertyFetch{
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
@@ -6415,7 +6418,7 @@ yydefault:
}
case 441:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3763
// line internal/php7/php7.y:3766
{
yyVAL.node = &ast.ExprVariable{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6428,7 +6431,7 @@ yydefault:
}
case 442:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3774
// line internal/php7/php7.y:3777
{
yyVAL.node = &ast.ExprVariable{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
@@ -6443,7 +6446,7 @@ yydefault:
}
case 443:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:3787
// line internal/php7/php7.y:3790
{
yyVAL.node = &ast.ExprVariable{
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
@@ -6453,7 +6456,7 @@ yydefault:
}
case 444:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3798
// line internal/php7/php7.y:3801
{
yyVAL.node = &ast.ExprStaticPropertyFetch{
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
@@ -6464,7 +6467,7 @@ yydefault:
}
case 445:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3807
// line internal/php7/php7.y:3810
{
yyVAL.node = &ast.ExprStaticPropertyFetch{
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
@@ -6475,13 +6478,13 @@ yydefault:
}
case 446:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3819
// line internal/php7/php7.y:3822
{
yyVAL.node = yyDollar[1].node
}
case 447:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3823
// line internal/php7/php7.y:3826
{
yyVAL.node = &ast.ExprArrayDimFetch{
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
@@ -6493,7 +6496,7 @@ yydefault:
}
case 448:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3833
// line internal/php7/php7.y:3836
{
yyVAL.node = &ast.ExprArrayDimFetch{
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token),
@@ -6505,7 +6508,7 @@ yydefault:
}
case 449:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3843
// line internal/php7/php7.y:3846
{
yyVAL.node = &ast.ExprPropertyFetch{
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
@@ -6516,7 +6519,7 @@ yydefault:
}
case 450:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3852
// line internal/php7/php7.y:3855
{
yyVAL.node = &ast.ExprStaticPropertyFetch{
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
@@ -6527,7 +6530,7 @@ yydefault:
}
case 451:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3861
// line internal/php7/php7.y:3864
{
yyVAL.node = &ast.ExprStaticPropertyFetch{
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
@@ -6538,7 +6541,7 @@ yydefault:
}
case 452:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3873
// line internal/php7/php7.y:3876
{
yyVAL.node = &ast.Identifier{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6548,7 +6551,7 @@ yydefault:
}
case 453:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3881
// line internal/php7/php7.y:3884
{
yyVAL.node = &ast.ParserBrackets{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
@@ -6559,13 +6562,13 @@ yydefault:
}
case 454:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3890
// line internal/php7/php7.y:3893
{
yyVAL.node = yyDollar[1].node
}
case 455:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3897
// line internal/php7/php7.y:3900
{
yyVAL.node = &ast.Identifier{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6575,7 +6578,7 @@ yydefault:
}
case 456:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3905
// line internal/php7/php7.y:3908
{
yyVAL.node = &ast.ParserBrackets{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
@@ -6586,13 +6589,13 @@ yydefault:
}
case 457:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3914
// line internal/php7/php7.y:3917
{
yyVAL.node = yyDollar[1].node
}
case 458:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3921
// line internal/php7/php7.y:3924
{
pairList := yyDollar[1].node.(*ast.ParserSeparatedList)
fistPair := pairList.Items[0].(*ast.ExprArrayItem)
@@ -6605,19 +6608,19 @@ yydefault:
}
case 459:
yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:3935
// line internal/php7/php7.y:3938
{
yyVAL.node = &ast.ExprArrayItem{}
}
case 460:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3939
// line internal/php7/php7.y:3942
{
yyVAL.node = yyDollar[1].node
}
case 461:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3946
// line internal/php7/php7.y:3949
{
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)
@@ -6626,7 +6629,7 @@ yydefault:
}
case 462:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3953
// line internal/php7/php7.y:3956
{
yyVAL.node = &ast.ParserSeparatedList{
Items: []ast.Vertex{yyDollar[1].node},
@@ -6634,7 +6637,7 @@ yydefault:
}
case 463:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:3962
// line internal/php7/php7.y:3965
{
yyVAL.node = &ast.ExprArrayItem{
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node),
@@ -6645,7 +6648,7 @@ yydefault:
}
case 464:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3971
// line internal/php7/php7.y:3974
{
yyVAL.node = &ast.ExprArrayItem{
Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node),
@@ -6654,7 +6657,7 @@ yydefault:
}
case 465:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:3978
// line internal/php7/php7.y:3981
{
yyVAL.node = &ast.ExprArrayItem{
Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node),
@@ -6669,7 +6672,7 @@ yydefault:
}
case 466:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:3991
// line internal/php7/php7.y:3994
{
yyVAL.node = &ast.ExprArrayItem{
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
@@ -6682,7 +6685,7 @@ yydefault:
}
case 467:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4002
// line internal/php7/php7.y:4005
{
yyVAL.node = &ast.ExprArrayItem{
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
@@ -6692,7 +6695,7 @@ yydefault:
}
case 468:
yyDollar = yyS[yypt-6 : yypt+1]
// line internal/php7/php7.y:4010
// line internal/php7/php7.y:4013
{
yyVAL.node = &ast.ExprArrayItem{
Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token),
@@ -6710,7 +6713,7 @@ yydefault:
}
case 469:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4026
// line internal/php7/php7.y:4029
{
yyVAL.node = &ast.ExprArrayItem{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
@@ -6726,13 +6729,13 @@ yydefault:
}
case 470:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4043
// line internal/php7/php7.y:4046
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
}
case 471:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4047
// line internal/php7/php7.y:4050
{
yyVAL.list = append(
yyDollar[1].list,
@@ -6745,13 +6748,13 @@ yydefault:
}
case 472:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4058
// line internal/php7/php7.y:4061
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
}
case 473:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4062
// line internal/php7/php7.y:4065
{
yyVAL.list = []ast.Vertex{
&ast.ScalarEncapsedStringPart{
@@ -6764,7 +6767,7 @@ yydefault:
}
case 474:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4076
// line internal/php7/php7.y:4079
{
yyVAL.node = &ast.ExprVariable{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6777,7 +6780,7 @@ yydefault:
}
case 475:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4087
// line internal/php7/php7.y:4090
{
yyVAL.node = &ast.ExprArrayDimFetch{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
@@ -6796,7 +6799,7 @@ yydefault:
}
case 476:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4104
// line internal/php7/php7.y:4107
{
yyVAL.node = &ast.ExprPropertyFetch{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
@@ -6818,7 +6821,7 @@ yydefault:
}
case 477:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4124
// line internal/php7/php7.y:4127
{
yyVAL.node = &ast.ParserBrackets{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
@@ -6832,7 +6835,7 @@ yydefault:
}
case 478:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4136
// line internal/php7/php7.y:4139
{
yyVAL.node = &ast.ParserBrackets{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
@@ -6850,7 +6853,7 @@ yydefault:
}
case 479:
yyDollar = yyS[yypt-6 : yypt+1]
// line internal/php7/php7.y:4152
// line internal/php7/php7.y:4155
{
yyVAL.node = &ast.ParserBrackets{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token),
@@ -6874,7 +6877,7 @@ yydefault:
}
case 480:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4174
// line internal/php7/php7.y:4177
{
yyVAL.node = &ast.ParserBrackets{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
@@ -6885,7 +6888,7 @@ yydefault:
}
case 481:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4186
// line internal/php7/php7.y:4189
{
yyVAL.node = &ast.ScalarString{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6895,7 +6898,7 @@ yydefault:
}
case 482:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4194
// line internal/php7/php7.y:4197
{
// TODO: add option to handle 64 bit integer
if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil {
@@ -6914,7 +6917,7 @@ yydefault:
}
case 483:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4211
// line internal/php7/php7.y:4214
{
_, err := strconv.Atoi(string(yyDollar[2].token.Value))
isInt := err == nil
@@ -6940,7 +6943,7 @@ yydefault:
}
case 484:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4235
// line internal/php7/php7.y:4238
{
yyVAL.node = &ast.ExprVariable{
Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token),
@@ -6953,7 +6956,7 @@ yydefault:
}
case 485:
yyDollar = yyS[yypt-5 : yypt+1]
// line internal/php7/php7.y:4249
// line internal/php7/php7.y:4252
{
if yyDollar[4].token != nil {
yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[4].token)
@@ -6970,7 +6973,7 @@ yydefault:
}
case 486:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4264
// line internal/php7/php7.y:4267
{
yyVAL.node = &ast.ExprEmpty{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
@@ -6982,7 +6985,7 @@ yydefault:
}
case 487:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4274
// line internal/php7/php7.y:4277
{
yyVAL.node = &ast.ExprInclude{
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
@@ -6992,7 +6995,7 @@ yydefault:
}
case 488:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4282
// line internal/php7/php7.y:4285
{
yyVAL.node = &ast.ExprIncludeOnce{
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
@@ -7002,7 +7005,7 @@ yydefault:
}
case 489:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4290
// line internal/php7/php7.y:4293
{
yyVAL.node = &ast.ExprEval{
Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token),
@@ -7014,7 +7017,7 @@ yydefault:
}
case 490:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4300
// line internal/php7/php7.y:4303
{
yyVAL.node = &ast.ExprRequire{
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
@@ -7024,7 +7027,7 @@ yydefault:
}
case 491:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4308
// line internal/php7/php7.y:4311
{
yyVAL.node = &ast.ExprRequireOnce{
Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
@@ -7034,7 +7037,7 @@ yydefault:
}
case 492:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4319
// line internal/php7/php7.y:4322
{
yyVAL.node = &ast.ParserSeparatedList{
Items: []ast.Vertex{yyDollar[1].node},
@@ -7042,7 +7045,7 @@ yydefault:
}
case 493:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4325
// line internal/php7/php7.y:4328
{
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)
@@ -7051,7 +7054,7 @@ yydefault:
}
case 494:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4335
// line internal/php7/php7.y:4338
{
yyVAL.node = yyDollar[1].node
}

View File

@@ -3178,21 +3178,22 @@ expr_without_variable:
inline_function:
T_FUNCTION returns_ref backup_doc_comment '(' parameter_list ')' lexical_vars return_type '{' inner_statement_list '}'
{
$$ = &ast.ExprClosure{
Position: yylex.(*Parser).builder.NewTokensPosition($1, $11),
FunctionTkn: $1,
AmpersandTkn: $2,
OpenParenthesisTkn: $4,
Params: $5.(*ast.ParserSeparatedList).Items,
SeparatorTkns: $5.(*ast.ParserSeparatedList).SeparatorTkns,
CloseParenthesisTkn: $6,
ClosureUse: $7,
ColonTkn: $8.(*ast.ReturnType).ColonTkn,
ReturnType: $8.(*ast.ReturnType).Type,
OpenCurlyBracketTkn: $9,
Stmts: $10,
CloseCurlyBracketTkn: $11,
}
closure := $7.(*ast.ExprClosure)
closure.Position = yylex.(*Parser).builder.NewTokensPosition($1, $11)
closure.FunctionTkn = $1
closure.AmpersandTkn = $2
closure.OpenParenthesisTkn = $4
closure.Params = $5.(*ast.ParserSeparatedList).Items
closure.SeparatorTkns = $5.(*ast.ParserSeparatedList).SeparatorTkns
closure.CloseParenthesisTkn = $6
closure.ColonTkn = $8.(*ast.ReturnType).ColonTkn
closure.ReturnType = $8.(*ast.ReturnType).Type
closure.OpenCurlyBracketTkn = $9
closure.Stmts = $10
closure.CloseCurlyBracketTkn = $11
$$ = closure
}
| T_FN returns_ref '(' parameter_list ')' return_type backup_doc_comment T_DOUBLE_ARROW expr
{
@@ -3230,17 +3231,16 @@ returns_ref:
lexical_vars:
/* empty */
{
$$ = nil
$$ = &ast.ExprClosure{}
}
| T_USE '(' lexical_var_list ')'
{
$$ = &ast.ExprClosureUse{
Position: yylex.(*Parser).builder.NewTokensPosition($1, $4),
UseTkn: $1,
OpenParenthesisTkn: $2,
Uses: $3.(*ast.ParserSeparatedList).Items,
SeparatorTkns: $3.(*ast.ParserSeparatedList).SeparatorTkns,
CloseParenthesisTkn: $4,
$$ = &ast.ExprClosure{
UseTkn: $1,
UseOpenParenthesisTkn: $2,
Use: $3.(*ast.ParserSeparatedList).Items,
UseSeparatorTkns: $3.(*ast.ParserSeparatedList).SeparatorTkns,
UseCloseParenthesisTkn: $4,
}
}
;
@@ -3264,18 +3264,21 @@ lexical_var_list:
lexical_var:
T_VARIABLE
{
$$ = &ast.ExprVariable{
$$ = &ast.ExprClosureUse{
Position: yylex.(*Parser).builder.NewTokenPosition($1),
VarName: &ast.Identifier{
Var: &ast.ExprVariable{
Position: yylex.(*Parser).builder.NewTokenPosition($1),
IdentifierTkn: $1,
Value: $1.Value,
VarName: &ast.Identifier{
Position: yylex.(*Parser).builder.NewTokenPosition($1),
IdentifierTkn: $1,
Value: $1.Value,
},
},
}
}
| '&' T_VARIABLE
{
$$ = &ast.ExprReference{
$$ = &ast.ExprClosureUse{
Position: yylex.(*Parser).builder.NewTokensPosition($1, $2),
AmpersandTkn: $1,
Var: &ast.ExprVariable{