[refactoring] update ast structure of "BitwiseNot", "BooleanNot", "ClassConstFetch" and "Clone" nodes

This commit is contained in:
Vadym Slizov 2020-12-01 09:51:47 +02:00
parent 4b8d431767
commit b90400d993
No known key found for this signature in database
GPG Key ID: AEA2A9388EF42A4A
5 changed files with 872 additions and 882 deletions

1227
internal/php5/php5.go generated

File diff suppressed because it is too large Load Diff

View File

@ -3220,13 +3220,13 @@ expr_without_variable:
}
| T_CLONE expr
{
$$ = &ast.ExprClone{ast.Node{}, $2}
// save position
$$.GetNode().Position = position.NewTokenNodePosition($1, $2)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ExprClone{
Node: ast.Node{
Position: position.NewTokenNodePosition($1, $2),
},
CloneTkn: $1,
Expr: $2,
}
}
| variable T_PLUS_EQUAL expr
{
@ -3609,23 +3609,23 @@ expr_without_variable:
}
| '!' expr
{
$$ = &ast.ExprBooleanNot{ast.Node{}, $2}
// save position
$$.GetNode().Position = position.NewTokenNodePosition($1, $2)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ExprBooleanNot{
Node: ast.Node{
Position: position.NewTokenNodePosition($1, $2),
},
ExclamationTkn: $1,
Expr: $2,
}
}
| '~' expr
{
$$ = &ast.ExprBitwiseNot{ast.Node{}, $2}
// save position
$$.GetNode().Position = position.NewTokenNodePosition($1, $2)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ExprBitwiseNot{
Node: ast.Node{
Position: position.NewTokenNodePosition($1, $2),
},
TildaTkn: $1,
Expr: $2,
}
}
| expr T_IS_IDENTICAL expr
{
@ -4665,21 +4665,20 @@ common_scalar:
static_class_constant:
class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING
{
target := &ast.Identifier{
$$ = &ast.ExprClassConstFetch{
Node: ast.Node{
Position: position.NewTokenPosition($3),
Position: position.NewNodeTokenPosition($1, $3),
},
Class: $1,
DoubleColonTkn: $2,
ConstantName: &ast.Identifier{
Node: ast.Node{
Position: position.NewTokenPosition($3),
},
IdentifierTkn: $3,
Value: $3.Value,
},
IdentifierTkn: $3,
Value: $3.Value,
}
$$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target}
// save position
$$.GetNode().Position = position.NewNodeTokenPosition($1, $3)
// save comments
yylex.(*Parser).MoveFreeFloating($1, $$)
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
}
;
@ -4867,23 +4866,23 @@ static_operation:
}
| '!' static_scalar_value
{
$$ = &ast.ExprBooleanNot{ast.Node{}, $2}
// save position
$$.GetNode().Position = position.NewTokenNodePosition($1, $2)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ExprBooleanNot{
Node: ast.Node{
Position: position.NewTokenNodePosition($1, $2),
},
ExclamationTkn: $1,
Expr: $2,
}
}
| '~' static_scalar_value
{
$$ = &ast.ExprBitwiseNot{ast.Node{}, $2}
// save position
$$.GetNode().Position = position.NewTokenNodePosition($1, $2)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ExprBitwiseNot{
Node: ast.Node{
Position: position.NewTokenNodePosition($1, $2),
},
TildaTkn: $1,
Expr: $2,
}
}
| static_scalar_value '|' static_scalar_value
{
@ -6445,81 +6444,77 @@ isset_variable:
class_constant:
class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING
{
target := &ast.Identifier{
$$ = &ast.ExprClassConstFetch{
Node: ast.Node{
Position: position.NewTokenPosition($3),
Position: position.NewNodeTokenPosition($1, $3),
},
Class: $1,
DoubleColonTkn: $2,
ConstantName: &ast.Identifier{
Node: ast.Node{
Position: position.NewTokenPosition($3),
},
IdentifierTkn: $3,
Value: $3.Value,
},
IdentifierTkn: $3,
Value: $3.Value,
}
$$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target}
// save position
$$.GetNode().Position = position.NewNodeTokenPosition($1, $3)
// save comments
yylex.(*Parser).MoveFreeFloating($1, $$)
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
}
| variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING
{
target := &ast.Identifier{
$$ = &ast.ExprClassConstFetch{
Node: ast.Node{
Position: position.NewTokenPosition($3),
Position: position.NewNodeTokenPosition($1, $3),
},
Class: $1,
DoubleColonTkn: $2,
ConstantName: &ast.Identifier{
Node: ast.Node{
Position: position.NewTokenPosition($3),
},
IdentifierTkn: $3,
Value: $3.Value,
},
IdentifierTkn: $3,
Value: $3.Value,
}
$$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target}
// save position
$$.GetNode().Position = position.NewNodeTokenPosition($1, $3)
// save comments
yylex.(*Parser).MoveFreeFloating($1, $$)
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
}
;
static_class_name_scalar:
class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS
{
target := &ast.Identifier{
$$ = &ast.ExprClassConstFetch{
Node: ast.Node{
Position: position.NewTokenPosition($3),
Position: position.NewNodeTokenPosition($1, $3),
},
Class: $1,
DoubleColonTkn: $2,
ConstantName: &ast.Identifier{
Node: ast.Node{
Position: position.NewTokenPosition($3),
},
IdentifierTkn: $3,
Value: $3.Value,
},
IdentifierTkn: $3,
Value: $3.Value,
}
$$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target}
// save position
$$.GetNode().Position = position.NewNodeTokenPosition($1, $3)
// save comments
yylex.(*Parser).MoveFreeFloating($1, $$)
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
}
;
class_name_scalar:
class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS
{
target := &ast.Identifier{
$$ = &ast.ExprClassConstFetch{
Node: ast.Node{
Position: position.NewTokenPosition($3),
Position: position.NewNodeTokenPosition($1, $3),
},
Class: $1,
DoubleColonTkn: $2,
ConstantName: &ast.Identifier{
Node: ast.Node{
Position: position.NewTokenPosition($3),
},
IdentifierTkn: $3,
Value: $3.Value,
},
IdentifierTkn: $3,
Value: $3.Value,
}
$$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target}
// save position
$$.GetNode().Position = position.NewNodeTokenPosition($1, $3)
// save comments
yylex.(*Parser).MoveFreeFloating($1, $$)
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
}
;

240
internal/php7/php7.go generated
View File

@ -344,7 +344,7 @@ const yyEofCode = 1
const yyErrCode = 2
const yyInitialStackSize = 16
// line internal/php7/php7.y:5006
// line internal/php7/php7.y:5004
// line yacctab:1
var yyExca = [...]int{
@ -5309,13 +5309,13 @@ yydefault:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:2868
{
yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node}
// save position
yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
yyVAL.node = &ast.ExprClone{
Node: ast.Node{
Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
},
CloneTkn: yyDollar[1].token,
Expr: yyDollar[2].node,
}
}
case 301:
yyDollar = yyS[yypt-3 : yypt+1]
@ -5784,25 +5784,25 @@ yydefault:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:3269
{
yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node}
// save position
yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
yyVAL.node = &ast.ExprBooleanNot{
Node: ast.Node{
Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
},
ExclamationTkn: yyDollar[1].token,
Expr: yyDollar[2].node,
}
}
case 338:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:3279
{
yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node}
// save position
yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
yyVAL.node = &ast.ExprBitwiseNot{
Node: ast.Node{
Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
},
TildaTkn: yyDollar[1].token,
Expr: yyDollar[2].node,
}
}
case 339:
yyDollar = yyS[yypt-3 : yypt+1]
@ -6745,81 +6745,79 @@ yydefault:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4114
{
target := &ast.Identifier{
yyVAL.node = &ast.ExprClassConstFetch{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[3].token),
Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
},
Class: yyDollar[1].node,
DoubleColonTkn: yyDollar[2].token,
ConstantName: &ast.Identifier{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[3].token),
},
IdentifierTkn: yyDollar[3].token,
Value: yyDollar[3].token.Value,
},
IdentifierTkn: yyDollar[3].token,
Value: yyDollar[3].token.Value,
}
yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target}
// save position
yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)
// save comments
yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node)
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens)
}
case 420:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4132
// line internal/php7/php7.y:4131
{
target := &ast.Identifier{
yyVAL.node = &ast.ExprClassConstFetch{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[3].token),
Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token),
},
Class: yyDollar[1].node,
DoubleColonTkn: yyDollar[2].token,
ConstantName: &ast.Identifier{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[3].token),
},
IdentifierTkn: yyDollar[3].token,
Value: yyDollar[3].token.Value,
},
IdentifierTkn: yyDollar[3].token,
Value: yyDollar[3].token.Value,
}
yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target}
// save position
yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)
// save comments
yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node)
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens)
}
case 421:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4153
// line internal/php7/php7.y:4151
{
yyVAL.node = yyDollar[1].node
}
case 422:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4157
// line internal/php7/php7.y:4155
{
yyVAL.node = yyDollar[1].node
}
case 423:
yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:4164
// line internal/php7/php7.y:4162
{
yyVAL.node = nil
}
case 424:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4168
// line internal/php7/php7.y:4166
{
yyVAL.node = yyDollar[1].node
}
case 425:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4175
// line internal/php7/php7.y:4173
{
yyVAL.node = yyDollar[1].node
}
case 426:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4182
// line internal/php7/php7.y:4180
{
yyVAL.node = yyDollar[1].node
}
case 427:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4186
// line internal/php7/php7.y:4184
{
yyVAL.node = &ast.ParserBrackets{
Node: ast.Node{
@ -6836,19 +6834,19 @@ yydefault:
}
case 428:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4201
// line internal/php7/php7.y:4199
{
yyVAL.node = yyDollar[1].node
}
case 429:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4208
// line internal/php7/php7.y:4206
{
yyVAL.node = yyDollar[1].node
}
case 430:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4212
// line internal/php7/php7.y:4210
{
yyVAL.node = &ast.ParserBrackets{
Node: ast.Node{
@ -6865,19 +6863,19 @@ yydefault:
}
case 431:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4227
// line internal/php7/php7.y:4225
{
yyVAL.node = yyDollar[1].node
}
case 432:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4234
// line internal/php7/php7.y:4232
{
yyVAL.node = yyDollar[1].node
}
case 433:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4238
// line internal/php7/php7.y:4236
{
yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{
@ -6891,7 +6889,7 @@ yydefault:
}
case 434:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4250
// line internal/php7/php7.y:4248
{
yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{
@ -6905,7 +6903,7 @@ yydefault:
}
case 435:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4262
// line internal/php7/php7.y:4260
{
yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{
@ -6919,7 +6917,7 @@ yydefault:
}
case 436:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4274
// line internal/php7/php7.y:4272
{
yyVAL.node = &ast.ExprMethodCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)}
@ -6932,25 +6930,25 @@ yydefault:
}
case 437:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4285
// line internal/php7/php7.y:4283
{
yyVAL.node = yyDollar[1].node
}
case 438:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4292
// line internal/php7/php7.y:4290
{
yyVAL.node = yyDollar[1].node
}
case 439:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4296
// line internal/php7/php7.y:4294
{
yyVAL.node = yyDollar[1].node
}
case 440:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4300
// line internal/php7/php7.y:4298
{
yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -6963,7 +6961,7 @@ yydefault:
}
case 441:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4314
// line internal/php7/php7.y:4312
{
name := &ast.Identifier{
Node: ast.Node{
@ -6982,7 +6980,7 @@ yydefault:
}
case 442:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4331
// line internal/php7/php7.y:4329
{
yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node}
@ -6996,7 +6994,7 @@ yydefault:
}
case 443:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4343
// line internal/php7/php7.y:4341
{
yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node}
@ -7008,7 +7006,7 @@ yydefault:
}
case 444:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4356
// line internal/php7/php7.y:4354
{
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -7021,7 +7019,7 @@ yydefault:
}
case 445:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4367
// line internal/php7/php7.y:4365
{
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -7034,13 +7032,13 @@ yydefault:
}
case 446:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4381
// line internal/php7/php7.y:4379
{
yyVAL.node = yyDollar[1].node
}
case 447:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4385
// line internal/php7/php7.y:4383
{
yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{
@ -7054,7 +7052,7 @@ yydefault:
}
case 448:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4397
// line internal/php7/php7.y:4395
{
yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{
@ -7068,7 +7066,7 @@ yydefault:
}
case 449:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4409
// line internal/php7/php7.y:4407
{
yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -7081,7 +7079,7 @@ yydefault:
}
case 450:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4420
// line internal/php7/php7.y:4418
{
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -7094,7 +7092,7 @@ yydefault:
}
case 451:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4431
// line internal/php7/php7.y:4429
{
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -7107,7 +7105,7 @@ yydefault:
}
case 452:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4445
// line internal/php7/php7.y:4443
{
yyVAL.node = &ast.Identifier{
Node: ast.Node{
@ -7119,7 +7117,7 @@ yydefault:
}
case 453:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4455
// line internal/php7/php7.y:4453
{
yyVAL.node = yyDollar[2].node
@ -7129,13 +7127,13 @@ yydefault:
}
case 454:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4463
// line internal/php7/php7.y:4461
{
yyVAL.node = yyDollar[1].node
}
case 455:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4470
// line internal/php7/php7.y:4468
{
yyVAL.node = &ast.Identifier{
Node: ast.Node{
@ -7147,7 +7145,7 @@ yydefault:
}
case 456:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4480
// line internal/php7/php7.y:4478
{
yyVAL.node = yyDollar[2].node
@ -7157,13 +7155,13 @@ yydefault:
}
case 457:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4488
// line internal/php7/php7.y:4486
{
yyVAL.node = yyDollar[1].node
}
case 458:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4495
// line internal/php7/php7.y:4493
{
pairList := yyDollar[1].node.(*ast.ParserSeparatedList)
fistPair := pairList.Items[0].(*ast.ExprArrayItem)
@ -7176,19 +7174,19 @@ yydefault:
}
case 459:
yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:4509
// line internal/php7/php7.y:4507
{
yyVAL.node = &ast.ExprArrayItem{}
}
case 460:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4513
// line internal/php7/php7.y:4511
{
yyVAL.node = yyDollar[1].node
}
case 461:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4520
// line internal/php7/php7.y:4518
{
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)
@ -7197,7 +7195,7 @@ yydefault:
}
case 462:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4527
// line internal/php7/php7.y:4525
{
yyVAL.node = &ast.ParserSeparatedList{
Items: []ast.Vertex{yyDollar[1].node},
@ -7205,7 +7203,7 @@ yydefault:
}
case 463:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4536
// line internal/php7/php7.y:4534
{
yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{
@ -7218,7 +7216,7 @@ yydefault:
}
case 464:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4547
// line internal/php7/php7.y:4545
{
yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{
@ -7229,7 +7227,7 @@ yydefault:
}
case 465:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4556
// line internal/php7/php7.y:4554
{
yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{
@ -7247,7 +7245,7 @@ yydefault:
}
case 466:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4572
// line internal/php7/php7.y:4570
{
yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{
@ -7263,7 +7261,7 @@ yydefault:
}
case 467:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4586
// line internal/php7/php7.y:4584
{
yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{
@ -7275,7 +7273,7 @@ yydefault:
}
case 468:
yyDollar = yyS[yypt-6 : yypt+1]
// line internal/php7/php7.y:4596
// line internal/php7/php7.y:4594
{
yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{
@ -7297,7 +7295,7 @@ yydefault:
}
case 469:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4616
// line internal/php7/php7.y:4614
{
yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{
@ -7317,13 +7315,13 @@ yydefault:
}
case 470:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4637
// line internal/php7/php7.y:4635
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
}
case 471:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4641
// line internal/php7/php7.y:4639
{
yyVAL.list = append(
yyDollar[1].list,
@ -7338,13 +7336,13 @@ yydefault:
}
case 472:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4654
// line internal/php7/php7.y:4652
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
}
case 473:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4658
// line internal/php7/php7.y:4656
{
yyVAL.list = []ast.Vertex{
&ast.ScalarEncapsedStringPart{
@ -7359,7 +7357,7 @@ yydefault:
}
case 474:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4674
// line internal/php7/php7.y:4672
{
name := &ast.Identifier{
Node: ast.Node{
@ -7378,7 +7376,7 @@ yydefault:
}
case 475:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4691
// line internal/php7/php7.y:4689
{
yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{
@ -7403,7 +7401,7 @@ yydefault:
}
case 476:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4714
// line internal/php7/php7.y:4712
{
identifier := &ast.Identifier{
Node: ast.Node{
@ -7431,7 +7429,7 @@ yydefault:
}
case 477:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4740
// line internal/php7/php7.y:4738
{
variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node}
@ -7446,7 +7444,7 @@ yydefault:
}
case 478:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4753
// line internal/php7/php7.y:4751
{
name := &ast.Identifier{
Node: ast.Node{
@ -7468,7 +7466,7 @@ yydefault:
}
case 479:
yyDollar = yyS[yypt-6 : yypt+1]
// line internal/php7/php7.y:4773
// line internal/php7/php7.y:4771
{
yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{
@ -7495,7 +7493,7 @@ yydefault:
}
case 480:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4798
// line internal/php7/php7.y:4796
{
yyVAL.node = yyDollar[2].node
@ -7505,7 +7503,7 @@ yydefault:
}
case 481:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4809
// line internal/php7/php7.y:4807
{
yyVAL.node = &ast.ScalarString{
Node: ast.Node{
@ -7517,7 +7515,7 @@ yydefault:
}
case 482:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4819
// line internal/php7/php7.y:4817
{
// TODO: add option to handle 64 bit integer
if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil {
@ -7540,7 +7538,7 @@ yydefault:
}
case 483:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4840
// line internal/php7/php7.y:4838
{
_, err := strconv.Atoi(string(yyDollar[2].token.Value))
isInt := err == nil
@ -7568,7 +7566,7 @@ yydefault:
}
case 484:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4866
// line internal/php7/php7.y:4864
{
identifier := &ast.Identifier{
Node: ast.Node{
@ -7587,7 +7585,7 @@ yydefault:
}
case 485:
yyDollar = yyS[yypt-5 : yypt+1]
// line internal/php7/php7.y:4886
// line internal/php7/php7.y:4884
{
yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list}
@ -7605,7 +7603,7 @@ yydefault:
}
case 486:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4902
// line internal/php7/php7.y:4900
{
exprBrackets := &ast.ParserBrackets{
Node: ast.Node{
@ -7627,7 +7625,7 @@ yydefault:
}
case 487:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4922
// line internal/php7/php7.y:4920
{
yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node}
@ -7639,7 +7637,7 @@ yydefault:
}
case 488:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4932
// line internal/php7/php7.y:4930
{
yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node}
@ -7651,7 +7649,7 @@ yydefault:
}
case 489:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4942
// line internal/php7/php7.y:4940
{
exprBrackets := &ast.ParserBrackets{
Node: ast.Node{
@ -7673,7 +7671,7 @@ yydefault:
}
case 490:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4962
// line internal/php7/php7.y:4960
{
yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node}
@ -7685,7 +7683,7 @@ yydefault:
}
case 491:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4972
// line internal/php7/php7.y:4970
{
yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node}
@ -7697,13 +7695,13 @@ yydefault:
}
case 492:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4985
// line internal/php7/php7.y:4983
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
}
case 493:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4989
// line internal/php7/php7.y:4987
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@ -7712,7 +7710,7 @@ yydefault:
}
case 494:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4999
// line internal/php7/php7.y:4997
{
yyVAL.node = yyDollar[1].node
}

View File

@ -2866,13 +2866,13 @@ expr_without_variable:
}
| T_CLONE expr
{
$$ = &ast.ExprClone{ast.Node{}, $2}
// save position
$$.GetNode().Position = position.NewTokenNodePosition($1, $2)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ExprClone{
Node: ast.Node{
Position: position.NewTokenNodePosition($1, $2),
},
CloneTkn: $1,
Expr: $2,
}
}
| variable T_PLUS_EQUAL expr
{
@ -3267,23 +3267,23 @@ expr_without_variable:
}
| '!' expr
{
$$ = &ast.ExprBooleanNot{ast.Node{}, $2}
// save position
$$.GetNode().Position = position.NewTokenNodePosition($1, $2)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ExprBooleanNot{
Node: ast.Node{
Position: position.NewTokenNodePosition($1, $2),
},
ExclamationTkn: $1,
Expr: $2,
}
}
| '~' expr
{
$$ = &ast.ExprBitwiseNot{ast.Node{}, $2}
// save position
$$.GetNode().Position = position.NewTokenNodePosition($1, $2)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ExprBitwiseNot{
Node: ast.Node{
Position: position.NewTokenNodePosition($1, $2),
},
TildaTkn: $1,
Expr: $2,
}
}
| expr T_IS_IDENTICAL expr
{
@ -4112,39 +4112,37 @@ constant:
}
| class_name T_PAAMAYIM_NEKUDOTAYIM identifier
{
target := &ast.Identifier{
$$ = &ast.ExprClassConstFetch{
Node: ast.Node{
Position: position.NewTokenPosition($3),
Position: position.NewNodeTokenPosition($1, $3),
},
Class: $1,
DoubleColonTkn: $2,
ConstantName: &ast.Identifier{
Node: ast.Node{
Position: position.NewTokenPosition($3),
},
IdentifierTkn: $3,
Value: $3.Value,
},
IdentifierTkn: $3,
Value: $3.Value,
}
$$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target}
// save position
$$.GetNode().Position = position.NewNodeTokenPosition($1, $3)
// save comments
yylex.(*Parser).MoveFreeFloating($1, $$)
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
}
| variable_class_name T_PAAMAYIM_NEKUDOTAYIM identifier
{
target := &ast.Identifier{
$$ = &ast.ExprClassConstFetch{
Node: ast.Node{
Position: position.NewTokenPosition($3),
Position: position.NewNodeTokenPosition($1, $3),
},
Class: $1,
DoubleColonTkn: $2,
ConstantName: &ast.Identifier{
Node: ast.Node{
Position: position.NewTokenPosition($3),
},
IdentifierTkn: $3,
Value: $3.Value,
},
IdentifierTkn: $3,
Value: $3.Value,
}
$$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target}
// save position
$$.GetNode().Position = position.NewNodeTokenPosition($1, $3)
// save comments
yylex.(*Parser).MoveFreeFloating($1, $$)
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
}
;

View File

@ -1000,7 +1000,8 @@ func (n *ExprArrowFunction) Accept(v NodeVisitor) {
// ExprBitwiseNot node
type ExprBitwiseNot struct {
Node
Expr Vertex
TildaTkn *token.Token
Expr Vertex
}
func (n *ExprBitwiseNot) Accept(v NodeVisitor) {
@ -1010,7 +1011,8 @@ func (n *ExprBitwiseNot) Accept(v NodeVisitor) {
// ExprBooleanNot node
type ExprBooleanNot struct {
Node
Expr Vertex
ExclamationTkn *token.Token
Expr Vertex
}
func (n *ExprBooleanNot) Accept(v NodeVisitor) {
@ -1020,8 +1022,9 @@ func (n *ExprBooleanNot) Accept(v NodeVisitor) {
// ExprClassConstFetch node
type ExprClassConstFetch struct {
Node
Class Vertex
ConstantName Vertex
Class Vertex
DoubleColonTkn *token.Token
ConstantName Vertex
}
func (n *ExprClassConstFetch) Accept(v NodeVisitor) {
@ -1031,7 +1034,8 @@ func (n *ExprClassConstFetch) Accept(v NodeVisitor) {
// ExprClone node
type ExprClone struct {
Node
Expr Vertex
CloneTkn *token.Token
Expr Vertex
}
func (n *ExprClone) Accept(v NodeVisitor) {