[refactoring] update ast structure of "Encapsed", "EncapsedStringPart" and "Heredoc" nodes
This commit is contained in:
parent
e3ad9747f4
commit
e6a23dfa3a
463
internal/php5/php5.go
generated
463
internal/php5/php5.go
generated
File diff suppressed because it is too large
Load Diff
@ -4467,11 +4467,15 @@ backticks_expr:
|
||||
}
|
||||
| T_ENCAPSED_AND_WHITESPACE
|
||||
{
|
||||
part := &ast.ScalarEncapsedStringPart{ast.Node{}, $1.Value}
|
||||
$$ = []ast.Vertex{part}
|
||||
|
||||
// save position
|
||||
part.GetNode().Position = position.NewTokenPosition($1)
|
||||
$$ = []ast.Vertex{
|
||||
&ast.ScalarEncapsedStringPart{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokenPosition($1),
|
||||
},
|
||||
EncapsedStrTkn: $1,
|
||||
Value: $1.Value,
|
||||
},
|
||||
}
|
||||
}
|
||||
| encaps_list
|
||||
{
|
||||
@ -4593,25 +4597,32 @@ common_scalar:
|
||||
}
|
||||
| T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
|
||||
{
|
||||
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $2.Value}
|
||||
$$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, []ast.Vertex{encapsed}}
|
||||
|
||||
// save position
|
||||
encapsed.GetNode().Position = position.NewTokenPosition($2)
|
||||
$$.GetNode().Position = position.NewTokensPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
|
||||
$$ = &ast.ScalarHeredoc{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokensPosition($1, $3),
|
||||
},
|
||||
OpenHeredocTkn: $1,
|
||||
Parts: []ast.Vertex{
|
||||
&ast.ScalarEncapsedStringPart{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokenPosition($2),
|
||||
},
|
||||
EncapsedStrTkn: $2,
|
||||
Value: $2.Value,
|
||||
},
|
||||
},
|
||||
CloseHeredocTkn: $3,
|
||||
}
|
||||
}
|
||||
| T_START_HEREDOC T_END_HEREDOC
|
||||
{
|
||||
$$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, nil}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewTokensPosition($1, $2)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
|
||||
$$ = &ast.ScalarHeredoc{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokensPosition($1, $2),
|
||||
},
|
||||
OpenHeredocTkn: $1,
|
||||
CloseHeredocTkn: $2,
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
@ -5180,23 +5191,25 @@ scalar:
|
||||
}
|
||||
| '"' encaps_list '"'
|
||||
{
|
||||
$$ = &ast.ScalarEncapsed{ast.Node{}, $2}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewTokensPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
|
||||
$$ = &ast.ScalarEncapsed{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokensPosition($1, $3),
|
||||
},
|
||||
OpenQoteTkn: $1,
|
||||
Parts: $2,
|
||||
CloseQoteTkn: $1,
|
||||
}
|
||||
}
|
||||
| T_START_HEREDOC encaps_list T_END_HEREDOC
|
||||
{
|
||||
$$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, $2}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewTokensPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
|
||||
$$ = &ast.ScalarHeredoc{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokensPosition($1, $3),
|
||||
},
|
||||
OpenHeredocTkn: $1,
|
||||
Parts: $2,
|
||||
CloseHeredocTkn: $3,
|
||||
}
|
||||
}
|
||||
| T_CLASS_C
|
||||
{
|
||||
@ -5976,14 +5989,16 @@ encaps_list:
|
||||
}
|
||||
| encaps_list T_ENCAPSED_AND_WHITESPACE
|
||||
{
|
||||
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $2.Value}
|
||||
$$ = append($1, encapsed)
|
||||
|
||||
// save position
|
||||
encapsed.GetNode().Position = position.NewTokenPosition($2)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating(encapsed, token.Start, $2.SkippedTokens)
|
||||
$$ = append(
|
||||
$1,
|
||||
&ast.ScalarEncapsedStringPart{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokenPosition($2),
|
||||
},
|
||||
EncapsedStrTkn: $2,
|
||||
Value: $2.Value,
|
||||
},
|
||||
)
|
||||
}
|
||||
| encaps_var
|
||||
{
|
||||
@ -5991,14 +6006,16 @@ encaps_list:
|
||||
}
|
||||
| T_ENCAPSED_AND_WHITESPACE encaps_var
|
||||
{
|
||||
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $1.Value}
|
||||
$$ = []ast.Vertex{encapsed, $2}
|
||||
|
||||
// save position
|
||||
encapsed.GetNode().Position = position.NewTokenPosition($1)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating(encapsed, token.Start, $1.SkippedTokens)
|
||||
$$ = []ast.Vertex{
|
||||
&ast.ScalarEncapsedStringPart{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokenPosition($1),
|
||||
},
|
||||
EncapsedStrTkn: $1,
|
||||
Value: $1.Value,
|
||||
},
|
||||
$2,
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
|
319
internal/php7/php7.go
generated
319
internal/php7/php7.go
generated
@ -347,7 +347,7 @@ const yyEofCode = 1
|
||||
const yyErrCode = 2
|
||||
const yyInitialStackSize = 16
|
||||
|
||||
// line internal/php7/php7.y:4971
|
||||
// line internal/php7/php7.y:4988
|
||||
|
||||
// line yacctab:1
|
||||
var yyExca = [...]int{
|
||||
@ -6482,33 +6482,37 @@ yydefault:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3880
|
||||
{
|
||||
part := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value}
|
||||
yyVAL.list = []ast.Vertex{part}
|
||||
|
||||
// save position
|
||||
part.GetNode().Position = position.NewTokenPosition(yyDollar[1].token)
|
||||
yyVAL.list = []ast.Vertex{
|
||||
&ast.ScalarEncapsedStringPart{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokenPosition(yyDollar[1].token),
|
||||
},
|
||||
EncapsedStrTkn: yyDollar[1].token,
|
||||
Value: yyDollar[1].token.Value,
|
||||
},
|
||||
}
|
||||
}
|
||||
case 396:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3888
|
||||
// line internal/php7/php7.y:3892
|
||||
{
|
||||
yyVAL.list = yyDollar[1].list
|
||||
}
|
||||
case 397:
|
||||
yyDollar = yyS[yypt-0 : yypt+1]
|
||||
// line internal/php7/php7.y:3895
|
||||
// line internal/php7/php7.y:3899
|
||||
{
|
||||
yyVAL.node = nil
|
||||
}
|
||||
case 398:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3899
|
||||
// line internal/php7/php7.y:3903
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 399:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:3906
|
||||
// line internal/php7/php7.y:3910
|
||||
{
|
||||
yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list}
|
||||
|
||||
@ -6522,7 +6526,7 @@ yydefault:
|
||||
}
|
||||
case 400:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:3918
|
||||
// line internal/php7/php7.y:3922
|
||||
{
|
||||
yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list}
|
||||
|
||||
@ -6535,7 +6539,7 @@ yydefault:
|
||||
}
|
||||
case 401:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3929
|
||||
// line internal/php7/php7.y:3933
|
||||
{
|
||||
yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value}
|
||||
|
||||
@ -6547,7 +6551,7 @@ yydefault:
|
||||
}
|
||||
case 402:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3942
|
||||
// line internal/php7/php7.y:3946
|
||||
{
|
||||
yyVAL.node = &ast.ScalarLnumber{
|
||||
Node: ast.Node{
|
||||
@ -6559,7 +6563,7 @@ yydefault:
|
||||
}
|
||||
case 403:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3952
|
||||
// line internal/php7/php7.y:3956
|
||||
{
|
||||
yyVAL.node = &ast.ScalarDnumber{
|
||||
Node: ast.Node{
|
||||
@ -6571,7 +6575,7 @@ yydefault:
|
||||
}
|
||||
case 404:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3962
|
||||
// line internal/php7/php7.y:3966
|
||||
{
|
||||
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
|
||||
|
||||
@ -6583,7 +6587,7 @@ yydefault:
|
||||
}
|
||||
case 405:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3972
|
||||
// line internal/php7/php7.y:3976
|
||||
{
|
||||
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
|
||||
|
||||
@ -6595,7 +6599,7 @@ yydefault:
|
||||
}
|
||||
case 406:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3982
|
||||
// line internal/php7/php7.y:3986
|
||||
{
|
||||
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
|
||||
|
||||
@ -6607,7 +6611,7 @@ yydefault:
|
||||
}
|
||||
case 407:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:3992
|
||||
// line internal/php7/php7.y:3996
|
||||
{
|
||||
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
|
||||
|
||||
@ -6619,7 +6623,7 @@ yydefault:
|
||||
}
|
||||
case 408:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4002
|
||||
// line internal/php7/php7.y:4006
|
||||
{
|
||||
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
|
||||
|
||||
@ -6631,7 +6635,7 @@ yydefault:
|
||||
}
|
||||
case 409:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4012
|
||||
// line internal/php7/php7.y:4016
|
||||
{
|
||||
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
|
||||
|
||||
@ -6643,7 +6647,7 @@ yydefault:
|
||||
}
|
||||
case 410:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4022
|
||||
// line internal/php7/php7.y:4026
|
||||
{
|
||||
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
|
||||
|
||||
@ -6655,7 +6659,7 @@ yydefault:
|
||||
}
|
||||
case 411:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4032
|
||||
// line internal/php7/php7.y:4036
|
||||
{
|
||||
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
|
||||
|
||||
@ -6667,69 +6671,78 @@ yydefault:
|
||||
}
|
||||
case 412:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4042
|
||||
// line internal/php7/php7.y:4046
|
||||
{
|
||||
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value}
|
||||
yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, []ast.Vertex{encapsed}}
|
||||
|
||||
// save position
|
||||
encapsed.GetNode().Position = position.NewTokenPosition(yyDollar[2].token)
|
||||
yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
|
||||
yyVAL.node = &ast.ScalarHeredoc{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||
},
|
||||
OpenHeredocTkn: yyDollar[1].token,
|
||||
Parts: []ast.Vertex{
|
||||
&ast.ScalarEncapsedStringPart{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokenPosition(yyDollar[2].token),
|
||||
},
|
||||
EncapsedStrTkn: yyDollar[2].token,
|
||||
Value: yyDollar[2].token.Value,
|
||||
},
|
||||
},
|
||||
CloseHeredocTkn: yyDollar[3].token,
|
||||
}
|
||||
}
|
||||
case 413:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4054
|
||||
// line internal/php7/php7.y:4065
|
||||
{
|
||||
yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, nil}
|
||||
|
||||
// save position
|
||||
yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
|
||||
yyVAL.node = &ast.ScalarHeredoc{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token),
|
||||
},
|
||||
OpenHeredocTkn: yyDollar[1].token,
|
||||
CloseHeredocTkn: yyDollar[2].token,
|
||||
}
|
||||
}
|
||||
case 414:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4064
|
||||
// line internal/php7/php7.y:4075
|
||||
{
|
||||
yyVAL.node = &ast.ScalarEncapsed{ast.Node{}, yyDollar[2].list}
|
||||
|
||||
// save position
|
||||
yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
|
||||
yyVAL.node = &ast.ScalarEncapsed{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||
},
|
||||
OpenQoteTkn: yyDollar[1].token,
|
||||
Parts: yyDollar[2].list,
|
||||
CloseQoteTkn: yyDollar[1].token,
|
||||
}
|
||||
}
|
||||
case 415:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4074
|
||||
// line internal/php7/php7.y:4086
|
||||
{
|
||||
yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, yyDollar[2].list}
|
||||
|
||||
// save position
|
||||
yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
|
||||
yyVAL.node = &ast.ScalarHeredoc{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token),
|
||||
},
|
||||
OpenHeredocTkn: yyDollar[1].token,
|
||||
Parts: yyDollar[2].list,
|
||||
CloseHeredocTkn: yyDollar[3].token,
|
||||
}
|
||||
}
|
||||
case 416:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4084
|
||||
// line internal/php7/php7.y:4097
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 417:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4088
|
||||
// line internal/php7/php7.y:4101
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 418:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4095
|
||||
// line internal/php7/php7.y:4108
|
||||
{
|
||||
yyVAL.node = &ast.ExprConstFetch{ast.Node{}, yyDollar[1].node}
|
||||
|
||||
@ -6741,7 +6754,7 @@ yydefault:
|
||||
}
|
||||
case 419:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4105
|
||||
// line internal/php7/php7.y:4118
|
||||
{
|
||||
target := &ast.Identifier{
|
||||
Node: ast.Node{
|
||||
@ -6761,7 +6774,7 @@ yydefault:
|
||||
}
|
||||
case 420:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4123
|
||||
// line internal/php7/php7.y:4136
|
||||
{
|
||||
target := &ast.Identifier{
|
||||
Node: ast.Node{
|
||||
@ -6781,43 +6794,43 @@ yydefault:
|
||||
}
|
||||
case 421:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4144
|
||||
// line internal/php7/php7.y:4157
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 422:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4148
|
||||
// line internal/php7/php7.y:4161
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 423:
|
||||
yyDollar = yyS[yypt-0 : yypt+1]
|
||||
// line internal/php7/php7.y:4155
|
||||
// line internal/php7/php7.y:4168
|
||||
{
|
||||
yyVAL.node = nil
|
||||
}
|
||||
case 424:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4159
|
||||
// line internal/php7/php7.y:4172
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 425:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4166
|
||||
// line internal/php7/php7.y:4179
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 426:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4173
|
||||
// line internal/php7/php7.y:4186
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 427:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4177
|
||||
// line internal/php7/php7.y:4190
|
||||
{
|
||||
yyVAL.node = &ast.ParserBrackets{
|
||||
Node: ast.Node{
|
||||
@ -6834,19 +6847,19 @@ yydefault:
|
||||
}
|
||||
case 428:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4192
|
||||
// line internal/php7/php7.y:4205
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 429:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4199
|
||||
// line internal/php7/php7.y:4212
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 430:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4203
|
||||
// line internal/php7/php7.y:4216
|
||||
{
|
||||
yyVAL.node = &ast.ParserBrackets{
|
||||
Node: ast.Node{
|
||||
@ -6863,19 +6876,19 @@ yydefault:
|
||||
}
|
||||
case 431:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4218
|
||||
// line internal/php7/php7.y:4231
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 432:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4225
|
||||
// line internal/php7/php7.y:4238
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 433:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4229
|
||||
// line internal/php7/php7.y:4242
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
|
||||
|
||||
@ -6888,7 +6901,7 @@ yydefault:
|
||||
}
|
||||
case 434:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4240
|
||||
// line internal/php7/php7.y:4253
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
|
||||
|
||||
@ -6901,7 +6914,7 @@ yydefault:
|
||||
}
|
||||
case 435:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4251
|
||||
// line internal/php7/php7.y:4264
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
|
||||
|
||||
@ -6914,7 +6927,7 @@ yydefault:
|
||||
}
|
||||
case 436:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4262
|
||||
// line internal/php7/php7.y:4275
|
||||
{
|
||||
yyVAL.node = &ast.ExprMethodCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)}
|
||||
|
||||
@ -6927,25 +6940,25 @@ yydefault:
|
||||
}
|
||||
case 437:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4273
|
||||
// line internal/php7/php7.y:4286
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 438:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4280
|
||||
// line internal/php7/php7.y:4293
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 439:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4284
|
||||
// line internal/php7/php7.y:4297
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 440:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4288
|
||||
// line internal/php7/php7.y:4301
|
||||
{
|
||||
yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
|
||||
|
||||
@ -6958,7 +6971,7 @@ yydefault:
|
||||
}
|
||||
case 441:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4302
|
||||
// line internal/php7/php7.y:4315
|
||||
{
|
||||
name := &ast.Identifier{
|
||||
Node: ast.Node{
|
||||
@ -6977,7 +6990,7 @@ yydefault:
|
||||
}
|
||||
case 442:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4319
|
||||
// line internal/php7/php7.y:4332
|
||||
{
|
||||
yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node}
|
||||
|
||||
@ -6991,7 +7004,7 @@ yydefault:
|
||||
}
|
||||
case 443:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4331
|
||||
// line internal/php7/php7.y:4344
|
||||
{
|
||||
yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node}
|
||||
|
||||
@ -7003,7 +7016,7 @@ yydefault:
|
||||
}
|
||||
case 444:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4344
|
||||
// line internal/php7/php7.y:4357
|
||||
{
|
||||
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
|
||||
|
||||
@ -7016,7 +7029,7 @@ yydefault:
|
||||
}
|
||||
case 445:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4355
|
||||
// line internal/php7/php7.y:4368
|
||||
{
|
||||
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
|
||||
|
||||
@ -7029,13 +7042,13 @@ yydefault:
|
||||
}
|
||||
case 446:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4369
|
||||
// line internal/php7/php7.y:4382
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 447:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4373
|
||||
// line internal/php7/php7.y:4386
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
|
||||
|
||||
@ -7048,7 +7061,7 @@ yydefault:
|
||||
}
|
||||
case 448:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4384
|
||||
// line internal/php7/php7.y:4397
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
|
||||
|
||||
@ -7061,7 +7074,7 @@ yydefault:
|
||||
}
|
||||
case 449:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4395
|
||||
// line internal/php7/php7.y:4408
|
||||
{
|
||||
yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
|
||||
|
||||
@ -7074,7 +7087,7 @@ yydefault:
|
||||
}
|
||||
case 450:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4406
|
||||
// line internal/php7/php7.y:4419
|
||||
{
|
||||
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
|
||||
|
||||
@ -7087,7 +7100,7 @@ yydefault:
|
||||
}
|
||||
case 451:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4417
|
||||
// line internal/php7/php7.y:4430
|
||||
{
|
||||
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
|
||||
|
||||
@ -7100,7 +7113,7 @@ yydefault:
|
||||
}
|
||||
case 452:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4431
|
||||
// line internal/php7/php7.y:4444
|
||||
{
|
||||
yyVAL.node = &ast.Identifier{
|
||||
Node: ast.Node{
|
||||
@ -7112,7 +7125,7 @@ yydefault:
|
||||
}
|
||||
case 453:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4441
|
||||
// line internal/php7/php7.y:4454
|
||||
{
|
||||
yyVAL.node = yyDollar[2].node
|
||||
|
||||
@ -7122,13 +7135,13 @@ yydefault:
|
||||
}
|
||||
case 454:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4449
|
||||
// line internal/php7/php7.y:4462
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 455:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4456
|
||||
// line internal/php7/php7.y:4469
|
||||
{
|
||||
yyVAL.node = &ast.Identifier{
|
||||
Node: ast.Node{
|
||||
@ -7140,7 +7153,7 @@ yydefault:
|
||||
}
|
||||
case 456:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4466
|
||||
// line internal/php7/php7.y:4479
|
||||
{
|
||||
yyVAL.node = yyDollar[2].node
|
||||
|
||||
@ -7150,31 +7163,31 @@ yydefault:
|
||||
}
|
||||
case 457:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4474
|
||||
// line internal/php7/php7.y:4487
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 458:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4481
|
||||
// line internal/php7/php7.y:4494
|
||||
{
|
||||
yyVAL.list = yyDollar[1].list
|
||||
}
|
||||
case 459:
|
||||
yyDollar = yyS[yypt-0 : yypt+1]
|
||||
// line internal/php7/php7.y:4488
|
||||
// line internal/php7/php7.y:4501
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil}
|
||||
}
|
||||
case 460:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4492
|
||||
// line internal/php7/php7.y:4505
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
case 461:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4499
|
||||
// line internal/php7/php7.y:4512
|
||||
{
|
||||
if len(yyDollar[1].list) == 0 {
|
||||
yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}}
|
||||
@ -7187,7 +7200,7 @@ yydefault:
|
||||
}
|
||||
case 462:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4510
|
||||
// line internal/php7/php7.y:4523
|
||||
{
|
||||
if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil {
|
||||
yyVAL.list = []ast.Vertex{}
|
||||
@ -7197,7 +7210,7 @@ yydefault:
|
||||
}
|
||||
case 463:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4521
|
||||
// line internal/php7/php7.y:4534
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node}
|
||||
|
||||
@ -7210,7 +7223,7 @@ yydefault:
|
||||
}
|
||||
case 464:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4532
|
||||
// line internal/php7/php7.y:4545
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node}
|
||||
|
||||
@ -7222,7 +7235,7 @@ yydefault:
|
||||
}
|
||||
case 465:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4542
|
||||
// line internal/php7/php7.y:4555
|
||||
{
|
||||
reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node}
|
||||
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference}
|
||||
@ -7238,7 +7251,7 @@ yydefault:
|
||||
}
|
||||
case 466:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4556
|
||||
// line internal/php7/php7.y:4569
|
||||
{
|
||||
reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node}
|
||||
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, reference}
|
||||
@ -7252,7 +7265,7 @@ yydefault:
|
||||
}
|
||||
case 467:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4568
|
||||
// line internal/php7/php7.y:4581
|
||||
{
|
||||
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, true, nil, yyDollar[2].node}
|
||||
|
||||
@ -7264,7 +7277,7 @@ yydefault:
|
||||
}
|
||||
case 468:
|
||||
yyDollar = yyS[yypt-6 : yypt+1]
|
||||
// line internal/php7/php7.y:4578
|
||||
// line internal/php7/php7.y:4591
|
||||
{
|
||||
// TODO: Cannot use list() as standalone expression
|
||||
listNode := &ast.ExprList{ast.Node{}, yyDollar[5].list}
|
||||
@ -7283,7 +7296,7 @@ yydefault:
|
||||
}
|
||||
case 469:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4595
|
||||
// line internal/php7/php7.y:4608
|
||||
{
|
||||
// TODO: Cannot use list() as standalone expression
|
||||
listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list}
|
||||
@ -7300,45 +7313,49 @@ yydefault:
|
||||
}
|
||||
case 470:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4613
|
||||
// line internal/php7/php7.y:4626
|
||||
{
|
||||
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
|
||||
}
|
||||
case 471:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4617
|
||||
// line internal/php7/php7.y:4630
|
||||
{
|
||||
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value}
|
||||
yyVAL.list = append(yyDollar[1].list, encapsed)
|
||||
|
||||
// save position
|
||||
encapsed.GetNode().Position = position.NewTokenPosition(yyDollar[2].token)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating(encapsed, token.Start, yyDollar[2].token.SkippedTokens)
|
||||
yyVAL.list = append(
|
||||
yyDollar[1].list,
|
||||
&ast.ScalarEncapsedStringPart{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokenPosition(yyDollar[2].token),
|
||||
},
|
||||
EncapsedStrTkn: yyDollar[2].token,
|
||||
Value: yyDollar[2].token.Value,
|
||||
},
|
||||
)
|
||||
}
|
||||
case 472:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4628
|
||||
// line internal/php7/php7.y:4643
|
||||
{
|
||||
yyVAL.list = []ast.Vertex{yyDollar[1].node}
|
||||
}
|
||||
case 473:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4632
|
||||
// line internal/php7/php7.y:4647
|
||||
{
|
||||
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value}
|
||||
yyVAL.list = []ast.Vertex{encapsed, yyDollar[2].node}
|
||||
|
||||
// save position
|
||||
encapsed.GetNode().Position = position.NewTokenPosition(yyDollar[1].token)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating(encapsed, token.Start, yyDollar[1].token.SkippedTokens)
|
||||
yyVAL.list = []ast.Vertex{
|
||||
&ast.ScalarEncapsedStringPart{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokenPosition(yyDollar[1].token),
|
||||
},
|
||||
EncapsedStrTkn: yyDollar[1].token,
|
||||
Value: yyDollar[1].token.Value,
|
||||
},
|
||||
yyDollar[2].node,
|
||||
}
|
||||
}
|
||||
case 474:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4646
|
||||
// line internal/php7/php7.y:4663
|
||||
{
|
||||
name := &ast.Identifier{
|
||||
Node: ast.Node{
|
||||
@ -7357,7 +7374,7 @@ yydefault:
|
||||
}
|
||||
case 475:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4663
|
||||
// line internal/php7/php7.y:4680
|
||||
{
|
||||
identifier := &ast.Identifier{
|
||||
Node: ast.Node{
|
||||
@ -7379,7 +7396,7 @@ yydefault:
|
||||
}
|
||||
case 476:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4683
|
||||
// line internal/php7/php7.y:4700
|
||||
{
|
||||
identifier := &ast.Identifier{
|
||||
Node: ast.Node{
|
||||
@ -7407,7 +7424,7 @@ yydefault:
|
||||
}
|
||||
case 477:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4709
|
||||
// line internal/php7/php7.y:4726
|
||||
{
|
||||
variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node}
|
||||
|
||||
@ -7422,7 +7439,7 @@ yydefault:
|
||||
}
|
||||
case 478:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4722
|
||||
// line internal/php7/php7.y:4739
|
||||
{
|
||||
name := &ast.Identifier{
|
||||
Node: ast.Node{
|
||||
@ -7444,7 +7461,7 @@ yydefault:
|
||||
}
|
||||
case 479:
|
||||
yyDollar = yyS[yypt-6 : yypt+1]
|
||||
// line internal/php7/php7.y:4742
|
||||
// line internal/php7/php7.y:4759
|
||||
{
|
||||
identifier := &ast.Identifier{
|
||||
Node: ast.Node{
|
||||
@ -7468,7 +7485,7 @@ yydefault:
|
||||
}
|
||||
case 480:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4764
|
||||
// line internal/php7/php7.y:4781
|
||||
{
|
||||
yyVAL.node = yyDollar[2].node
|
||||
|
||||
@ -7478,7 +7495,7 @@ yydefault:
|
||||
}
|
||||
case 481:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4775
|
||||
// line internal/php7/php7.y:4792
|
||||
{
|
||||
yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value}
|
||||
|
||||
@ -7490,7 +7507,7 @@ yydefault:
|
||||
}
|
||||
case 482:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4785
|
||||
// line internal/php7/php7.y:4802
|
||||
{
|
||||
// TODO: add option to handle 64 bit integer
|
||||
if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil {
|
||||
@ -7513,7 +7530,7 @@ yydefault:
|
||||
}
|
||||
case 483:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4806
|
||||
// line internal/php7/php7.y:4823
|
||||
{
|
||||
_, err := strconv.Atoi(string(yyDollar[2].token.Value))
|
||||
isInt := err == nil
|
||||
@ -7540,7 +7557,7 @@ yydefault:
|
||||
}
|
||||
case 484:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4831
|
||||
// line internal/php7/php7.y:4848
|
||||
{
|
||||
identifier := &ast.Identifier{
|
||||
Node: ast.Node{
|
||||
@ -7559,7 +7576,7 @@ yydefault:
|
||||
}
|
||||
case 485:
|
||||
yyDollar = yyS[yypt-5 : yypt+1]
|
||||
// line internal/php7/php7.y:4851
|
||||
// line internal/php7/php7.y:4868
|
||||
{
|
||||
yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list}
|
||||
|
||||
@ -7577,7 +7594,7 @@ yydefault:
|
||||
}
|
||||
case 486:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4867
|
||||
// line internal/php7/php7.y:4884
|
||||
{
|
||||
exprBrackets := &ast.ParserBrackets{
|
||||
Node: ast.Node{
|
||||
@ -7599,7 +7616,7 @@ yydefault:
|
||||
}
|
||||
case 487:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4887
|
||||
// line internal/php7/php7.y:4904
|
||||
{
|
||||
yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node}
|
||||
|
||||
@ -7611,7 +7628,7 @@ yydefault:
|
||||
}
|
||||
case 488:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4897
|
||||
// line internal/php7/php7.y:4914
|
||||
{
|
||||
yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node}
|
||||
|
||||
@ -7623,7 +7640,7 @@ yydefault:
|
||||
}
|
||||
case 489:
|
||||
yyDollar = yyS[yypt-4 : yypt+1]
|
||||
// line internal/php7/php7.y:4907
|
||||
// line internal/php7/php7.y:4924
|
||||
{
|
||||
exprBrackets := &ast.ParserBrackets{
|
||||
Node: ast.Node{
|
||||
@ -7645,7 +7662,7 @@ yydefault:
|
||||
}
|
||||
case 490:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4927
|
||||
// line internal/php7/php7.y:4944
|
||||
{
|
||||
yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node}
|
||||
|
||||
@ -7657,7 +7674,7 @@ yydefault:
|
||||
}
|
||||
case 491:
|
||||
yyDollar = yyS[yypt-2 : yypt+1]
|
||||
// line internal/php7/php7.y:4937
|
||||
// line internal/php7/php7.y:4954
|
||||
{
|
||||
yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node}
|
||||
|
||||
@ -7669,13 +7686,13 @@ yydefault:
|
||||
}
|
||||
case 492:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4950
|
||||
// line internal/php7/php7.y:4967
|
||||
{
|
||||
yyVAL.list = []ast.Vertex{yyDollar[1].node}
|
||||
}
|
||||
case 493:
|
||||
yyDollar = yyS[yypt-3 : yypt+1]
|
||||
// line internal/php7/php7.y:4954
|
||||
// line internal/php7/php7.y:4971
|
||||
{
|
||||
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
|
||||
|
||||
@ -7684,7 +7701,7 @@ yydefault:
|
||||
}
|
||||
case 494:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
// line internal/php7/php7.y:4964
|
||||
// line internal/php7/php7.y:4981
|
||||
{
|
||||
yyVAL.node = yyDollar[1].node
|
||||
}
|
||||
|
@ -3878,11 +3878,15 @@ backticks_expr:
|
||||
}
|
||||
| T_ENCAPSED_AND_WHITESPACE
|
||||
{
|
||||
part := &ast.ScalarEncapsedStringPart{ast.Node{}, $1.Value}
|
||||
$$ = []ast.Vertex{part}
|
||||
|
||||
// save position
|
||||
part.GetNode().Position = position.NewTokenPosition($1)
|
||||
$$ = []ast.Vertex{
|
||||
&ast.ScalarEncapsedStringPart{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokenPosition($1),
|
||||
},
|
||||
EncapsedStrTkn: $1,
|
||||
Value: $1.Value,
|
||||
},
|
||||
}
|
||||
}
|
||||
| encaps_list
|
||||
{
|
||||
@ -4040,45 +4044,54 @@ scalar:
|
||||
}
|
||||
| T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
|
||||
{
|
||||
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $2.Value}
|
||||
$$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, []ast.Vertex{encapsed}}
|
||||
|
||||
// save position
|
||||
encapsed.GetNode().Position = position.NewTokenPosition($2)
|
||||
$$.GetNode().Position = position.NewTokensPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
|
||||
$$ = &ast.ScalarHeredoc{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokensPosition($1, $3),
|
||||
},
|
||||
OpenHeredocTkn: $1,
|
||||
Parts: []ast.Vertex{
|
||||
&ast.ScalarEncapsedStringPart{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokenPosition($2),
|
||||
},
|
||||
EncapsedStrTkn: $2,
|
||||
Value: $2.Value,
|
||||
},
|
||||
},
|
||||
CloseHeredocTkn: $3,
|
||||
}
|
||||
}
|
||||
| T_START_HEREDOC T_END_HEREDOC
|
||||
{
|
||||
$$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, nil}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewTokensPosition($1, $2)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
|
||||
$$ = &ast.ScalarHeredoc{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokensPosition($1, $2),
|
||||
},
|
||||
OpenHeredocTkn: $1,
|
||||
CloseHeredocTkn: $2,
|
||||
}
|
||||
}
|
||||
| '"' encaps_list '"'
|
||||
{
|
||||
$$ = &ast.ScalarEncapsed{ast.Node{}, $2}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewTokensPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
|
||||
$$ = &ast.ScalarEncapsed{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokensPosition($1, $3),
|
||||
},
|
||||
OpenQoteTkn: $1,
|
||||
Parts: $2,
|
||||
CloseQoteTkn: $1,
|
||||
}
|
||||
}
|
||||
| T_START_HEREDOC encaps_list T_END_HEREDOC
|
||||
{
|
||||
$$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, $2}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewTokensPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
|
||||
$$ = &ast.ScalarHeredoc{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokensPosition($1, $3),
|
||||
},
|
||||
OpenHeredocTkn: $1,
|
||||
Parts: $2,
|
||||
CloseHeredocTkn: $3,
|
||||
}
|
||||
}
|
||||
| dereferencable_scalar
|
||||
{
|
||||
@ -4615,14 +4628,16 @@ encaps_list:
|
||||
}
|
||||
| encaps_list T_ENCAPSED_AND_WHITESPACE
|
||||
{
|
||||
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $2.Value}
|
||||
$$ = append($1, encapsed)
|
||||
|
||||
// save position
|
||||
encapsed.GetNode().Position = position.NewTokenPosition($2)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating(encapsed, token.Start, $2.SkippedTokens)
|
||||
$$ = append(
|
||||
$1,
|
||||
&ast.ScalarEncapsedStringPart{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokenPosition($2),
|
||||
},
|
||||
EncapsedStrTkn: $2,
|
||||
Value: $2.Value,
|
||||
},
|
||||
)
|
||||
}
|
||||
| encaps_var
|
||||
{
|
||||
@ -4630,14 +4645,16 @@ encaps_list:
|
||||
}
|
||||
| T_ENCAPSED_AND_WHITESPACE encaps_var
|
||||
{
|
||||
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $1.Value}
|
||||
$$ = []ast.Vertex{encapsed, $2}
|
||||
|
||||
// save position
|
||||
encapsed.GetNode().Position = position.NewTokenPosition($1)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating(encapsed, token.Start, $1.SkippedTokens)
|
||||
$$ = []ast.Vertex{
|
||||
&ast.ScalarEncapsedStringPart{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokenPosition($1),
|
||||
},
|
||||
EncapsedStrTkn: $1,
|
||||
Value: $1.Value,
|
||||
},
|
||||
$2,
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
|
@ -126,7 +126,9 @@ func (n *ScalarDnumber) Accept(v NodeVisitor) {
|
||||
// ScalarEncapsed node
|
||||
type ScalarEncapsed struct {
|
||||
Node
|
||||
Parts []Vertex
|
||||
OpenQoteTkn *token.Token
|
||||
Parts []Vertex
|
||||
CloseQoteTkn *token.Token
|
||||
}
|
||||
|
||||
func (n *ScalarEncapsed) Accept(v NodeVisitor) {
|
||||
@ -136,7 +138,8 @@ func (n *ScalarEncapsed) Accept(v NodeVisitor) {
|
||||
// ScalarEncapsedStringPart node
|
||||
type ScalarEncapsedStringPart struct {
|
||||
Node
|
||||
Value []byte
|
||||
EncapsedStrTkn *token.Token
|
||||
Value []byte
|
||||
}
|
||||
|
||||
func (n *ScalarEncapsedStringPart) Accept(v NodeVisitor) {
|
||||
@ -146,8 +149,9 @@ func (n *ScalarEncapsedStringPart) Accept(v NodeVisitor) {
|
||||
// ScalarHeredoc node
|
||||
type ScalarHeredoc struct {
|
||||
Node
|
||||
Label []byte
|
||||
Parts []Vertex
|
||||
OpenHeredocTkn *token.Token
|
||||
Parts []Vertex
|
||||
CloseHeredocTkn *token.Token
|
||||
}
|
||||
|
||||
func (n *ScalarHeredoc) Accept(v NodeVisitor) {
|
||||
|
@ -1224,9 +1224,6 @@ func (v *Dump) ScalarHeredoc(n *ast.ScalarHeredoc) {
|
||||
v.printIndentIfNotSingle(v.indent - 1)
|
||||
v.print("&ast.ScalarHeredoc{\n")
|
||||
v.printNode(n.GetNode())
|
||||
|
||||
v.printIndent(v.indent)
|
||||
v.print(fmt.Sprintf("Label: %q,\n", n.Label))
|
||||
}
|
||||
|
||||
func (v *Dump) ScalarLnumber(n *ast.ScalarLnumber) {
|
||||
|
@ -558,7 +558,7 @@ func (p *PrettyPrinter) printScalarEncapsed(n ast.Vertex) {
|
||||
func (p *PrettyPrinter) printScalarHeredoc(n ast.Vertex) {
|
||||
nn := n.(*ast.ScalarHeredoc)
|
||||
|
||||
io.WriteString(p.w, string(nn.Label))
|
||||
io.WriteString(p.w, string(nn.OpenHeredocTkn.Value))
|
||||
|
||||
for _, part := range nn.Parts {
|
||||
switch part.(type) {
|
||||
@ -571,7 +571,7 @@ func (p *PrettyPrinter) printScalarHeredoc(n ast.Vertex) {
|
||||
}
|
||||
}
|
||||
|
||||
io.WriteString(p.w, strings.Trim(string(nn.Label), "<\"'\n"))
|
||||
io.WriteString(p.w, strings.Trim(string(nn.OpenHeredocTkn.Value), "<\"'\n"))
|
||||
}
|
||||
|
||||
func (p *PrettyPrinter) printScalarMagicConstant(n ast.Vertex) {
|
||||
|
@ -687,7 +687,7 @@ func (p *Printer) printScalarHeredoc(n ast.Vertex) {
|
||||
p.printFreeFloatingOrDefault(nn, token.Start, p.bufStart)
|
||||
p.bufStart = ""
|
||||
|
||||
p.write(nn.Label)
|
||||
p.write(nn.OpenHeredocTkn.Value)
|
||||
|
||||
for _, part := range nn.Parts {
|
||||
switch part.(type) {
|
||||
@ -710,7 +710,7 @@ func (p *Printer) printScalarHeredoc(n ast.Vertex) {
|
||||
}
|
||||
}
|
||||
|
||||
p.write([]byte(strings.Trim(string(nn.Label), "<\"'\n")))
|
||||
p.write([]byte(strings.Trim(string(nn.OpenHeredocTkn.Value), "<\"'\n")))
|
||||
|
||||
p.printFreeFloating(nn, token.End)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user