diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 8aa85e6..e289a39 100644 --- a/internal/php5/php5.go +++ b/internal/php5/php5.go @@ -343,7 +343,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php5/php5.y:6604 +// line internal/php5/php5.y:6619 type simpleIndirectReference struct { all []*ast.ExprVariable @@ -6131,39 +6131,40 @@ yydefault: yyDollar = yyS[yypt-5 : yypt+1] // line internal/php5/php5.y:3791 { - yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[5].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Cond, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.True, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprTernary{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[5].node), + }, + Condition: yyDollar[1].node, + QuestionTkn: yyDollar[2].token, + IfTrue: yyDollar[3].node, + ColonTkn: yyDollar[4].token, + IfFalse: yyDollar[5].node, + } } case 287: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3803 +// line internal/php5/php5.y:3804 { - yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Cond, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.True, yyDollar[3].token.SkippedTokens) + yyVAL.node = &ast.ExprTernary{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), + }, + Condition: yyDollar[1].node, + QuestionTkn: yyDollar[2].token, + ColonTkn: yyDollar[3].token, + IfFalse: yyDollar[4].node, + } } case 288: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3815 +// line internal/php5/php5.y:3816 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3819 +// line internal/php5/php5.y:3820 { yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node} @@ -6176,7 +6177,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3830 +// line internal/php5/php5.y:3831 { yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node} @@ -6189,7 +6190,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3841 +// line internal/php5/php5.y:3842 { yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node} @@ -6202,7 +6203,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3852 +// line internal/php5/php5.y:3853 { yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node} @@ -6215,7 +6216,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3863 +// line internal/php5/php5.y:3864 { yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node} @@ -6228,7 +6229,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3874 +// line internal/php5/php5.y:3875 { yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node} @@ -6241,7 +6242,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3885 +// line internal/php5/php5.y:3886 { yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node} @@ -6254,7 +6255,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3896 +// line internal/php5/php5.y:3897 { exit := &ast.ExprExit{ DieTkn: yyDollar[1].token, @@ -6273,7 +6274,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3913 +// line internal/php5/php5.y:3914 { yyVAL.node = &ast.ExprErrorSuppress{ Node: ast.Node{ @@ -6285,37 +6286,38 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3923 +// line internal/php5/php5.y:3924 { yyVAL.node = yyDollar[1].node } case 299: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3927 +// line internal/php5/php5.y:3928 { yyVAL.node = yyDollar[1].node } case 300: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3931 +// line internal/php5/php5.y:3932 { yyVAL.node = yyDollar[1].node } case 301: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3935 +// line internal/php5/php5.y:3936 { - yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ExprShellExec{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), + }, + OpenBacktickTkn: yyDollar[1].token, + Parts: yyDollar[2].list, + CloseBacktickTkn: yyDollar[3].token, + } } case 302: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3945 +// line internal/php5/php5.y:3947 { yyVAL.node = &ast.ExprPrint{ Node: ast.Node{ @@ -6327,7 +6329,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3955 +// line internal/php5/php5.y:3957 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil} @@ -6339,7 +6341,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php5/php5.y:3965 +// line internal/php5/php5.y:3967 { yyVAL.node = &ast.ExprClosure{ Node: ast.Node{ @@ -6358,7 +6360,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] -// line internal/php5/php5.y:3982 +// line internal/php5/php5.y:3984 { yyVAL.node = &ast.ExprClosure{ Node: ast.Node{ @@ -6378,7 +6380,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4003 +// line internal/php5/php5.y:4005 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6390,7 +6392,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4013 +// line internal/php5/php5.y:4015 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6402,7 +6404,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4023 +// line internal/php5/php5.y:4025 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6415,7 +6417,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4034 +// line internal/php5/php5.y:4036 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6428,7 +6430,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4048 +// line internal/php5/php5.y:4050 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -6442,7 +6444,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4060 +// line internal/php5/php5.y:4062 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -6456,7 +6458,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4072 +// line internal/php5/php5.y:4074 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -6476,7 +6478,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4090 +// line internal/php5/php5.y:4092 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -6490,7 +6492,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4105 +// line internal/php5/php5.y:4107 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -6505,7 +6507,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4118 +// line internal/php5/php5.y:4120 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -6519,19 +6521,19 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4133 +// line internal/php5/php5.y:4135 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4140 +// line internal/php5/php5.y:4142 { yyVAL.ClosureUse = nil } case 318: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4144 +// line internal/php5/php5.y:4146 { yyVAL.ClosureUse = &ast.ExprClosureUse{ Node: ast.Node{ @@ -6546,7 +6548,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4160 +// line internal/php5/php5.y:4162 { variable := &ast.ExprVariable{ Node: ast.Node{ @@ -6568,7 +6570,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4180 +// line internal/php5/php5.y:4182 { reference := &ast.ExprReference{ Node: ast.Node{ @@ -6596,7 +6598,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4206 +// line internal/php5/php5.y:4208 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -6617,7 +6619,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4225 +// line internal/php5/php5.y:4227 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -6644,7 +6646,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4253 +// line internal/php5/php5.y:4255 { yyVAL.node = &ast.ExprFunctionCall{ Node: ast.Node{ @@ -6663,7 +6665,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4270 +// line internal/php5/php5.y:4272 { yyVAL.node = &ast.ExprFunctionCall{ Node: ast.Node{ @@ -6684,7 +6686,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4289 +// line internal/php5/php5.y:4291 { yyVAL.node = &ast.ExprFunctionCall{ Node: ast.Node{ @@ -6704,59 +6706,71 @@ yydefault: } case 326: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4307 +// line internal/php5/php5.y:4309 { - yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.ExprStaticCall{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), + }, + Class: yyDollar[1].node, + DoubleColonTkn: yyDollar[2].token, + Call: yyDollar[3].node, + OpenParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).OpenParenthesisTkn, + Arguments: yyDollar[4].node.(*ast.ArgumentList).Arguments, + CloseParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).OpenParenthesisTkn, + } } case 327: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4318 +// line internal/php5/php5.y:4323 { - yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.ExprStaticCall{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), + }, + Class: yyDollar[1].node, + DoubleColonTkn: yyDollar[2].token, + Call: yyDollar[3].node, + OpenParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).OpenParenthesisTkn, + Arguments: yyDollar[4].node.(*ast.ArgumentList).Arguments, + CloseParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).OpenParenthesisTkn, + } } case 328: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4329 +// line internal/php5/php5.y:4337 { - yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.ExprStaticCall{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), + }, + Class: yyDollar[1].node, + DoubleColonTkn: yyDollar[2].token, + Call: yyDollar[3].node, + OpenParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).OpenParenthesisTkn, + Arguments: yyDollar[4].node.(*ast.ArgumentList).Arguments, + CloseParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).OpenParenthesisTkn, + } } case 329: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4340 +// line internal/php5/php5.y:4351 { - yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.ExprStaticCall{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), + }, + Class: yyDollar[1].node, + DoubleColonTkn: yyDollar[2].token, + Call: yyDollar[3].node, + OpenParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).OpenParenthesisTkn, + Arguments: yyDollar[4].node.(*ast.ArgumentList).Arguments, + CloseParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).OpenParenthesisTkn, + } } case 330: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4351 +// line internal/php5/php5.y:4365 { yyVAL.node = &ast.ExprFunctionCall{ Node: ast.Node{ @@ -6770,7 +6784,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4366 +// line internal/php5/php5.y:4380 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -6782,7 +6796,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4376 +// line internal/php5/php5.y:4390 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -6793,7 +6807,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4385 +// line internal/php5/php5.y:4399 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -6806,7 +6820,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4396 +// line internal/php5/php5.y:4410 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -6818,7 +6832,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4409 +// line internal/php5/php5.y:4423 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -6829,7 +6843,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4418 +// line internal/php5/php5.y:4432 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -6842,7 +6856,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4429 +// line internal/php5/php5.y:4443 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -6854,19 +6868,19 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4442 +// line internal/php5/php5.y:4456 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4446 +// line internal/php5/php5.y:4460 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4453 +// line internal/php5/php5.y:4467 { yyVAL.node = yyDollar[1].node @@ -6907,25 +6921,25 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4492 +// line internal/php5/php5.y:4506 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4500 +// line internal/php5/php5.y:4514 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4504 +// line internal/php5/php5.y:4518 { yyVAL.list = []ast.Vertex{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4512 +// line internal/php5/php5.y:4526 { yyVAL.list = yyDollar[2].list @@ -6934,13 +6948,13 @@ yydefault: } case 345: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4522 +// line internal/php5/php5.y:4536 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4526 +// line internal/php5/php5.y:4540 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6956,19 +6970,19 @@ yydefault: } case 347: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4540 +// line internal/php5/php5.y:4554 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4547 +// line internal/php5/php5.y:4561 { yyVAL.list = []ast.Vertex{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4551 +// line internal/php5/php5.y:4565 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6982,25 +6996,25 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4563 +// line internal/php5/php5.y:4577 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4570 +// line internal/php5/php5.y:4584 { yyVAL.node = nil } case 352: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4574 +// line internal/php5/php5.y:4588 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4581 +// line internal/php5/php5.y:4595 { yyVAL.node = &ast.ScalarLnumber{ Node: ast.Node{ @@ -7012,7 +7026,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4591 +// line internal/php5/php5.y:4605 { yyVAL.node = &ast.ScalarDnumber{ Node: ast.Node{ @@ -7024,7 +7038,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4601 +// line internal/php5/php5.y:4615 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -7036,7 +7050,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4611 +// line internal/php5/php5.y:4625 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7048,7 +7062,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4621 +// line internal/php5/php5.y:4635 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7060,7 +7074,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4631 +// line internal/php5/php5.y:4645 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7072,7 +7086,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4641 +// line internal/php5/php5.y:4655 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7084,7 +7098,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4651 +// line internal/php5/php5.y:4665 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7096,7 +7110,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4661 +// line internal/php5/php5.y:4675 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7108,7 +7122,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4671 +// line internal/php5/php5.y:4685 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7120,7 +7134,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4681 +// line internal/php5/php5.y:4695 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7141,7 +7155,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4700 +// line internal/php5/php5.y:4714 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7153,7 +7167,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4713 +// line internal/php5/php5.y:4727 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -7172,25 +7186,25 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4733 +// line internal/php5/php5.y:4747 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4740 +// line internal/php5/php5.y:4754 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4744 +// line internal/php5/php5.y:4758 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4748 +// line internal/php5/php5.y:4762 { yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ @@ -7206,7 +7220,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4762 +// line internal/php5/php5.y:4776 { yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ @@ -7224,7 +7238,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4778 +// line internal/php5/php5.y:4792 { yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ @@ -7241,7 +7255,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4793 +// line internal/php5/php5.y:4807 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -7256,7 +7270,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4806 +// line internal/php5/php5.y:4820 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -7270,13 +7284,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4818 +// line internal/php5/php5.y:4832 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4822 +// line internal/php5/php5.y:4836 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7288,13 +7302,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4832 +// line internal/php5/php5.y:4846 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4839 +// line internal/php5/php5.y:4853 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7308,7 +7322,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4851 +// line internal/php5/php5.y:4865 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7321,7 +7335,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4862 +// line internal/php5/php5.y:4876 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7334,7 +7348,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4873 +// line internal/php5/php5.y:4887 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7347,7 +7361,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4884 +// line internal/php5/php5.y:4898 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7360,7 +7374,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4895 +// line internal/php5/php5.y:4909 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7373,7 +7387,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4906 +// line internal/php5/php5.y:4920 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7386,7 +7400,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4917 +// line internal/php5/php5.y:4931 { yyVAL.node = &ast.ExprBooleanNot{ Node: ast.Node{ @@ -7398,7 +7412,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4927 +// line internal/php5/php5.y:4941 { yyVAL.node = &ast.ExprBitwiseNot{ Node: ast.Node{ @@ -7410,7 +7424,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4937 +// line internal/php5/php5.y:4951 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7423,7 +7437,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4948 +// line internal/php5/php5.y:4962 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7436,7 +7450,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4959 +// line internal/php5/php5.y:4973 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7449,7 +7463,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4970 +// line internal/php5/php5.y:4984 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7462,7 +7476,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4981 +// line internal/php5/php5.y:4995 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7475,7 +7489,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4992 +// line internal/php5/php5.y:5006 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7488,7 +7502,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5003 +// line internal/php5/php5.y:5017 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7501,7 +7515,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5014 +// line internal/php5/php5.y:5028 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7514,7 +7528,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5025 +// line internal/php5/php5.y:5039 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7527,7 +7541,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5036 +// line internal/php5/php5.y:5050 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7540,7 +7554,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5047 +// line internal/php5/php5.y:5061 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7553,7 +7567,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5058 +// line internal/php5/php5.y:5072 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7566,7 +7580,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5069 +// line internal/php5/php5.y:5083 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7579,7 +7593,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5080 +// line internal/php5/php5.y:5094 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7592,7 +7606,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5091 +// line internal/php5/php5.y:5105 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7606,7 +7620,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5103 +// line internal/php5/php5.y:5117 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7619,7 +7633,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5114 +// line internal/php5/php5.y:5128 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7632,7 +7646,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5125 +// line internal/php5/php5.y:5139 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7645,7 +7659,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5136 +// line internal/php5/php5.y:5150 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7658,35 +7672,36 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5147 +// line internal/php5/php5.y:5161 { - yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Cond, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.True, yyDollar[3].token.SkippedTokens) + yyVAL.node = &ast.ExprTernary{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), + }, + Condition: yyDollar[1].node, + QuestionTkn: yyDollar[2].token, + ColonTkn: yyDollar[3].token, + IfFalse: yyDollar[4].node, + } } case 406: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5159 +// line internal/php5/php5.y:5173 { - yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[5].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Cond, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.True, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprTernary{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[5].node), + }, + Condition: yyDollar[1].node, + QuestionTkn: yyDollar[2].token, + IfTrue: yyDollar[3].node, + ColonTkn: yyDollar[4].token, + IfFalse: yyDollar[5].node, + } } case 407: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5171 +// line internal/php5/php5.y:5186 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -7698,7 +7713,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5181 +// line internal/php5/php5.y:5196 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -7710,7 +7725,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5191 +// line internal/php5/php5.y:5206 { yyVAL.node = yyDollar[2].node @@ -7720,13 +7735,13 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5202 +// line internal/php5/php5.y:5217 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5206 +// line internal/php5/php5.y:5221 { yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ @@ -7742,7 +7757,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5220 +// line internal/php5/php5.y:5235 { yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ @@ -7760,7 +7775,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5236 +// line internal/php5/php5.y:5251 { yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ @@ -7777,7 +7792,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5254 +// line internal/php5/php5.y:5269 { name := &ast.Identifier{ Node: ast.Node{ @@ -7796,25 +7811,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5271 +// line internal/php5/php5.y:5286 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5275 +// line internal/php5/php5.y:5290 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5279 +// line internal/php5/php5.y:5294 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5283 +// line internal/php5/php5.y:5298 { yyVAL.node = &ast.ScalarEncapsed{ Node: ast.Node{ @@ -7827,7 +7842,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5294 +// line internal/php5/php5.y:5309 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7840,7 +7855,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5305 +// line internal/php5/php5.y:5320 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7852,13 +7867,13 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5318 +// line internal/php5/php5.y:5333 { yyVAL.node = &ast.ParserSeparatedList{} } case 422: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5322 +// line internal/php5/php5.y:5337 { if yyDollar[2].token != nil { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) @@ -7869,19 +7884,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5334 +// line internal/php5/php5.y:5349 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5338 +// line internal/php5/php5.y:5353 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5345 +// line internal/php5/php5.y:5360 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -7899,7 +7914,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5361 +// line internal/php5/php5.y:5376 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -7915,7 +7930,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5375 +// line internal/php5/php5.y:5390 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7932,7 +7947,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5390 +// line internal/php5/php5.y:5405 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7947,35 +7962,18 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5406 +// line internal/php5/php5.y:5421 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5410 +// line internal/php5/php5.y:5425 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5417 - { - yyVAL.node = &ast.ParserBrackets{ - Node: ast.Node{ - Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), - }, - OpenBracketTkn: yyDollar[1].token, - Child: yyDollar[2].node, - CloseBracketTkn: yyDollar[3].token, - } - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[3].token.SkippedTokens) - } - case 432: - yyDollar = yyS[yypt-3 : yypt+1] // line internal/php5/php5.y:5432 { yyVAL.node = &ast.ParserBrackets{ @@ -7991,27 +7989,44 @@ yydefault: yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[3].token.SkippedTokens) } + case 432: + yyDollar = yyS[yypt-3 : yypt+1] +// line internal/php5/php5.y:5447 + { + yyVAL.node = &ast.ParserBrackets{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), + }, + OpenBracketTkn: yyDollar[1].token, + Child: yyDollar[2].node, + CloseBracketTkn: yyDollar[3].token, + } + + // save comments + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[3].token.SkippedTokens) + } case 433: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5451 - { - yyVAL.node = yyDollar[1].node - } - case 434: - yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5459 - { - yyVAL.node = yyDollar[1].node - } - case 435: - yyDollar = yyS[yypt-1 : yypt+1] // line internal/php5/php5.y:5466 { yyVAL.node = yyDollar[1].node } + case 434: + yyDollar = yyS[yypt-1 : yypt+1] +// line internal/php5/php5.y:5474 + { + yyVAL.node = yyDollar[1].node + } + case 435: + yyDollar = yyS[yypt-1 : yypt+1] +// line internal/php5/php5.y:5481 + { + yyVAL.node = yyDollar[1].node + } case 436: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5473 +// line internal/php5/php5.y:5488 { yyVAL.node = yyDollar[1].node @@ -8089,25 +8104,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5549 +// line internal/php5/php5.y:5564 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5556 +// line internal/php5/php5.y:5571 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5560 +// line internal/php5/php5.y:5575 { yyVAL.list = []ast.Vertex{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5568 +// line internal/php5/php5.y:5583 { println("FOOFOOFOOFOOFOOFOOFOOFOOFOO") yyDollar[2].list[0].(*ast.ExprPropertyFetch).ObjectOperatorTkn = yyDollar[1].token @@ -8138,7 +8153,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5599 +// line internal/php5/php5.y:5614 { fetch := &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8154,7 +8169,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5613 +// line internal/php5/php5.y:5628 { fetch := &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8170,7 +8185,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5630 +// line internal/php5/php5.y:5645 { yyVAL.node = &ast.ExprMethodCall{ Node: ast.Node{ @@ -8183,31 +8198,31 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5644 +// line internal/php5/php5.y:5659 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5648 +// line internal/php5/php5.y:5663 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5652 +// line internal/php5/php5.y:5667 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5659 +// line internal/php5/php5.y:5674 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5663 +// line internal/php5/php5.y:5678 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -8219,39 +8234,39 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5676 +// line internal/php5/php5.y:5691 { - yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, 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.Name, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), + }, + Class: yyDollar[1].node, + DoubleColonTkn: yyDollar[2].token, + Property: yyDollar[3].node, + } } case 450: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5687 +// line internal/php5/php5.y:5702 { - yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, 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.Name, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), + }, + Class: yyDollar[1].node, + DoubleColonTkn: yyDollar[2].token, + Property: yyDollar[3].node, + } } case 451: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5701 +// line internal/php5/php5.y:5716 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5708 +// line internal/php5/php5.y:5723 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8265,7 +8280,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5720 +// line internal/php5/php5.y:5735 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8279,31 +8294,31 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5735 +// line internal/php5/php5.y:5750 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5739 +// line internal/php5/php5.y:5754 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5743 +// line internal/php5/php5.y:5758 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5751 +// line internal/php5/php5.y:5766 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5755 +// line internal/php5/php5.y:5770 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -8315,13 +8330,13 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5765 +// line internal/php5/php5.y:5780 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5772 +// line internal/php5/php5.y:5787 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8335,7 +8350,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5784 +// line internal/php5/php5.y:5799 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8349,13 +8364,13 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5796 +// line internal/php5/php5.y:5811 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5804 +// line internal/php5/php5.y:5819 { name := &ast.Identifier{ Node: ast.Node{ @@ -8374,7 +8389,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5821 +// line internal/php5/php5.y:5836 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -8388,25 +8403,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5836 +// line internal/php5/php5.y:5851 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5840 +// line internal/php5/php5.y:5855 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5848 +// line internal/php5/php5.y:5863 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5852 +// line internal/php5/php5.y:5867 { yyVAL.list = []ast.Vertex{ &ast.ExprPropertyFetch{ @@ -8419,7 +8434,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5866 +// line internal/php5/php5.y:5881 { fetch := &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8435,7 +8450,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5880 +// line internal/php5/php5.y:5895 { fetch := &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8451,7 +8466,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5894 +// line internal/php5/php5.y:5909 { yyVAL.list = []ast.Vertex{ &ast.ExprPropertyFetch{ @@ -8464,7 +8479,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5908 +// line internal/php5/php5.y:5923 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -8476,7 +8491,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5918 +// line internal/php5/php5.y:5933 { yyVAL.node = yyDollar[2].node @@ -8489,7 +8504,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5932 +// line internal/php5/php5.y:5947 { n := &ast.ExprVariable{ast.Node{}, nil} yyVAL.simpleIndirectReference = simpleIndirectReference{[]*ast.ExprVariable{n}, n} @@ -8502,7 +8517,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5943 +// line internal/php5/php5.y:5958 { n := &ast.ExprVariable{ast.Node{}, nil} @@ -8519,7 +8534,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5961 +// line internal/php5/php5.y:5976 { 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) @@ -8528,7 +8543,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5968 +// line internal/php5/php5.y:5983 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -8536,7 +8551,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5978 +// line internal/php5/php5.y:5993 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -8547,7 +8562,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5987 +// line internal/php5/php5.y:6002 { pairList := yyDollar[3].node.(*ast.ParserSeparatedList) fistPair := pairList.Items[0].(*ast.ExprArrayItem) @@ -8574,19 +8589,19 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:6012 +// line internal/php5/php5.y:6027 { yyVAL.node = &ast.ExprArrayItem{} } case 481: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:6020 +// line internal/php5/php5.y:6035 { yyVAL.node = &ast.ParserSeparatedList{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6024 +// line internal/php5/php5.y:6039 { if yyDollar[2].token != nil { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) @@ -8597,7 +8612,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:6036 +// line internal/php5/php5.y:6051 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -8615,7 +8630,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6052 +// line internal/php5/php5.y:6067 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -8631,7 +8646,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6066 +// line internal/php5/php5.y:6081 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -8648,7 +8663,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6081 +// line internal/php5/php5.y:6096 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -8663,7 +8678,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:6094 +// line internal/php5/php5.y:6109 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -8687,7 +8702,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6116 +// line internal/php5/php5.y:6131 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -8709,7 +8724,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6136 +// line internal/php5/php5.y:6151 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -8732,7 +8747,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6157 +// line internal/php5/php5.y:6172 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -8753,13 +8768,13 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6179 +// line internal/php5/php5.y:6194 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6183 +// line internal/php5/php5.y:6198 { yyVAL.list = append( yyDollar[1].list, @@ -8774,13 +8789,13 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6196 +// line internal/php5/php5.y:6211 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6200 +// line internal/php5/php5.y:6215 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -8795,7 +8810,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6216 +// line internal/php5/php5.y:6231 { name := &ast.Identifier{ Node: ast.Node{ @@ -8814,7 +8829,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6233 +// line internal/php5/php5.y:6248 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8839,7 +8854,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6256 +// line internal/php5/php5.y:6271 { yyVAL.node = &ast.ExprPropertyFetch{ Node: ast.Node{ @@ -8869,7 +8884,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6284 +// line internal/php5/php5.y:6299 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -8884,7 +8899,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6297 +// line internal/php5/php5.y:6312 { name := &ast.Identifier{ Node: ast.Node{ @@ -8906,7 +8921,7 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:6317 +// line internal/php5/php5.y:6332 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8933,7 +8948,7 @@ yydefault: } case 501: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6342 +// line internal/php5/php5.y:6357 { yyVAL.node = yyDollar[2].node @@ -8943,7 +8958,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6353 +// line internal/php5/php5.y:6368 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -8955,7 +8970,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6363 +// line internal/php5/php5.y:6378 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -8984,7 +8999,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6390 +// line internal/php5/php5.y:6405 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -9003,7 +9018,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6410 +// line internal/php5/php5.y:6425 { yyVAL.node = &ast.ExprIsset{ Node: ast.Node{ @@ -9018,7 +9033,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6423 +// line internal/php5/php5.y:6438 { yyVAL.node = &ast.ExprEmpty{ Node: ast.Node{ @@ -9032,7 +9047,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6435 +// line internal/php5/php5.y:6450 { yyVAL.node = &ast.ExprEmpty{ Node: ast.Node{ @@ -9046,7 +9061,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6447 +// line internal/php5/php5.y:6462 { yyVAL.node = &ast.ExprInclude{ Node: ast.Node{ @@ -9058,7 +9073,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6457 +// line internal/php5/php5.y:6472 { yyVAL.node = &ast.ExprIncludeOnce{ Node: ast.Node{ @@ -9070,7 +9085,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6467 +// line internal/php5/php5.y:6482 { yyVAL.node = &ast.ExprEval{ Node: ast.Node{ @@ -9084,7 +9099,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6479 +// line internal/php5/php5.y:6494 { yyVAL.node = &ast.ExprRequire{ Node: ast.Node{ @@ -9096,7 +9111,7 @@ yydefault: } case 512: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6489 +// line internal/php5/php5.y:6504 { yyVAL.node = &ast.ExprRequireOnce{ Node: ast.Node{ @@ -9108,7 +9123,7 @@ yydefault: } case 513: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6502 +// line internal/php5/php5.y:6517 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -9116,7 +9131,7 @@ yydefault: } case 514: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6508 +// line internal/php5/php5.y:6523 { 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) @@ -9125,19 +9140,19 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6518 +// line internal/php5/php5.y:6533 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6522 +// line internal/php5/php5.y:6537 { yyVAL.node = yyDollar[1].node } case 517: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6529 +// line internal/php5/php5.y:6544 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -9156,7 +9171,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6546 +// line internal/php5/php5.y:6561 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -9175,7 +9190,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6566 +// line internal/php5/php5.y:6581 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -9194,7 +9209,7 @@ yydefault: } case 520: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6586 +// line internal/php5/php5.y:6601 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ diff --git a/internal/php5/php5.y b/internal/php5/php5.y index d4cc523..35a1e60 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -3789,27 +3789,28 @@ expr_without_variable: } | expr '?' expr ':' expr { - $$ = &ast.ExprTernary{ast.Node{}, $1, $3, $5} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $5) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Cond, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.True, $4.SkippedTokens) + $$ = &ast.ExprTernary{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $5), + }, + Condition: $1, + QuestionTkn: $2, + IfTrue: $3, + ColonTkn: $4, + IfFalse: $5, + } } | expr '?' ':' expr { - $$ = &ast.ExprTernary{ast.Node{}, $1, nil, $4} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $4) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Cond, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.True, $3.SkippedTokens) + $$ = &ast.ExprTernary{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $4), + }, + Condition: $1, + QuestionTkn: $2, + ColonTkn: $3, + IfFalse: $4, + } } | internal_functions_in_yacc { @@ -3933,13 +3934,14 @@ expr_without_variable: } | '`' backticks_expr '`' { - $$ = &ast.ExprShellExec{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprShellExec{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + OpenBacktickTkn: $1, + Parts: $2, + CloseBacktickTkn: $3, + } } | T_PRINT expr { @@ -4305,47 +4307,59 @@ function_call: } | class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list { - $$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $4) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) + $$ = &ast.ExprStaticCall{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $4), + }, + Class: $1, + DoubleColonTkn: $2, + Call: $3, + OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, + Arguments: $4.(*ast.ArgumentList).Arguments, + CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, + } } | class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects function_call_parameter_list { - $$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $4) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) + $$ = &ast.ExprStaticCall{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $4), + }, + Class: $1, + DoubleColonTkn: $2, + Call: $3, + OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, + Arguments: $4.(*ast.ArgumentList).Arguments, + CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, + } } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list { - $$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $4) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) + $$ = &ast.ExprStaticCall{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $4), + }, + Class: $1, + DoubleColonTkn: $2, + Call: $3, + OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, + Arguments: $4.(*ast.ArgumentList).Arguments, + CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, + } } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects function_call_parameter_list { - $$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $4) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) + $$ = &ast.ExprStaticCall{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $4), + }, + Class: $1, + DoubleColonTkn: $2, + Call: $3, + OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, + Arguments: $4.(*ast.ArgumentList).Arguments, + CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, + } } | variable_without_objects function_call_parameter_list { @@ -5145,27 +5159,28 @@ static_operation: } | static_scalar_value '?' ':' static_scalar_value { - $$ = &ast.ExprTernary{ast.Node{}, $1, nil, $4} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $4) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Cond, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.True, $3.SkippedTokens) + $$ = &ast.ExprTernary{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $4), + }, + Condition: $1, + QuestionTkn: $2, + ColonTkn: $3, + IfFalse: $4, + } } | static_scalar_value '?' static_scalar_value ':' static_scalar_value { - $$ = &ast.ExprTernary{ast.Node{}, $1, $3, $5} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $5) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Cond, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.True, $4.SkippedTokens) + $$ = &ast.ExprTernary{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $5), + }, + Condition: $1, + QuestionTkn: $2, + IfTrue: $3, + ColonTkn: $4, + IfFalse: $5, + } } | '+' static_scalar_value { @@ -5674,25 +5689,25 @@ variable_without_objects: static_member: class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects { - $$ = &ast.ExprStaticPropertyFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $3) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) + $$ = &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $3), + }, + Class: $1, + DoubleColonTkn: $2, + Property: $3, + } } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects { - $$ = &ast.ExprStaticPropertyFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $3) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) + $$ = &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $3), + }, + Class: $1, + DoubleColonTkn: $2, + Property: $3, + } } ; diff --git a/internal/php7/php7.go b/internal/php7/php7.go index 8e48f1b..db2863b 100644 --- a/internal/php7/php7.go +++ b/internal/php7/php7.go @@ -343,7 +343,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php7/php7.y:5011 +// line internal/php7/php7.y:5019 // line yacctab:1 var yyExca = [...]int{ @@ -5969,33 +5969,34 @@ yydefault: yyDollar = yyS[yypt-5 : yypt+1] // line internal/php7/php7.y:3426 { - yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[5].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Cond, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.True, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.ExprTernary{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[5].node), + }, + Condition: yyDollar[1].node, + QuestionTkn: yyDollar[2].token, + IfTrue: yyDollar[3].node, + ColonTkn: yyDollar[4].token, + IfFalse: yyDollar[5].node, + } } case 352: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3438 +// line internal/php7/php7.y:3439 { - yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Cond, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.True, yyDollar[3].token.SkippedTokens) + yyVAL.node = &ast.ExprTernary{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), + }, + Condition: yyDollar[1].node, + QuestionTkn: yyDollar[2].token, + ColonTkn: yyDollar[3].token, + IfFalse: yyDollar[4].node, + } } case 353: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3450 +// line internal/php7/php7.y:3451 { yyVAL.node = &ast.ExprBinaryCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6008,13 +6009,13 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3461 +// line internal/php7/php7.y:3462 { yyVAL.node = yyDollar[1].node } case 355: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3465 +// line internal/php7/php7.y:3466 { yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node} @@ -6027,7 +6028,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3476 +// line internal/php7/php7.y:3477 { yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node} @@ -6040,7 +6041,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3487 +// line internal/php7/php7.y:3488 { yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node} @@ -6053,7 +6054,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3498 +// line internal/php7/php7.y:3499 { yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node} @@ -6066,7 +6067,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3509 +// line internal/php7/php7.y:3510 { yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node} @@ -6079,7 +6080,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3520 +// line internal/php7/php7.y:3521 { yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node} @@ -6092,7 +6093,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3531 +// line internal/php7/php7.y:3532 { yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node} @@ -6105,7 +6106,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3542 +// line internal/php7/php7.y:3543 { exit := &ast.ExprExit{ DieTkn: yyDollar[1].token, @@ -6124,7 +6125,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3559 +// line internal/php7/php7.y:3560 { yyVAL.node = &ast.ExprErrorSuppress{ Node: ast.Node{ @@ -6136,25 +6137,26 @@ yydefault: } case 364: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3569 +// line internal/php7/php7.y:3570 { yyVAL.node = yyDollar[1].node } case 365: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3573 +// line internal/php7/php7.y:3574 { - yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ExprShellExec{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), + }, + OpenBacktickTkn: yyDollar[1].token, + Parts: yyDollar[2].list, + CloseBacktickTkn: yyDollar[3].token, + } } case 366: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3583 +// line internal/php7/php7.y:3585 { yyVAL.node = &ast.ExprPrint{ Node: ast.Node{ @@ -6166,7 +6168,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3593 +// line internal/php7/php7.y:3595 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil} @@ -6178,7 +6180,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3603 +// line internal/php7/php7.y:3605 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6190,7 +6192,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3613 +// line internal/php7/php7.y:3615 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6203,7 +6205,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3624 +// line internal/php7/php7.y:3626 { yyVAL.node = &ast.ExprYieldFrom{ast.Node{}, yyDollar[2].node} @@ -6215,13 +6217,13 @@ yydefault: } case 371: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3634 +// line internal/php7/php7.y:3636 { yyVAL.node = yyDollar[1].node } case 372: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3638 +// line internal/php7/php7.y:3640 { switch n := yyDollar[2].node.(type) { case *ast.ExprClosure: @@ -6236,7 +6238,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-11 : yypt+1] -// line internal/php7/php7.y:3654 +// line internal/php7/php7.y:3656 { yyVAL.node = &ast.ExprClosure{ Node: ast.Node{ @@ -6257,7 +6259,7 @@ yydefault: } case 374: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php7/php7.y:3673 +// line internal/php7/php7.y:3675 { yyVAL.node = &ast.ExprArrowFunction{ Node: ast.Node{ @@ -6276,25 +6278,25 @@ yydefault: } case 376: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3697 +// line internal/php7/php7.y:3699 { yyVAL.token = nil } case 377: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3701 +// line internal/php7/php7.y:3703 { yyVAL.token = yyDollar[1].token } case 378: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3708 +// line internal/php7/php7.y:3710 { yyVAL.ClosureUse = nil } case 379: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3712 +// line internal/php7/php7.y:3714 { yyVAL.ClosureUse = &ast.ExprClosureUse{ Node: ast.Node{ @@ -6309,7 +6311,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3728 +// line internal/php7/php7.y:3730 { 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) @@ -6318,7 +6320,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3735 +// line internal/php7/php7.y:3737 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -6326,7 +6328,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3744 +// line internal/php7/php7.y:3746 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6345,7 +6347,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3761 +// line internal/php7/php7.y:3763 { yyVAL.node = &ast.ExprReference{ Node: ast.Node{ @@ -6368,7 +6370,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3785 +// line internal/php7/php7.y:3787 { yyVAL.node = &ast.ExprFunctionCall{ Node: ast.Node{ @@ -6382,33 +6384,39 @@ yydefault: } case 385: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3797 +// line internal/php7/php7.y:3799 { - yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.ExprStaticCall{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), + }, + Class: yyDollar[1].node, + DoubleColonTkn: yyDollar[2].token, + Call: yyDollar[3].node, + OpenParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).OpenParenthesisTkn, + Arguments: yyDollar[4].node.(*ast.ArgumentList).Arguments, + CloseParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).OpenParenthesisTkn, + } } case 386: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3808 +// line internal/php7/php7.y:3813 { - yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.ExprStaticCall{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), + }, + Class: yyDollar[1].node, + DoubleColonTkn: yyDollar[2].token, + Call: yyDollar[3].node, + OpenParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).OpenParenthesisTkn, + Arguments: yyDollar[4].node.(*ast.ArgumentList).Arguments, + CloseParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).OpenParenthesisTkn, + } } case 387: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3819 +// line internal/php7/php7.y:3827 { yyVAL.node = &ast.ExprFunctionCall{ Node: ast.Node{ @@ -6422,7 +6430,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3834 +// line internal/php7/php7.y:3842 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -6434,31 +6442,31 @@ yydefault: } case 389: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3844 +// line internal/php7/php7.y:3852 { yyVAL.node = yyDollar[1].node } case 390: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3851 +// line internal/php7/php7.y:3859 { yyVAL.node = yyDollar[1].node } case 391: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3855 +// line internal/php7/php7.y:3863 { yyVAL.node = yyDollar[1].node } case 392: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3862 +// line internal/php7/php7.y:3870 { yyVAL.node = nil } case 393: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3866 +// line internal/php7/php7.y:3874 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6475,13 +6483,13 @@ yydefault: } case 394: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3884 +// line internal/php7/php7.y:3892 { yyVAL.list = []ast.Vertex{} } case 395: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3888 +// line internal/php7/php7.y:3896 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6495,25 +6503,25 @@ yydefault: } case 396: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3900 +// line internal/php7/php7.y:3908 { yyVAL.list = yyDollar[1].list } case 397: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3907 +// line internal/php7/php7.y:3915 { yyVAL.node = nil } case 398: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3911 +// line internal/php7/php7.y:3919 { yyVAL.node = yyDollar[1].node } case 399: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3918 +// line internal/php7/php7.y:3926 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -6528,7 +6536,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3931 +// line internal/php7/php7.y:3939 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -6542,7 +6550,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3943 +// line internal/php7/php7.y:3951 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -6554,7 +6562,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3956 +// line internal/php7/php7.y:3964 { yyVAL.node = &ast.ScalarLnumber{ Node: ast.Node{ @@ -6566,7 +6574,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3966 +// line internal/php7/php7.y:3974 { yyVAL.node = &ast.ScalarDnumber{ Node: ast.Node{ @@ -6578,7 +6586,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3976 +// line internal/php7/php7.y:3984 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6590,7 +6598,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3986 +// line internal/php7/php7.y:3994 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6602,7 +6610,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3996 +// line internal/php7/php7.y:4004 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6614,7 +6622,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4006 +// line internal/php7/php7.y:4014 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6626,7 +6634,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4016 +// line internal/php7/php7.y:4024 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6638,7 +6646,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4026 +// line internal/php7/php7.y:4034 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6650,7 +6658,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4036 +// line internal/php7/php7.y:4044 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6662,7 +6670,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4046 +// line internal/php7/php7.y:4054 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6674,7 +6682,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4056 +// line internal/php7/php7.y:4064 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6695,7 +6703,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4075 +// line internal/php7/php7.y:4083 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6707,7 +6715,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4085 +// line internal/php7/php7.y:4093 { yyVAL.node = &ast.ScalarEncapsed{ Node: ast.Node{ @@ -6720,7 +6728,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4096 +// line internal/php7/php7.y:4104 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6733,19 +6741,19 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4107 +// line internal/php7/php7.y:4115 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4111 +// line internal/php7/php7.y:4119 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4118 +// line internal/php7/php7.y:4126 { yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ @@ -6756,7 +6764,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4127 +// line internal/php7/php7.y:4135 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -6775,7 +6783,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4144 +// line internal/php7/php7.y:4152 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -6794,43 +6802,43 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4164 +// line internal/php7/php7.y:4172 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4168 +// line internal/php7/php7.y:4176 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:4175 +// line internal/php7/php7.y:4183 { yyVAL.node = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4179 +// line internal/php7/php7.y:4187 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4186 +// line internal/php7/php7.y:4194 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4193 +// line internal/php7/php7.y:4201 { yyVAL.node = yyDollar[1].node } case 427: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4197 +// line internal/php7/php7.y:4205 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6847,19 +6855,19 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4212 +// line internal/php7/php7.y:4220 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4219 +// line internal/php7/php7.y:4227 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4223 +// line internal/php7/php7.y:4231 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6876,19 +6884,19 @@ yydefault: } case 431: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4238 +// line internal/php7/php7.y:4246 { yyVAL.node = yyDollar[1].node } case 432: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4245 +// line internal/php7/php7.y:4253 { yyVAL.node = yyDollar[1].node } case 433: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4249 +// line internal/php7/php7.y:4257 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -6902,7 +6910,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4261 +// line internal/php7/php7.y:4269 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -6916,7 +6924,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4273 +// line internal/php7/php7.y:4281 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -6930,7 +6938,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4285 +// line internal/php7/php7.y:4293 { yyVAL.node = &ast.ExprMethodCall{ Node: ast.Node{ @@ -6946,25 +6954,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4299 +// line internal/php7/php7.y:4307 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4306 +// line internal/php7/php7.y:4314 { yyVAL.node = yyDollar[1].node } case 439: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4310 +// line internal/php7/php7.y:4318 { yyVAL.node = yyDollar[1].node } case 440: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4314 +// line internal/php7/php7.y:4322 { yyVAL.node = &ast.ExprPropertyFetch{ Node: ast.Node{ @@ -6977,7 +6985,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4328 +// line internal/php7/php7.y:4336 { name := &ast.Identifier{ Node: ast.Node{ @@ -6996,7 +7004,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4345 +// line internal/php7/php7.y:4353 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -7010,7 +7018,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4357 +// line internal/php7/php7.y:4365 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7022,39 +7030,39 @@ yydefault: } case 444: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4370 +// line internal/php7/php7.y:4378 { - yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, 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.Name, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), + }, + Class: yyDollar[1].node, + DoubleColonTkn: yyDollar[2].token, + Property: yyDollar[3].node, + } } case 445: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4381 +// line internal/php7/php7.y:4389 { - yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, 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.Name, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), + }, + Class: yyDollar[1].node, + DoubleColonTkn: yyDollar[2].token, + Property: yyDollar[3].node, + } } case 446: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4395 +// line internal/php7/php7.y:4403 { yyVAL.node = yyDollar[1].node } case 447: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4399 +// line internal/php7/php7.y:4407 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7068,7 +7076,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4411 +// line internal/php7/php7.y:4419 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7082,7 +7090,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4423 +// line internal/php7/php7.y:4431 { yyVAL.node = &ast.ExprPropertyFetch{ Node: ast.Node{ @@ -7095,33 +7103,33 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4434 +// line internal/php7/php7.y:4442 { - yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, 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.Var, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), + }, + Class: yyDollar[1].node, + DoubleColonTkn: yyDollar[2].token, + Property: yyDollar[3].node, + } } case 451: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4445 +// line internal/php7/php7.y:4453 { - yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, 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.Var, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ + Position: position.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), + }, + Class: yyDollar[1].node, + DoubleColonTkn: yyDollar[2].token, + Property: yyDollar[3].node, + } } case 452: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4459 +// line internal/php7/php7.y:4467 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -7133,7 +7141,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4469 +// line internal/php7/php7.y:4477 { yyVAL.node = yyDollar[2].node @@ -7143,13 +7151,13 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4477 +// line internal/php7/php7.y:4485 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4484 +// line internal/php7/php7.y:4492 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -7161,7 +7169,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4494 +// line internal/php7/php7.y:4502 { yyVAL.node = yyDollar[2].node @@ -7171,13 +7179,13 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4502 +// line internal/php7/php7.y:4510 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4509 +// line internal/php7/php7.y:4517 { pairList := yyDollar[1].node.(*ast.ParserSeparatedList) fistPair := pairList.Items[0].(*ast.ExprArrayItem) @@ -7190,19 +7198,19 @@ yydefault: } case 459: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:4523 +// line internal/php7/php7.y:4531 { yyVAL.node = &ast.ExprArrayItem{} } case 460: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4527 +// line internal/php7/php7.y:4535 { yyVAL.node = yyDollar[1].node } case 461: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4534 +// line internal/php7/php7.y:4542 { 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) @@ -7211,7 +7219,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4541 +// line internal/php7/php7.y:4549 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -7219,7 +7227,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4550 +// line internal/php7/php7.y:4558 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7232,7 +7240,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4561 +// line internal/php7/php7.y:4569 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7243,7 +7251,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4570 +// line internal/php7/php7.y:4578 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7262,7 +7270,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4587 +// line internal/php7/php7.y:4595 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7279,7 +7287,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4602 +// line internal/php7/php7.y:4610 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7291,7 +7299,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:4612 +// line internal/php7/php7.y:4620 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7313,7 +7321,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4632 +// line internal/php7/php7.y:4640 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7333,13 +7341,13 @@ yydefault: } case 470: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4653 +// line internal/php7/php7.y:4661 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 471: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4657 +// line internal/php7/php7.y:4665 { yyVAL.list = append( yyDollar[1].list, @@ -7354,13 +7362,13 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4670 +// line internal/php7/php7.y:4678 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 473: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4674 +// line internal/php7/php7.y:4682 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -7375,7 +7383,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4690 +// line internal/php7/php7.y:4698 { name := &ast.Identifier{ Node: ast.Node{ @@ -7394,7 +7402,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4707 +// line internal/php7/php7.y:4715 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7419,7 +7427,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4730 +// line internal/php7/php7.y:4738 { yyVAL.node = &ast.ExprPropertyFetch{ Node: ast.Node{ @@ -7449,7 +7457,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4758 +// line internal/php7/php7.y:4766 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7464,7 +7472,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4771 +// line internal/php7/php7.y:4779 { name := &ast.Identifier{ Node: ast.Node{ @@ -7486,7 +7494,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:4791 +// line internal/php7/php7.y:4799 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7513,7 +7521,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4816 +// line internal/php7/php7.y:4824 { yyVAL.node = yyDollar[2].node @@ -7523,7 +7531,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4827 +// line internal/php7/php7.y:4835 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -7535,7 +7543,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4837 +// line internal/php7/php7.y:4845 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -7558,7 +7566,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4858 +// line internal/php7/php7.y:4866 { _, err := strconv.Atoi(string(yyDollar[2].token.Value)) isInt := err == nil @@ -7586,7 +7594,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4884 +// line internal/php7/php7.y:4892 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -7605,7 +7613,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:4904 +// line internal/php7/php7.y:4912 { if yyDollar[4].token != nil { yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[4].token) @@ -7624,7 +7632,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4921 +// line internal/php7/php7.y:4929 { yyVAL.node = &ast.ExprEmpty{ Node: ast.Node{ @@ -7638,7 +7646,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4933 +// line internal/php7/php7.y:4941 { yyVAL.node = &ast.ExprInclude{ Node: ast.Node{ @@ -7650,7 +7658,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4943 +// line internal/php7/php7.y:4951 { yyVAL.node = &ast.ExprIncludeOnce{ Node: ast.Node{ @@ -7662,7 +7670,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4953 +// line internal/php7/php7.y:4961 { yyVAL.node = &ast.ExprEval{ Node: ast.Node{ @@ -7676,7 +7684,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4965 +// line internal/php7/php7.y:4973 { yyVAL.node = &ast.ExprRequire{ Node: ast.Node{ @@ -7688,7 +7696,7 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4975 +// line internal/php7/php7.y:4983 { yyVAL.node = &ast.ExprRequireOnce{ Node: ast.Node{ @@ -7700,7 +7708,7 @@ yydefault: } case 492: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4988 +// line internal/php7/php7.y:4996 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -7708,7 +7716,7 @@ yydefault: } case 493: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4994 +// line internal/php7/php7.y:5002 { 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) @@ -7717,7 +7725,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:5004 +// line internal/php7/php7.y:5012 { yyVAL.node = yyDollar[1].node } diff --git a/internal/php7/php7.y b/internal/php7/php7.y index bd1fe44..b61b9cc 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -3424,27 +3424,28 @@ expr_without_variable: } | expr '?' expr ':' expr { - $$ = &ast.ExprTernary{ast.Node{}, $1, $3, $5} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $5) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Cond, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.True, $4.SkippedTokens) + $$ = &ast.ExprTernary{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $5), + }, + Condition: $1, + QuestionTkn: $2, + IfTrue: $3, + ColonTkn: $4, + IfFalse: $5, + } } | expr '?' ':' expr { - $$ = &ast.ExprTernary{ast.Node{}, $1, nil, $4} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $4) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Cond, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.True, $3.SkippedTokens) + $$ = &ast.ExprTernary{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $4), + }, + Condition: $1, + QuestionTkn: $2, + ColonTkn: $3, + IfFalse: $4, + } } | expr T_COALESCE expr { @@ -3571,13 +3572,14 @@ expr_without_variable: } | '`' backticks_expr '`' { - $$ = &ast.ExprShellExec{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprShellExec{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + OpenBacktickTkn: $1, + Parts: $2, + CloseBacktickTkn: $3, + } } | T_PRINT expr { @@ -3795,25 +3797,31 @@ function_call: } | class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list { - $$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $4) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) + $$ = &ast.ExprStaticCall{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $4), + }, + Class: $1, + DoubleColonTkn: $2, + Call: $3, + OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, + Arguments: $4.(*ast.ArgumentList).Arguments, + CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, + } } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list { - $$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $4) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) + $$ = &ast.ExprStaticCall{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $4), + }, + Class: $1, + DoubleColonTkn: $2, + Call: $3, + OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, + Arguments: $4.(*ast.ArgumentList).Arguments, + CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, + } } | callable_expr argument_list { @@ -4368,25 +4376,25 @@ simple_variable: static_member: class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable { - $$ = &ast.ExprStaticPropertyFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $3) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) + $$ = &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $3), + }, + Class: $1, + DoubleColonTkn: $2, + Property: $3, + } } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable { - $$ = &ast.ExprStaticPropertyFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $3) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) + $$ = &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $3), + }, + Class: $1, + DoubleColonTkn: $2, + Property: $3, + } } ; @@ -4432,25 +4440,25 @@ new_variable: } | class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable { - $$ = &ast.ExprStaticPropertyFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $3) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Var, $2.SkippedTokens) + $$ = &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $3), + }, + Class: $1, + DoubleColonTkn: $2, + Property: $3, + } } | new_variable T_PAAMAYIM_NEKUDOTAYIM simple_variable { - $$ = &ast.ExprStaticPropertyFetch{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewNodesPosition($1, $3) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) - yylex.(*Parser).setFreeFloating($$, token.Var, $2.SkippedTokens) + $$ = &ast.ExprStaticPropertyFetch{ + Node: ast.Node{ + Position: position.NewNodesPosition($1, $3), + }, + Class: $1, + DoubleColonTkn: $2, + Property: $3, + } } ; diff --git a/pkg/ast/node.go b/pkg/ast/node.go index c6d4c8d..d65527a 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -1344,7 +1344,9 @@ func (n *ExprRequireOnce) Accept(v NodeVisitor) { // ExprShellExec node type ExprShellExec struct { Node - Parts []Vertex + OpenBacktickTkn *token.Token + Parts []Vertex + CloseBacktickTkn *token.Token } func (n *ExprShellExec) Accept(v NodeVisitor) { @@ -1354,9 +1356,12 @@ func (n *ExprShellExec) Accept(v NodeVisitor) { // ExprStaticCall node type ExprStaticCall struct { Node - Class Vertex - Call Vertex - ArgumentList *ArgumentList + Class Vertex + DoubleColonTkn *token.Token + Call Vertex + OpenParenthesisTkn *token.Token + Arguments []Vertex + CloseParenthesisTkn *token.Token } func (n *ExprStaticCall) Accept(v NodeVisitor) { @@ -1366,8 +1371,9 @@ func (n *ExprStaticCall) Accept(v NodeVisitor) { // ExprStaticPropertyFetch node type ExprStaticPropertyFetch struct { Node - Class Vertex - Property Vertex + Class Vertex + DoubleColonTkn *token.Token + Property Vertex } func (n *ExprStaticPropertyFetch) Accept(v NodeVisitor) { @@ -1377,9 +1383,11 @@ func (n *ExprStaticPropertyFetch) Accept(v NodeVisitor) { // ExprTernary node type ExprTernary struct { Node - Condition Vertex - IfTrue Vertex - IfFalse Vertex + Condition Vertex + QuestionTkn *token.Token + IfTrue Vertex + ColonTkn *token.Token + IfFalse Vertex } func (n *ExprTernary) Accept(v NodeVisitor) { diff --git a/pkg/ast/traverser/dfs.go b/pkg/ast/traverser/dfs.go index ad492b0..bc119f8 100644 --- a/pkg/ast/traverser/dfs.go +++ b/pkg/ast/traverser/dfs.go @@ -1566,10 +1566,12 @@ func (t *DFS) Traverse(n ast.Vertex) { t.Traverse(nn.Call) t.visitor.Leave("Call", true) } - if nn.ArgumentList != nil { - t.visitor.Enter("ArgumentList", true) - t.Traverse(nn.ArgumentList) - t.visitor.Leave("ArgumentList", true) + if nn.Arguments != nil { + t.visitor.Enter("Arguments", false) + for _, c := range nn.Arguments { + t.Traverse(c) + } + t.visitor.Leave("Arguments", false) } case *ast.ExprStaticPropertyFetch: if nn == nil { diff --git a/pkg/printer/pretty_printer.go b/pkg/printer/pretty_printer.go index a840cea..b046302 100644 --- a/pkg/printer/pretty_printer.go +++ b/pkg/printer/pretty_printer.go @@ -1239,7 +1239,7 @@ func (p *PrettyPrinter) printExprStaticCall(n ast.Vertex) { io.WriteString(p.w, "::") p.Print(nn.Call) io.WriteString(p.w, "(") - p.joinPrint(", ", nn.ArgumentList.Arguments) + p.joinPrint(", ", nn.Arguments) io.WriteString(p.w, ")") } diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index 58ac6eb..fc63109 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -1842,9 +1842,9 @@ func (p *Printer) printExprStaticCall(n ast.Vertex) { p.write([]byte("::")) p.Print(nn.Call) - p.printFreeFloatingOrDefault(nn.ArgumentList, token.Start, "(") - p.joinPrint(",", nn.ArgumentList.Arguments) - p.printFreeFloatingOrDefault(nn.ArgumentList, token.End, ")") + p.printToken(nn.OpenParenthesisTkn, "(") + p.joinPrint(",", nn.Arguments) + p.printToken(nn.CloseParenthesisTkn, ")") p.printFreeFloating(nn, token.End) }