[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 | T_CLONE expr
{ {
$$ = &ast.ExprClone{ast.Node{}, $2} $$ = &ast.ExprClone{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
CloneTkn: $1,
// save comments Expr: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
| variable T_PLUS_EQUAL expr | variable T_PLUS_EQUAL expr
{ {
@ -3609,23 +3609,23 @@ expr_without_variable:
} }
| '!' expr | '!' expr
{ {
$$ = &ast.ExprBooleanNot{ast.Node{}, $2} $$ = &ast.ExprBooleanNot{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
ExclamationTkn: $1,
// save comments Expr: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
| '~' expr | '~' expr
{ {
$$ = &ast.ExprBitwiseNot{ast.Node{}, $2} $$ = &ast.ExprBitwiseNot{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
TildaTkn: $1,
// save comments Expr: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
| expr T_IS_IDENTICAL expr | expr T_IS_IDENTICAL expr
{ {
@ -4665,21 +4665,20 @@ common_scalar:
static_class_constant: static_class_constant:
class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING
{ {
target := &ast.Identifier{ $$ = &ast.ExprClassConstFetch{
Node: ast.Node{ 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 | '!' static_scalar_value
{ {
$$ = &ast.ExprBooleanNot{ast.Node{}, $2} $$ = &ast.ExprBooleanNot{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
ExclamationTkn: $1,
// save comments Expr: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
| '~' static_scalar_value | '~' static_scalar_value
{ {
$$ = &ast.ExprBitwiseNot{ast.Node{}, $2} $$ = &ast.ExprBitwiseNot{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
TildaTkn: $1,
// save comments Expr: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
| static_scalar_value '|' static_scalar_value | static_scalar_value '|' static_scalar_value
{ {
@ -6445,81 +6444,77 @@ isset_variable:
class_constant: class_constant:
class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING
{ {
target := &ast.Identifier{ $$ = &ast.ExprClassConstFetch{
Node: ast.Node{ 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 | variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING
{ {
target := &ast.Identifier{ $$ = &ast.ExprClassConstFetch{
Node: ast.Node{ 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: static_class_name_scalar:
class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS
{ {
target := &ast.Identifier{ $$ = &ast.ExprClassConstFetch{
Node: ast.Node{ 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_scalar:
class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS
{ {
target := &ast.Identifier{ $$ = &ast.ExprClassConstFetch{
Node: ast.Node{ 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 yyErrCode = 2
const yyInitialStackSize = 16 const yyInitialStackSize = 16
// line internal/php7/php7.y:5006 // line internal/php7/php7.y:5004
// line yacctab:1 // line yacctab:1
var yyExca = [...]int{ var yyExca = [...]int{
@ -5309,13 +5309,13 @@ yydefault:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:2868 // line internal/php7/php7.y:2868
{ {
yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node} yyVAL.node = &ast.ExprClone{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) },
CloneTkn: yyDollar[1].token,
// save comments Expr: yyDollar[2].node,
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) }
} }
case 301: case 301:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
@ -5784,25 +5784,25 @@ yydefault:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:3269 // line internal/php7/php7.y:3269
{ {
yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} yyVAL.node = &ast.ExprBooleanNot{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) },
ExclamationTkn: yyDollar[1].token,
// save comments Expr: yyDollar[2].node,
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) }
} }
case 338: case 338:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:3279 // line internal/php7/php7.y:3279
{ {
yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} yyVAL.node = &ast.ExprBitwiseNot{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node),
yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) },
TildaTkn: yyDollar[1].token,
// save comments Expr: yyDollar[2].node,
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) }
} }
case 339: case 339:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
@ -6745,81 +6745,79 @@ yydefault:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4114 // line internal/php7/php7.y:4114
{ {
target := &ast.Identifier{ yyVAL.node = &ast.ExprClassConstFetch{
Node: ast.Node{ 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: case 420:
yyDollar = yyS[yypt-3 : yypt+1] 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{ 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: case 421:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4153 // line internal/php7/php7.y:4151
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 422: case 422:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4157 // line internal/php7/php7.y:4155
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 423: case 423:
yyDollar = yyS[yypt-0 : yypt+1] yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:4164 // line internal/php7/php7.y:4162
{ {
yyVAL.node = nil yyVAL.node = nil
} }
case 424: case 424:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4168 // line internal/php7/php7.y:4166
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 425: case 425:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4175 // line internal/php7/php7.y:4173
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 426: case 426:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4182 // line internal/php7/php7.y:4180
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 427: case 427:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4186 // line internal/php7/php7.y:4184
{ {
yyVAL.node = &ast.ParserBrackets{ yyVAL.node = &ast.ParserBrackets{
Node: ast.Node{ Node: ast.Node{
@ -6836,19 +6834,19 @@ yydefault:
} }
case 428: case 428:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4201 // line internal/php7/php7.y:4199
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 429: case 429:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4208 // line internal/php7/php7.y:4206
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 430: case 430:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4212 // line internal/php7/php7.y:4210
{ {
yyVAL.node = &ast.ParserBrackets{ yyVAL.node = &ast.ParserBrackets{
Node: ast.Node{ Node: ast.Node{
@ -6865,19 +6863,19 @@ yydefault:
} }
case 431: case 431:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4227 // line internal/php7/php7.y:4225
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 432: case 432:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4234 // line internal/php7/php7.y:4232
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 433: case 433:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4238 // line internal/php7/php7.y:4236
{ {
yyVAL.node = &ast.ExprArrayDimFetch{ yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{ Node: ast.Node{
@ -6891,7 +6889,7 @@ yydefault:
} }
case 434: case 434:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4250 // line internal/php7/php7.y:4248
{ {
yyVAL.node = &ast.ExprArrayDimFetch{ yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{ Node: ast.Node{
@ -6905,7 +6903,7 @@ yydefault:
} }
case 435: case 435:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4262 // line internal/php7/php7.y:4260
{ {
yyVAL.node = &ast.ExprArrayDimFetch{ yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{ Node: ast.Node{
@ -6919,7 +6917,7 @@ yydefault:
} }
case 436: case 436:
yyDollar = yyS[yypt-4 : yypt+1] 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)} yyVAL.node = &ast.ExprMethodCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)}
@ -6932,25 +6930,25 @@ yydefault:
} }
case 437: case 437:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4285 // line internal/php7/php7.y:4283
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 438: case 438:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4292 // line internal/php7/php7.y:4290
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 439: case 439:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4296 // line internal/php7/php7.y:4294
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }
case 440: case 440:
yyDollar = yyS[yypt-3 : yypt+1] 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} yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -6963,7 +6961,7 @@ yydefault:
} }
case 441: case 441:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4314 // line internal/php7/php7.y:4312
{ {
name := &ast.Identifier{ name := &ast.Identifier{
Node: ast.Node{ Node: ast.Node{
@ -6982,7 +6980,7 @@ yydefault:
} }
case 442: case 442:
yyDollar = yyS[yypt-4 : yypt+1] 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} yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node}
@ -6996,7 +6994,7 @@ yydefault:
} }
case 443: case 443:
yyDollar = yyS[yypt-2 : yypt+1] 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} yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node}
@ -7008,7 +7006,7 @@ yydefault:
} }
case 444: case 444:
yyDollar = yyS[yypt-3 : yypt+1] 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} yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -7021,7 +7019,7 @@ yydefault:
} }
case 445: case 445:
yyDollar = yyS[yypt-3 : yypt+1] 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} yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -7034,13 +7032,13 @@ yydefault:
} }
case 446: case 446:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4381 // line internal/php7/php7.y:4379
{ {
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:4385 // line internal/php7/php7.y:4383
{ {
yyVAL.node = &ast.ExprArrayDimFetch{ yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{ Node: ast.Node{
@ -7054,7 +7052,7 @@ yydefault:
} }
case 448: case 448:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4397 // line internal/php7/php7.y:4395
{ {
yyVAL.node = &ast.ExprArrayDimFetch{ yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{ Node: ast.Node{
@ -7068,7 +7066,7 @@ yydefault:
} }
case 449: case 449:
yyDollar = yyS[yypt-3 : yypt+1] 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} yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -7081,7 +7079,7 @@ yydefault:
} }
case 450: case 450:
yyDollar = yyS[yypt-3 : yypt+1] 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} yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -7094,7 +7092,7 @@ yydefault:
} }
case 451: case 451:
yyDollar = yyS[yypt-3 : yypt+1] 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} yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@ -7107,7 +7105,7 @@ yydefault:
} }
case 452: case 452:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4445 // line internal/php7/php7.y:4443
{ {
yyVAL.node = &ast.Identifier{ yyVAL.node = &ast.Identifier{
Node: ast.Node{ Node: ast.Node{
@ -7119,7 +7117,7 @@ yydefault:
} }
case 453: case 453:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4455 // line internal/php7/php7.y:4453
{ {
yyVAL.node = yyDollar[2].node yyVAL.node = yyDollar[2].node
@ -7129,13 +7127,13 @@ yydefault:
} }
case 454: case 454:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4463 // line internal/php7/php7.y:4461
{ {
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:4470 // line internal/php7/php7.y:4468
{ {
yyVAL.node = &ast.Identifier{ yyVAL.node = &ast.Identifier{
Node: ast.Node{ Node: ast.Node{
@ -7147,7 +7145,7 @@ yydefault:
} }
case 456: case 456:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4480 // line internal/php7/php7.y:4478
{ {
yyVAL.node = yyDollar[2].node yyVAL.node = yyDollar[2].node
@ -7157,13 +7155,13 @@ yydefault:
} }
case 457: case 457:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4488 // line internal/php7/php7.y:4486
{ {
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:4495 // line internal/php7/php7.y:4493
{ {
pairList := yyDollar[1].node.(*ast.ParserSeparatedList) pairList := yyDollar[1].node.(*ast.ParserSeparatedList)
fistPair := pairList.Items[0].(*ast.ExprArrayItem) fistPair := pairList.Items[0].(*ast.ExprArrayItem)
@ -7176,19 +7174,19 @@ yydefault:
} }
case 459: case 459:
yyDollar = yyS[yypt-0 : yypt+1] yyDollar = yyS[yypt-0 : yypt+1]
// line internal/php7/php7.y:4509 // line internal/php7/php7.y:4507
{ {
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:4513 // line internal/php7/php7.y:4511
{ {
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: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).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)
@ -7197,7 +7195,7 @@ yydefault:
} }
case 462: case 462:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4527 // line internal/php7/php7.y:4525
{ {
yyVAL.node = &ast.ParserSeparatedList{ yyVAL.node = &ast.ParserSeparatedList{
Items: []ast.Vertex{yyDollar[1].node}, Items: []ast.Vertex{yyDollar[1].node},
@ -7205,7 +7203,7 @@ yydefault:
} }
case 463: case 463:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4536 // line internal/php7/php7.y:4534
{ {
yyVAL.node = &ast.ExprArrayItem{ yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{ Node: ast.Node{
@ -7218,7 +7216,7 @@ yydefault:
} }
case 464: case 464:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4547 // line internal/php7/php7.y:4545
{ {
yyVAL.node = &ast.ExprArrayItem{ yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{ Node: ast.Node{
@ -7229,7 +7227,7 @@ yydefault:
} }
case 465: case 465:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4556 // line internal/php7/php7.y:4554
{ {
yyVAL.node = &ast.ExprArrayItem{ yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{ Node: ast.Node{
@ -7247,7 +7245,7 @@ yydefault:
} }
case 466: case 466:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4572 // line internal/php7/php7.y:4570
{ {
yyVAL.node = &ast.ExprArrayItem{ yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{ Node: ast.Node{
@ -7263,7 +7261,7 @@ yydefault:
} }
case 467: case 467:
yyDollar = yyS[yypt-2 : yypt+1] yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4586 // line internal/php7/php7.y:4584
{ {
yyVAL.node = &ast.ExprArrayItem{ yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{ Node: ast.Node{
@ -7275,7 +7273,7 @@ yydefault:
} }
case 468: case 468:
yyDollar = yyS[yypt-6 : yypt+1] yyDollar = yyS[yypt-6 : yypt+1]
// line internal/php7/php7.y:4596 // line internal/php7/php7.y:4594
{ {
yyVAL.node = &ast.ExprArrayItem{ yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{ Node: ast.Node{
@ -7297,7 +7295,7 @@ yydefault:
} }
case 469: case 469:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4616 // line internal/php7/php7.y:4614
{ {
yyVAL.node = &ast.ExprArrayItem{ yyVAL.node = &ast.ExprArrayItem{
Node: ast.Node{ Node: ast.Node{
@ -7317,13 +7315,13 @@ yydefault:
} }
case 470: case 470:
yyDollar = yyS[yypt-2 : yypt+1] 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) 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:4641 // line internal/php7/php7.y:4639
{ {
yyVAL.list = append( yyVAL.list = append(
yyDollar[1].list, yyDollar[1].list,
@ -7338,13 +7336,13 @@ yydefault:
} }
case 472: case 472:
yyDollar = yyS[yypt-1 : yypt+1] 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} 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:4658 // line internal/php7/php7.y:4656
{ {
yyVAL.list = []ast.Vertex{ yyVAL.list = []ast.Vertex{
&ast.ScalarEncapsedStringPart{ &ast.ScalarEncapsedStringPart{
@ -7359,7 +7357,7 @@ yydefault:
} }
case 474: case 474:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4674 // line internal/php7/php7.y:4672
{ {
name := &ast.Identifier{ name := &ast.Identifier{
Node: ast.Node{ Node: ast.Node{
@ -7378,7 +7376,7 @@ yydefault:
} }
case 475: case 475:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4691 // line internal/php7/php7.y:4689
{ {
yyVAL.node = &ast.ExprArrayDimFetch{ yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{ Node: ast.Node{
@ -7403,7 +7401,7 @@ yydefault:
} }
case 476: case 476:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4714 // line internal/php7/php7.y:4712
{ {
identifier := &ast.Identifier{ identifier := &ast.Identifier{
Node: ast.Node{ Node: ast.Node{
@ -7431,7 +7429,7 @@ yydefault:
} }
case 477: case 477:
yyDollar = yyS[yypt-3 : yypt+1] 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} variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node}
@ -7446,7 +7444,7 @@ yydefault:
} }
case 478: case 478:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4753 // line internal/php7/php7.y:4751
{ {
name := &ast.Identifier{ name := &ast.Identifier{
Node: ast.Node{ Node: ast.Node{
@ -7468,7 +7466,7 @@ yydefault:
} }
case 479: case 479:
yyDollar = yyS[yypt-6 : yypt+1] yyDollar = yyS[yypt-6 : yypt+1]
// line internal/php7/php7.y:4773 // line internal/php7/php7.y:4771
{ {
yyVAL.node = &ast.ExprArrayDimFetch{ yyVAL.node = &ast.ExprArrayDimFetch{
Node: ast.Node{ Node: ast.Node{
@ -7495,7 +7493,7 @@ yydefault:
} }
case 480: case 480:
yyDollar = yyS[yypt-3 : yypt+1] yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4798 // line internal/php7/php7.y:4796
{ {
yyVAL.node = yyDollar[2].node yyVAL.node = yyDollar[2].node
@ -7505,7 +7503,7 @@ yydefault:
} }
case 481: case 481:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4809 // line internal/php7/php7.y:4807
{ {
yyVAL.node = &ast.ScalarString{ yyVAL.node = &ast.ScalarString{
Node: ast.Node{ Node: ast.Node{
@ -7517,7 +7515,7 @@ yydefault:
} }
case 482: case 482:
yyDollar = yyS[yypt-1 : yypt+1] 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 // 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 {
@ -7540,7 +7538,7 @@ yydefault:
} }
case 483: case 483:
yyDollar = yyS[yypt-2 : yypt+1] 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)) _, err := strconv.Atoi(string(yyDollar[2].token.Value))
isInt := err == nil isInt := err == nil
@ -7568,7 +7566,7 @@ yydefault:
} }
case 484: case 484:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4866 // line internal/php7/php7.y:4864
{ {
identifier := &ast.Identifier{ identifier := &ast.Identifier{
Node: ast.Node{ Node: ast.Node{
@ -7587,7 +7585,7 @@ yydefault:
} }
case 485: case 485:
yyDollar = yyS[yypt-5 : yypt+1] 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} yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list}
@ -7605,7 +7603,7 @@ yydefault:
} }
case 486: case 486:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4902 // line internal/php7/php7.y:4900
{ {
exprBrackets := &ast.ParserBrackets{ exprBrackets := &ast.ParserBrackets{
Node: ast.Node{ Node: ast.Node{
@ -7627,7 +7625,7 @@ yydefault:
} }
case 487: case 487:
yyDollar = yyS[yypt-2 : yypt+1] 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} yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node}
@ -7639,7 +7637,7 @@ yydefault:
} }
case 488: case 488:
yyDollar = yyS[yypt-2 : yypt+1] 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} yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node}
@ -7651,7 +7649,7 @@ yydefault:
} }
case 489: case 489:
yyDollar = yyS[yypt-4 : yypt+1] yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4942 // line internal/php7/php7.y:4940
{ {
exprBrackets := &ast.ParserBrackets{ exprBrackets := &ast.ParserBrackets{
Node: ast.Node{ Node: ast.Node{
@ -7673,7 +7671,7 @@ yydefault:
} }
case 490: case 490:
yyDollar = yyS[yypt-2 : yypt+1] 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} yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node}
@ -7685,7 +7683,7 @@ yydefault:
} }
case 491: case 491:
yyDollar = yyS[yypt-2 : yypt+1] 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} yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node}
@ -7697,13 +7695,13 @@ yydefault:
} }
case 492: case 492:
yyDollar = yyS[yypt-1 : yypt+1] 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} yyVAL.list = []ast.Vertex{yyDollar[1].node}
} }
case 493: case 493:
yyDollar = yyS[yypt-3 : yypt+1] 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) yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@ -7712,7 +7710,7 @@ yydefault:
} }
case 494: case 494:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4999 // line internal/php7/php7.y:4997
{ {
yyVAL.node = yyDollar[1].node yyVAL.node = yyDollar[1].node
} }

View File

@ -2866,13 +2866,13 @@ expr_without_variable:
} }
| T_CLONE expr | T_CLONE expr
{ {
$$ = &ast.ExprClone{ast.Node{}, $2} $$ = &ast.ExprClone{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
CloneTkn: $1,
// save comments Expr: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
| variable T_PLUS_EQUAL expr | variable T_PLUS_EQUAL expr
{ {
@ -3267,23 +3267,23 @@ expr_without_variable:
} }
| '!' expr | '!' expr
{ {
$$ = &ast.ExprBooleanNot{ast.Node{}, $2} $$ = &ast.ExprBooleanNot{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
ExclamationTkn: $1,
// save comments Expr: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
| '~' expr | '~' expr
{ {
$$ = &ast.ExprBitwiseNot{ast.Node{}, $2} $$ = &ast.ExprBitwiseNot{
Node: ast.Node{
// save position Position: position.NewTokenNodePosition($1, $2),
$$.GetNode().Position = position.NewTokenNodePosition($1, $2) },
TildaTkn: $1,
// save comments Expr: $2,
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) }
} }
| expr T_IS_IDENTICAL expr | expr T_IS_IDENTICAL expr
{ {
@ -4112,39 +4112,37 @@ constant:
} }
| class_name T_PAAMAYIM_NEKUDOTAYIM identifier | class_name T_PAAMAYIM_NEKUDOTAYIM identifier
{ {
target := &ast.Identifier{ $$ = &ast.ExprClassConstFetch{
Node: ast.Node{ 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 | variable_class_name T_PAAMAYIM_NEKUDOTAYIM identifier
{ {
target := &ast.Identifier{ $$ = &ast.ExprClassConstFetch{
Node: ast.Node{ 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 // ExprBitwiseNot node
type ExprBitwiseNot struct { type ExprBitwiseNot struct {
Node Node
Expr Vertex TildaTkn *token.Token
Expr Vertex
} }
func (n *ExprBitwiseNot) Accept(v NodeVisitor) { func (n *ExprBitwiseNot) Accept(v NodeVisitor) {
@ -1010,7 +1011,8 @@ func (n *ExprBitwiseNot) Accept(v NodeVisitor) {
// ExprBooleanNot node // ExprBooleanNot node
type ExprBooleanNot struct { type ExprBooleanNot struct {
Node Node
Expr Vertex ExclamationTkn *token.Token
Expr Vertex
} }
func (n *ExprBooleanNot) Accept(v NodeVisitor) { func (n *ExprBooleanNot) Accept(v NodeVisitor) {
@ -1020,8 +1022,9 @@ func (n *ExprBooleanNot) Accept(v NodeVisitor) {
// ExprClassConstFetch node // ExprClassConstFetch node
type ExprClassConstFetch struct { type ExprClassConstFetch struct {
Node Node
Class Vertex Class Vertex
ConstantName Vertex DoubleColonTkn *token.Token
ConstantName Vertex
} }
func (n *ExprClassConstFetch) Accept(v NodeVisitor) { func (n *ExprClassConstFetch) Accept(v NodeVisitor) {
@ -1031,7 +1034,8 @@ func (n *ExprClassConstFetch) Accept(v NodeVisitor) {
// ExprClone node // ExprClone node
type ExprClone struct { type ExprClone struct {
Node Node
Expr Vertex CloneTkn *token.Token
Expr Vertex
} }
func (n *ExprClone) Accept(v NodeVisitor) { func (n *ExprClone) Accept(v NodeVisitor) {