diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 5cc2459..8aa85e6 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:6598 +// line internal/php5/php5.y:6604 type simpleIndirectReference struct { all []*ast.ExprVariable @@ -3779,13 +3779,13 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] // line internal/php5/php5.y:1611 { - yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + AmpersandTkn: yyDollar[1].token, + Var: yyDollar[2].node, + } } case 113: yyDollar = yyS[yypt-4 : yypt+1] @@ -6317,13 +6317,13 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] // line internal/php5/php5.y:3945 { - yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ExprPrint{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + PrintTkn: yyDollar[1].token, + Expr: yyDollar[2].node, + } } case 303: yyDollar = yyS[yypt-1 : yypt+1] @@ -6574,6 +6574,7 @@ yydefault: Node: ast.Node{ Position: position.NewTokensPosition(yyDollar[3].token, yyDollar[4].token), }, + AmpersandTkn: yyDollar[3].token, Var: &ast.ExprVariable{ Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[4].token), @@ -6595,7 +6596,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4205 +// line internal/php5/php5.y:4206 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -6616,7 +6617,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4224 +// line internal/php5/php5.y:4225 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -6624,6 +6625,7 @@ yydefault: Node: ast.Node{ Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), }, + AmpersandTkn: yyDollar[1].token, Var: &ast.ExprVariable{ Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[2].token), @@ -6642,7 +6644,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4251 +// line internal/php5/php5.y:4253 { yyVAL.node = &ast.ExprFunctionCall{ Node: ast.Node{ @@ -6661,7 +6663,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4268 +// line internal/php5/php5.y:4270 { yyVAL.node = &ast.ExprFunctionCall{ Node: ast.Node{ @@ -6682,7 +6684,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4287 +// line internal/php5/php5.y:4289 { yyVAL.node = &ast.ExprFunctionCall{ Node: ast.Node{ @@ -6702,7 +6704,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4305 +// line internal/php5/php5.y:4307 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6715,7 +6717,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4316 +// line internal/php5/php5.y:4318 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6728,7 +6730,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4327 +// line internal/php5/php5.y:4329 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6741,7 +6743,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4338 +// line internal/php5/php5.y:4340 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6754,7 +6756,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4349 +// line internal/php5/php5.y:4351 { yyVAL.node = &ast.ExprFunctionCall{ Node: ast.Node{ @@ -6768,7 +6770,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4364 +// line internal/php5/php5.y:4366 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -6780,7 +6782,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4374 +// line internal/php5/php5.y:4376 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -6791,7 +6793,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4383 +// line internal/php5/php5.y:4385 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -6804,7 +6806,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4394 +// line internal/php5/php5.y:4396 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -6816,7 +6818,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4407 +// line internal/php5/php5.y:4409 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -6827,7 +6829,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4416 +// line internal/php5/php5.y:4418 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -6840,7 +6842,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4427 +// line internal/php5/php5.y:4429 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -6852,19 +6854,19 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4440 +// line internal/php5/php5.y:4442 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4444 +// line internal/php5/php5.y:4446 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4451 +// line internal/php5/php5.y:4453 { yyVAL.node = yyDollar[1].node @@ -6905,25 +6907,25 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4490 +// line internal/php5/php5.y:4492 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4498 +// line internal/php5/php5.y:4500 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4502 +// line internal/php5/php5.y:4504 { yyVAL.list = []ast.Vertex{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4510 +// line internal/php5/php5.y:4512 { yyVAL.list = yyDollar[2].list @@ -6932,13 +6934,13 @@ yydefault: } case 345: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4520 +// line internal/php5/php5.y:4522 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4524 +// line internal/php5/php5.y:4526 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6954,19 +6956,19 @@ yydefault: } case 347: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4538 +// line internal/php5/php5.y:4540 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4545 +// line internal/php5/php5.y:4547 { yyVAL.list = []ast.Vertex{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4549 +// line internal/php5/php5.y:4551 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6980,25 +6982,25 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4561 +// line internal/php5/php5.y:4563 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4568 +// line internal/php5/php5.y:4570 { yyVAL.node = nil } case 352: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4572 +// line internal/php5/php5.y:4574 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4579 +// line internal/php5/php5.y:4581 { yyVAL.node = &ast.ScalarLnumber{ Node: ast.Node{ @@ -7010,7 +7012,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4589 +// line internal/php5/php5.y:4591 { yyVAL.node = &ast.ScalarDnumber{ Node: ast.Node{ @@ -7022,7 +7024,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4599 +// line internal/php5/php5.y:4601 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -7034,7 +7036,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4609 +// line internal/php5/php5.y:4611 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7046,7 +7048,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4619 +// line internal/php5/php5.y:4621 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7058,7 +7060,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4629 +// line internal/php5/php5.y:4631 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7070,7 +7072,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4639 +// line internal/php5/php5.y:4641 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7082,7 +7084,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4649 +// line internal/php5/php5.y:4651 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7094,7 +7096,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4659 +// line internal/php5/php5.y:4661 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7106,7 +7108,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4669 +// line internal/php5/php5.y:4671 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7118,7 +7120,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4679 +// line internal/php5/php5.y:4681 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7139,7 +7141,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4698 +// line internal/php5/php5.y:4700 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7151,7 +7153,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4711 +// line internal/php5/php5.y:4713 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -7170,25 +7172,25 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4731 +// line internal/php5/php5.y:4733 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4738 +// line internal/php5/php5.y:4740 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4742 +// line internal/php5/php5.y:4744 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4746 +// line internal/php5/php5.y:4748 { yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ @@ -7204,7 +7206,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4760 +// line internal/php5/php5.y:4762 { yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ @@ -7222,7 +7224,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4776 +// line internal/php5/php5.y:4778 { yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ @@ -7239,7 +7241,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4791 +// line internal/php5/php5.y:4793 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -7254,7 +7256,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4804 +// line internal/php5/php5.y:4806 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -7268,13 +7270,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4816 +// line internal/php5/php5.y:4818 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4820 +// line internal/php5/php5.y:4822 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7286,13 +7288,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4830 +// line internal/php5/php5.y:4832 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4837 +// line internal/php5/php5.y:4839 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7306,7 +7308,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4849 +// line internal/php5/php5.y:4851 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7319,7 +7321,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4860 +// line internal/php5/php5.y:4862 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7332,7 +7334,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4871 +// line internal/php5/php5.y:4873 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7345,7 +7347,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4882 +// line internal/php5/php5.y:4884 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7358,7 +7360,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4893 +// line internal/php5/php5.y:4895 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7371,7 +7373,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4904 +// line internal/php5/php5.y:4906 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7384,7 +7386,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4915 +// line internal/php5/php5.y:4917 { yyVAL.node = &ast.ExprBooleanNot{ Node: ast.Node{ @@ -7396,7 +7398,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4925 +// line internal/php5/php5.y:4927 { yyVAL.node = &ast.ExprBitwiseNot{ Node: ast.Node{ @@ -7408,7 +7410,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4935 +// line internal/php5/php5.y:4937 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7421,7 +7423,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4946 +// line internal/php5/php5.y:4948 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7434,7 +7436,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4957 +// line internal/php5/php5.y:4959 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7447,7 +7449,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4968 +// line internal/php5/php5.y:4970 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7460,7 +7462,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4979 +// line internal/php5/php5.y:4981 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7473,7 +7475,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4990 +// line internal/php5/php5.y:4992 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7486,7 +7488,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5001 +// line internal/php5/php5.y:5003 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7499,7 +7501,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5012 +// line internal/php5/php5.y:5014 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7512,7 +7514,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5023 +// line internal/php5/php5.y:5025 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7525,7 +7527,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5034 +// line internal/php5/php5.y:5036 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7538,7 +7540,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5045 +// line internal/php5/php5.y:5047 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7551,7 +7553,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5056 +// line internal/php5/php5.y:5058 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7564,7 +7566,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5067 +// line internal/php5/php5.y:5069 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7577,7 +7579,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5078 +// line internal/php5/php5.y:5080 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7590,7 +7592,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5089 +// line internal/php5/php5.y:5091 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7604,7 +7606,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5101 +// line internal/php5/php5.y:5103 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7617,7 +7619,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5112 +// line internal/php5/php5.y:5114 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7630,7 +7632,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5123 +// line internal/php5/php5.y:5125 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7643,7 +7645,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5134 +// line internal/php5/php5.y:5136 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7656,7 +7658,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5145 +// line internal/php5/php5.y:5147 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -7670,7 +7672,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5157 +// line internal/php5/php5.y:5159 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -7684,7 +7686,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5169 +// line internal/php5/php5.y:5171 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -7696,7 +7698,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5179 +// line internal/php5/php5.y:5181 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -7708,7 +7710,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5189 +// line internal/php5/php5.y:5191 { yyVAL.node = yyDollar[2].node @@ -7718,13 +7720,13 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5200 +// line internal/php5/php5.y:5202 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5204 +// line internal/php5/php5.y:5206 { yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ @@ -7740,7 +7742,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5218 +// line internal/php5/php5.y:5220 { yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ @@ -7758,7 +7760,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5234 +// line internal/php5/php5.y:5236 { yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ @@ -7775,7 +7777,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5252 +// line internal/php5/php5.y:5254 { name := &ast.Identifier{ Node: ast.Node{ @@ -7794,25 +7796,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5269 +// line internal/php5/php5.y:5271 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5273 +// line internal/php5/php5.y:5275 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5277 +// line internal/php5/php5.y:5279 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5281 +// line internal/php5/php5.y:5283 { yyVAL.node = &ast.ScalarEncapsed{ Node: ast.Node{ @@ -7825,7 +7827,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5292 +// line internal/php5/php5.y:5294 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7838,7 +7840,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5303 +// line internal/php5/php5.y:5305 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7850,13 +7852,13 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5316 +// line internal/php5/php5.y:5318 { yyVAL.node = &ast.ParserSeparatedList{} } case 422: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5320 +// line internal/php5/php5.y:5322 { if yyDollar[2].token != nil { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) @@ -7867,19 +7869,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5332 +// line internal/php5/php5.y:5334 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5336 +// line internal/php5/php5.y:5338 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5343 +// line internal/php5/php5.y:5345 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -7897,7 +7899,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5359 +// line internal/php5/php5.y:5361 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -7913,7 +7915,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5373 +// line internal/php5/php5.y:5375 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7930,7 +7932,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5388 +// line internal/php5/php5.y:5390 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7945,19 +7947,19 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5404 +// line internal/php5/php5.y:5406 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5408 +// line internal/php5/php5.y:5410 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5415 +// line internal/php5/php5.y:5417 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -7974,7 +7976,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5430 +// line internal/php5/php5.y:5432 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -7991,25 +7993,25 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5449 +// line internal/php5/php5.y:5451 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5457 +// line internal/php5/php5.y:5459 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5464 +// line internal/php5/php5.y:5466 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5471 +// line internal/php5/php5.y:5473 { yyVAL.node = yyDollar[1].node @@ -8087,25 +8089,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5547 +// line internal/php5/php5.y:5549 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5554 +// line internal/php5/php5.y:5556 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5558 +// line internal/php5/php5.y:5560 { yyVAL.list = []ast.Vertex{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5566 +// line internal/php5/php5.y:5568 { println("FOOFOOFOOFOOFOOFOOFOOFOOFOO") yyDollar[2].list[0].(*ast.ExprPropertyFetch).ObjectOperatorTkn = yyDollar[1].token @@ -8136,7 +8138,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5597 +// line internal/php5/php5.y:5599 { fetch := &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8152,7 +8154,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5611 +// line internal/php5/php5.y:5613 { fetch := &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8168,7 +8170,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5628 +// line internal/php5/php5.y:5630 { yyVAL.node = &ast.ExprMethodCall{ Node: ast.Node{ @@ -8181,31 +8183,31 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5642 +// line internal/php5/php5.y:5644 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5646 +// line internal/php5/php5.y:5648 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5650 +// line internal/php5/php5.y:5652 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5657 +// line internal/php5/php5.y:5659 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5661 +// line internal/php5/php5.y:5663 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -8217,7 +8219,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5674 +// line internal/php5/php5.y:5676 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8230,7 +8232,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5685 +// line internal/php5/php5.y:5687 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8243,13 +8245,13 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5699 +// line internal/php5/php5.y:5701 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5706 +// line internal/php5/php5.y:5708 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8263,7 +8265,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5718 +// line internal/php5/php5.y:5720 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8277,31 +8279,31 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5733 +// line internal/php5/php5.y:5735 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5737 +// line internal/php5/php5.y:5739 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5741 +// line internal/php5/php5.y:5743 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5749 +// line internal/php5/php5.y:5751 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5753 +// line internal/php5/php5.y:5755 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -8313,13 +8315,13 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5763 +// line internal/php5/php5.y:5765 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5770 +// line internal/php5/php5.y:5772 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8333,7 +8335,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5782 +// line internal/php5/php5.y:5784 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8347,13 +8349,13 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5794 +// line internal/php5/php5.y:5796 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5802 +// line internal/php5/php5.y:5804 { name := &ast.Identifier{ Node: ast.Node{ @@ -8372,7 +8374,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5819 +// line internal/php5/php5.y:5821 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -8386,25 +8388,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5834 +// line internal/php5/php5.y:5836 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5838 +// line internal/php5/php5.y:5840 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5846 +// line internal/php5/php5.y:5848 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5850 +// line internal/php5/php5.y:5852 { yyVAL.list = []ast.Vertex{ &ast.ExprPropertyFetch{ @@ -8417,7 +8419,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5864 +// line internal/php5/php5.y:5866 { fetch := &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8433,7 +8435,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5878 +// line internal/php5/php5.y:5880 { fetch := &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8449,7 +8451,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5892 +// line internal/php5/php5.y:5894 { yyVAL.list = []ast.Vertex{ &ast.ExprPropertyFetch{ @@ -8462,7 +8464,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5906 +// line internal/php5/php5.y:5908 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -8474,7 +8476,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5916 +// line internal/php5/php5.y:5918 { yyVAL.node = yyDollar[2].node @@ -8487,7 +8489,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5930 +// line internal/php5/php5.y:5932 { n := &ast.ExprVariable{ast.Node{}, nil} yyVAL.simpleIndirectReference = simpleIndirectReference{[]*ast.ExprVariable{n}, n} @@ -8500,7 +8502,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5941 +// line internal/php5/php5.y:5943 { n := &ast.ExprVariable{ast.Node{}, nil} @@ -8517,7 +8519,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5959 +// line internal/php5/php5.y:5961 { 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) @@ -8526,7 +8528,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5966 +// line internal/php5/php5.y:5968 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -8534,7 +8536,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5976 +// line internal/php5/php5.y:5978 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -8545,7 +8547,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5985 +// line internal/php5/php5.y:5987 { pairList := yyDollar[3].node.(*ast.ParserSeparatedList) fistPair := pairList.Items[0].(*ast.ExprArrayItem) @@ -8572,19 +8574,19 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:6010 +// line internal/php5/php5.y:6012 { yyVAL.node = &ast.ExprArrayItem{} } case 481: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:6018 +// line internal/php5/php5.y:6020 { yyVAL.node = &ast.ParserSeparatedList{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6022 +// line internal/php5/php5.y:6024 { if yyDollar[2].token != nil { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) @@ -8595,7 +8597,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:6034 +// line internal/php5/php5.y:6036 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -8613,7 +8615,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6050 +// line internal/php5/php5.y:6052 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -8629,7 +8631,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6064 +// line internal/php5/php5.y:6066 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -8646,7 +8648,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6079 +// line internal/php5/php5.y:6081 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -8661,7 +8663,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:6092 +// line internal/php5/php5.y:6094 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -8673,7 +8675,8 @@ yydefault: Node: ast.Node{ Position: position.NewTokenNodePosition(yyDollar[5].token, yyDollar[6].node), }, - Var: yyDollar[6].node, + AmpersandTkn: yyDollar[5].token, + Var: yyDollar[6].node, }, } @@ -8684,7 +8687,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6113 +// line internal/php5/php5.y:6116 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -8694,7 +8697,8 @@ yydefault: Node: ast.Node{ Position: position.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), }, - Var: yyDollar[4].node, + AmpersandTkn: yyDollar[3].token, + Var: yyDollar[4].node, }, } @@ -8705,7 +8709,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6132 +// line internal/php5/php5.y:6136 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -8719,7 +8723,8 @@ yydefault: Node: ast.Node{ Position: position.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), }, - Var: yyDollar[4].node, + AmpersandTkn: yyDollar[3].token, + Var: yyDollar[4].node, }, }, }, @@ -8727,7 +8732,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6152 +// line internal/php5/php5.y:6157 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -8739,7 +8744,8 @@ yydefault: Node: ast.Node{ Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), }, - Var: yyDollar[2].node, + AmpersandTkn: yyDollar[1].token, + Var: yyDollar[2].node, }, }, }, @@ -8747,13 +8753,13 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6173 +// line internal/php5/php5.y:6179 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6177 +// line internal/php5/php5.y:6183 { yyVAL.list = append( yyDollar[1].list, @@ -8768,13 +8774,13 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6190 +// line internal/php5/php5.y:6196 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6194 +// line internal/php5/php5.y:6200 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -8789,7 +8795,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6210 +// line internal/php5/php5.y:6216 { name := &ast.Identifier{ Node: ast.Node{ @@ -8808,7 +8814,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6227 +// line internal/php5/php5.y:6233 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8833,7 +8839,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6250 +// line internal/php5/php5.y:6256 { yyVAL.node = &ast.ExprPropertyFetch{ Node: ast.Node{ @@ -8863,7 +8869,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6278 +// line internal/php5/php5.y:6284 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -8878,7 +8884,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6291 +// line internal/php5/php5.y:6297 { name := &ast.Identifier{ Node: ast.Node{ @@ -8900,7 +8906,7 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:6311 +// line internal/php5/php5.y:6317 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8927,7 +8933,7 @@ yydefault: } case 501: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6336 +// line internal/php5/php5.y:6342 { yyVAL.node = yyDollar[2].node @@ -8937,7 +8943,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6347 +// line internal/php5/php5.y:6353 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -8949,7 +8955,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6357 +// line internal/php5/php5.y:6363 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -8978,7 +8984,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6384 +// line internal/php5/php5.y:6390 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -8997,7 +9003,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6404 +// line internal/php5/php5.y:6410 { yyVAL.node = &ast.ExprIsset{ Node: ast.Node{ @@ -9012,7 +9018,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6417 +// line internal/php5/php5.y:6423 { yyVAL.node = &ast.ExprEmpty{ Node: ast.Node{ @@ -9026,7 +9032,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6429 +// line internal/php5/php5.y:6435 { yyVAL.node = &ast.ExprEmpty{ Node: ast.Node{ @@ -9040,7 +9046,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6441 +// line internal/php5/php5.y:6447 { yyVAL.node = &ast.ExprInclude{ Node: ast.Node{ @@ -9052,7 +9058,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6451 +// line internal/php5/php5.y:6457 { yyVAL.node = &ast.ExprIncludeOnce{ Node: ast.Node{ @@ -9064,7 +9070,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6461 +// line internal/php5/php5.y:6467 { yyVAL.node = &ast.ExprEval{ Node: ast.Node{ @@ -9078,31 +9084,31 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6473 +// line internal/php5/php5.y:6479 { - yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ExprRequire{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + RequireTkn: yyDollar[1].token, + Expr: yyDollar[2].node, + } } case 512: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6483 +// line internal/php5/php5.y:6489 { - yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ExprRequireOnce{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + RequireOnceTkn: yyDollar[1].token, + Expr: yyDollar[2].node, + } } case 513: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6496 +// line internal/php5/php5.y:6502 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -9110,7 +9116,7 @@ yydefault: } case 514: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6502 +// line internal/php5/php5.y:6508 { 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) @@ -9119,19 +9125,19 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6512 +// line internal/php5/php5.y:6518 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6516 +// line internal/php5/php5.y:6522 { yyVAL.node = yyDollar[1].node } case 517: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6523 +// line internal/php5/php5.y:6529 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -9150,7 +9156,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6540 +// line internal/php5/php5.y:6546 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -9169,7 +9175,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6560 +// line internal/php5/php5.y:6566 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -9188,7 +9194,7 @@ yydefault: } case 520: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6580 +// line internal/php5/php5.y:6586 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ diff --git a/internal/php5/php5.y b/internal/php5/php5.y index bcdf386..d4cc523 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -1609,13 +1609,13 @@ foreach_variable: } | '&' variable { - $$ = &ast.ExprReference{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + AmpersandTkn: $1, + Var: $2, + } } | T_LIST '(' assignment_list ')' { @@ -3943,13 +3943,13 @@ expr_without_variable: } | T_PRINT expr { - $$ = &ast.ExprPrint{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprPrint{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + PrintTkn: $1, + Expr: $2, + } } | T_YIELD { @@ -4182,6 +4182,7 @@ lexical_var_list: Node: ast.Node{ Position: position.NewTokensPosition($3, $4), }, + AmpersandTkn: $3, Var: &ast.ExprVariable{ Node: ast.Node{ Position: position.NewTokenPosition($4), @@ -4228,6 +4229,7 @@ lexical_var_list: Node: ast.Node{ Position: position.NewTokensPosition($1, $2), }, + AmpersandTkn: $1, Var: &ast.ExprVariable{ Node: ast.Node{ Position: position.NewTokenPosition($2), @@ -6100,7 +6102,8 @@ non_empty_array_pair_list: Node: ast.Node{ Position: position.NewTokenNodePosition($5, $6), }, - Var: $6, + AmpersandTkn: $5, + Var: $6, }, } @@ -6119,7 +6122,8 @@ non_empty_array_pair_list: Node: ast.Node{ Position: position.NewTokenNodePosition($3, $4), }, - Var: $4, + AmpersandTkn: $3, + Var: $4, }, } @@ -6142,7 +6146,8 @@ non_empty_array_pair_list: Node: ast.Node{ Position: position.NewTokenNodePosition($3, $4), }, - Var: $4, + AmpersandTkn: $3, + Var: $4, }, }, }, @@ -6160,7 +6165,8 @@ non_empty_array_pair_list: Node: ast.Node{ Position: position.NewTokenNodePosition($1, $2), }, - Var: $2, + AmpersandTkn: $1, + Var: $2, }, }, }, @@ -6471,23 +6477,23 @@ internal_functions_in_yacc: } | T_REQUIRE expr { - $$ = &ast.ExprRequire{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprRequire{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + RequireTkn: $1, + Expr: $2, + } } | T_REQUIRE_ONCE expr { - $$ = &ast.ExprRequireOnce{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprRequireOnce{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + RequireOnceTkn: $1, + Expr: $2, + } } ; diff --git a/internal/php7/php7.go b/internal/php7/php7.go index cfb8eb3..8e48f1b 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:5008 +// line internal/php7/php7.y:5011 // line yacctab:1 var yyExca = [...]int{ @@ -3812,13 +3812,13 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] // line internal/php7/php7.y:1445 { - yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + AmpersandTkn: yyDollar[1].token, + Var: yyDollar[2].node, + } } case 186: yyDollar = yyS[yypt-4 : yypt+1] @@ -6156,13 +6156,13 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] // line internal/php7/php7.y:3583 { - yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ExprPrint{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + PrintTkn: yyDollar[1].token, + Expr: yyDollar[2].node, + } } case 367: yyDollar = yyS[yypt-1 : yypt+1] @@ -6347,27 +6347,28 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] // line internal/php7/php7.y:3761 { - identifier := &ast.Identifier{ + yyVAL.node = &ast.ExprReference{ Node: ast.Node{ - Position: position.NewTokenPosition(yyDollar[2].token), + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), + }, + AmpersandTkn: yyDollar[1].token, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + }, }, - IdentifierTkn: yyDollar[2].token, - Value: yyDollar[2].token.Value, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - yyVAL.node = &ast.ExprReference{ast.Node{}, variable} - - // save position - variable.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(variable, token.Start, yyDollar[2].token.SkippedTokens) } case 384: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3784 +// line internal/php7/php7.y:3785 { yyVAL.node = &ast.ExprFunctionCall{ Node: ast.Node{ @@ -6381,7 +6382,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3796 +// line internal/php7/php7.y:3797 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6394,7 +6395,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3807 +// line internal/php7/php7.y:3808 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6407,7 +6408,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3818 +// line internal/php7/php7.y:3819 { yyVAL.node = &ast.ExprFunctionCall{ Node: ast.Node{ @@ -6421,7 +6422,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3833 +// line internal/php7/php7.y:3834 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -6433,31 +6434,31 @@ yydefault: } case 389: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3843 +// line internal/php7/php7.y:3844 { yyVAL.node = yyDollar[1].node } case 390: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3850 +// line internal/php7/php7.y:3851 { yyVAL.node = yyDollar[1].node } case 391: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3854 +// line internal/php7/php7.y:3855 { yyVAL.node = yyDollar[1].node } case 392: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3861 +// line internal/php7/php7.y:3862 { yyVAL.node = nil } case 393: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3865 +// line internal/php7/php7.y:3866 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6474,13 +6475,13 @@ yydefault: } case 394: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3883 +// line internal/php7/php7.y:3884 { yyVAL.list = []ast.Vertex{} } case 395: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3887 +// line internal/php7/php7.y:3888 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6494,25 +6495,25 @@ yydefault: } case 396: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3899 +// line internal/php7/php7.y:3900 { yyVAL.list = yyDollar[1].list } case 397: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3906 +// line internal/php7/php7.y:3907 { yyVAL.node = nil } case 398: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3910 +// line internal/php7/php7.y:3911 { yyVAL.node = yyDollar[1].node } case 399: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3917 +// line internal/php7/php7.y:3918 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -6527,7 +6528,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3930 +// line internal/php7/php7.y:3931 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -6541,7 +6542,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3942 +// line internal/php7/php7.y:3943 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -6553,7 +6554,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3955 +// line internal/php7/php7.y:3956 { yyVAL.node = &ast.ScalarLnumber{ Node: ast.Node{ @@ -6565,7 +6566,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3965 +// line internal/php7/php7.y:3966 { yyVAL.node = &ast.ScalarDnumber{ Node: ast.Node{ @@ -6577,7 +6578,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3975 +// line internal/php7/php7.y:3976 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6589,7 +6590,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3985 +// line internal/php7/php7.y:3986 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6601,7 +6602,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3995 +// line internal/php7/php7.y:3996 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6613,7 +6614,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4005 +// line internal/php7/php7.y:4006 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6625,7 +6626,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4015 +// line internal/php7/php7.y:4016 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6637,7 +6638,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4025 +// line internal/php7/php7.y:4026 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6649,7 +6650,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4035 +// line internal/php7/php7.y:4036 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6661,7 +6662,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4045 +// line internal/php7/php7.y:4046 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6673,7 +6674,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4055 +// line internal/php7/php7.y:4056 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6694,7 +6695,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4074 +// line internal/php7/php7.y:4075 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6706,7 +6707,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4084 +// line internal/php7/php7.y:4085 { yyVAL.node = &ast.ScalarEncapsed{ Node: ast.Node{ @@ -6719,7 +6720,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4095 +// line internal/php7/php7.y:4096 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6732,19 +6733,19 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4106 +// line internal/php7/php7.y:4107 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4110 +// line internal/php7/php7.y:4111 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4117 +// line internal/php7/php7.y:4118 { yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ @@ -6755,7 +6756,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4126 +// line internal/php7/php7.y:4127 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -6774,7 +6775,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4143 +// line internal/php7/php7.y:4144 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -6793,43 +6794,43 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4163 +// line internal/php7/php7.y:4164 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4167 +// line internal/php7/php7.y:4168 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:4174 +// line internal/php7/php7.y:4175 { yyVAL.node = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4178 +// line internal/php7/php7.y:4179 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4185 +// line internal/php7/php7.y:4186 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4192 +// line internal/php7/php7.y:4193 { yyVAL.node = yyDollar[1].node } case 427: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4196 +// line internal/php7/php7.y:4197 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6846,19 +6847,19 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4211 +// line internal/php7/php7.y:4212 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4218 +// line internal/php7/php7.y:4219 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4222 +// line internal/php7/php7.y:4223 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6875,19 +6876,19 @@ yydefault: } case 431: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4237 +// line internal/php7/php7.y:4238 { yyVAL.node = yyDollar[1].node } case 432: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4244 +// line internal/php7/php7.y:4245 { yyVAL.node = yyDollar[1].node } case 433: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4248 +// line internal/php7/php7.y:4249 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -6901,7 +6902,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4260 +// line internal/php7/php7.y:4261 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -6915,7 +6916,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4272 +// line internal/php7/php7.y:4273 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -6929,7 +6930,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4284 +// line internal/php7/php7.y:4285 { yyVAL.node = &ast.ExprMethodCall{ Node: ast.Node{ @@ -6945,25 +6946,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4298 +// line internal/php7/php7.y:4299 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4305 +// line internal/php7/php7.y:4306 { yyVAL.node = yyDollar[1].node } case 439: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4309 +// line internal/php7/php7.y:4310 { yyVAL.node = yyDollar[1].node } case 440: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4313 +// line internal/php7/php7.y:4314 { yyVAL.node = &ast.ExprPropertyFetch{ Node: ast.Node{ @@ -6976,7 +6977,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4327 +// line internal/php7/php7.y:4328 { name := &ast.Identifier{ Node: ast.Node{ @@ -6995,7 +6996,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4344 +// line internal/php7/php7.y:4345 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -7009,7 +7010,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4356 +// line internal/php7/php7.y:4357 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7021,7 +7022,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4369 +// line internal/php7/php7.y:4370 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7034,7 +7035,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4380 +// line internal/php7/php7.y:4381 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7047,13 +7048,13 @@ yydefault: } case 446: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4394 +// line internal/php7/php7.y:4395 { yyVAL.node = yyDollar[1].node } case 447: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4398 +// line internal/php7/php7.y:4399 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7067,7 +7068,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4410 +// line internal/php7/php7.y:4411 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7081,7 +7082,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4422 +// line internal/php7/php7.y:4423 { yyVAL.node = &ast.ExprPropertyFetch{ Node: ast.Node{ @@ -7094,7 +7095,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4433 +// line internal/php7/php7.y:4434 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7107,7 +7108,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4444 +// line internal/php7/php7.y:4445 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7120,7 +7121,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4458 +// line internal/php7/php7.y:4459 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -7132,7 +7133,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4468 +// line internal/php7/php7.y:4469 { yyVAL.node = yyDollar[2].node @@ -7142,13 +7143,13 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4476 +// line internal/php7/php7.y:4477 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4483 +// line internal/php7/php7.y:4484 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -7160,7 +7161,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4493 +// line internal/php7/php7.y:4494 { yyVAL.node = yyDollar[2].node @@ -7170,13 +7171,13 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4501 +// line internal/php7/php7.y:4502 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4508 +// line internal/php7/php7.y:4509 { pairList := yyDollar[1].node.(*ast.ParserSeparatedList) fistPair := pairList.Items[0].(*ast.ExprArrayItem) @@ -7189,19 +7190,19 @@ yydefault: } case 459: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:4522 +// line internal/php7/php7.y:4523 { yyVAL.node = &ast.ExprArrayItem{} } case 460: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4526 +// line internal/php7/php7.y:4527 { yyVAL.node = yyDollar[1].node } case 461: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4533 +// line internal/php7/php7.y:4534 { 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) @@ -7210,7 +7211,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4540 +// line internal/php7/php7.y:4541 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -7218,7 +7219,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4549 +// line internal/php7/php7.y:4550 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7231,7 +7232,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4560 +// line internal/php7/php7.y:4561 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7242,7 +7243,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4569 +// line internal/php7/php7.y:4570 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7254,13 +7255,14 @@ yydefault: Node: ast.Node{ Position: position.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), }, - Var: yyDollar[4].node, + AmpersandTkn: yyDollar[3].token, + Var: yyDollar[4].node, }, } } case 466: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4585 +// line internal/php7/php7.y:4587 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7270,13 +7272,14 @@ yydefault: Node: ast.Node{ Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), }, - Var: yyDollar[2].node, + AmpersandTkn: yyDollar[1].token, + Var: yyDollar[2].node, }, } } case 467: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4599 +// line internal/php7/php7.y:4602 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7288,7 +7291,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:4609 +// line internal/php7/php7.y:4612 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7310,7 +7313,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4629 +// line internal/php7/php7.y:4632 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7330,13 +7333,13 @@ yydefault: } case 470: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4650 +// line internal/php7/php7.y:4653 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 471: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4654 +// line internal/php7/php7.y:4657 { yyVAL.list = append( yyDollar[1].list, @@ -7351,13 +7354,13 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4667 +// line internal/php7/php7.y:4670 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 473: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4671 +// line internal/php7/php7.y:4674 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -7372,7 +7375,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4687 +// line internal/php7/php7.y:4690 { name := &ast.Identifier{ Node: ast.Node{ @@ -7391,7 +7394,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4704 +// line internal/php7/php7.y:4707 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7416,7 +7419,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4727 +// line internal/php7/php7.y:4730 { yyVAL.node = &ast.ExprPropertyFetch{ Node: ast.Node{ @@ -7446,7 +7449,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4755 +// line internal/php7/php7.y:4758 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7461,7 +7464,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4768 +// line internal/php7/php7.y:4771 { name := &ast.Identifier{ Node: ast.Node{ @@ -7483,7 +7486,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:4788 +// line internal/php7/php7.y:4791 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7510,7 +7513,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4813 +// line internal/php7/php7.y:4816 { yyVAL.node = yyDollar[2].node @@ -7520,7 +7523,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4824 +// line internal/php7/php7.y:4827 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -7532,7 +7535,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4834 +// line internal/php7/php7.y:4837 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -7555,7 +7558,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4855 +// line internal/php7/php7.y:4858 { _, err := strconv.Atoi(string(yyDollar[2].token.Value)) isInt := err == nil @@ -7583,7 +7586,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4881 +// line internal/php7/php7.y:4884 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -7602,7 +7605,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:4901 +// line internal/php7/php7.y:4904 { if yyDollar[4].token != nil { yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[4].token) @@ -7621,7 +7624,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4918 +// line internal/php7/php7.y:4921 { yyVAL.node = &ast.ExprEmpty{ Node: ast.Node{ @@ -7635,7 +7638,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4930 +// line internal/php7/php7.y:4933 { yyVAL.node = &ast.ExprInclude{ Node: ast.Node{ @@ -7647,7 +7650,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4940 +// line internal/php7/php7.y:4943 { yyVAL.node = &ast.ExprIncludeOnce{ Node: ast.Node{ @@ -7659,7 +7662,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4950 +// line internal/php7/php7.y:4953 { yyVAL.node = &ast.ExprEval{ Node: ast.Node{ @@ -7673,31 +7676,31 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4962 +// line internal/php7/php7.y:4965 { - yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ExprRequire{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + RequireTkn: yyDollar[1].token, + Expr: yyDollar[2].node, + } } case 491: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4972 +// line internal/php7/php7.y:4975 { - yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ExprRequireOnce{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + RequireOnceTkn: yyDollar[1].token, + Expr: yyDollar[2].node, + } } case 492: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4985 +// line internal/php7/php7.y:4988 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -7705,7 +7708,7 @@ yydefault: } case 493: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4991 +// line internal/php7/php7.y:4994 { 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) @@ -7714,7 +7717,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:5001 +// line internal/php7/php7.y:5004 { yyVAL.node = yyDollar[1].node } diff --git a/internal/php7/php7.y b/internal/php7/php7.y index 581403b..bd1fe44 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -1443,13 +1443,13 @@ foreach_variable: } | '&' variable { - $$ = &ast.ExprReference{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + AmpersandTkn: $1, + Var: $2, + } } | T_LIST '(' array_pair_list ')' { @@ -3581,13 +3581,13 @@ expr_without_variable: } | T_PRINT expr { - $$ = &ast.ExprPrint{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprPrint{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + PrintTkn: $1, + Expr: $2, + } } | T_YIELD { @@ -3759,23 +3759,24 @@ lexical_var: } | '&' T_VARIABLE { - identifier := &ast.Identifier{ + $$ = &ast.ExprReference{ Node: ast.Node{ - Position: position.NewTokenPosition($2), + Position: position.NewTokensPosition($1, $2), + }, + AmpersandTkn: $1, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + }, }, - IdentifierTkn: $2, - Value: $2.Value, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - $$ = &ast.ExprReference{ast.Node{}, variable} - - // save position - variable.GetNode().Position = position.NewTokenPosition($2) - $$.GetNode().Position = position.NewTokensPosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating(variable, token.Start, $2.SkippedTokens) } ; @@ -4577,7 +4578,8 @@ array_pair: Node: ast.Node{ Position: position.NewTokenNodePosition($3, $4), }, - Var: $4, + AmpersandTkn: $3, + Var: $4, }, } } @@ -4591,7 +4593,8 @@ array_pair: Node: ast.Node{ Position: position.NewTokenNodePosition($1, $2), }, - Var: $2, + AmpersandTkn: $1, + Var: $2, }, } } @@ -4960,23 +4963,23 @@ internal_functions_in_yacc: } | T_REQUIRE expr { - $$ = &ast.ExprRequire{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprRequire{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + RequireTkn: $1, + Expr: $2, + } } | T_REQUIRE_ONCE expr { - $$ = &ast.ExprRequireOnce{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprRequireOnce{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + RequireOnceTkn: $1, + Expr: $2, + } } ; diff --git a/pkg/ast/node.go b/pkg/ast/node.go index cadaa12..c6d4c8d 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -1288,7 +1288,8 @@ func (n *ExprPreInc) Accept(v NodeVisitor) { // ExprPrint node type ExprPrint struct { Node - Expr Vertex + PrintTkn *token.Token + Expr Vertex } func (n *ExprPrint) Accept(v NodeVisitor) { @@ -1310,7 +1311,8 @@ func (n *ExprPropertyFetch) Accept(v NodeVisitor) { // ExprReference node type ExprReference struct { Node - Var Vertex + AmpersandTkn *token.Token + Var Vertex } func (n *ExprReference) Accept(v NodeVisitor) { @@ -1320,7 +1322,8 @@ func (n *ExprReference) Accept(v NodeVisitor) { // ExprRequire node type ExprRequire struct { Node - Expr Vertex + RequireTkn *token.Token + Expr Vertex } func (n *ExprRequire) Accept(v NodeVisitor) { @@ -1330,7 +1333,8 @@ func (n *ExprRequire) Accept(v NodeVisitor) { // ExprRequireOnce node type ExprRequireOnce struct { Node - Expr Vertex + RequireOnceTkn *token.Token + Expr Vertex } func (n *ExprRequireOnce) Accept(v NodeVisitor) {