From 4b8d4317679420b45fefa677ab983ab09dce7e93 Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Tue, 1 Dec 2020 00:42:45 +0200 Subject: [PATCH] [refactoring] update ast structure of "ArrayDimFetch" and "ArrayItem" nodes --- internal/php5/php5.go | 1198 ++++++++++++++++++------------------ internal/php5/php5.y | 604 +++++++++--------- internal/php7/php7.go | 1276 ++++++++++++++++++++------------------- internal/php7/php7.y | 288 ++++----- pkg/ast/node.go | 15 +- pkg/ast/visitor/dump.go | 5 - pkg/printer/printer.go | 2 +- 7 files changed, 1732 insertions(+), 1656 deletions(-) diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 02fee28..15333e8 100644 --- a/internal/php5/php5.go +++ b/internal/php5/php5.go @@ -344,7 +344,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php5/php5.y:6502 +// line internal/php5/php5.y:6526 type simpleIndirectReference struct { all []*ast.ExprVariable @@ -5297,63 +5297,67 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php5/php5.y:3069 { - fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} + fetch := &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), + }, + Var: nil, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } + yyVAL.list = append(yyDollar[1].list, fetch) - - // save position - fetch.GetNode().Position = position.NewNodePosition(yyDollar[3].node) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Expr, yyDollar[4].token.SkippedTokens) } case 225: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3081 + // line internal/php5/php5.y:3083 { - fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[2].node} + fetch := &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), + }, + Var: nil, + OpenBracketTkn: yyDollar[1].token, + Dim: yyDollar[2].node, + CloseBracketTkn: yyDollar[3].token, + } + yyVAL.list = []ast.Vertex{fetch} - - // save position - fetch.GetNode().Position = position.NewNodePosition(yyDollar[2].node) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Var, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Expr, yyDollar[3].token.SkippedTokens) } case 226: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3096 + // line internal/php5/php5.y:3100 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 227: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3100 + // line internal/php5/php5.y:3104 { yyVAL.list = yyDollar[1].list } case 228: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3104 + // line internal/php5/php5.y:3108 { yyVAL.list = yyDollar[1].list } case 229: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:3111 + // line internal/php5/php5.y:3115 { yyVAL.list = nil } case 230: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3115 + // line internal/php5/php5.y:3119 { yyVAL.list = yyDollar[1].list } case 231: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3122 + // line internal/php5/php5.y:3126 { if yyDollar[3].node != nil { @@ -5369,7 +5373,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:3139 + // line internal/php5/php5.y:3143 { pairList := yyDollar[3].node.(*ast.ParserSeparatedList) fistPair := pairList.Items[0].(*ast.ExprArrayItem) @@ -5402,7 +5406,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3170 + // line internal/php5/php5.y:3174 { yyVAL.node = &ast.ExprAssign{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5415,7 +5419,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3181 + // line internal/php5/php5.y:3185 { yyVAL.node = &ast.ExprAssignReference{ast.Node{}, yyDollar[1].node, yyDollar[4].node} @@ -5429,7 +5433,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:3193 + // line internal/php5/php5.y:3197 { var _new *ast.ExprNew @@ -5456,7 +5460,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3218 + // line internal/php5/php5.y:3222 { yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node} @@ -5468,7 +5472,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3228 + // line internal/php5/php5.y:3232 { yyVAL.node = &ast.ExprAssignPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5480,7 +5484,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3238 + // line internal/php5/php5.y:3242 { yyVAL.node = &ast.ExprAssignMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5493,7 +5497,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3249 + // line internal/php5/php5.y:3253 { yyVAL.node = &ast.ExprAssignMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5506,7 +5510,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3260 + // line internal/php5/php5.y:3264 { yyVAL.node = &ast.ExprAssignPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5519,7 +5523,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3271 + // line internal/php5/php5.y:3275 { yyVAL.node = &ast.ExprAssignDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5532,7 +5536,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3282 + // line internal/php5/php5.y:3286 { yyVAL.node = &ast.ExprAssignConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5545,7 +5549,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3293 + // line internal/php5/php5.y:3297 { yyVAL.node = &ast.ExprAssignMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5558,7 +5562,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3304 + // line internal/php5/php5.y:3308 { yyVAL.node = &ast.ExprAssignBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5571,7 +5575,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3315 + // line internal/php5/php5.y:3319 { yyVAL.node = &ast.ExprAssignBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5584,7 +5588,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3326 + // line internal/php5/php5.y:3330 { yyVAL.node = &ast.ExprAssignBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5597,7 +5601,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3337 + // line internal/php5/php5.y:3341 { yyVAL.node = &ast.ExprAssignShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5610,7 +5614,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3348 + // line internal/php5/php5.y:3352 { yyVAL.node = &ast.ExprAssignShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5623,7 +5627,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3359 + // line internal/php5/php5.y:3363 { yyVAL.node = &ast.ExprPostInc{ast.Node{}, yyDollar[1].node} @@ -5636,7 +5640,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3370 + // line internal/php5/php5.y:3374 { yyVAL.node = &ast.ExprPreInc{ast.Node{}, yyDollar[2].node} @@ -5648,7 +5652,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3380 + // line internal/php5/php5.y:3384 { yyVAL.node = &ast.ExprPostDec{ast.Node{}, yyDollar[1].node} @@ -5661,7 +5665,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3391 + // line internal/php5/php5.y:3395 { yyVAL.node = &ast.ExprPreDec{ast.Node{}, yyDollar[2].node} @@ -5673,7 +5677,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3401 + // line internal/php5/php5.y:3405 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5686,7 +5690,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3412 + // line internal/php5/php5.y:3416 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5699,7 +5703,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3423 + // line internal/php5/php5.y:3427 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5712,7 +5716,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3434 + // line internal/php5/php5.y:3438 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5725,7 +5729,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3445 + // line internal/php5/php5.y:3449 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5738,7 +5742,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3456 + // line internal/php5/php5.y:3460 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5751,7 +5755,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3467 + // line internal/php5/php5.y:3471 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5764,7 +5768,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3478 + // line internal/php5/php5.y:3482 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5777,7 +5781,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3489 + // line internal/php5/php5.y:3493 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5789,7 +5793,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3499 + // line internal/php5/php5.y:3503 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5802,7 +5806,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3510 + // line internal/php5/php5.y:3514 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5815,7 +5819,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3521 + // line internal/php5/php5.y:3525 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5828,7 +5832,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3532 + // line internal/php5/php5.y:3536 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5841,7 +5845,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3543 + // line internal/php5/php5.y:3547 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5854,7 +5858,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3554 + // line internal/php5/php5.y:3558 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5867,7 +5871,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3565 + // line internal/php5/php5.y:3569 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5880,7 +5884,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3576 + // line internal/php5/php5.y:3580 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5893,7 +5897,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3587 + // line internal/php5/php5.y:3591 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -5905,7 +5909,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3597 + // line internal/php5/php5.y:3601 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -5917,7 +5921,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3607 + // line internal/php5/php5.y:3611 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -5929,7 +5933,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3617 + // line internal/php5/php5.y:3621 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -5941,7 +5945,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3627 + // line internal/php5/php5.y:3631 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5954,7 +5958,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3638 + // line internal/php5/php5.y:3642 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5967,7 +5971,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3649 + // line internal/php5/php5.y:3653 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5980,7 +5984,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3660 + // line internal/php5/php5.y:3664 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5994,7 +5998,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3672 + // line internal/php5/php5.y:3676 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6007,7 +6011,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3683 + // line internal/php5/php5.y:3687 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6020,7 +6024,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3694 + // line internal/php5/php5.y:3698 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6033,7 +6037,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3705 + // line internal/php5/php5.y:3709 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6046,7 +6050,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3716 + // line internal/php5/php5.y:3720 { yyVAL.node = &ast.ExprInstanceOf{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6059,19 +6063,19 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3727 + // line internal/php5/php5.y:3731 { yyVAL.node = yyDollar[1].node } case 284: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3731 + // line internal/php5/php5.y:3735 { yyVAL.node = yyDollar[1].node } case 285: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3735 + // line internal/php5/php5.y:3739 { yyVAL.node = yyDollar[2].node @@ -6103,7 +6107,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:3765 + // line internal/php5/php5.y:3769 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -6117,7 +6121,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3777 + // line internal/php5/php5.y:3781 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -6131,13 +6135,13 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3789 + // line internal/php5/php5.y:3793 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3793 + // line internal/php5/php5.y:3797 { yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node} @@ -6150,7 +6154,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3804 + // line internal/php5/php5.y:3808 { yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node} @@ -6163,7 +6167,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3815 + // line internal/php5/php5.y:3819 { yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node} @@ -6176,7 +6180,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3826 + // line internal/php5/php5.y:3830 { yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node} @@ -6189,7 +6193,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3837 + // line internal/php5/php5.y:3841 { yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node} @@ -6202,7 +6206,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3848 + // line internal/php5/php5.y:3852 { yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node} @@ -6215,7 +6219,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3859 + // line internal/php5/php5.y:3863 { yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node} @@ -6228,7 +6232,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3870 + // line internal/php5/php5.y:3874 { yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[2].node} @@ -6248,7 +6252,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3888 + // line internal/php5/php5.y:3892 { yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node} @@ -6260,25 +6264,25 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3898 + // line internal/php5/php5.y:3902 { yyVAL.node = yyDollar[1].node } case 299: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3902 + // line internal/php5/php5.y:3906 { yyVAL.node = yyDollar[1].node } case 300: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3906 + // line internal/php5/php5.y:3910 { yyVAL.node = yyDollar[1].node } case 301: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3910 + // line internal/php5/php5.y:3914 { yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list} @@ -6290,7 +6294,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3920 + // line internal/php5/php5.y:3924 { yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} @@ -6302,7 +6306,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3930 + // line internal/php5/php5.y:3934 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil} @@ -6314,7 +6318,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php5/php5.y:3940 + // line internal/php5/php5.y:3944 { yyVAL.node = &ast.ExprClosure{ Node: ast.Node{ @@ -6333,7 +6337,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] - // line internal/php5/php5.y:3957 + // line internal/php5/php5.y:3961 { yyVAL.node = &ast.ExprClosure{ Node: ast.Node{ @@ -6353,7 +6357,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3978 + // line internal/php5/php5.y:3982 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6365,7 +6369,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3988 + // line internal/php5/php5.y:3992 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6377,7 +6381,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3998 + // line internal/php5/php5.y:4002 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6390,7 +6394,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4009 + // line internal/php5/php5.y:4013 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6403,66 +6407,69 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4023 + // line internal/php5/php5.y:4027 { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + }, + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } } case 311: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4034 + // line internal/php5/php5.y:4039 { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + }, + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } } case 312: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4045 + // line internal/php5/php5.y:4051 { - str := &ast.ScalarString{ + yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ - Position: position.NewTokenPosition(yyDollar[1].token), + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), }, - StringTkn: yyDollar[1].token, - Value: yyDollar[1].token.Value, + Var: &ast.ScalarString{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + StringTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, } - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, str, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(str, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) } case 313: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4063 + // line internal/php5/php5.y:4069 { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + }, + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } } case 314: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4077 + // line internal/php5/php5.y:4084 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -6477,7 +6484,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4090 + // line internal/php5/php5.y:4097 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -6491,19 +6498,19 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4105 + // line internal/php5/php5.y:4112 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4112 + // line internal/php5/php5.y:4119 { yyVAL.ClosureUse = nil } case 318: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4116 + // line internal/php5/php5.y:4123 { yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list} @@ -6517,7 +6524,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4131 + // line internal/php5/php5.y:4138 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6538,7 +6545,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4150 + // line internal/php5/php5.y:4157 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6562,7 +6569,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4172 + // line internal/php5/php5.y:4179 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6582,7 +6589,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4190 + // line internal/php5/php5.y:4197 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6605,7 +6612,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4214 + // line internal/php5/php5.y:4221 { name := &ast.NameName{ Node: ast.Node{ @@ -6620,7 +6627,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4227 + // line internal/php5/php5.y:4234 { name := &ast.NameRelative{ Node: ast.Node{ @@ -6637,7 +6644,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4242 + // line internal/php5/php5.y:4249 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -6653,7 +6660,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4256 + // line internal/php5/php5.y:4263 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6666,7 +6673,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4267 + // line internal/php5/php5.y:4274 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6679,7 +6686,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4278 + // line internal/php5/php5.y:4285 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6692,7 +6699,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4289 + // line internal/php5/php5.y:4296 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6705,7 +6712,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4300 + // line internal/php5/php5.y:4307 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6717,7 +6724,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4313 + // line internal/php5/php5.y:4320 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -6729,7 +6736,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4323 + // line internal/php5/php5.y:4330 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -6740,7 +6747,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4332 + // line internal/php5/php5.y:4339 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -6753,7 +6760,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4343 + // line internal/php5/php5.y:4350 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -6765,7 +6772,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4356 + // line internal/php5/php5.y:4363 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -6776,7 +6783,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4365 + // line internal/php5/php5.y:4372 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -6789,7 +6796,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4376 + // line internal/php5/php5.y:4383 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -6801,19 +6808,19 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4389 + // line internal/php5/php5.y:4396 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4393 + // line internal/php5/php5.y:4400 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4400 + // line internal/php5/php5.y:4407 { yyVAL.node = yyDollar[1].node @@ -6854,25 +6861,25 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4439 + // line internal/php5/php5.y:4446 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4447 + // line internal/php5/php5.y:4454 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4451 + // line internal/php5/php5.y:4458 { yyVAL.list = []ast.Vertex{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4459 + // line internal/php5/php5.y:4466 { yyVAL.list = yyDollar[2].list @@ -6881,13 +6888,13 @@ yydefault: } case 345: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4469 + // line internal/php5/php5.y:4476 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4473 + // line internal/php5/php5.y:4480 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6903,19 +6910,19 @@ yydefault: } case 347: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4487 + // line internal/php5/php5.y:4494 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4494 + // line internal/php5/php5.y:4501 { yyVAL.list = []ast.Vertex{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4498 + // line internal/php5/php5.y:4505 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6929,25 +6936,25 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4510 + // line internal/php5/php5.y:4517 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4517 + // line internal/php5/php5.y:4524 { yyVAL.node = nil } case 352: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4521 + // line internal/php5/php5.y:4528 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4528 + // line internal/php5/php5.y:4535 { yyVAL.node = &ast.ScalarLnumber{ Node: ast.Node{ @@ -6959,7 +6966,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4538 + // line internal/php5/php5.y:4545 { yyVAL.node = &ast.ScalarDnumber{ Node: ast.Node{ @@ -6971,7 +6978,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4548 + // line internal/php5/php5.y:4555 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -6983,7 +6990,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4558 + // line internal/php5/php5.y:4565 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6995,7 +7002,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4568 + // line internal/php5/php5.y:4575 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7007,7 +7014,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4578 + // line internal/php5/php5.y:4585 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7019,7 +7026,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4588 + // line internal/php5/php5.y:4595 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7031,7 +7038,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4598 + // line internal/php5/php5.y:4605 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7043,7 +7050,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4608 + // line internal/php5/php5.y:4615 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7055,7 +7062,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4618 + // line internal/php5/php5.y:4625 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7067,7 +7074,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4628 + // line internal/php5/php5.y:4635 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7088,7 +7095,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4647 + // line internal/php5/php5.y:4654 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7100,7 +7107,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4660 + // line internal/php5/php5.y:4667 { target := &ast.Identifier{ Node: ast.Node{ @@ -7120,25 +7127,25 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4681 + // line internal/php5/php5.y:4688 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4688 + // line internal/php5/php5.y:4695 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4692 + // line internal/php5/php5.y:4699 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4696 + // line internal/php5/php5.y:4703 { name := &ast.NameName{ Node: ast.Node{ @@ -7153,7 +7160,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4709 + // line internal/php5/php5.y:4716 { name := &ast.NameRelative{ Node: ast.Node{ @@ -7170,7 +7177,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4724 + // line internal/php5/php5.y:4731 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -7186,7 +7193,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4738 + // line internal/php5/php5.y:4745 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -7201,7 +7208,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4751 + // line internal/php5/php5.y:4758 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -7215,13 +7222,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4763 + // line internal/php5/php5.y:4770 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4767 + // line internal/php5/php5.y:4774 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7233,26 +7240,27 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4777 + // line internal/php5/php5.y:4784 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4784 + // line internal/php5/php5.y:4791 { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + }, + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } } case 378: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4795 + // line internal/php5/php5.y:4803 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7265,7 +7273,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4806 + // line internal/php5/php5.y:4814 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7278,7 +7286,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4817 + // line internal/php5/php5.y:4825 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7291,7 +7299,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4828 + // line internal/php5/php5.y:4836 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7304,7 +7312,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4839 + // line internal/php5/php5.y:4847 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7317,7 +7325,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4850 + // line internal/php5/php5.y:4858 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7330,7 +7338,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4861 + // line internal/php5/php5.y:4869 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -7342,7 +7350,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4871 + // line internal/php5/php5.y:4879 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -7354,7 +7362,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4881 + // line internal/php5/php5.y:4889 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7367,7 +7375,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4892 + // line internal/php5/php5.y:4900 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7380,7 +7388,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4903 + // line internal/php5/php5.y:4911 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7393,7 +7401,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4914 + // line internal/php5/php5.y:4922 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7406,7 +7414,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4925 + // line internal/php5/php5.y:4933 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7419,7 +7427,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4936 + // line internal/php5/php5.y:4944 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7432,7 +7440,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4947 + // line internal/php5/php5.y:4955 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7445,7 +7453,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4958 + // line internal/php5/php5.y:4966 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7458,7 +7466,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4969 + // line internal/php5/php5.y:4977 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7471,7 +7479,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4980 + // line internal/php5/php5.y:4988 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7484,7 +7492,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4991 + // line internal/php5/php5.y:4999 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7497,7 +7505,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5002 + // line internal/php5/php5.y:5010 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7510,7 +7518,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5013 + // line internal/php5/php5.y:5021 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7523,7 +7531,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5024 + // line internal/php5/php5.y:5032 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7536,7 +7544,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5035 + // line internal/php5/php5.y:5043 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7550,7 +7558,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5047 + // line internal/php5/php5.y:5055 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7563,7 +7571,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5058 + // line internal/php5/php5.y:5066 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7576,7 +7584,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5069 + // line internal/php5/php5.y:5077 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7589,7 +7597,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5080 + // line internal/php5/php5.y:5088 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7602,7 +7610,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5091 + // line internal/php5/php5.y:5099 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -7616,7 +7624,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5103 + // line internal/php5/php5.y:5111 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -7630,7 +7638,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5115 + // line internal/php5/php5.y:5123 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -7642,7 +7650,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5125 + // line internal/php5/php5.y:5133 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -7654,7 +7662,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5135 + // line internal/php5/php5.y:5143 { yyVAL.node = yyDollar[2].node @@ -7664,13 +7672,13 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5146 + // line internal/php5/php5.y:5154 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5150 + // line internal/php5/php5.y:5158 { name := &ast.NameName{ Node: ast.Node{ @@ -7685,7 +7693,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5163 + // line internal/php5/php5.y:5171 { name := &ast.NameRelative{ Node: ast.Node{ @@ -7702,7 +7710,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5178 + // line internal/php5/php5.y:5186 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -7718,7 +7726,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5195 + // line internal/php5/php5.y:5203 { name := &ast.Identifier{ Node: ast.Node{ @@ -7737,25 +7745,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5212 + // line internal/php5/php5.y:5220 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5216 + // line internal/php5/php5.y:5224 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5220 + // line internal/php5/php5.y:5228 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5224 + // line internal/php5/php5.y:5232 { yyVAL.node = &ast.ScalarEncapsed{ Node: ast.Node{ @@ -7768,7 +7776,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5235 + // line internal/php5/php5.y:5243 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7781,7 +7789,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5246 + // line internal/php5/php5.y:5254 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7793,13 +7801,13 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5259 + // line internal/php5/php5.y:5267 { yyVAL.node = &ast.ParserSeparatedList{} } case 422: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5263 + // line internal/php5/php5.y:5271 { if yyDollar[2].token != nil { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) @@ -7810,99 +7818,97 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5275 + // line internal/php5/php5.y:5283 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5279 + // line internal/php5/php5.y:5287 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5286 + // line internal/php5/php5.y:5294 { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node} + arrayItem := &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[3].node, yyDollar[5].node), + }, + Key: yyDollar[3].node, + DoubleArrowTkn: yyDollar[4].token, + Val: yyDollar[5].node, + } 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, arrayItem) yyVAL.node = yyDollar[1].node - - // save position - arrayItem.GetNode().Position = position.NewNodesPosition(yyDollar[3].node, yyDollar[5].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[3].node, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, yyDollar[4].token.SkippedTokens) } case 426: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5302 + // line internal/php5/php5.y:5310 { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node} + arrayItem := &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodePosition(yyDollar[3].node), + }, + Val: yyDollar[3].node, + } 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, arrayItem) yyVAL.node = yyDollar[1].node - - // save position - arrayItem.GetNode().Position = position.NewNodePosition(yyDollar[3].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[3].node, arrayItem) } case 427: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5317 + // line internal/php5/php5.y:5324 { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} - yyVAL.node = &ast.ParserSeparatedList{ - Items: []ast.Vertex{arrayItem}, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), + }, + Key: yyDollar[1].node, + DoubleArrowTkn: yyDollar[2].token, + Val: yyDollar[3].node, + }, + }, } - - // save position - arrayItem.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[3].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, yyDollar[2].token.SkippedTokens) } case 428: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5332 + // line internal/php5/php5.y:5339 { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} - yyVAL.node = &ast.ParserSeparatedList{ - Items: []ast.Vertex{arrayItem}, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodePosition(yyDollar[1].node), + }, + Val: yyDollar[1].node, + }, + }, } - - // save position - arrayItem.GetNode().Position = position.NewNodePosition(yyDollar[1].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, arrayItem) } case 429: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5349 + // line internal/php5/php5.y:5355 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5353 + // line internal/php5/php5.y:5359 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5360 + // line internal/php5/php5.y:5366 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -7919,7 +7925,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5375 + // line internal/php5/php5.y:5381 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -7936,25 +7942,25 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5394 + // line internal/php5/php5.y:5400 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5402 + // line internal/php5/php5.y:5408 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5409 + // line internal/php5/php5.y:5415 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5416 + // line internal/php5/php5.y:5422 { yyVAL.node = yyDollar[1].node @@ -8012,25 +8018,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5472 + // line internal/php5/php5.y:5478 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5479 + // line internal/php5/php5.y:5485 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5483 + // line internal/php5/php5.y:5489 { yyVAL.list = []ast.Vertex{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5491 + // line internal/php5/php5.y:5497 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*ast.ExprMethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*ast.ExprPropertyFetch).Property @@ -8044,35 +8050,39 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5506 + // line internal/php5/php5.y:5512 { - fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} + fetch := &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), + }, + Var: nil, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } + yyVAL.list = append(yyDollar[1].list, fetch) - - // save position - fetch.GetNode().Position = position.NewNodePosition(yyDollar[3].node) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Expr, yyDollar[4].token.SkippedTokens) } case 442: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5518 + // line internal/php5/php5.y:5526 { - fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} + fetch := &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), + }, + Var: nil, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } + yyVAL.list = []ast.Vertex{yyDollar[1].node, fetch} - - // save position - fetch.GetNode().Position = position.NewNodePosition(yyDollar[3].node) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Expr, yyDollar[4].token.SkippedTokens) } case 443: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5533 + // line internal/php5/php5.y:5543 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, nil, nil, yyDollar[1].node.(*ast.ArgumentList)} @@ -8081,31 +8091,31 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5543 + // line internal/php5/php5.y:5553 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5547 + // line internal/php5/php5.y:5557 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5551 + // line internal/php5/php5.y:5561 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5558 + // line internal/php5/php5.y:5568 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5562 + // line internal/php5/php5.y:5572 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -8117,7 +8127,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5575 + // line internal/php5/php5.y:5585 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8130,7 +8140,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5586 + // line internal/php5/php5.y:5596 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8143,63 +8153,65 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5600 + // line internal/php5/php5.y:5610 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5607 + // line internal/php5/php5.y:5617 { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + }, + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } } case 453: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5618 + // line internal/php5/php5.y:5629 { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + }, + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } } case 454: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5632 + // line internal/php5/php5.y:5644 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5636 + // line internal/php5/php5.y:5648 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5640 + // line internal/php5/php5.y:5652 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5648 + // line internal/php5/php5.y:5660 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5652 + // line internal/php5/php5.y:5664 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -8211,45 +8223,47 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5662 + // line internal/php5/php5.y:5674 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5669 + // line internal/php5/php5.y:5681 { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + }, + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } } case 461: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5680 + // line internal/php5/php5.y:5693 { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + }, + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } } case 462: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5691 + // line internal/php5/php5.y:5705 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5699 + // line internal/php5/php5.y:5713 { name := &ast.Identifier{ Node: ast.Node{ @@ -8268,7 +8282,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5716 + // line internal/php5/php5.y:5730 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -8282,25 +8296,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5731 + // line internal/php5/php5.y:5745 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5735 + // line internal/php5/php5.y:5749 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5743 + // line internal/php5/php5.y:5757 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5747 + // line internal/php5/php5.y:5761 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8310,35 +8324,39 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5758 + // line internal/php5/php5.y:5772 { - fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} + fetch := &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), + }, + Var: nil, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } + yyVAL.list = append(yyDollar[1].list, fetch) - - // save position - fetch.GetNode().Position = position.NewNodePosition(yyDollar[3].node) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Expr, yyDollar[4].token.SkippedTokens) } case 470: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5770 + // line internal/php5/php5.y:5786 { - fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} + fetch := &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), + }, + Var: nil, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } + yyVAL.list = append(yyDollar[1].list, fetch) - - // save position - fetch.GetNode().Position = position.NewNodePosition(yyDollar[3].node) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Expr, yyDollar[4].token.SkippedTokens) } case 471: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5782 + // line internal/php5/php5.y:5800 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8348,7 +8366,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5793 + // line internal/php5/php5.y:5811 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -8360,7 +8378,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5803 + // line internal/php5/php5.y:5821 { yyVAL.node = yyDollar[2].node @@ -8373,7 +8391,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5817 + // line internal/php5/php5.y:5835 { n := &ast.ExprVariable{ast.Node{}, nil} yyVAL.simpleIndirectReference = simpleIndirectReference{[]*ast.ExprVariable{n}, n} @@ -8386,7 +8404,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5828 + // line internal/php5/php5.y:5846 { n := &ast.ExprVariable{ast.Node{}, nil} @@ -8403,7 +8421,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5846 + // line internal/php5/php5.y:5864 { 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) @@ -8412,7 +8430,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5853 + // line internal/php5/php5.y:5871 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -8420,19 +8438,18 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5863 + // line internal/php5/php5.y:5881 { - yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodePosition(yyDollar[1].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yyVAL.node = &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodePosition(yyDollar[1].node), + }, + Val: yyDollar[1].node, + } } case 479: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5873 + // line internal/php5/php5.y:5890 { pairList := yyDollar[3].node.(*ast.ParserSeparatedList) fistPair := pairList.Items[0].(*ast.ExprArrayItem) @@ -8441,42 +8458,37 @@ yydefault: pairList.Items = nil } - listNode := &ast.ExprList{ + yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), }, - ListTkn: yyDollar[1].token, - OpenBracketTkn: yyDollar[2].token, - Items: yyDollar[3].node.(*ast.ParserSeparatedList).Items, - SeparatorTkns: yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, - CloseBracketTkn: yyDollar[4].token, + Val: &ast.ExprList{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), + }, + ListTkn: yyDollar[1].token, + OpenBracketTkn: yyDollar[2].token, + Items: yyDollar[3].node.(*ast.ParserSeparatedList).Items, + SeparatorTkns: yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, + CloseBracketTkn: yyDollar[4].token, + }, } - yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, listNode} - - // save position - listNode.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) - yyVAL.node.GetNode().Position = position.NewNodePosition(listNode) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(listNode, token.List, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(listNode, token.ArrayPairList, yyDollar[4].token.SkippedTokens) } case 480: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5903 + // line internal/php5/php5.y:5915 { - yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} + yyVAL.node = &ast.ExprArrayItem{} } case 481: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5911 + // line internal/php5/php5.y:5923 { yyVAL.node = &ast.ParserSeparatedList{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5915 + // line internal/php5/php5.y:5927 { if yyDollar[2].token != nil { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) @@ -8487,159 +8499,165 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5927 + // line internal/php5/php5.y:5939 { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node} + arrayItem := &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[3].node, yyDollar[5].node), + }, + Key: yyDollar[3].node, + DoubleArrowTkn: yyDollar[4].token, + Val: yyDollar[5].node, + } 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, arrayItem) yyVAL.node = yyDollar[1].node - - // save position - arrayItem.GetNode().Position = position.NewNodesPosition(yyDollar[3].node, yyDollar[5].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[3].node, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, yyDollar[4].token.SkippedTokens) } case 484: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5943 + // line internal/php5/php5.y:5955 { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node} + arrayItem := &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodePosition(yyDollar[3].node), + }, + Val: yyDollar[3].node, + } 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, arrayItem) yyVAL.node = yyDollar[1].node - - // save position - arrayItem.GetNode().Position = position.NewNodePosition(yyDollar[3].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[3].node, arrayItem) } case 485: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5958 + // line internal/php5/php5.y:5969 { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} - yyVAL.node = &ast.ParserSeparatedList{ - Items: []ast.Vertex{arrayItem}, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), + }, + Key: yyDollar[1].node, + DoubleArrowTkn: yyDollar[2].token, + Val: yyDollar[3].node, + }, + }, } - - // save position - arrayItem.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[3].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, yyDollar[2].token.SkippedTokens) } case 486: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5973 + // line internal/php5/php5.y:5984 { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} - yyVAL.node = &ast.ParserSeparatedList{ - Items: []ast.Vertex{arrayItem}, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodePosition(yyDollar[1].node), + }, + Val: yyDollar[1].node, + }, + }, } - - // save position - arrayItem.GetNode().Position = position.NewNodePosition(yyDollar[1].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, arrayItem) } case 487: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:5987 + // line internal/php5/php5.y:5997 { - reference := &ast.ExprReference{ast.Node{}, yyDollar[6].node} - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, reference} + arrayItem := &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[3].node, yyDollar[6].node), + }, + Key: yyDollar[3].node, + DoubleArrowTkn: yyDollar[4].token, + Val: &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[5].token, yyDollar[6].node), + }, + Var: yyDollar[6].node, + }, + } 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, arrayItem) yyVAL.node = yyDollar[1].node - - // save position - reference.GetNode().Position = position.NewTokenNodePosition(yyDollar[5].token, yyDollar[6].node) - arrayItem.GetNode().Position = position.NewNodesPosition(yyDollar[3].node, yyDollar[6].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[3].node, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, yyDollar[4].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(reference, token.Start, yyDollar[5].token.SkippedTokens) } case 488: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6006 + // line internal/php5/php5.y:6018 { - reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} + arrayItem := &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), + }, + Val: &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), + }, + Var: yyDollar[4].node, + }, + } 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, arrayItem) yyVAL.node = yyDollar[1].node - - // save position - reference.GetNode().Position = position.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node) - arrayItem.GetNode().Position = position.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node) - - // save comments - yylex.(*Parser).setFreeFloating(arrayItem, token.Start, yyDollar[3].token.SkippedTokens) } case 489: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6023 + // line internal/php5/php5.y:6037 { - reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference} - yyVAL.node = &ast.ParserSeparatedList{ - Items: []ast.Vertex{arrayItem}, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), + }, + Key: yyDollar[1].node, + DoubleArrowTkn: yyDollar[2].token, + Val: &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), + }, + Var: yyDollar[4].node, + }, + }, + }, } - - // save position - reference.GetNode().Position = position.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node) - arrayItem.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(reference, token.Start, yyDollar[3].token.SkippedTokens) } case 490: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6041 + // line internal/php5/php5.y:6057 { - reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node} - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} - yyVAL.node = &ast.ParserSeparatedList{ - Items: []ast.Vertex{arrayItem}, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + Val: &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + Var: yyDollar[2].node, + }, + }, + }, } - - // save position - reference.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) - arrayItem.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) - - // save comments - yylex.(*Parser).setFreeFloating(arrayItem, token.Start, yyDollar[1].token.SkippedTokens) } case 491: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6060 + // line internal/php5/php5.y:6078 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6064 + // line internal/php5/php5.y:6082 { yyVAL.list = append( yyDollar[1].list, @@ -8654,13 +8672,13 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6077 + // line internal/php5/php5.y:6095 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6081 + // line internal/php5/php5.y:6099 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -8675,7 +8693,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6097 + // line internal/php5/php5.y:6115 { name := &ast.Identifier{ Node: ast.Node{ @@ -8694,29 +8712,32 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6114 + // line internal/php5/php5.y:6132 { - identifier := &ast.Identifier{ + yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ - Position: position.NewTokenPosition(yyDollar[1].token), + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), }, - IdentifierTkn: yyDollar[1].token, - Value: yyDollar[1].token.Value, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, + }, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, variable, yyDollar[3].node} - - // save position - variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) } case 497: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6134 + // line internal/php5/php5.y:6155 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -8744,7 +8765,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6160 + // line internal/php5/php5.y:6181 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -8759,7 +8780,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6173 + // line internal/php5/php5.y:6194 { name := &ast.Identifier{ Node: ast.Node{ @@ -8781,31 +8802,34 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:6193 + // line internal/php5/php5.y:6214 { - identifier := &ast.Identifier{ + yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ - Position: position.NewTokenPosition(yyDollar[2].token), + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[6].token), }, - IdentifierTkn: yyDollar[2].token, - Value: yyDollar[2].token.Value, + OpenCurlyBracketTkn: yyDollar[1].token, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + }, + }, + OpenBracketTkn: yyDollar[3].token, + Dim: yyDollar[4].node, + CloseBracketTkn: yyDollar[5].token, + CloseCurlyBracketTkn: yyDollar[6].token, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, variable, yyDollar[4].node} - - // save position - variable.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[6].token) - - // save comments - yylex.(*Parser).setToken(variable, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[3].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[5].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[6].token.SkippedTokens) } case 501: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6215 + // line internal/php5/php5.y:6239 { yyVAL.node = yyDollar[2].node @@ -8815,7 +8839,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6226 + // line internal/php5/php5.y:6250 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -8827,7 +8851,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6236 + // line internal/php5/php5.y:6260 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -8856,7 +8880,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6263 + // line internal/php5/php5.y:6287 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -8875,7 +8899,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6283 + // line internal/php5/php5.y:6307 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -8889,7 +8913,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6295 + // line internal/php5/php5.y:6319 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -8911,7 +8935,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6315 + // line internal/php5/php5.y:6339 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -8933,7 +8957,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6335 + // line internal/php5/php5.y:6359 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -8945,7 +8969,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6345 + // line internal/php5/php5.y:6369 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -8957,7 +8981,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6355 + // line internal/php5/php5.y:6379 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -8979,7 +9003,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6375 + // line internal/php5/php5.y:6399 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -8991,7 +9015,7 @@ yydefault: } case 512: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6385 + // line internal/php5/php5.y:6409 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -9003,13 +9027,13 @@ yydefault: } case 513: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6398 + // line internal/php5/php5.y:6422 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 514: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6402 + // line internal/php5/php5.y:6426 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -9018,19 +9042,19 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6412 + // line internal/php5/php5.y:6436 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6416 + // line internal/php5/php5.y:6440 { yyVAL.node = yyDollar[1].node } case 517: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6423 + // line internal/php5/php5.y:6447 { target := &ast.Identifier{ Node: ast.Node{ @@ -9050,7 +9074,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6441 + // line internal/php5/php5.y:6465 { target := &ast.Identifier{ Node: ast.Node{ @@ -9070,7 +9094,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6462 + // line internal/php5/php5.y:6486 { target := &ast.Identifier{ Node: ast.Node{ @@ -9090,7 +9114,7 @@ yydefault: } case 520: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6483 + // line internal/php5/php5.y:6507 { target := &ast.Identifier{ Node: ast.Node{ diff --git a/internal/php5/php5.y b/internal/php5/php5.y index 5a00d67..6989c2c 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -3067,27 +3067,31 @@ chaining_method_or_property: chaining_dereference: chaining_dereference '[' dim_offset ']' { - fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, $3} + fetch := &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewTokensPosition($2, $4), + }, + Var: nil, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } + $$ = append($1, fetch) - - // save position - fetch.GetNode().Position = position.NewNodePosition($3) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Expr, $4.SkippedTokens) } | '[' dim_offset ']' { - fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, $2} + fetch := &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + Var: nil, + OpenBracketTkn: $1, + Dim: $2, + CloseBracketTkn: $3, + } + $$ = []ast.Vertex{fetch} - - // save position - fetch.GetNode().Position = position.NewNodePosition($2) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Var, $1.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Expr, $3.SkippedTokens) } ; @@ -4021,54 +4025,57 @@ yield_expr: combined_scalar_offset: combined_scalar '[' dim_offset ']' { - $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) + $$ = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition($1, $4), + }, + Var: $1, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } } | combined_scalar_offset '[' dim_offset ']' { - $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) + $$ = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition($1, $4), + }, + Var: $1, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } } | T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']' { - str := &ast.ScalarString{ + $$ = &ast.ExprArrayDimFetch{ Node: ast.Node{ - Position: position.NewTokenPosition($1), + Position: position.NewTokensPosition($1, $4), }, - StringTkn: $1, - Value: $1.Value, + Var: &ast.ScalarString{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + StringTkn: $1, + Value: $1.Value, + }, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, } - $$ = &ast.ExprArrayDimFetch{ast.Node{}, str, $3} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition(str, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) } | general_constant '[' dim_offset ']' { - $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) + $$ = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition($1, $4), + }, + Var: $1, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } } ; @@ -4782,14 +4789,15 @@ static_scalar_value: static_operation: static_scalar_value '[' static_scalar_value ']' { - $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) + $$ = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition($1, $4), + }, + Var: $1, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } } | static_scalar_value '+' static_scalar_value { @@ -5284,63 +5292,61 @@ possible_comma: non_empty_static_array_pair_list: non_empty_static_array_pair_list ',' static_scalar_value T_DOUBLE_ARROW static_scalar_value { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, $3, $5} + arrayItem := &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition($3, $5), + }, + Key: $3, + DoubleArrowTkn: $4, + Val: $5, + } $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) $1.(*ast.ParserSeparatedList).Items = append($1.(*ast.ParserSeparatedList).Items, arrayItem) $$ = $1 - - // save position - arrayItem.GetNode().Position = position.NewNodesPosition($3, $5) - - // save comments - yylex.(*Parser).MoveFreeFloating($3, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, $4.SkippedTokens) } | non_empty_static_array_pair_list ',' static_scalar_value { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, $3} + arrayItem := &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodePosition($3), + }, + Val: $3, + } $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) $1.(*ast.ParserSeparatedList).Items = append($1.(*ast.ParserSeparatedList).Items, arrayItem) $$ = $1 - - // save position - arrayItem.GetNode().Position = position.NewNodePosition($3) - - // save comments - yylex.(*Parser).MoveFreeFloating($3, arrayItem) } | static_scalar_value T_DOUBLE_ARROW static_scalar_value { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, $1, $3} - $$ = &ast.ParserSeparatedList{ - Items: []ast.Vertex{arrayItem}, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $3), + }, + Key: $1, + DoubleArrowTkn: $2, + Val: $3, + }, + }, } - - // save position - arrayItem.GetNode().Position = position.NewNodesPosition($1, $3) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, $2.SkippedTokens) } | static_scalar_value { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, $1} - $$ = &ast.ParserSeparatedList{ - Items: []ast.Vertex{arrayItem}, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodePosition($1), + }, + Val: $1, + }, + }, } - - // save position - arrayItem.GetNode().Position = position.NewNodePosition($1) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, arrayItem) } ; @@ -5504,27 +5510,31 @@ variable_property: array_method_dereference: array_method_dereference '[' dim_offset ']' { - fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, $3} + fetch := &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewTokensPosition($2, $4), + }, + Var: nil, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } + $$ = append($1, fetch) - - // save position - fetch.GetNode().Position = position.NewNodePosition($3) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Expr, $4.SkippedTokens) } | method '[' dim_offset ']' { - fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, $3} + fetch := &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewTokensPosition($2, $4), + }, + Var: nil, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } + $$ = []ast.Vertex{$1, fetch} - - // save position - fetch.GetNode().Position = position.NewNodePosition($3) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Expr, $4.SkippedTokens) } ; @@ -5605,25 +5615,27 @@ variable_class_name: array_function_dereference: array_function_dereference '[' dim_offset ']' { - $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) + $$ = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition($1, $4), + }, + Var: $1, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } } | function_call '[' dim_offset ']' { - $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) + $$ = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition($1, $4), + }, + Var: $1, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } } ; @@ -5667,25 +5679,27 @@ base_variable: reference_variable: reference_variable '[' dim_offset ']' { - $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) + $$ = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition($1, $4), + }, + Var: $1, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } } | reference_variable '{' expr '}' { - $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) + $$ = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition($1, $4), + }, + Var: $1, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } } | compound_variable { @@ -5756,27 +5770,31 @@ object_property: object_dim_list: object_dim_list '[' dim_offset ']' { - fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, $3} + fetch := &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewTokensPosition($2, $4), + }, + Var: nil, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } + $$ = append($1, fetch) - - // save position - fetch.GetNode().Position = position.NewNodePosition($3) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Expr, $4.SkippedTokens) } | object_dim_list '{' expr '}' { - fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, $3} + fetch := &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewTokensPosition($2, $4), + }, + Var: nil, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } + $$ = append($1, fetch) - - // save position - fetch.GetNode().Position = position.NewNodePosition($3) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(fetch, token.Expr, $4.SkippedTokens) } | variable_name { @@ -5861,13 +5879,12 @@ assignment_list: assignment_list_element: variable { - $$ = &ast.ExprArrayItem{ast.Node{}, false, nil, $1} - - // save position - $$.GetNode().Position = position.NewNodePosition($1) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) + $$ = &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodePosition($1), + }, + Val: $1, + } } | T_LIST '(' assignment_list ')' { @@ -5878,30 +5895,25 @@ assignment_list_element: pairList.Items = nil } - listNode := &ast.ExprList{ + $$ = &ast.ExprArrayItem{ Node: ast.Node{ Position: position.NewTokensPosition($1, $4), }, - ListTkn: $1, - OpenBracketTkn: $2, - Items: $3.(*ast.ParserSeparatedList).Items, - SeparatorTkns: $3.(*ast.ParserSeparatedList).SeparatorTkns, - CloseBracketTkn: $4, + Val: &ast.ExprList{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $4), + }, + ListTkn: $1, + OpenBracketTkn: $2, + Items: $3.(*ast.ParserSeparatedList).Items, + SeparatorTkns: $3.(*ast.ParserSeparatedList).SeparatorTkns, + CloseBracketTkn: $4, + }, } - $$ = &ast.ExprArrayItem{ast.Node{}, false, nil, listNode} - - // save position - listNode.GetNode().Position = position.NewTokensPosition($1, $4) - $$.GetNode().Position = position.NewNodePosition(listNode) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating(listNode, token.List, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(listNode, token.ArrayPairList, $4.SkippedTokens) } | /* empty */ { - $$ = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} + $$ = &ast.ExprArrayItem{} } ; @@ -5925,133 +5937,139 @@ array_pair_list: non_empty_array_pair_list: non_empty_array_pair_list ',' expr T_DOUBLE_ARROW expr { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, $3, $5} + arrayItem := &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition($3, $5), + }, + Key: $3, + DoubleArrowTkn: $4, + Val: $5, + } $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) $1.(*ast.ParserSeparatedList).Items = append($1.(*ast.ParserSeparatedList).Items, arrayItem) $$ = $1 - - // save position - arrayItem.GetNode().Position = position.NewNodesPosition($3, $5) - - // save comments - yylex.(*Parser).MoveFreeFloating($3, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, $4.SkippedTokens) } | non_empty_array_pair_list ',' expr { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, $3} + arrayItem := &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodePosition($3), + }, + Val: $3, + } $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) $1.(*ast.ParserSeparatedList).Items = append($1.(*ast.ParserSeparatedList).Items, arrayItem) $$ = $1 - - // save position - arrayItem.GetNode().Position = position.NewNodePosition($3) - - // save comments - yylex.(*Parser).MoveFreeFloating($3, arrayItem) } | expr T_DOUBLE_ARROW expr { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, $1, $3} - $$ = &ast.ParserSeparatedList{ - Items: []ast.Vertex{arrayItem}, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $3), + }, + Key: $1, + DoubleArrowTkn: $2, + Val: $3, + }, + }, } - - // save position - arrayItem.GetNode().Position = position.NewNodesPosition($1, $3) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, $2.SkippedTokens) } | expr { - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, $1} - $$ = &ast.ParserSeparatedList{ - Items: []ast.Vertex{arrayItem}, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodePosition($1), + }, + Val: $1, + }, + }, } - - // save position - arrayItem.GetNode().Position = position.NewNodePosition($1) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, arrayItem) } | non_empty_array_pair_list ',' expr T_DOUBLE_ARROW '&' w_variable { - reference := &ast.ExprReference{ast.Node{}, $6} - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, $3, reference} + arrayItem := &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition($3, $6), + }, + Key: $3, + DoubleArrowTkn: $4, + Val: &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($5, $6), + }, + Var: $6, + }, + } $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) $1.(*ast.ParserSeparatedList).Items = append($1.(*ast.ParserSeparatedList).Items, arrayItem) $$ = $1 - - // save position - reference.GetNode().Position = position.NewTokenNodePosition($5, $6) - arrayItem.GetNode().Position = position.NewNodesPosition($3, $6) - - // save comments - yylex.(*Parser).MoveFreeFloating($3, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, $4.SkippedTokens) - yylex.(*Parser).setFreeFloating(reference, token.Start, $5.SkippedTokens) } | non_empty_array_pair_list ',' '&' w_variable { - reference := &ast.ExprReference{ast.Node{}, $4} - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} + arrayItem := &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($3, $4), + }, + Val: &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($3, $4), + }, + Var: $4, + }, + } $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) $1.(*ast.ParserSeparatedList).Items = append($1.(*ast.ParserSeparatedList).Items, arrayItem) $$ = $1 - - // save position - reference.GetNode().Position = position.NewTokenNodePosition($3, $4) - arrayItem.GetNode().Position = position.NewTokenNodePosition($3, $4) - - // save comments - yylex.(*Parser).setFreeFloating(arrayItem, token.Start, $3.SkippedTokens) } | expr T_DOUBLE_ARROW '&' w_variable { - reference := &ast.ExprReference{ast.Node{}, $4} - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, $1, reference} - $$ = &ast.ParserSeparatedList{ - Items: []ast.Vertex{arrayItem}, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $4), + }, + Key: $1, + DoubleArrowTkn: $2, + Val: &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($3, $4), + }, + Var: $4, + }, + }, + }, } - - // save position - reference.GetNode().Position = position.NewTokenNodePosition($3, $4) - arrayItem.GetNode().Position = position.NewNodesPosition($1, $4) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, arrayItem) - yylex.(*Parser).setFreeFloating(arrayItem, token.Expr, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(reference, token.Start, $3.SkippedTokens) } | '&' w_variable { - reference := &ast.ExprReference{ast.Node{}, $2} - arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} - $$ = &ast.ParserSeparatedList{ - Items: []ast.Vertex{arrayItem}, + Items: []ast.Vertex{ + &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + Val: &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + Var: $2, + }, + }, + }, } - - // save position - reference.GetNode().Position = position.NewTokenNodePosition($1, $2) - arrayItem.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating(arrayItem, token.Start, $1.SkippedTokens) } ; @@ -6112,23 +6130,26 @@ encaps_var: } | T_VARIABLE '[' encaps_var_offset ']' { - identifier := &ast.Identifier{ + $$ = &ast.ExprArrayDimFetch{ Node: ast.Node{ - Position: position.NewTokenPosition($1), + Position: position.NewTokensPosition($1, $4), }, - IdentifierTkn: $1, - Value: $1.Value, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + }, + }, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - $$ = &ast.ExprArrayDimFetch{ast.Node{}, variable, $3} - - // save position - variable.GetNode().Position = position.NewTokenPosition($1) - $$.GetNode().Position = position.NewTokensPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) } | T_VARIABLE T_OBJECT_OPERATOR T_STRING { @@ -6191,25 +6212,28 @@ encaps_var: } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' { - identifier := &ast.Identifier{ + $$ = &ast.ExprArrayDimFetch{ Node: ast.Node{ - Position: position.NewTokenPosition($2), + Position: position.NewTokensPosition($1, $6), }, - IdentifierTkn: $2, - Value: $2.Value, + OpenCurlyBracketTkn: $1, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + }, + }, + OpenBracketTkn: $3, + Dim: $4, + CloseBracketTkn: $5, + CloseCurlyBracketTkn: $6, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - $$ = &ast.ExprArrayDimFetch{ast.Node{}, variable, $4} - - // save position - variable.GetNode().Position = position.NewTokenPosition($2) - $$.GetNode().Position = position.NewTokensPosition($1, $6) - - // save comments - yylex.(*Parser).setToken(variable, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $3.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $5.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.End, $6.SkippedTokens) } | T_CURLY_OPEN variable '}' { diff --git a/internal/php7/php7.go b/internal/php7/php7.go index ba1e751..a4b4d5d 100644 --- a/internal/php7/php7.go +++ b/internal/php7/php7.go @@ -344,7 +344,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php7/php7.y:4992 +// line internal/php7/php7.y:5006 // line yacctab:1 var yyExca = [...]int{ @@ -2111,7 +2111,7 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:291 +// line internal/php7/php7.y:291 { yylex.(*Parser).rootNode = &ast.Root{ast.Node{}, yyDollar[1].list} @@ -2122,469 +2122,469 @@ yydefault: } case 2: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:302 +// line internal/php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 3: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:302 +// line internal/php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 4: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:302 +// line internal/php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 5: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:302 +// line internal/php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 6: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:302 +// line internal/php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 7: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:302 +// line internal/php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 8: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:302 +// line internal/php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 9: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:302 +// line internal/php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 10: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:303 +// line internal/php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 11: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:303 +// line internal/php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 12: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:303 +// line internal/php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 13: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:303 +// line internal/php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 14: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:303 +// line internal/php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 15: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:303 +// line internal/php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 16: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:303 +// line internal/php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 17: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:303 +// line internal/php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 18: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:303 +// line internal/php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 19: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:303 +// line internal/php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 20: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:303 +// line internal/php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 21: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:303 +// line internal/php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 22: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:304 +// line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 23: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:304 +// line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 24: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:304 +// line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 25: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:304 +// line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 26: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:304 +// line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 27: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:304 +// line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 28: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:304 +// line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 29: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:304 +// line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 30: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:304 +// line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 31: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:304 +// line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 32: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:305 +// line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 33: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:305 +// line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 34: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:305 +// line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 35: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:305 +// line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 36: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:305 +// line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 37: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:305 +// line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 38: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:305 +// line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 39: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:305 +// line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 40: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:305 +// line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 41: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:305 +// line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 42: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:306 +// line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 43: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:306 +// line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 44: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:306 +// line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 45: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:306 +// line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 46: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:306 +// line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 47: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:306 +// line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 48: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:306 +// line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 49: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:306 +// line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 50: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:306 +// line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 51: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:306 +// line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 52: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:306 +// line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 53: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:307 +// line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 54: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:307 +// line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 55: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:307 +// line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 56: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:307 +// line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 57: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:307 +// line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 58: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:307 +// line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 59: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:307 +// line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 60: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:307 +// line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 61: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:308 +// line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 62: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:308 +// line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 63: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:308 +// line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 64: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:308 +// line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 65: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:308 +// line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 66: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:308 +// line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 67: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:308 +// line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 68: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:308 +// line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 69: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:308 +// line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 70: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:313 +// line internal/php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 71: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:316 +// line internal/php7/php7.y:316 { yyVAL.token = yyDollar[1].token } case 72: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:316 +// line internal/php7/php7.y:316 { yyVAL.token = yyDollar[1].token } case 73: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:316 +// line internal/php7/php7.y:316 { yyVAL.token = yyDollar[1].token } case 74: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:316 +// line internal/php7/php7.y:316 { yyVAL.token = yyDollar[1].token } case 75: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:316 +// line internal/php7/php7.y:316 { yyVAL.token = yyDollar[1].token } case 76: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:316 +// line internal/php7/php7.y:316 { yyVAL.token = yyDollar[1].token } case 77: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:321 +// line internal/php7/php7.y:321 { yyVAL.token = yyDollar[1].token } case 78: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:325 +// line internal/php7/php7.y:325 { yyVAL.token = yyDollar[1].token } case 79: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:332 +// line internal/php7/php7.y:332 { if inlineHtmlNode, ok := yyDollar[2].node.(*ast.StmtInlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) @@ -2597,13 +2597,13 @@ yydefault: } case 80: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:343 +// line internal/php7/php7.y:343 { yyVAL.list = []ast.Vertex{} } case 81: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:350 +// line internal/php7/php7.y:350 { yyVAL.list = []ast.Vertex{ &ast.NameNamePart{ @@ -2617,7 +2617,7 @@ yydefault: } case 82: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:362 +// line internal/php7/php7.y:362 { yyVAL.list = append(yyDollar[1].list, &ast.NameNamePart{ Node: ast.Node{ @@ -2630,7 +2630,7 @@ yydefault: } case 83: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:376 +// line internal/php7/php7.y:376 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -2641,7 +2641,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:385 +// line internal/php7/php7.y:385 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -2654,7 +2654,7 @@ yydefault: } case 85: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:396 +// line internal/php7/php7.y:396 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -2666,44 +2666,44 @@ yydefault: } case 86: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:409 +// line internal/php7/php7.y:409 { // error yyVAL.node = nil } case 87: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:414 +// line internal/php7/php7.y:414 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:418 +// line internal/php7/php7.y:418 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:422 +// line internal/php7/php7.y:422 { yyVAL.node = yyDollar[1].node } case 90: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:426 +// line internal/php7/php7.y:426 { yyVAL.node = yyDollar[1].node } case 91: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:430 +// line internal/php7/php7.y:430 { yyVAL.node = yyDollar[1].node } case 92: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:434 +// line internal/php7/php7.y:434 { yyVAL.node = &ast.StmtHaltCompiler{ Node: ast.Node{ @@ -2717,7 +2717,7 @@ yydefault: } case 93: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:446 +// line internal/php7/php7.y:446 { yyVAL.node = &ast.StmtNamespace{ Node: ast.Node{ @@ -2735,7 +2735,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:462 +// line internal/php7/php7.y:462 { yyVAL.node = &ast.StmtNamespace{ Node: ast.Node{ @@ -2755,7 +2755,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:480 +// line internal/php7/php7.y:480 { yyVAL.node = &ast.StmtNamespace{ Node: ast.Node{ @@ -2769,7 +2769,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:492 +// line internal/php7/php7.y:492 { use := yyDollar[2].node.(*ast.StmtGroupUse) @@ -2781,7 +2781,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:502 +// line internal/php7/php7.y:502 { use := yyDollar[3].node.(*ast.StmtGroupUse) @@ -2794,7 +2794,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:513 +// line internal/php7/php7.y:513 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2807,7 +2807,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:524 +// line internal/php7/php7.y:524 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2821,7 +2821,7 @@ yydefault: } case 100: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:536 +// line internal/php7/php7.y:536 { yyVAL.node = &ast.StmtConstList{ Node: ast.Node{ @@ -2835,7 +2835,7 @@ yydefault: } case 101: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:551 +// line internal/php7/php7.y:551 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -2847,7 +2847,7 @@ yydefault: } case 102: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:561 +// line internal/php7/php7.y:561 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -2859,7 +2859,7 @@ yydefault: } case 103: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:574 +// line internal/php7/php7.y:574 { if len(yyDollar[4].list) > 0 { yyDollar[4].list[len(yyDollar[4].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[5].token @@ -2883,7 +2883,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:596 +// line internal/php7/php7.y:596 { yyDollar[5].list[len(yyDollar[5].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[6].token @@ -2906,7 +2906,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:620 +// line internal/php7/php7.y:620 { yyDollar[4].list[len(yyDollar[4].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[5].token @@ -2928,7 +2928,7 @@ yydefault: } case 106: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:640 +// line internal/php7/php7.y:640 { yyDollar[5].list[len(yyDollar[5].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[6].token @@ -2951,19 +2951,19 @@ yydefault: } case 107: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:664 +// line internal/php7/php7.y:664 { yyVAL.token = nil } case 108: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:668 +// line internal/php7/php7.y:668 { yyVAL.token = yyDollar[1].token } case 109: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:675 +// line internal/php7/php7.y:675 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2971,13 +2971,13 @@ yydefault: } case 110: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:681 +// line internal/php7/php7.y:681 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 111: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:688 +// line internal/php7/php7.y:688 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2985,13 +2985,13 @@ yydefault: } case 112: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:694 +// line internal/php7/php7.y:694 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 113: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:701 +// line internal/php7/php7.y:701 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2999,19 +2999,19 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:707 +// line internal/php7/php7.y:707 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 115: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:714 +// line internal/php7/php7.y:714 { yyVAL.node = yyDollar[1].node } case 116: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:718 +// line internal/php7/php7.y:718 { decl := yyDollar[2].node.(*ast.StmtUseDeclaration) decl.Type = yyDollar[1].node @@ -3021,7 +3021,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:729 +// line internal/php7/php7.y:729 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -3037,7 +3037,7 @@ yydefault: } case 118: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:743 +// line internal/php7/php7.y:743 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -3061,13 +3061,13 @@ yydefault: } case 119: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:768 +// line internal/php7/php7.y:768 { yyVAL.node = yyDollar[1].node } case 120: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:772 +// line internal/php7/php7.y:772 { decl := yyDollar[2].node.(*ast.StmtUseDeclaration) decl.NsSeparatorTkn = yyDollar[1].token @@ -3077,7 +3077,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:783 +// line internal/php7/php7.y:783 { 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) @@ -3086,7 +3086,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:790 +// line internal/php7/php7.y:790 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -3094,7 +3094,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:799 +// line internal/php7/php7.y:799 { if inlineHtmlNode, ok := yyDollar[2].node.(*ast.StmtInlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) @@ -3107,50 +3107,50 @@ yydefault: } case 124: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:810 +// line internal/php7/php7.y:810 { yyVAL.list = []ast.Vertex{} } case 125: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:817 +// line internal/php7/php7.y:817 { // error yyVAL.node = nil } case 126: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:822 +// line internal/php7/php7.y:822 { yyVAL.node = yyDollar[1].node } case 127: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:826 +// line internal/php7/php7.y:826 { yyVAL.node = yyDollar[1].node } case 128: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:830 +// line internal/php7/php7.y:830 { yyVAL.node = yyDollar[1].node } case 129: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:834 +// line internal/php7/php7.y:834 { yyVAL.node = yyDollar[1].node } case 130: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:838 +// line internal/php7/php7.y:838 { yyVAL.node = yyDollar[1].node } case 131: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:842 +// line internal/php7/php7.y:842 { yyVAL.node = &ast.StmtHaltCompiler{ Node: ast.Node{ @@ -3164,7 +3164,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:856 +// line internal/php7/php7.y:856 { yyVAL.node = &ast.StmtStmtList{ Node: ast.Node{ @@ -3177,19 +3177,19 @@ yydefault: } case 133: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:867 +// line internal/php7/php7.y:867 { yyVAL.node = yyDollar[1].node } case 134: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:871 +// line internal/php7/php7.y:871 { yyVAL.node = yyDollar[1].node } case 135: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:875 +// line internal/php7/php7.y:875 { yyDollar[5].node.(*ast.StmtWhile).WhileTkn = yyDollar[1].token yyDollar[5].node.(*ast.StmtWhile).OpenParenthesisTkn = yyDollar[2].token @@ -3201,7 +3201,7 @@ yydefault: } case 136: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:885 +// line internal/php7/php7.y:885 { yyVAL.node = &ast.StmtDo{ Node: ast.Node{ @@ -3218,7 +3218,7 @@ yydefault: } case 137: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:900 +// line internal/php7/php7.y:900 { yyDollar[9].node.(*ast.StmtFor).ForTkn = yyDollar[1].token yyDollar[9].node.(*ast.StmtFor).OpenParenthesisTkn = yyDollar[2].token @@ -3234,7 +3234,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:914 +// line internal/php7/php7.y:914 { yyDollar[5].node.(*ast.StmtSwitch).SwitchTkn = yyDollar[1].token yyDollar[5].node.(*ast.StmtSwitch).OpenParenthesisTkn = yyDollar[2].token @@ -3246,7 +3246,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:924 +// line internal/php7/php7.y:924 { yyVAL.node = &ast.StmtBreak{ Node: ast.Node{ @@ -3259,7 +3259,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:935 +// line internal/php7/php7.y:935 { yyVAL.node = &ast.StmtContinue{ Node: ast.Node{ @@ -3272,7 +3272,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:946 +// line internal/php7/php7.y:946 { yyVAL.node = &ast.StmtReturn{ Node: ast.Node{ @@ -3285,7 +3285,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:957 +// line internal/php7/php7.y:957 { yyDollar[2].node.(*ast.StmtGlobal).GlobalTkn = yyDollar[1].token yyDollar[2].node.(*ast.StmtGlobal).SemiColonTkn = yyDollar[3].token @@ -3295,7 +3295,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:965 +// line internal/php7/php7.y:965 { yyDollar[2].node.(*ast.StmtStatic).StaticTkn = yyDollar[1].token yyDollar[2].node.(*ast.StmtStatic).SemiColonTkn = yyDollar[3].token @@ -3305,7 +3305,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:973 +// line internal/php7/php7.y:973 { yyDollar[2].node.(*ast.StmtEcho).EchoTkn = yyDollar[1].token yyDollar[2].node.(*ast.StmtEcho).SemiColonTkn = yyDollar[3].token @@ -3315,7 +3315,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:981 +// line internal/php7/php7.y:981 { yyVAL.node = &ast.StmtInlineHtml{ Node: ast.Node{ @@ -3327,7 +3327,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:991 +// line internal/php7/php7.y:991 { yyVAL.node = &ast.StmtExpression{ Node: ast.Node{ @@ -3339,7 +3339,7 @@ yydefault: } case 147: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1001 +// line internal/php7/php7.y:1001 { yyDollar[3].node.(*ast.StmtUnset).UnsetTkn = yyDollar[1].token yyDollar[3].node.(*ast.StmtUnset).OpenParenthesisTkn = yyDollar[2].token @@ -3352,7 +3352,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:1012 +// line internal/php7/php7.y:1012 { yyDollar[7].node.(*ast.StmtForeach).ForeachTkn = yyDollar[1].token yyDollar[7].node.(*ast.StmtForeach).OpenParenthesisTkn = yyDollar[2].token @@ -3366,7 +3366,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:1024 +// line internal/php7/php7.y:1024 { yyDollar[9].node.(*ast.StmtForeach).ForeachTkn = yyDollar[1].token yyDollar[9].node.(*ast.StmtForeach).OpenParenthesisTkn = yyDollar[2].token @@ -3382,7 +3382,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1038 +// line internal/php7/php7.y:1038 { yyDollar[5].node.(*ast.StmtDeclare).DeclareTkn = yyDollar[1].token yyDollar[5].node.(*ast.StmtDeclare).OpenParenthesisTkn = yyDollar[2].token @@ -3395,7 +3395,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1049 +// line internal/php7/php7.y:1049 { yyVAL.node = &ast.StmtNop{ Node: ast.Node{ @@ -3406,7 +3406,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1058 +// line internal/php7/php7.y:1058 { yyVAL.node = &ast.StmtTry{ TryTkn: yyDollar[1].token, @@ -3425,7 +3425,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1075 +// line internal/php7/php7.y:1075 { yyVAL.node = &ast.StmtThrow{ Node: ast.Node{ @@ -3438,7 +3438,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1086 +// line internal/php7/php7.y:1086 { yyVAL.node = &ast.StmtGoto{ Node: ast.Node{ @@ -3457,7 +3457,7 @@ yydefault: } case 155: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1103 +// line internal/php7/php7.y:1103 { yyVAL.node = &ast.StmtLabel{ Node: ast.Node{ @@ -3475,13 +3475,13 @@ yydefault: } case 156: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1121 +// line internal/php7/php7.y:1121 { yyVAL.list = []ast.Vertex{} } case 157: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:1125 +// line internal/php7/php7.y:1125 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -3512,7 +3512,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1156 +// line internal/php7/php7.y:1156 { yyVAL.node = &ast.StmtCatch{ Types: []ast.Vertex{yyDollar[1].node}, @@ -3520,7 +3520,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1162 +// line internal/php7/php7.y:1162 { yyDollar[1].node.(*ast.StmtCatch).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtCatch).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.StmtCatch).Types = append(yyDollar[1].node.(*ast.StmtCatch).Types, yyDollar[3].node) @@ -3529,13 +3529,13 @@ yydefault: } case 160: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1172 +// line internal/php7/php7.y:1172 { yyVAL.node = nil } case 161: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1176 +// line internal/php7/php7.y:1176 { yyVAL.node = &ast.StmtFinally{ Node: ast.Node{ @@ -3549,7 +3549,7 @@ yydefault: } case 162: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1191 +// line internal/php7/php7.y:1191 { yyVAL.node = &ast.StmtUnset{ Vars: []ast.Vertex{yyDollar[1].node}, @@ -3557,7 +3557,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1197 +// line internal/php7/php7.y:1197 { yyDollar[1].node.(*ast.StmtUnset).Vars = append(yyDollar[1].node.(*ast.StmtUnset).Vars, yyDollar[3].node) yyDollar[1].node.(*ast.StmtUnset).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtUnset).SeparatorTkns, yyDollar[2].token) @@ -3566,13 +3566,13 @@ yydefault: } case 164: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1207 +// line internal/php7/php7.y:1207 { yyVAL.node = yyDollar[1].node } case 165: yyDollar = yyS[yypt-11 : yypt+1] - // line internal/php7/php7.y:1214 +// line internal/php7/php7.y:1214 { yyVAL.node = &ast.StmtFunction{ Node: ast.Node{ @@ -3599,31 +3599,31 @@ yydefault: } case 166: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1242 +// line internal/php7/php7.y:1242 { yyVAL.token = nil } case 167: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1246 +// line internal/php7/php7.y:1246 { yyVAL.token = yyDollar[1].token } case 168: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1253 +// line internal/php7/php7.y:1253 { yyVAL.token = nil } case 169: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1257 +// line internal/php7/php7.y:1257 { yyVAL.token = yyDollar[1].token } case 170: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:1264 +// line internal/php7/php7.y:1264 { yyVAL.node = &ast.StmtClass{ Node: ast.Node{ @@ -3647,7 +3647,7 @@ yydefault: } case 171: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php7/php7.y:1286 +// line internal/php7/php7.y:1286 { yyVAL.node = &ast.StmtClass{ Node: ast.Node{ @@ -3670,19 +3670,19 @@ yydefault: } case 172: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1310 +// line internal/php7/php7.y:1310 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 173: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1314 +// line internal/php7/php7.y:1314 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 174: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1321 +// line internal/php7/php7.y:1321 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -3694,7 +3694,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1331 +// line internal/php7/php7.y:1331 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -3706,7 +3706,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1344 +// line internal/php7/php7.y:1344 { yyVAL.node = &ast.StmtTrait{ Node: ast.Node{ @@ -3727,7 +3727,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:1366 +// line internal/php7/php7.y:1366 { yyVAL.node = &ast.StmtInterface{ Node: ast.Node{ @@ -3749,13 +3749,13 @@ yydefault: } case 178: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1389 +// line internal/php7/php7.y:1389 { yyVAL.node = nil } case 179: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1393 +// line internal/php7/php7.y:1393 { yyVAL.node = &ast.StmtClassExtends{ Node: ast.Node{ @@ -3767,13 +3767,13 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1406 +// line internal/php7/php7.y:1406 { yyVAL.node = nil } case 181: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1410 +// line internal/php7/php7.y:1410 { yyVAL.node = &ast.StmtInterfaceExtends{ Node: ast.Node{ @@ -3786,13 +3786,13 @@ yydefault: } case 182: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1424 +// line internal/php7/php7.y:1424 { yyVAL.node = nil } case 183: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1428 +// line internal/php7/php7.y:1428 { yyVAL.node = &ast.StmtClassImplements{ Node: ast.Node{ @@ -3805,13 +3805,13 @@ yydefault: } case 184: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1442 +// line internal/php7/php7.y:1442 { yyVAL.node = yyDollar[1].node } case 185: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1446 +// line internal/php7/php7.y:1446 { yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node} @@ -3823,7 +3823,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1456 +// line internal/php7/php7.y:1456 { yyVAL.node = &ast.ExprList{ Node: ast.Node{ @@ -3838,7 +3838,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1469 +// line internal/php7/php7.y:1469 { yyVAL.node = &ast.ExprList{ Node: ast.Node{ @@ -3852,7 +3852,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1484 +// line internal/php7/php7.y:1484 { yyVAL.node = &ast.StmtFor{ Node: ast.Node{ @@ -3863,7 +3863,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1493 +// line internal/php7/php7.y:1493 { yyVAL.node = &ast.StmtFor{ Node: ast.Node{ @@ -3883,7 +3883,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1514 +// line internal/php7/php7.y:1514 { yyVAL.node = &ast.StmtForeach{ Node: ast.Node{ @@ -3894,7 +3894,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1523 +// line internal/php7/php7.y:1523 { yyVAL.node = &ast.StmtForeach{ Node: ast.Node{ @@ -3914,7 +3914,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1544 +// line internal/php7/php7.y:1544 { yyVAL.node = &ast.StmtDeclare{ Node: ast.Node{ @@ -3925,7 +3925,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1553 +// line internal/php7/php7.y:1553 { yyVAL.node = &ast.StmtDeclare{ Node: ast.Node{ @@ -3945,7 +3945,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1574 +// line internal/php7/php7.y:1574 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3958,7 +3958,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1585 +// line internal/php7/php7.y:1585 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3972,7 +3972,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1597 +// line internal/php7/php7.y:1597 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3987,7 +3987,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1610 +// line internal/php7/php7.y:1610 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -4003,13 +4003,13 @@ yydefault: } case 198: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1627 +// line internal/php7/php7.y:1627 { yyVAL.list = nil } case 199: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1631 +// line internal/php7/php7.y:1631 { yyVAL.list = append(yyDollar[1].list, &ast.StmtCase{ Node: ast.Node{ @@ -4023,7 +4023,7 @@ yydefault: } case 200: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1643 +// line internal/php7/php7.y:1643 { yyVAL.list = append(yyDollar[1].list, &ast.StmtDefault{ Node: ast.Node{ @@ -4036,19 +4036,19 @@ yydefault: } case 201: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1657 +// line internal/php7/php7.y:1657 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1661 +// line internal/php7/php7.y:1661 { yyVAL.token = yyDollar[1].token } case 203: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1668 +// line internal/php7/php7.y:1668 { yyVAL.node = &ast.StmtWhile{ Node: ast.Node{ @@ -4059,7 +4059,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1677 +// line internal/php7/php7.y:1677 { yyVAL.node = &ast.StmtWhile{ Node: ast.Node{ @@ -4079,7 +4079,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1698 +// line internal/php7/php7.y:1698 { yyVAL.node = &ast.StmtIf{ Node: ast.Node{ @@ -4094,7 +4094,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1711 +// line internal/php7/php7.y:1711 { yyDollar[1].node.(*ast.StmtIf).ElseIf = append(yyDollar[1].node.(*ast.StmtIf).ElseIf, &ast.StmtElseIf{ Node: ast.Node{ @@ -4113,13 +4113,13 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1731 +// line internal/php7/php7.y:1731 { yyVAL.node = yyDollar[1].node } case 208: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1735 +// line internal/php7/php7.y:1735 { yyDollar[1].node.(*ast.StmtIf).Else = &ast.StmtElse{ Node: ast.Node{ @@ -4135,7 +4135,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1752 +// line internal/php7/php7.y:1752 { yyVAL.node = &ast.StmtIf{ Node: ast.Node{ @@ -4157,7 +4157,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:1772 +// line internal/php7/php7.y:1772 { yyDollar[1].node.(*ast.StmtIf).ElseIf = append(yyDollar[1].node.(*ast.StmtIf).ElseIf, &ast.StmtElseIf{ Node: ast.Node{ @@ -4181,7 +4181,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1797 +// line internal/php7/php7.y:1797 { yyDollar[1].node.(*ast.StmtIf).EndIfTkn = yyDollar[2].token yyDollar[1].node.(*ast.StmtIf).SemiColonTkn = yyDollar[3].token @@ -4191,7 +4191,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1805 +// line internal/php7/php7.y:1805 { yyDollar[1].node.(*ast.StmtIf).Else = &ast.StmtElse{ Node: ast.Node{ @@ -4215,25 +4215,25 @@ yydefault: } case 213: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1830 +// line internal/php7/php7.y:1830 { yyVAL.list = yyDollar[1].list } case 214: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1834 +// line internal/php7/php7.y:1834 { yyVAL.list = nil } case 215: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1841 +// line internal/php7/php7.y:1841 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 216: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1845 +// line internal/php7/php7.y:1845 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4242,7 +4242,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1855 +// line internal/php7/php7.y:1855 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -4296,7 +4296,7 @@ yydefault: } case 218: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1907 +// line internal/php7/php7.y:1907 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -4353,25 +4353,25 @@ yydefault: } case 219: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1965 +// line internal/php7/php7.y:1965 { yyVAL.node = nil } case 220: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1969 +// line internal/php7/php7.y:1969 { yyVAL.node = yyDollar[1].node } case 221: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1976 +// line internal/php7/php7.y:1976 { yyVAL.node = yyDollar[1].node } case 222: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1980 +// line internal/php7/php7.y:1980 { yyVAL.node = &ast.Nullable{ Node: ast.Node{ @@ -4383,7 +4383,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1993 +// line internal/php7/php7.y:1993 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -4395,7 +4395,7 @@ yydefault: } case 224: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2003 +// line internal/php7/php7.y:2003 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -4407,19 +4407,19 @@ yydefault: } case 225: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2013 +// line internal/php7/php7.y:2013 { yyVAL.node = yyDollar[1].node } case 226: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2020 +// line internal/php7/php7.y:2020 { yyVAL.node = nil } case 227: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2024 +// line internal/php7/php7.y:2024 { yyVAL.node = &ast.ReturnType{ ColonTkn: yyDollar[1].token, @@ -4428,7 +4428,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2034 +// line internal/php7/php7.y:2034 { yyVAL.node = &ast.ArgumentList{ Node: ast.Node{ @@ -4440,7 +4440,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2044 +// line internal/php7/php7.y:2044 { argumentList := yyDollar[2].node.(*ast.ArgumentList) argumentList.Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) @@ -4452,7 +4452,7 @@ yydefault: } case 230: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2057 +// line internal/php7/php7.y:2057 { yyVAL.node = &ast.ArgumentList{ Arguments: []ast.Vertex{yyDollar[1].node}, @@ -4460,7 +4460,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2063 +// line internal/php7/php7.y:2063 { yyDollar[1].node.(*ast.ArgumentList).SeparatorTkns = append(yyDollar[1].node.(*ast.ArgumentList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ArgumentList).Arguments = append(yyDollar[1].node.(*ast.ArgumentList).Arguments, yyDollar[3].node) @@ -4469,7 +4469,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2073 +// line internal/php7/php7.y:2073 { yyVAL.node = &ast.Argument{ Node: ast.Node{ @@ -4480,7 +4480,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2082 +// line internal/php7/php7.y:2082 { yyVAL.node = &ast.Argument{ Node: ast.Node{ @@ -4492,7 +4492,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2095 +// line internal/php7/php7.y:2095 { yyDollar[1].node.(*ast.StmtGlobal).Vars = append(yyDollar[1].node.(*ast.StmtGlobal).Vars, yyDollar[3].node) yyDollar[1].node.(*ast.StmtGlobal).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtGlobal).SeparatorTkns, yyDollar[2].token) @@ -4501,7 +4501,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2102 +// line internal/php7/php7.y:2102 { yyVAL.node = &ast.StmtGlobal{ Vars: []ast.Vertex{yyDollar[1].node}, @@ -4509,13 +4509,13 @@ yydefault: } case 236: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2111 +// line internal/php7/php7.y:2111 { yyVAL.node = yyDollar[1].node } case 237: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2118 +// line internal/php7/php7.y:2118 { yyDollar[1].node.(*ast.StmtStatic).Vars = append(yyDollar[1].node.(*ast.StmtStatic).Vars, yyDollar[3].node) yyDollar[1].node.(*ast.StmtStatic).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtStatic).SeparatorTkns, yyDollar[2].token) @@ -4524,7 +4524,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2125 +// line internal/php7/php7.y:2125 { yyVAL.node = &ast.StmtStatic{ Vars: []ast.Vertex{yyDollar[1].node}, @@ -4532,7 +4532,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2134 +// line internal/php7/php7.y:2134 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -4558,7 +4558,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2158 +// line internal/php7/php7.y:2158 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -4585,19 +4585,19 @@ yydefault: } case 241: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2186 +// line internal/php7/php7.y:2186 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 242: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2190 +// line internal/php7/php7.y:2190 { yyVAL.list = []ast.Vertex{} } case 243: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2197 +// line internal/php7/php7.y:2197 { yyVAL.node = &ast.StmtPropertyList{ Node: ast.Node{ @@ -4612,7 +4612,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2210 +// line internal/php7/php7.y:2210 { yyVAL.node = &ast.StmtClassConstList{ Node: ast.Node{ @@ -4626,7 +4626,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2222 +// line internal/php7/php7.y:2222 { yyVAL.node = &ast.StmtTraitUse{ Node: ast.Node{ @@ -4640,7 +4640,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-10 : yypt+1] - // line internal/php7/php7.y:2234 +// line internal/php7/php7.y:2234 { pos := position.NewTokenNodePosition(yyDollar[2].token, yyDollar[10].node) if yyDollar[1].list != nil { @@ -4671,7 +4671,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2266 +// line internal/php7/php7.y:2266 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -4679,7 +4679,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2272 +// line internal/php7/php7.y:2272 { 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) @@ -4688,7 +4688,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2282 +// line internal/php7/php7.y:2282 { yyVAL.node = &ast.StmtNop{ Node: ast.Node{ @@ -4699,7 +4699,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2291 +// line internal/php7/php7.y:2291 { yyVAL.node = &ast.StmtTraitAdaptationList{ Node: ast.Node{ @@ -4711,7 +4711,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2301 +// line internal/php7/php7.y:2301 { yyVAL.node = &ast.StmtTraitAdaptationList{ Node: ast.Node{ @@ -4724,19 +4724,19 @@ yydefault: } case 252: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2315 +// line internal/php7/php7.y:2315 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 253: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2319 +// line internal/php7/php7.y:2319 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 254: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2326 +// line internal/php7/php7.y:2326 { yyVAL.node = yyDollar[1].node @@ -4746,7 +4746,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2334 +// line internal/php7/php7.y:2334 { yyVAL.node = yyDollar[1].node @@ -4756,7 +4756,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2345 +// line internal/php7/php7.y:2345 { yyVAL.node = &ast.StmtTraitUsePrecedence{ Node: ast.Node{ @@ -4770,7 +4770,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2360 +// line internal/php7/php7.y:2360 { yyVAL.node = &ast.StmtTraitUseAlias{ Node: ast.Node{ @@ -4789,7 +4789,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2377 +// line internal/php7/php7.y:2377 { yyVAL.node = &ast.StmtTraitUseAlias{ Node: ast.Node{ @@ -4808,7 +4808,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2394 +// line internal/php7/php7.y:2394 { yyVAL.node = &ast.StmtTraitUseAlias{ Node: ast.Node{ @@ -4828,7 +4828,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2412 +// line internal/php7/php7.y:2412 { yyVAL.node = &ast.StmtTraitUseAlias{ Node: ast.Node{ @@ -4841,7 +4841,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2426 +// line internal/php7/php7.y:2426 { yyVAL.node = &ast.StmtTraitMethodRef{ Node: ast.Node{ @@ -4858,13 +4858,13 @@ yydefault: } case 262: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2441 +// line internal/php7/php7.y:2441 { yyVAL.node = yyDollar[1].node } case 263: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2448 +// line internal/php7/php7.y:2448 { yyVAL.node = &ast.StmtTraitMethodRef{ Node: ast.Node{ @@ -4883,7 +4883,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2468 +// line internal/php7/php7.y:2468 { yyVAL.node = &ast.StmtNop{ Node: ast.Node{ @@ -4894,7 +4894,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2477 +// line internal/php7/php7.y:2477 { yyVAL.node = &ast.StmtStmtList{ Node: ast.Node{ @@ -4907,13 +4907,13 @@ yydefault: } case 266: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2491 +// line internal/php7/php7.y:2491 { yyVAL.list = yyDollar[1].list } case 267: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2495 +// line internal/php7/php7.y:2495 { yyVAL.list = []ast.Vertex{ &ast.Identifier{ @@ -4927,31 +4927,31 @@ yydefault: } case 268: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2510 +// line internal/php7/php7.y:2510 { yyVAL.list = nil } case 269: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2514 +// line internal/php7/php7.y:2514 { yyVAL.list = yyDollar[1].list } case 270: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2521 +// line internal/php7/php7.y:2521 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 271: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2525 +// line internal/php7/php7.y:2525 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 272: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2532 +// line internal/php7/php7.y:2532 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -4963,7 +4963,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2542 +// line internal/php7/php7.y:2542 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -4975,7 +4975,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2552 +// line internal/php7/php7.y:2552 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -4987,7 +4987,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2562 +// line internal/php7/php7.y:2562 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -4999,7 +4999,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2572 +// line internal/php7/php7.y:2572 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -5011,7 +5011,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2582 +// line internal/php7/php7.y:2582 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -5023,7 +5023,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2595 +// line internal/php7/php7.y:2595 { 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) @@ -5032,7 +5032,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2602 +// line internal/php7/php7.y:2602 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -5040,7 +5040,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2611 +// line internal/php7/php7.y:2611 { yyVAL.node = &ast.StmtProperty{ Node: ast.Node{ @@ -5063,7 +5063,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2632 +// line internal/php7/php7.y:2632 { yyVAL.node = &ast.StmtProperty{ Node: ast.Node{ @@ -5087,7 +5087,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2657 +// line internal/php7/php7.y:2657 { lastNode(yyDollar[1].list).(*ast.StmtConstant).CommaTkn = yyDollar[2].token @@ -5095,13 +5095,13 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2663 +// line internal/php7/php7.y:2663 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 284: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2670 +// line internal/php7/php7.y:2670 { yyVAL.node = &ast.StmtConstant{ Node: ast.Node{ @@ -5122,7 +5122,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2692 +// line internal/php7/php7.y:2692 { yyVAL.node = &ast.StmtConstant{ Node: ast.Node{ @@ -5143,7 +5143,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2714 +// line internal/php7/php7.y:2714 { yyDollar[1].node.(*ast.StmtEcho).Exprs = append(yyDollar[1].node.(*ast.StmtEcho).Exprs, yyDollar[3].node) yyDollar[1].node.(*ast.StmtEcho).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtEcho).SeparatorTkns, yyDollar[2].token) @@ -5152,7 +5152,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2721 +// line internal/php7/php7.y:2721 { yyVAL.node = &ast.StmtEcho{ Exprs: []ast.Vertex{yyDollar[1].node}, @@ -5160,25 +5160,25 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2730 +// line internal/php7/php7.y:2730 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2737 +// line internal/php7/php7.y:2737 { yyVAL.list = nil } case 290: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2741 +// line internal/php7/php7.y:2741 { yyVAL.list = yyDollar[1].list } case 291: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2748 +// line internal/php7/php7.y:2748 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5187,13 +5187,13 @@ yydefault: } case 292: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2755 +// line internal/php7/php7.y:2755 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 293: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php7/php7.y:2762 +// line internal/php7/php7.y:2762 { yyVAL.node = &ast.StmtClass{ Node: ast.Node{ @@ -5210,7 +5210,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2780 +// line internal/php7/php7.y:2780 { if yyDollar[3].node != nil { yyVAL.node = &ast.ExprNew{ast.Node{}, yyDollar[2].node, yyDollar[3].node.(*ast.ArgumentList)} @@ -5225,7 +5225,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2793 +// line internal/php7/php7.y:2793 { yyVAL.node = &ast.ExprNew{ast.Node{}, yyDollar[2].node, nil} @@ -5237,7 +5237,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:2806 +// line internal/php7/php7.y:2806 { listNode := &ast.ExprList{ Node: ast.Node{ @@ -5259,7 +5259,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:2826 +// line internal/php7/php7.y:2826 { listNode := &ast.ExprList{ Node: ast.Node{ @@ -5280,7 +5280,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2845 +// line internal/php7/php7.y:2845 { yyVAL.node = &ast.ExprAssign{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5293,7 +5293,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2856 +// line internal/php7/php7.y:2856 { yyVAL.node = &ast.ExprAssignReference{ast.Node{}, yyDollar[1].node, yyDollar[4].node} @@ -5307,7 +5307,7 @@ yydefault: } case 300: 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} @@ -5319,7 +5319,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2878 +// line internal/php7/php7.y:2878 { yyVAL.node = &ast.ExprAssignPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5332,7 +5332,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2889 +// line internal/php7/php7.y:2889 { yyVAL.node = &ast.ExprAssignMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5345,7 +5345,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2900 +// line internal/php7/php7.y:2900 { yyVAL.node = &ast.ExprAssignMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5358,7 +5358,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2911 +// line internal/php7/php7.y:2911 { yyVAL.node = &ast.ExprAssignPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5371,7 +5371,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2922 +// line internal/php7/php7.y:2922 { yyVAL.node = &ast.ExprAssignDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5384,7 +5384,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2933 +// line internal/php7/php7.y:2933 { yyVAL.node = &ast.ExprAssignConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5397,7 +5397,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2944 +// line internal/php7/php7.y:2944 { yyVAL.node = &ast.ExprAssignMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5410,7 +5410,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2955 +// line internal/php7/php7.y:2955 { yyVAL.node = &ast.ExprAssignBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5423,7 +5423,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2966 +// line internal/php7/php7.y:2966 { yyVAL.node = &ast.ExprAssignBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5436,7 +5436,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2977 +// line internal/php7/php7.y:2977 { yyVAL.node = &ast.ExprAssignBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5449,7 +5449,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2988 +// line internal/php7/php7.y:2988 { yyVAL.node = &ast.ExprAssignShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5462,7 +5462,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2999 +// line internal/php7/php7.y:2999 { yyVAL.node = &ast.ExprAssignShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5475,7 +5475,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3010 +// line internal/php7/php7.y:3010 { yyVAL.node = &ast.ExprAssignCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5488,7 +5488,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3021 +// line internal/php7/php7.y:3021 { yyVAL.node = &ast.ExprPostInc{ast.Node{}, yyDollar[1].node} @@ -5501,7 +5501,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3032 +// line internal/php7/php7.y:3032 { yyVAL.node = &ast.ExprPreInc{ast.Node{}, yyDollar[2].node} @@ -5513,7 +5513,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3042 +// line internal/php7/php7.y:3042 { yyVAL.node = &ast.ExprPostDec{ast.Node{}, yyDollar[1].node} @@ -5526,7 +5526,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3053 +// line internal/php7/php7.y:3053 { yyVAL.node = &ast.ExprPreDec{ast.Node{}, yyDollar[2].node} @@ -5538,7 +5538,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3063 +// line internal/php7/php7.y:3063 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5551,7 +5551,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3074 +// line internal/php7/php7.y:3074 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5564,7 +5564,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3085 +// line internal/php7/php7.y:3085 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5577,7 +5577,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3096 +// line internal/php7/php7.y:3096 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5590,7 +5590,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3107 +// line internal/php7/php7.y:3107 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5603,7 +5603,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3118 +// line internal/php7/php7.y:3118 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5616,7 +5616,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3129 +// line internal/php7/php7.y:3129 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5629,7 +5629,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3140 +// line internal/php7/php7.y:3140 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5642,7 +5642,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3151 +// line internal/php7/php7.y:3151 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5654,7 +5654,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3161 +// line internal/php7/php7.y:3161 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5667,7 +5667,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3172 +// line internal/php7/php7.y:3172 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5680,7 +5680,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3183 +// line internal/php7/php7.y:3183 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5693,7 +5693,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3194 +// line internal/php7/php7.y:3194 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5706,7 +5706,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3205 +// line internal/php7/php7.y:3205 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5719,7 +5719,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3216 +// line internal/php7/php7.y:3216 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5732,7 +5732,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3227 +// line internal/php7/php7.y:3227 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5745,7 +5745,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3238 +// line internal/php7/php7.y:3238 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5758,7 +5758,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3249 +// line internal/php7/php7.y:3249 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -5770,7 +5770,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3259 +// line internal/php7/php7.y:3259 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -5782,7 +5782,7 @@ yydefault: } case 337: 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} @@ -5794,7 +5794,7 @@ yydefault: } case 338: 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} @@ -5806,7 +5806,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3289 +// line internal/php7/php7.y:3289 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5819,7 +5819,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3300 +// line internal/php7/php7.y:3300 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5832,7 +5832,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3311 +// line internal/php7/php7.y:3311 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5845,7 +5845,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3322 +// line internal/php7/php7.y:3322 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5859,7 +5859,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3334 +// line internal/php7/php7.y:3334 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5872,7 +5872,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3345 +// line internal/php7/php7.y:3345 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5885,7 +5885,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3356 +// line internal/php7/php7.y:3356 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5898,7 +5898,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3367 +// line internal/php7/php7.y:3367 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5911,7 +5911,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3378 +// line internal/php7/php7.y:3378 { yyVAL.node = &ast.ExprBinarySpaceship{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5924,7 +5924,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3389 +// line internal/php7/php7.y:3389 { yyVAL.node = &ast.ExprInstanceOf{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5937,7 +5937,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3400 +// line internal/php7/php7.y:3400 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -5954,13 +5954,13 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3415 +// line internal/php7/php7.y:3415 { yyVAL.node = yyDollar[1].node } case 351: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:3419 +// line internal/php7/php7.y:3419 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -5974,7 +5974,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3431 +// line internal/php7/php7.y:3431 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -5988,7 +5988,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3443 +// line internal/php7/php7.y:3443 { yyVAL.node = &ast.ExprBinaryCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6001,13 +6001,13 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3454 +// line internal/php7/php7.y:3454 { yyVAL.node = yyDollar[1].node } case 355: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3458 +// line internal/php7/php7.y:3458 { yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node} @@ -6020,7 +6020,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3469 +// line internal/php7/php7.y:3469 { yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node} @@ -6033,7 +6033,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3480 +// line internal/php7/php7.y:3480 { yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node} @@ -6046,7 +6046,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3491 +// line internal/php7/php7.y:3491 { yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node} @@ -6059,7 +6059,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3502 +// line internal/php7/php7.y:3502 { yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node} @@ -6072,7 +6072,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3513 +// line internal/php7/php7.y:3513 { yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node} @@ -6085,7 +6085,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3524 +// line internal/php7/php7.y:3524 { yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node} @@ -6098,7 +6098,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3535 +// line internal/php7/php7.y:3535 { yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[2].node} @@ -6118,7 +6118,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3553 +// line internal/php7/php7.y:3553 { yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node} @@ -6130,13 +6130,13 @@ yydefault: } case 364: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3563 +// line internal/php7/php7.y:3563 { yyVAL.node = yyDollar[1].node } case 365: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3567 +// line internal/php7/php7.y:3567 { yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list} @@ -6148,7 +6148,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3577 +// line internal/php7/php7.y:3577 { yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} @@ -6160,7 +6160,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3587 +// line internal/php7/php7.y:3587 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil} @@ -6172,7 +6172,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3597 +// line internal/php7/php7.y:3597 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6184,7 +6184,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3607 +// line internal/php7/php7.y:3607 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6197,7 +6197,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3618 +// line internal/php7/php7.y:3618 { yyVAL.node = &ast.ExprYieldFrom{ast.Node{}, yyDollar[2].node} @@ -6209,13 +6209,13 @@ yydefault: } case 371: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3628 +// line internal/php7/php7.y:3628 { yyVAL.node = yyDollar[1].node } case 372: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3632 +// line internal/php7/php7.y:3632 { switch n := yyDollar[2].node.(type) { case *ast.ExprClosure: @@ -6230,7 +6230,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-11 : yypt+1] - // line internal/php7/php7.y:3648 +// line internal/php7/php7.y:3648 { yyVAL.node = &ast.ExprClosure{ Node: ast.Node{ @@ -6251,7 +6251,7 @@ yydefault: } case 374: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:3667 +// line internal/php7/php7.y:3667 { yyVAL.node = &ast.ExprArrowFunction{ Node: ast.Node{ @@ -6270,25 +6270,25 @@ yydefault: } case 376: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3691 +// line internal/php7/php7.y:3691 { yyVAL.token = nil } case 377: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3695 +// line internal/php7/php7.y:3695 { yyVAL.token = yyDollar[1].token } case 378: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3702 +// line internal/php7/php7.y:3702 { yyVAL.ClosureUse = nil } case 379: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3706 +// line internal/php7/php7.y:3706 { yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list} @@ -6302,7 +6302,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3721 +// line internal/php7/php7.y:3721 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6311,13 +6311,13 @@ yydefault: } case 381: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3728 +// line internal/php7/php7.y:3728 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 382: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3735 +// line internal/php7/php7.y:3735 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6336,7 +6336,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3752 +// line internal/php7/php7.y:3752 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6358,7 +6358,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3775 +// line internal/php7/php7.y:3775 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6370,7 +6370,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3785 +// line internal/php7/php7.y:3785 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6383,7 +6383,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3796 +// line internal/php7/php7.y:3796 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6396,7 +6396,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3807 +// line internal/php7/php7.y:3807 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6408,7 +6408,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3820 +// line internal/php7/php7.y:3820 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -6420,31 +6420,31 @@ yydefault: } case 389: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3830 +// line internal/php7/php7.y:3830 { yyVAL.node = yyDollar[1].node } case 390: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3837 +// line internal/php7/php7.y:3837 { yyVAL.node = yyDollar[1].node } case 391: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3841 +// line internal/php7/php7.y:3841 { yyVAL.node = yyDollar[1].node } case 392: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3848 +// line internal/php7/php7.y:3848 { yyVAL.node = nil } case 393: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3852 +// line internal/php7/php7.y:3852 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6461,13 +6461,13 @@ yydefault: } case 394: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3870 +// line internal/php7/php7.y:3870 { yyVAL.list = []ast.Vertex{} } case 395: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3874 +// line internal/php7/php7.y:3874 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6481,25 +6481,25 @@ yydefault: } case 396: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3886 +// line internal/php7/php7.y:3886 { yyVAL.list = yyDollar[1].list } case 397: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3893 +// line internal/php7/php7.y:3893 { yyVAL.node = nil } case 398: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3897 +// line internal/php7/php7.y:3897 { yyVAL.node = yyDollar[1].node } case 399: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3904 +// line internal/php7/php7.y:3904 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -6514,7 +6514,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3917 +// line internal/php7/php7.y:3917 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -6528,7 +6528,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3929 +// line internal/php7/php7.y:3929 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -6540,7 +6540,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3942 +// line internal/php7/php7.y:3942 { yyVAL.node = &ast.ScalarLnumber{ Node: ast.Node{ @@ -6552,7 +6552,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3952 +// line internal/php7/php7.y:3952 { yyVAL.node = &ast.ScalarDnumber{ Node: ast.Node{ @@ -6564,7 +6564,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3962 +// line internal/php7/php7.y:3962 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6576,7 +6576,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3972 +// line internal/php7/php7.y:3972 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6588,7 +6588,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3982 +// line internal/php7/php7.y:3982 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6600,7 +6600,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3992 +// line internal/php7/php7.y:3992 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6612,7 +6612,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4002 +// line internal/php7/php7.y:4002 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6624,7 +6624,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4012 +// line internal/php7/php7.y:4012 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6636,7 +6636,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4022 +// line internal/php7/php7.y:4022 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6648,7 +6648,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4032 +// line internal/php7/php7.y:4032 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6660,7 +6660,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4042 +// line internal/php7/php7.y:4042 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6681,7 +6681,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4061 +// line internal/php7/php7.y:4061 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6693,7 +6693,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4071 +// line internal/php7/php7.y:4071 { yyVAL.node = &ast.ScalarEncapsed{ Node: ast.Node{ @@ -6706,7 +6706,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4082 +// line internal/php7/php7.y:4082 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6719,19 +6719,19 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4093 +// line internal/php7/php7.y:4093 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4097 +// line internal/php7/php7.y:4097 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4104 +// line internal/php7/php7.y:4104 { yyVAL.node = &ast.ExprConstFetch{ast.Node{}, yyDollar[1].node} @@ -6743,7 +6743,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4114 +// line internal/php7/php7.y:4114 { target := &ast.Identifier{ Node: ast.Node{ @@ -6763,7 +6763,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4132 +// line internal/php7/php7.y:4132 { target := &ast.Identifier{ Node: ast.Node{ @@ -6783,43 +6783,43 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4153 +// line internal/php7/php7.y:4153 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4157 +// line internal/php7/php7.y:4157 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:4164 +// line internal/php7/php7.y:4164 { yyVAL.node = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4168 +// line internal/php7/php7.y:4168 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4175 +// line internal/php7/php7.y:4175 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4182 +// line internal/php7/php7.y:4182 { yyVAL.node = yyDollar[1].node } case 427: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4186 +// line internal/php7/php7.y:4186 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6836,19 +6836,19 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4201 +// line internal/php7/php7.y:4201 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4208 +// line internal/php7/php7.y:4208 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4212 +// line internal/php7/php7.y:4212 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6865,58 +6865,61 @@ yydefault: } case 431: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4227 +// line internal/php7/php7.y:4227 { yyVAL.node = yyDollar[1].node } case 432: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4234 +// line internal/php7/php7.y:4234 { yyVAL.node = yyDollar[1].node } case 433: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4238 +// line internal/php7/php7.y:4238 { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + }, + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } } case 434: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4249 +// line internal/php7/php7.y:4250 { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + }, + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } } case 435: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4260 +// line internal/php7/php7.y:4262 { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + }, + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } } case 436: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4271 +// line internal/php7/php7.y:4274 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6929,25 +6932,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4282 +// line internal/php7/php7.y:4285 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4289 +// line internal/php7/php7.y:4292 { yyVAL.node = yyDollar[1].node } case 439: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4293 +// line internal/php7/php7.y:4296 { yyVAL.node = yyDollar[1].node } case 440: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4297 +// line internal/php7/php7.y:4300 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6960,7 +6963,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4311 +// line internal/php7/php7.y:4314 { name := &ast.Identifier{ Node: ast.Node{ @@ -6979,7 +6982,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4328 +// line internal/php7/php7.y:4331 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -6993,7 +6996,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4340 +// line internal/php7/php7.y:4343 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7005,7 +7008,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4353 +// line internal/php7/php7.y:4356 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7018,7 +7021,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4364 +// line internal/php7/php7.y:4367 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7031,39 +7034,41 @@ yydefault: } case 446: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4378 +// line internal/php7/php7.y:4381 { yyVAL.node = yyDollar[1].node } case 447: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4382 +// line internal/php7/php7.y:4385 { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + }, + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } } case 448: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4393 +// line internal/php7/php7.y:4397 { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), + }, + Var: yyDollar[1].node, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, + } } case 449: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4404 +// line internal/php7/php7.y:4409 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7076,7 +7081,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4415 +// line internal/php7/php7.y:4420 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7089,7 +7094,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4426 +// line internal/php7/php7.y:4431 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7102,7 +7107,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4440 +// line internal/php7/php7.y:4445 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -7114,7 +7119,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4450 +// line internal/php7/php7.y:4455 { yyVAL.node = yyDollar[2].node @@ -7124,13 +7129,13 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4458 +// line internal/php7/php7.y:4463 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4465 +// line internal/php7/php7.y:4470 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -7142,7 +7147,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4475 +// line internal/php7/php7.y:4480 { yyVAL.node = yyDollar[2].node @@ -7152,13 +7157,13 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4483 +// line internal/php7/php7.y:4488 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4490 +// line internal/php7/php7.y:4495 { pairList := yyDollar[1].node.(*ast.ParserSeparatedList) fistPair := pairList.Items[0].(*ast.ExprArrayItem) @@ -7171,19 +7176,19 @@ yydefault: } case 459: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:4504 +// line internal/php7/php7.y:4509 { yyVAL.node = &ast.ExprArrayItem{} } case 460: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4508 +// line internal/php7/php7.y:4513 { yyVAL.node = yyDollar[1].node } case 461: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4515 +// line internal/php7/php7.y:4520 { 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) @@ -7192,7 +7197,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4522 +// line internal/php7/php7.y:4527 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -7200,122 +7205,125 @@ yydefault: } case 463: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4531 +// line internal/php7/php7.y:4536 { - yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[3].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), + }, + Key: yyDollar[1].node, + DoubleArrowTkn: yyDollar[2].token, + Val: yyDollar[3].node, + } } case 464: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4542 +// line internal/php7/php7.y:4547 { - yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodePosition(yyDollar[1].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yyVAL.node = &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodePosition(yyDollar[1].node), + }, + Val: yyDollar[1].node, + } } case 465: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4552 +// line internal/php7/php7.y:4556 { - reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} - yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node) - reference.GetNode().Position = position.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(reference, token.Start, yyDollar[3].token.SkippedTokens) + yyVAL.node = &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), + }, + Key: yyDollar[1].node, + DoubleArrowTkn: yyDollar[2].token, + Val: &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), + }, + Var: yyDollar[4].node, + }, + } } case 466: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4566 +// line internal/php7/php7.y:4572 { - reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node} - yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, reference} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) - reference.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.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + Val: &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + Var: yyDollar[2].node, + }, + } } case 467: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4578 +// line internal/php7/php7.y:4586 { - yyVAL.node = &ast.ExprArrayItem{ast.Node{}, true, nil, 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.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + EllipsisTkn: yyDollar[1].token, + Val: yyDollar[2].node, + } } case 468: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:4588 +// line internal/php7/php7.y:4596 { - listNode := &ast.ExprList{ + yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ - Position: position.NewTokensPosition(yyDollar[3].token, yyDollar[6].token), + Position: position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token), + }, + Key: yyDollar[1].node, + DoubleArrowTkn: yyDollar[2].token, + Val: &ast.ExprList{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[3].token, yyDollar[6].token), + }, + ListTkn: yyDollar[3].token, + OpenBracketTkn: yyDollar[4].token, + Items: yyDollar[5].node.(*ast.ParserSeparatedList).Items, + SeparatorTkns: yyDollar[5].node.(*ast.ParserSeparatedList).SeparatorTkns, + CloseBracketTkn: yyDollar[6].token, }, - ListTkn: yyDollar[3].token, - OpenBracketTkn: yyDollar[4].token, - Items: yyDollar[5].node.(*ast.ParserSeparatedList).Items, - SeparatorTkns: yyDollar[5].node.(*ast.ParserSeparatedList).SeparatorTkns, - CloseBracketTkn: yyDollar[6].token, } - yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, listNode} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, yyDollar[2].token.SkippedTokens) } case 469: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4609 +// line internal/php7/php7.y:4616 { - listNode := &ast.ExprList{ + yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), }, - ListTkn: yyDollar[1].token, - OpenBracketTkn: yyDollar[2].token, - Items: yyDollar[3].node.(*ast.ParserSeparatedList).Items, - SeparatorTkns: yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, - CloseBracketTkn: yyDollar[4].token, + Val: &ast.ExprList{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), + }, + ListTkn: yyDollar[1].token, + OpenBracketTkn: yyDollar[2].token, + Items: yyDollar[3].node.(*ast.ParserSeparatedList).Items, + SeparatorTkns: yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, + CloseBracketTkn: yyDollar[4].token, + }, } - yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, listNode} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) } case 470: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4629 +// line internal/php7/php7.y:4637 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 471: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4633 +// line internal/php7/php7.y:4641 { yyVAL.list = append( yyDollar[1].list, @@ -7330,13 +7338,13 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4646 +// line internal/php7/php7.y:4654 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 473: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4650 +// line internal/php7/php7.y:4658 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -7351,7 +7359,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4666 +// line internal/php7/php7.y:4674 { name := &ast.Identifier{ Node: ast.Node{ @@ -7370,29 +7378,32 @@ yydefault: } case 475: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4683 +// line internal/php7/php7.y:4691 { - identifier := &ast.Identifier{ + yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ - Position: position.NewTokenPosition(yyDollar[1].token), + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), }, - IdentifierTkn: yyDollar[1].token, - Value: yyDollar[1].token.Value, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, + }, + OpenBracketTkn: yyDollar[2].token, + Dim: yyDollar[3].node, + CloseBracketTkn: yyDollar[4].token, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, variable, yyDollar[3].node} - - // save position - variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.SkippedTokens) } case 476: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4703 +// line internal/php7/php7.y:4714 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -7420,7 +7431,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4729 +// line internal/php7/php7.y:4740 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7435,7 +7446,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4742 +// line internal/php7/php7.y:4753 { name := &ast.Identifier{ Node: ast.Node{ @@ -7457,31 +7468,34 @@ yydefault: } case 479: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:4762 +// line internal/php7/php7.y:4773 { - identifier := &ast.Identifier{ + yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ - Position: position.NewTokenPosition(yyDollar[2].token), + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[6].token), }, - IdentifierTkn: yyDollar[2].token, - Value: yyDollar[2].token.Value, + OpenCurlyBracketTkn: yyDollar[1].token, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + }, + }, + OpenBracketTkn: yyDollar[3].token, + Dim: yyDollar[4].node, + CloseBracketTkn: yyDollar[5].token, + CloseCurlyBracketTkn: yyDollar[6].token, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, variable, yyDollar[4].node} - - // save position - variable.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[6].token) - - // save comments - yylex.(*Parser).setToken(variable, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[3].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[5].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[6].token.SkippedTokens) } case 480: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4784 +// line internal/php7/php7.y:4798 { yyVAL.node = yyDollar[2].node @@ -7491,7 +7505,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4795 +// line internal/php7/php7.y:4809 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -7503,7 +7517,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4805 +// line internal/php7/php7.y:4819 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -7526,7 +7540,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4826 +// line internal/php7/php7.y:4840 { _, err := strconv.Atoi(string(yyDollar[2].token.Value)) isInt := err == nil @@ -7554,7 +7568,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4852 +// line internal/php7/php7.y:4866 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -7573,7 +7587,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:4872 +// line internal/php7/php7.y:4886 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -7591,7 +7605,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4888 +// line internal/php7/php7.y:4902 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -7613,7 +7627,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4908 +// line internal/php7/php7.y:4922 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -7625,7 +7639,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4918 +// line internal/php7/php7.y:4932 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -7637,7 +7651,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4928 +// line internal/php7/php7.y:4942 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -7659,7 +7673,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4948 +// line internal/php7/php7.y:4962 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -7671,7 +7685,7 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4958 +// line internal/php7/php7.y:4972 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -7683,13 +7697,13 @@ yydefault: } case 492: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4971 +// line internal/php7/php7.y:4985 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 493: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4975 +// line internal/php7/php7.y:4989 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -7698,7 +7712,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4985 +// line internal/php7/php7.y:4999 { yyVAL.node = yyDollar[1].node } diff --git a/internal/php7/php7.y b/internal/php7/php7.y index 4591ec7..ffe6f94 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -4236,36 +4236,39 @@ callable_variable: } | dereferencable '[' optional_expr ']' { - $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) + $$ = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition($1, $4), + }, + Var: $1, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } } | constant '[' optional_expr ']' { - $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) + $$ = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition($1, $4), + }, + Var: $1, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } } | dereferencable '{' expr '}' { - $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) + $$ = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition($1, $4), + }, + Var: $1, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } } | dereferencable T_OBJECT_OPERATOR property_name argument_list { @@ -4380,25 +4383,27 @@ new_variable: } | new_variable '[' optional_expr ']' { - $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) + $$ = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition($1, $4), + }, + Var: $1, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } } | new_variable '{' expr '}' { - $$ = &ast.ExprArrayDimFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) + $$ = &ast.ExprArrayDimFetch{ + Node: ast.Node{ + Position: position.NewNodeTokenPosition($1, $4), + }, + Var: $1, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, + } } | new_variable T_OBJECT_OPERATOR property_name { @@ -4529,98 +4534,101 @@ non_empty_array_pair_list: array_pair: expr T_DOUBLE_ARROW expr { - $$ = &ast.ExprArrayItem{ast.Node{}, false, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $3) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Expr, $2.SkippedTokens) + $$ = &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $3), + }, + Key: $1, + DoubleArrowTkn: $2, + Val: $3, + } } | expr { - $$ = &ast.ExprArrayItem{ast.Node{}, false, nil, $1} - - // save position - $$.GetNode().Position = position.NewNodePosition($1) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) + $$ = &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodePosition($1), + }, + Val: $1, + } } | expr T_DOUBLE_ARROW '&' variable { - reference := &ast.ExprReference{ast.Node{}, $4} - $$ = &ast.ExprArrayItem{ast.Node{}, false, $1, reference} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $4) - reference.GetNode().Position = position.NewTokenNodePosition($3, $4) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Expr, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(reference, token.Start, $3.SkippedTokens) + $$ = &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $4), + }, + Key: $1, + DoubleArrowTkn: $2, + Val: &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($3, $4), + }, + Var: $4, + }, + } } | '&' variable { - reference := &ast.ExprReference{ast.Node{}, $2} - $$ = &ast.ExprArrayItem{ast.Node{}, false, nil, reference} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - reference.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + Val: &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + Var: $2, + }, + } } | T_ELLIPSIS expr { - $$ = &ast.ExprArrayItem{ast.Node{}, true, nil, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprArrayItem{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + EllipsisTkn: $1, + Val: $2, + } } | expr T_DOUBLE_ARROW T_LIST '(' array_pair_list ')' { - listNode := &ast.ExprList{ + $$ = &ast.ExprArrayItem{ Node: ast.Node{ - Position: position.NewTokensPosition($3, $6), + Position: position.NewNodeTokenPosition($1, $6), + }, + Key: $1, + DoubleArrowTkn: $2, + Val: &ast.ExprList{ + Node: ast.Node{ + Position: position.NewTokensPosition($3, $6), + }, + ListTkn: $3, + OpenBracketTkn: $4, + Items: $5.(*ast.ParserSeparatedList).Items, + SeparatorTkns: $5.(*ast.ParserSeparatedList).SeparatorTkns, + CloseBracketTkn: $6, }, - ListTkn: $3, - OpenBracketTkn: $4, - Items: $5.(*ast.ParserSeparatedList).Items, - SeparatorTkns: $5.(*ast.ParserSeparatedList).SeparatorTkns, - CloseBracketTkn: $6, } - $$ = &ast.ExprArrayItem{ast.Node{}, false, $1, listNode} - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $6) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Expr, $2.SkippedTokens) } | T_LIST '(' array_pair_list ')' { - listNode := &ast.ExprList{ + $$ = &ast.ExprArrayItem{ Node: ast.Node{ Position: position.NewTokensPosition($1, $4), }, - ListTkn: $1, - OpenBracketTkn: $2, - Items: $3.(*ast.ParserSeparatedList).Items, - SeparatorTkns: $3.(*ast.ParserSeparatedList).SeparatorTkns, - CloseBracketTkn: $4, + Val: &ast.ExprList{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $4), + }, + ListTkn: $1, + OpenBracketTkn: $2, + Items: $3.(*ast.ParserSeparatedList).Items, + SeparatorTkns: $3.(*ast.ParserSeparatedList).SeparatorTkns, + CloseBracketTkn: $4, + }, } - $$ = &ast.ExprArrayItem{ast.Node{}, false, nil, listNode} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $4) } ; @@ -4681,23 +4689,26 @@ encaps_var: } | T_VARIABLE '[' encaps_var_offset ']' { - identifier := &ast.Identifier{ + $$ = &ast.ExprArrayDimFetch{ Node: ast.Node{ - Position: position.NewTokenPosition($1), + Position: position.NewTokensPosition($1, $4), }, - IdentifierTkn: $1, - Value: $1.Value, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + }, + }, + OpenBracketTkn: $2, + Dim: $3, + CloseBracketTkn: $4, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - $$ = &ast.ExprArrayDimFetch{ast.Node{}, variable, $3} - - // save position - variable.GetNode().Position = position.NewTokenPosition($1) - $$.GetNode().Position = position.NewTokensPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens) } | T_VARIABLE T_OBJECT_OPERATOR T_STRING { @@ -4760,25 +4771,28 @@ encaps_var: } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' { - identifier := &ast.Identifier{ + $$ = &ast.ExprArrayDimFetch{ Node: ast.Node{ - Position: position.NewTokenPosition($2), + Position: position.NewTokensPosition($1, $6), }, - IdentifierTkn: $2, - Value: $2.Value, + OpenCurlyBracketTkn: $1, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + }, + }, + OpenBracketTkn: $3, + Dim: $4, + CloseBracketTkn: $5, + CloseCurlyBracketTkn: $6, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - $$ = &ast.ExprArrayDimFetch{ast.Node{}, variable, $4} - - // save position - variable.GetNode().Position = position.NewTokenPosition($2) - $$.GetNode().Position = position.NewTokensPosition($1, $6) - - // save comments - yylex.(*Parser).setToken(variable, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $3.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $5.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.End, $6.SkippedTokens) } | T_CURLY_OPEN variable '}' { diff --git a/pkg/ast/node.go b/pkg/ast/node.go index 9322ae3..990171c 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -953,8 +953,12 @@ func (n *ExprArray) Accept(v NodeVisitor) { // ExprArrayDimFetch node type ExprArrayDimFetch struct { Node - Var Vertex - Dim Vertex + Var Vertex + OpenCurlyBracketTkn *token.Token + OpenBracketTkn *token.Token + Dim Vertex + CloseBracketTkn *token.Token + CloseCurlyBracketTkn *token.Token } func (n *ExprArrayDimFetch) Accept(v NodeVisitor) { @@ -964,9 +968,10 @@ func (n *ExprArrayDimFetch) Accept(v NodeVisitor) { // ExprArrayItem node type ExprArrayItem struct { Node - Unpack bool - Key Vertex - Val Vertex + EllipsisTkn *token.Token + Key Vertex + DoubleArrowTkn *token.Token + Val Vertex } func (n *ExprArrayItem) Accept(v NodeVisitor) { diff --git a/pkg/ast/visitor/dump.go b/pkg/ast/visitor/dump.go index 45dc2c2..5ae65a5 100644 --- a/pkg/ast/visitor/dump.go +++ b/pkg/ast/visitor/dump.go @@ -620,11 +620,6 @@ func (v *Dump) ExprArrayItem(n *ast.ExprArrayItem) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprArrayItem{\n") v.printNode(n.GetNode()) - - if n.Unpack { - v.printIndent(v.indent) - v.print("Unpack: true,\n") - } } func (v *Dump) ExprArrowFunction(n *ast.ExprArrowFunction) { diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index 0080044..4e86c48 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -1369,7 +1369,7 @@ func (p *Printer) printExprArrayItem(n ast.Vertex) { nn := n.(*ast.ExprArrayItem) p.printFreeFloating(nn, token.Start) - if nn.Unpack { + if nn.EllipsisTkn != nil { p.write([]byte("...")) }