diff --git a/internal/php5/php5.go b/internal/php5/php5.go index a2bd33c..4e5baf8 100644 --- a/internal/php5/php5.go +++ b/internal/php5/php5.go @@ -340,7 +340,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php5/php5.y:5661 +// line internal/php5/php5.y:5677 // line yacctab:1 var yyExca = [...]int{ @@ -6084,7 +6084,7 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php5/php5.y:3690 { - yyVAL.node = &ast.ExprStaticCall{ + staticCall := &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), Class: yyDollar[1].node, DoubleColonTkn: yyDollar[2].token, @@ -6094,10 +6094,18 @@ yydefault: SeparatorTkns: yyDollar[4].node.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).CloseParenthesisTkn, } + + if brackets, ok := yyDollar[3].node.(*ast.ParserBrackets); ok { + staticCall.OpenCurlyBracketTkn = brackets.OpenBracketTkn + staticCall.Call = brackets.Child + staticCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn + } + + yyVAL.node = staticCall } case 327: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3703 + // line internal/php5/php5.y:3711 { yyVAL.node = &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -6112,9 +6120,9 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3716 + // line internal/php5/php5.y:3724 { - yyVAL.node = &ast.ExprStaticCall{ + staticCall := &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), Class: yyDollar[1].node, DoubleColonTkn: yyDollar[2].token, @@ -6124,10 +6132,18 @@ yydefault: SeparatorTkns: yyDollar[4].node.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).CloseParenthesisTkn, } + + if brackets, ok := yyDollar[3].node.(*ast.ParserBrackets); ok { + staticCall.OpenCurlyBracketTkn = brackets.OpenBracketTkn + staticCall.Call = brackets.Child + staticCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn + } + + yyVAL.node = staticCall } case 329: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3729 + // line internal/php5/php5.y:3745 { yyVAL.node = &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -6142,7 +6158,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3742 + // line internal/php5/php5.y:3758 { yyVAL.node = &ast.ExprFunctionCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node), @@ -6155,7 +6171,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3756 + // line internal/php5/php5.y:3772 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6165,7 +6181,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3764 + // line internal/php5/php5.y:3780 { yyVAL.node = &ast.NameName{ Position: yylex.(*Parser).builder.NewNodeListPosition(yyDollar[1].node.(*ast.ParserSeparatedList).Items), @@ -6175,7 +6191,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3772 + // line internal/php5/php5.y:3788 { yyVAL.node = &ast.NameRelative{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].node.(*ast.ParserSeparatedList).Items), @@ -6187,7 +6203,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3782 + // line internal/php5/php5.y:3798 { yyVAL.node = &ast.NameFullyQualified{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].node.(*ast.ParserSeparatedList).Items), @@ -6198,7 +6214,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3794 + // line internal/php5/php5.y:3810 { yyVAL.node = &ast.NameName{ Position: yylex.(*Parser).builder.NewNodeListPosition(yyDollar[1].node.(*ast.ParserSeparatedList).Items), @@ -6208,7 +6224,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3802 + // line internal/php5/php5.y:3818 { yyVAL.node = &ast.NameRelative{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].node.(*ast.ParserSeparatedList).Items), @@ -6220,7 +6236,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3812 + // line internal/php5/php5.y:3828 { yyVAL.node = &ast.NameFullyQualified{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].node.(*ast.ParserSeparatedList).Items), @@ -6231,19 +6247,19 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3824 + // line internal/php5/php5.y:3840 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3828 + // line internal/php5/php5.y:3844 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3835 + // line internal/php5/php5.y:3851 { yyVAL.node = yyDollar[1].node @@ -6279,25 +6295,25 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3869 + // line internal/php5/php5.y:3885 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3877 + // line internal/php5/php5.y:3893 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:3881 + // line internal/php5/php5.y:3897 { yyVAL.list = []ast.Vertex{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3889 + // line internal/php5/php5.y:3905 { yyDollar[2].list[0].(*ast.ExprPropertyFetch).ObjectOperatorTkn = yyDollar[1].token @@ -6305,13 +6321,13 @@ yydefault: } case 345: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:3898 + // line internal/php5/php5.y:3914 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3902 + // line internal/php5/php5.y:3918 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), @@ -6321,19 +6337,19 @@ yydefault: } case 347: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3910 + // line internal/php5/php5.y:3926 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:3917 + // line internal/php5/php5.y:3933 { yyVAL.list = []ast.Vertex{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3921 + // line internal/php5/php5.y:3937 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6345,25 +6361,25 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3931 + // line internal/php5/php5.y:3947 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:3938 + // line internal/php5/php5.y:3954 { yyVAL.node = &ast.ArgumentList{} } case 352: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3942 + // line internal/php5/php5.y:3958 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3949 + // line internal/php5/php5.y:3965 { yyVAL.node = &ast.ScalarLnumber{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6373,7 +6389,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3957 + // line internal/php5/php5.y:3973 { yyVAL.node = &ast.ScalarDnumber{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6383,7 +6399,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3965 + // line internal/php5/php5.y:3981 { yyVAL.node = &ast.ScalarString{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6393,7 +6409,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3973 + // line internal/php5/php5.y:3989 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6403,7 +6419,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3981 + // line internal/php5/php5.y:3997 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6413,7 +6429,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3989 + // line internal/php5/php5.y:4005 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6423,7 +6439,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3997 + // line internal/php5/php5.y:4013 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6433,7 +6449,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4005 + // line internal/php5/php5.y:4021 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6443,7 +6459,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4013 + // line internal/php5/php5.y:4029 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6453,7 +6469,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4021 + // line internal/php5/php5.y:4037 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6463,7 +6479,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4029 + // line internal/php5/php5.y:4045 { yyVAL.node = &ast.ScalarHeredoc{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6480,7 +6496,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4044 + // line internal/php5/php5.y:4060 { yyVAL.node = &ast.ScalarHeredoc{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), @@ -6490,7 +6506,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4055 + // line internal/php5/php5.y:4071 { yyVAL.node = &ast.ExprClassConstFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -6505,25 +6521,25 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4071 + // line internal/php5/php5.y:4087 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4078 + // line internal/php5/php5.y:4094 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4082 + // line internal/php5/php5.y:4098 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4086 + // line internal/php5/php5.y:4102 { yyVAL.node = &ast.ExprConstFetch{ Position: yylex.(*Parser).builder.NewNodeListPosition(yyDollar[1].node.(*ast.ParserSeparatedList).Items), @@ -6536,7 +6552,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4097 + // line internal/php5/php5.y:4113 { yyVAL.node = &ast.ExprConstFetch{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].node.(*ast.ParserSeparatedList).Items), @@ -6551,7 +6567,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4110 + // line internal/php5/php5.y:4126 { yyVAL.node = &ast.ExprConstFetch{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].node.(*ast.ParserSeparatedList).Items), @@ -6565,7 +6581,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4122 + // line internal/php5/php5.y:4138 { yyVAL.node = &ast.ExprArray{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -6578,7 +6594,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4133 + // line internal/php5/php5.y:4149 { yyVAL.node = &ast.ExprArray{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6590,13 +6606,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4143 + // line internal/php5/php5.y:4159 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4147 + // line internal/php5/php5.y:4163 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6606,13 +6622,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4155 + // line internal/php5/php5.y:4171 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4162 + // line internal/php5/php5.y:4178 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), @@ -6624,7 +6640,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4172 + // line internal/php5/php5.y:4188 { yyVAL.node = &ast.ExprBinaryPlus{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6635,7 +6651,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4181 + // line internal/php5/php5.y:4197 { yyVAL.node = &ast.ExprBinaryMinus{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6646,7 +6662,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4190 + // line internal/php5/php5.y:4206 { yyVAL.node = &ast.ExprBinaryMul{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6657,7 +6673,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4199 + // line internal/php5/php5.y:4215 { yyVAL.node = &ast.ExprBinaryPow{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6668,7 +6684,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4208 + // line internal/php5/php5.y:4224 { yyVAL.node = &ast.ExprBinaryDiv{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6679,7 +6695,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4217 + // line internal/php5/php5.y:4233 { yyVAL.node = &ast.ExprBinaryMod{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6690,7 +6706,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4226 + // line internal/php5/php5.y:4242 { yyVAL.node = &ast.ExprBooleanNot{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6700,7 +6716,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4234 + // line internal/php5/php5.y:4250 { yyVAL.node = &ast.ExprBitwiseNot{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6710,7 +6726,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4242 + // line internal/php5/php5.y:4258 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6721,7 +6737,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4251 + // line internal/php5/php5.y:4267 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6732,7 +6748,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4260 + // line internal/php5/php5.y:4276 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6743,7 +6759,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4269 + // line internal/php5/php5.y:4285 { yyVAL.node = &ast.ExprBinaryShiftLeft{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6754,7 +6770,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4278 + // line internal/php5/php5.y:4294 { yyVAL.node = &ast.ExprBinaryShiftRight{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6765,7 +6781,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4287 + // line internal/php5/php5.y:4303 { yyVAL.node = &ast.ExprBinaryConcat{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6776,7 +6792,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4296 + // line internal/php5/php5.y:4312 { yyVAL.node = &ast.ExprBinaryLogicalXor{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6787,7 +6803,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4305 + // line internal/php5/php5.y:4321 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6798,7 +6814,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4314 + // line internal/php5/php5.y:4330 { yyVAL.node = &ast.ExprBinaryLogicalOr{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6809,7 +6825,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4323 + // line internal/php5/php5.y:4339 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6820,7 +6836,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4332 + // line internal/php5/php5.y:4348 { yyVAL.node = &ast.ExprBinaryBooleanOr{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6831,7 +6847,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4341 + // line internal/php5/php5.y:4357 { yyVAL.node = &ast.ExprBinaryIdentical{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6842,7 +6858,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4350 + // line internal/php5/php5.y:4366 { yyVAL.node = &ast.ExprBinaryNotIdentical{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6853,7 +6869,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4359 + // line internal/php5/php5.y:4375 { yyVAL.node = &ast.ExprBinaryEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6864,7 +6880,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4368 + // line internal/php5/php5.y:4384 { yyVAL.node = &ast.ExprBinaryNotEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6875,7 +6891,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4377 + // line internal/php5/php5.y:4393 { yyVAL.node = &ast.ExprBinarySmaller{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6886,7 +6902,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4386 + // line internal/php5/php5.y:4402 { yyVAL.node = &ast.ExprBinaryGreater{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6897,7 +6913,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4395 + // line internal/php5/php5.y:4411 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6908,7 +6924,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4404 + // line internal/php5/php5.y:4420 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6919,7 +6935,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4413 + // line internal/php5/php5.y:4429 { yyVAL.node = &ast.ExprTernary{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -6931,7 +6947,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:4423 + // line internal/php5/php5.y:4439 { yyVAL.node = &ast.ExprTernary{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node), @@ -6944,7 +6960,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4434 + // line internal/php5/php5.y:4450 { yyVAL.node = &ast.ExprUnaryPlus{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6954,7 +6970,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4442 + // line internal/php5/php5.y:4458 { yyVAL.node = &ast.ExprUnaryMinus{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6964,7 +6980,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4450 + // line internal/php5/php5.y:4466 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6975,13 +6991,13 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4462 + // line internal/php5/php5.y:4478 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4466 + // line internal/php5/php5.y:4482 { yyVAL.node = &ast.ExprConstFetch{ Position: yylex.(*Parser).builder.NewNodeListPosition(yyDollar[1].node.(*ast.ParserSeparatedList).Items), @@ -6994,7 +7010,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4477 + // line internal/php5/php5.y:4493 { yyVAL.node = &ast.ExprConstFetch{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].node.(*ast.ParserSeparatedList).Items), @@ -7009,7 +7025,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4490 + // line internal/php5/php5.y:4506 { yyVAL.node = &ast.ExprConstFetch{ Position: yylex.(*Parser).builder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].node.(*ast.ParserSeparatedList).Items), @@ -7023,7 +7039,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4505 + // line internal/php5/php5.y:4521 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -7036,25 +7052,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4516 + // line internal/php5/php5.y:4532 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4520 + // line internal/php5/php5.y:4536 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4524 + // line internal/php5/php5.y:4540 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4528 + // line internal/php5/php5.y:4544 { yyVAL.node = &ast.ScalarEncapsed{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7065,7 +7081,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4537 + // line internal/php5/php5.y:4553 { yyVAL.node = &ast.ScalarHeredoc{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7076,7 +7092,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4546 + // line internal/php5/php5.y:4562 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -7086,13 +7102,13 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4557 + // line internal/php5/php5.y:4573 { yyVAL.node = &ast.ParserSeparatedList{} } case 422: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4561 + // line internal/php5/php5.y:4577 { if yyDollar[2].token != nil { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) @@ -7103,19 +7119,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4573 + // line internal/php5/php5.y:4589 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4577 + // line internal/php5/php5.y:4593 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:4584 + // line internal/php5/php5.y:4600 { arrayItem := &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node), @@ -7131,7 +7147,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4598 + // line internal/php5/php5.y:4614 { arrayItem := &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[3].node), @@ -7145,7 +7161,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4610 + // line internal/php5/php5.y:4626 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7160,7 +7176,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4623 + // line internal/php5/php5.y:4639 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7173,19 +7189,19 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4637 + // line internal/php5/php5.y:4653 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4641 + // line internal/php5/php5.y:4657 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4648 + // line internal/php5/php5.y:4664 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7196,7 +7212,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4657 + // line internal/php5/php5.y:4673 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7207,25 +7223,25 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4670 + // line internal/php5/php5.y:4686 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4678 + // line internal/php5/php5.y:4694 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4685 + // line internal/php5/php5.y:4701 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:4692 + // line internal/php5/php5.y:4708 { yyVAL.node = yyDollar[1].node @@ -7304,25 +7320,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4769 + // line internal/php5/php5.y:4785 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4776 + // line internal/php5/php5.y:4792 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4780 + // line internal/php5/php5.y:4796 { yyVAL.list = []ast.Vertex{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4788 + // line internal/php5/php5.y:4804 { yyDollar[2].list[0].(*ast.ExprPropertyFetch).ObjectOperatorTkn = yyDollar[1].token @@ -7353,7 +7369,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4820 + // line internal/php5/php5.y:4836 { fetch := &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), @@ -7367,7 +7383,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4832 + // line internal/php5/php5.y:4848 { fetch := &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), @@ -7381,7 +7397,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4847 + // line internal/php5/php5.y:4863 { yyVAL.node = &ast.ExprMethodCall{ Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node), @@ -7393,31 +7409,31 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4860 + // line internal/php5/php5.y:4876 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4864 + // line internal/php5/php5.y:4880 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4868 + // line internal/php5/php5.y:4884 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4875 + // line internal/php5/php5.y:4891 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4879 + // line internal/php5/php5.y:4895 { for i := len(yyDollar[1].list) - 1; i >= 0; i-- { yyDollar[1].list[i].(*ast.ExprVariable).VarName = yyDollar[2].node @@ -7429,7 +7445,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4892 + // line internal/php5/php5.y:4908 { yyVAL.node = &ast.ExprStaticPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -7440,7 +7456,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4901 + // line internal/php5/php5.y:4917 { yyVAL.node = &ast.ExprStaticPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -7451,13 +7467,13 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4913 + // line internal/php5/php5.y:4929 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4920 + // line internal/php5/php5.y:4936 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), @@ -7469,7 +7485,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4930 + // line internal/php5/php5.y:4946 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), @@ -7481,31 +7497,31 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4943 + // line internal/php5/php5.y:4959 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4947 + // line internal/php5/php5.y:4963 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4951 + // line internal/php5/php5.y:4967 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4959 + // line internal/php5/php5.y:4975 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4963 + // line internal/php5/php5.y:4979 { for i := len(yyDollar[1].list) - 1; i >= 0; i-- { yyDollar[1].list[i].(*ast.ExprVariable).VarName = yyDollar[2].node @@ -7517,13 +7533,13 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4973 + // line internal/php5/php5.y:4989 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4980 + // line internal/php5/php5.y:4996 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), @@ -7535,7 +7551,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4990 + // line internal/php5/php5.y:5006 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), @@ -7547,13 +7563,13 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5000 + // line internal/php5/php5.y:5016 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5008 + // line internal/php5/php5.y:5024 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -7566,7 +7582,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5019 + // line internal/php5/php5.y:5035 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -7578,25 +7594,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5032 + // line internal/php5/php5.y:5048 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5036 + // line internal/php5/php5.y:5052 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5044 + // line internal/php5/php5.y:5060 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5048 + // line internal/php5/php5.y:5064 { yyVAL.list = []ast.Vertex{ &ast.ExprPropertyFetch{ @@ -7607,7 +7623,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5060 + // line internal/php5/php5.y:5076 { fetch := &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), @@ -7621,7 +7637,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5072 + // line internal/php5/php5.y:5088 { fetch := &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), @@ -7635,7 +7651,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5084 + // line internal/php5/php5.y:5100 { property := &ast.ExprPropertyFetch{ Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node), @@ -7652,7 +7668,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5102 + // line internal/php5/php5.y:5118 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -7662,7 +7678,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5110 + // line internal/php5/php5.y:5126 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7673,7 +7689,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5122 + // line internal/php5/php5.y:5138 { yyVAL.list = []ast.Vertex{ &ast.ExprVariable{ @@ -7684,7 +7700,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5131 + // line internal/php5/php5.y:5147 { yyVAL.list = append(yyDollar[1].list, &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[2].token), @@ -7693,7 +7709,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5141 + // line internal/php5/php5.y:5157 { 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) @@ -7702,7 +7718,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5148 + // line internal/php5/php5.y:5164 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -7710,7 +7726,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5158 + // line internal/php5/php5.y:5174 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node), @@ -7719,7 +7735,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5165 + // line internal/php5/php5.y:5181 { pairList := yyDollar[3].node.(*ast.ParserSeparatedList) fistPair := pairList.Items[0].(*ast.ExprArrayItem) @@ -7742,19 +7758,19 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5186 + // line internal/php5/php5.y:5202 { yyVAL.node = &ast.ExprArrayItem{} } case 481: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5194 + // line internal/php5/php5.y:5210 { yyVAL.node = &ast.ParserSeparatedList{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5198 + // line internal/php5/php5.y:5214 { if yyDollar[2].token != nil { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) @@ -7765,7 +7781,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5210 + // line internal/php5/php5.y:5226 { arrayItem := &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node), @@ -7781,7 +7797,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5224 + // line internal/php5/php5.y:5240 { arrayItem := &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[3].node), @@ -7795,7 +7811,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5236 + // line internal/php5/php5.y:5252 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7810,7 +7826,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5249 + // line internal/php5/php5.y:5265 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7823,7 +7839,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:5260 + // line internal/php5/php5.y:5276 { arrayItem := &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[3].node, yyDollar[6].node), @@ -7840,7 +7856,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5275 + // line internal/php5/php5.y:5291 { arrayItem := &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), @@ -7855,7 +7871,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5288 + // line internal/php5/php5.y:5304 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7871,7 +7887,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5302 + // line internal/php5/php5.y:5318 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7885,13 +7901,13 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5317 + // line internal/php5/php5.y:5333 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5321 + // line internal/php5/php5.y:5337 { yyVAL.list = append( yyDollar[1].list, @@ -7904,13 +7920,13 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5332 + // line internal/php5/php5.y:5348 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5336 + // line internal/php5/php5.y:5352 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -7923,7 +7939,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5350 + // line internal/php5/php5.y:5366 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -7936,7 +7952,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5361 + // line internal/php5/php5.y:5377 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -7955,7 +7971,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5378 + // line internal/php5/php5.y:5394 { yyVAL.node = &ast.ExprPropertyFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7977,7 +7993,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5398 + // line internal/php5/php5.y:5414 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -7991,7 +8007,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5410 + // line internal/php5/php5.y:5426 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -8009,7 +8025,7 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:5426 + // line internal/php5/php5.y:5442 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token), @@ -8033,7 +8049,7 @@ yydefault: } case 501: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5448 + // line internal/php5/php5.y:5464 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -8044,7 +8060,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5460 + // line internal/php5/php5.y:5476 { yyVAL.node = &ast.ScalarString{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -8054,7 +8070,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5468 + // line internal/php5/php5.y:5484 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -8073,7 +8089,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5485 + // line internal/php5/php5.y:5501 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -8086,7 +8102,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5499 + // line internal/php5/php5.y:5515 { yyVAL.node = &ast.ExprIsset{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -8099,7 +8115,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5510 + // line internal/php5/php5.y:5526 { yyVAL.node = &ast.ExprEmpty{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -8111,7 +8127,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5520 + // line internal/php5/php5.y:5536 { yyVAL.node = &ast.ExprEmpty{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -8123,7 +8139,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5530 + // line internal/php5/php5.y:5546 { yyVAL.node = &ast.ExprInclude{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -8133,7 +8149,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5538 + // line internal/php5/php5.y:5554 { yyVAL.node = &ast.ExprIncludeOnce{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -8143,7 +8159,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5546 + // line internal/php5/php5.y:5562 { yyVAL.node = &ast.ExprEval{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -8155,7 +8171,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5556 + // line internal/php5/php5.y:5572 { yyVAL.node = &ast.ExprRequire{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -8165,7 +8181,7 @@ yydefault: } case 512: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5564 + // line internal/php5/php5.y:5580 { yyVAL.node = &ast.ExprRequireOnce{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -8175,7 +8191,7 @@ yydefault: } case 513: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5575 + // line internal/php5/php5.y:5591 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -8183,7 +8199,7 @@ yydefault: } case 514: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5581 + // line internal/php5/php5.y:5597 { 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) @@ -8192,19 +8208,19 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5591 + // line internal/php5/php5.y:5607 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5595 + // line internal/php5/php5.y:5611 { yyVAL.node = yyDollar[1].node } case 517: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5602 + // line internal/php5/php5.y:5618 { yyVAL.node = &ast.ExprClassConstFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -8219,7 +8235,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5615 + // line internal/php5/php5.y:5631 { yyVAL.node = &ast.ExprClassConstFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -8234,7 +8250,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5631 + // line internal/php5/php5.y:5647 { yyVAL.node = &ast.ExprClassConstFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -8249,7 +8265,7 @@ yydefault: } case 520: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5647 + // line internal/php5/php5.y:5663 { yyVAL.node = &ast.ExprClassConstFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), diff --git a/internal/php5/php5.y b/internal/php5/php5.y index ba55690..a9d05ee 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -3688,7 +3688,7 @@ function_call: } | class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list { - $$ = &ast.ExprStaticCall{ + staticCall := &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition($1, $4), Class: $1, DoubleColonTkn: $2, @@ -3698,6 +3698,14 @@ function_call: SeparatorTkns: $4.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $4.(*ast.ArgumentList).CloseParenthesisTkn, } + + if brackets, ok := $3.(*ast.ParserBrackets); ok { + staticCall.OpenCurlyBracketTkn = brackets.OpenBracketTkn + staticCall.Call = brackets.Child + staticCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn + } + + $$ = staticCall } | class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects function_call_parameter_list { @@ -3714,7 +3722,7 @@ function_call: } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list { - $$ = &ast.ExprStaticCall{ + staticCall := &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition($1, $4), Class: $1, DoubleColonTkn: $2, @@ -3724,6 +3732,14 @@ function_call: SeparatorTkns: $4.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $4.(*ast.ArgumentList).CloseParenthesisTkn, } + + if brackets, ok := $3.(*ast.ParserBrackets); ok { + staticCall.OpenCurlyBracketTkn = brackets.OpenBracketTkn + staticCall.Call = brackets.Child + staticCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn + } + + $$ = staticCall } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects function_call_parameter_list { diff --git a/internal/php7/php7.go b/internal/php7/php7.go index bdd9dc6..72e8ddc 100644 --- a/internal/php7/php7.go +++ b/internal/php7/php7.go @@ -339,7 +339,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php7/php7.y:4374 +// line internal/php7/php7.y:4390 // line yacctab:1 var yyExca = [...]int{ @@ -5913,7 +5913,7 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php7/php7.y:3323 { - yyVAL.node = &ast.ExprStaticCall{ + staticCall := &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), Class: yyDollar[1].node, DoubleColonTkn: yyDollar[2].token, @@ -5923,12 +5923,20 @@ yydefault: SeparatorTkns: yyDollar[4].node.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).CloseParenthesisTkn, } + + if brackets, ok := yyDollar[3].node.(*ast.ParserBrackets); ok { + staticCall.OpenCurlyBracketTkn = brackets.OpenBracketTkn + staticCall.Call = brackets.Child + staticCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn + } + + yyVAL.node = staticCall } case 386: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3336 + // line internal/php7/php7.y:3344 { - yyVAL.node = &ast.ExprStaticCall{ + staticCall := &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), Class: yyDollar[1].node, DoubleColonTkn: yyDollar[2].token, @@ -5938,10 +5946,18 @@ yydefault: SeparatorTkns: yyDollar[4].node.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).CloseParenthesisTkn, } + + if brackets, ok := yyDollar[3].node.(*ast.ParserBrackets); ok { + staticCall.OpenCurlyBracketTkn = brackets.OpenBracketTkn + staticCall.Call = brackets.Child + staticCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn + } + + yyVAL.node = staticCall } case 387: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3349 + // line internal/php7/php7.y:3365 { yyVAL.node = &ast.ExprFunctionCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node), @@ -5954,7 +5970,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3363 + // line internal/php7/php7.y:3379 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -5964,31 +5980,31 @@ yydefault: } case 389: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3371 + // line internal/php7/php7.y:3387 { yyVAL.node = yyDollar[1].node } case 390: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3378 + // line internal/php7/php7.y:3394 { yyVAL.node = yyDollar[1].node } case 391: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3382 + // line internal/php7/php7.y:3398 { yyVAL.node = yyDollar[1].node } case 392: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3389 + // line internal/php7/php7.y:3405 { yyVAL.node = nil } case 393: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3393 + // line internal/php7/php7.y:3409 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -5999,13 +6015,13 @@ yydefault: } case 394: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3405 + // line internal/php7/php7.y:3421 { yyVAL.list = []ast.Vertex{} } case 395: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3409 + // line internal/php7/php7.y:3425 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6017,25 +6033,25 @@ yydefault: } case 396: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3419 + // line internal/php7/php7.y:3435 { yyVAL.list = yyDollar[1].list } case 397: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3426 + // line internal/php7/php7.y:3442 { yyVAL.node = &ast.ArgumentList{} } case 398: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3430 + // line internal/php7/php7.y:3446 { yyVAL.node = yyDollar[1].node } case 399: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3437 + // line internal/php7/php7.y:3453 { yyVAL.node = &ast.ExprArray{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -6048,7 +6064,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3448 + // line internal/php7/php7.y:3464 { yyVAL.node = &ast.ExprArray{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6060,7 +6076,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3458 + // line internal/php7/php7.y:3474 { yyVAL.node = &ast.ScalarString{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6070,7 +6086,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3469 + // line internal/php7/php7.y:3485 { yyVAL.node = &ast.ScalarLnumber{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6080,7 +6096,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3477 + // line internal/php7/php7.y:3493 { yyVAL.node = &ast.ScalarDnumber{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6090,7 +6106,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3485 + // line internal/php7/php7.y:3501 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6100,7 +6116,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3493 + // line internal/php7/php7.y:3509 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6110,7 +6126,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3501 + // line internal/php7/php7.y:3517 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6120,7 +6136,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3509 + // line internal/php7/php7.y:3525 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6130,7 +6146,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3517 + // line internal/php7/php7.y:3533 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6140,7 +6156,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3525 + // line internal/php7/php7.y:3541 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6150,7 +6166,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3533 + // line internal/php7/php7.y:3549 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6160,7 +6176,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3541 + // line internal/php7/php7.y:3557 { yyVAL.node = &ast.ScalarMagicConstant{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6170,7 +6186,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3549 + // line internal/php7/php7.y:3565 { yyVAL.node = &ast.ScalarHeredoc{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6187,7 +6203,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3564 + // line internal/php7/php7.y:3580 { yyVAL.node = &ast.ScalarHeredoc{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), @@ -6197,7 +6213,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3572 + // line internal/php7/php7.y:3588 { yyVAL.node = &ast.ScalarEncapsed{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6208,7 +6224,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3581 + // line internal/php7/php7.y:3597 { yyVAL.node = &ast.ScalarHeredoc{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6219,19 +6235,19 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3590 + // line internal/php7/php7.y:3606 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3594 + // line internal/php7/php7.y:3610 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3601 + // line internal/php7/php7.y:3617 { yyVAL.node = &ast.ExprConstFetch{ Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node), @@ -6240,7 +6256,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3608 + // line internal/php7/php7.y:3624 { yyVAL.node = &ast.ExprClassConstFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -6255,7 +6271,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3621 + // line internal/php7/php7.y:3637 { yyVAL.node = &ast.ExprClassConstFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), @@ -6270,43 +6286,43 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3637 + // line internal/php7/php7.y:3653 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3641 + // line internal/php7/php7.y:3657 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3648 + // line internal/php7/php7.y:3664 { yyVAL.node = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3652 + // line internal/php7/php7.y:3668 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3659 + // line internal/php7/php7.y:3675 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3666 + // line internal/php7/php7.y:3682 { yyVAL.node = yyDollar[1].node } case 427: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3670 + // line internal/php7/php7.y:3686 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6317,19 +6333,19 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3679 + // line internal/php7/php7.y:3695 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3686 + // line internal/php7/php7.y:3702 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3690 + // line internal/php7/php7.y:3706 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6340,19 +6356,19 @@ yydefault: } case 431: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3699 + // line internal/php7/php7.y:3715 { yyVAL.node = yyDollar[1].node } case 432: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3706 + // line internal/php7/php7.y:3722 { yyVAL.node = yyDollar[1].node } case 433: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3710 + // line internal/php7/php7.y:3726 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), @@ -6364,7 +6380,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3720 + // line internal/php7/php7.y:3736 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), @@ -6376,7 +6392,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3730 + // line internal/php7/php7.y:3746 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), @@ -6388,7 +6404,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3740 + // line internal/php7/php7.y:3756 { methodCall := &ast.ExprMethodCall{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -6411,25 +6427,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3761 + // line internal/php7/php7.y:3777 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3768 + // line internal/php7/php7.y:3784 { yyVAL.node = yyDollar[1].node } case 439: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3772 + // line internal/php7/php7.y:3788 { yyVAL.node = yyDollar[1].node } case 440: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3776 + // line internal/php7/php7.y:3792 { propertyFetch := &ast.ExprPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6448,7 +6464,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3796 + // line internal/php7/php7.y:3812 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6461,7 +6477,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3807 + // line internal/php7/php7.y:3823 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -6473,7 +6489,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3817 + // line internal/php7/php7.y:3833 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6483,7 +6499,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3828 + // line internal/php7/php7.y:3844 { yyVAL.node = &ast.ExprStaticPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6494,7 +6510,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3837 + // line internal/php7/php7.y:3853 { yyVAL.node = &ast.ExprStaticPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6505,13 +6521,13 @@ yydefault: } case 446: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3849 + // line internal/php7/php7.y:3865 { yyVAL.node = yyDollar[1].node } case 447: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3853 + // line internal/php7/php7.y:3869 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), @@ -6523,7 +6539,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3863 + // line internal/php7/php7.y:3879 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), @@ -6535,7 +6551,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3873 + // line internal/php7/php7.y:3889 { propertyFetch := &ast.ExprPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6554,7 +6570,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3890 + // line internal/php7/php7.y:3906 { yyVAL.node = &ast.ExprStaticPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6565,7 +6581,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3899 + // line internal/php7/php7.y:3915 { yyVAL.node = &ast.ExprStaticPropertyFetch{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6576,7 +6592,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3911 + // line internal/php7/php7.y:3927 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6586,7 +6602,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3919 + // line internal/php7/php7.y:3935 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6597,13 +6613,13 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3928 + // line internal/php7/php7.y:3944 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3935 + // line internal/php7/php7.y:3951 { yyVAL.node = &ast.Identifier{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6613,7 +6629,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3943 + // line internal/php7/php7.y:3959 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6624,13 +6640,13 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3952 + // line internal/php7/php7.y:3968 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3959 + // line internal/php7/php7.y:3975 { pairList := yyDollar[1].node.(*ast.ParserSeparatedList) fistPair := pairList.Items[0].(*ast.ExprArrayItem) @@ -6643,19 +6659,19 @@ yydefault: } case 459: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3973 + // line internal/php7/php7.y:3989 { yyVAL.node = &ast.ExprArrayItem{} } case 460: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3977 + // line internal/php7/php7.y:3993 { yyVAL.node = yyDollar[1].node } case 461: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3984 + // line internal/php7/php7.y:4000 { 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) @@ -6664,7 +6680,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3991 + // line internal/php7/php7.y:4007 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -6672,7 +6688,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4000 + // line internal/php7/php7.y:4016 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), @@ -6683,7 +6699,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4009 + // line internal/php7/php7.y:4025 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node), @@ -6692,7 +6708,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4016 + // line internal/php7/php7.y:4032 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), @@ -6704,7 +6720,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4026 + // line internal/php7/php7.y:4042 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6714,7 +6730,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4034 + // line internal/php7/php7.y:4050 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -6724,7 +6740,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:4042 + // line internal/php7/php7.y:4058 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token), @@ -6742,7 +6758,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4058 + // line internal/php7/php7.y:4074 { yyVAL.node = &ast.ExprArrayItem{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -6758,13 +6774,13 @@ yydefault: } case 470: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4075 + // line internal/php7/php7.y:4091 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 471: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4079 + // line internal/php7/php7.y:4095 { yyVAL.list = append( yyDollar[1].list, @@ -6777,13 +6793,13 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4090 + // line internal/php7/php7.y:4106 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 473: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4094 + // line internal/php7/php7.y:4110 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6796,7 +6812,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4108 + // line internal/php7/php7.y:4124 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6809,7 +6825,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4119 + // line internal/php7/php7.y:4135 { yyVAL.node = &ast.ExprArrayDimFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -6828,7 +6844,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4136 + // line internal/php7/php7.y:4152 { yyVAL.node = &ast.ExprPropertyFetch{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6850,7 +6866,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4156 + // line internal/php7/php7.y:4172 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6864,7 +6880,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4168 + // line internal/php7/php7.y:4184 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6882,7 +6898,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:4184 + // line internal/php7/php7.y:4200 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token), @@ -6906,7 +6922,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4206 + // line internal/php7/php7.y:4222 { yyVAL.node = &ast.ParserBrackets{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), @@ -6917,7 +6933,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4218 + // line internal/php7/php7.y:4234 { yyVAL.node = &ast.ScalarString{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6927,7 +6943,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4226 + // line internal/php7/php7.y:4242 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -6946,7 +6962,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4243 + // line internal/php7/php7.y:4259 { _, err := strconv.Atoi(string(yyDollar[2].token.Value)) isInt := err == nil @@ -6972,7 +6988,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4267 + // line internal/php7/php7.y:4283 { yyVAL.node = &ast.ExprVariable{ Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), @@ -6985,7 +7001,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:4281 + // line internal/php7/php7.y:4297 { if yyDollar[4].token != nil { yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[4].token) @@ -7002,7 +7018,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4296 + // line internal/php7/php7.y:4312 { yyVAL.node = &ast.ExprEmpty{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -7014,7 +7030,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4306 + // line internal/php7/php7.y:4322 { yyVAL.node = &ast.ExprInclude{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -7024,7 +7040,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4314 + // line internal/php7/php7.y:4330 { yyVAL.node = &ast.ExprIncludeOnce{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -7034,7 +7050,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4322 + // line internal/php7/php7.y:4338 { yyVAL.node = &ast.ExprEval{ Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), @@ -7046,7 +7062,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4332 + // line internal/php7/php7.y:4348 { yyVAL.node = &ast.ExprRequire{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -7056,7 +7072,7 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4340 + // line internal/php7/php7.y:4356 { yyVAL.node = &ast.ExprRequireOnce{ Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), @@ -7066,7 +7082,7 @@ yydefault: } case 492: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4351 + // line internal/php7/php7.y:4367 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -7074,7 +7090,7 @@ yydefault: } case 493: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4357 + // line internal/php7/php7.y:4373 { 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) @@ -7083,7 +7099,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4367 + // line internal/php7/php7.y:4383 { yyVAL.node = yyDollar[1].node } diff --git a/internal/php7/php7.y b/internal/php7/php7.y index 078c6eb..dbb58b7 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -3321,7 +3321,7 @@ function_call: } | class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list { - $$ = &ast.ExprStaticCall{ + staticCall := &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition($1, $4), Class: $1, DoubleColonTkn: $2, @@ -3331,10 +3331,18 @@ function_call: SeparatorTkns: $4.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $4.(*ast.ArgumentList).CloseParenthesisTkn, } + + if brackets, ok := $3.(*ast.ParserBrackets); ok { + staticCall.OpenCurlyBracketTkn = brackets.OpenBracketTkn + staticCall.Call = brackets.Child + staticCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn + } + + $$ = staticCall } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list { - $$ = &ast.ExprStaticCall{ + staticCall := &ast.ExprStaticCall{ Position: yylex.(*Parser).builder.NewNodesPosition($1, $4), Class: $1, DoubleColonTkn: $2, @@ -3344,6 +3352,14 @@ function_call: SeparatorTkns: $4.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $4.(*ast.ArgumentList).CloseParenthesisTkn, } + + if brackets, ok := $3.(*ast.ParserBrackets); ok { + staticCall.OpenCurlyBracketTkn = brackets.OpenBracketTkn + staticCall.Call = brackets.Child + staticCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn + } + + $$ = staticCall } | callable_expr argument_list { diff --git a/pkg/ast/node.go b/pkg/ast/node.go index 7a89a90..290a51a 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -1681,14 +1681,16 @@ func (n *ExprShellExec) GetPosition() *position.Position { // ExprStaticCall node type ExprStaticCall struct { - Position *position.Position - Class Vertex - DoubleColonTkn *token.Token - Call Vertex - OpenParenthesisTkn *token.Token - Arguments []Vertex - SeparatorTkns []*token.Token - CloseParenthesisTkn *token.Token + Position *position.Position + Class Vertex + DoubleColonTkn *token.Token + OpenCurlyBracketTkn *token.Token + Call Vertex + CloseCurlyBracketTkn *token.Token + OpenParenthesisTkn *token.Token + Arguments []Vertex + SeparatorTkns []*token.Token + CloseParenthesisTkn *token.Token } func (n *ExprStaticCall) Accept(v NodeVisitor) { diff --git a/pkg/ast/visitor/dumper.go b/pkg/ast/visitor/dumper.go index 11f3159..dde094a 100644 --- a/pkg/ast/visitor/dumper.go +++ b/pkg/ast/visitor/dumper.go @@ -1473,7 +1473,9 @@ func (v *Dumper) ExprStaticCall(n *ast.ExprStaticCall) { v.dumpPosition(n.Position) v.dumpVertex("Class", n.Class) v.dumpToken("DoubleColonTkn", n.DoubleColonTkn) + v.dumpToken("OpenCurlyBracketTkn", n.OpenCurlyBracketTkn) v.dumpVertex("Call", n.Call) + v.dumpToken("CloseCurlyBracketTkn", n.CloseCurlyBracketTkn) v.dumpToken("OpenParenthesisTkn", n.OpenParenthesisTkn) v.dumpVertexList("Arguments", n.Arguments) v.dumpTokenList("SeparatorTkns", n.SeparatorTkns) diff --git a/pkg/ast/visitor/formatter.go b/pkg/ast/visitor/formatter.go index 9dd5d00..c698359 100644 --- a/pkg/ast/visitor/formatter.go +++ b/pkg/ast/visitor/formatter.go @@ -1394,6 +1394,17 @@ func (f *formatter) ExprShellExec(n *ast.ExprShellExec) { func (f *formatter) ExprStaticCall(n *ast.ExprStaticCall) { n.Class.Accept(f) n.DoubleColonTkn = f.newToken(token.T_PAAMAYIM_NEKUDOTAYIM, []byte("::")) + + n.OpenCurlyBracketTkn = nil + n.CloseCurlyBracketTkn = nil + switch n.Call.(type) { + case *ast.Identifier: + case *ast.ExprVariable: + default: + n.OpenCurlyBracketTkn = f.newToken('{', []byte("{")) + n.CloseCurlyBracketTkn = f.newToken('}', []byte("}")) + } + n.Call.Accept(f) n.OpenParenthesisTkn = f.newToken('(', []byte("(")) diff --git a/pkg/ast/visitor/formatter_test.go b/pkg/ast/visitor/formatter_test.go index bc08e81..8180fdb 100644 --- a/pkg/ast/visitor/formatter_test.go +++ b/pkg/ast/visitor/formatter_test.go @@ -4692,6 +4692,36 @@ func TestFormatter_ExprStaticCall(t *testing.T) { } } +func TestFormatter_ExprStaticCall_Expr(t *testing.T) { + o := bytes.NewBufferString("") + + n := &ast.ExprStaticCall{ + Class: &ast.NameName{ + Parts: []ast.Vertex{ + &ast.NameNamePart{ + Value: []byte("foo"), + }, + }, + }, + Call: &ast.ScalarString{ + Value: []byte("'bar'"), + }, + } + + f := visitor.NewFormatter().WithState(visitor.FormatterStatePHP).WithIndent(1) + n.Accept(f) + + p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP) + n.Accept(p) + + expected := `foo::{'bar'}()` + actual := o.String() + + if expected != actual { + t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual) + } +} + func TestFormatter_ExprStaticCall_Arguments(t *testing.T) { o := bytes.NewBufferString("") diff --git a/pkg/ast/visitor/printer.go b/pkg/ast/visitor/printer.go index d4ac78a..23b23f1 100644 --- a/pkg/ast/visitor/printer.go +++ b/pkg/ast/visitor/printer.go @@ -840,7 +840,9 @@ func (p *printer) ExprShellExec(n *ast.ExprShellExec) { func (p *printer) ExprStaticCall(n *ast.ExprStaticCall) { p.printNode(n.Class) p.printToken(n.DoubleColonTkn, []byte("::")) + p.printToken(n.OpenCurlyBracketTkn, nil) p.printNode(n.Call) + p.printToken(n.CloseCurlyBracketTkn, nil) p.printToken(n.OpenParenthesisTkn, p.ifNodeList(n.Arguments, []byte("("))) p.printSeparatedList(n.Arguments, n.SeparatorTkns, []byte(",")) p.printToken(n.CloseParenthesisTkn, p.ifNodeList(n.Arguments, []byte(")")))