diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 51b160f..51ae856 100644 --- a/internal/php5/php5.go +++ b/internal/php5/php5.go @@ -347,7 +347,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php5/php5.y:6406 +// line internal/php5/php5.y:6423 type simpleIndirectReference struct { all []*ast.ExprVariable @@ -6895,33 +6895,37 @@ yydefault: yyDollar = yyS[yypt-1 : yypt+1] // line internal/php5/php5.y:4469 { - part := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} - yyVAL.list = []ast.Vertex{part} - - // save position - part.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) + yyVAL.list = []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + EncapsedStrTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, + } } case 350: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4477 + // line internal/php5/php5.y:4481 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4484 + // line internal/php5/php5.y:4488 { yyVAL.node = nil } case 352: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4488 + // line internal/php5/php5.y:4492 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4495 + // line internal/php5/php5.y:4499 { yyVAL.node = &ast.ScalarLnumber{ Node: ast.Node{ @@ -6933,7 +6937,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4505 + // line internal/php5/php5.y:4509 { yyVAL.node = &ast.ScalarDnumber{ Node: ast.Node{ @@ -6945,7 +6949,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4515 + // line internal/php5/php5.y:4519 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -6957,7 +6961,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4525 + // line internal/php5/php5.y:4529 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6969,7 +6973,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4535 + // line internal/php5/php5.y:4539 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6981,7 +6985,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4545 + // line internal/php5/php5.y:4549 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6993,7 +6997,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4555 + // line internal/php5/php5.y:4559 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7005,7 +7009,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4565 + // line internal/php5/php5.y:4569 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7017,7 +7021,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4575 + // line internal/php5/php5.y:4579 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7029,7 +7033,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4585 + // line internal/php5/php5.y:4589 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7041,33 +7045,40 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4595 + // line internal/php5/php5.y:4599 { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} - yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, []ast.Vertex{encapsed}} - - // save position - encapsed.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), + }, + OpenHeredocTkn: yyDollar[1].token, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + EncapsedStrTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + }, + }, + CloseHeredocTkn: yyDollar[3].token, + } } case 364: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4607 + // line internal/php5/php5.y:4618 { - yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, nil} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), + }, + OpenHeredocTkn: yyDollar[1].token, + CloseHeredocTkn: yyDollar[2].token, + } } case 365: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4620 + // line internal/php5/php5.y:4631 { target := &ast.Identifier{ Node: ast.Node{ @@ -7087,25 +7098,25 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4641 + // line internal/php5/php5.y:4652 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4648 + // line internal/php5/php5.y:4659 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4652 + // line internal/php5/php5.y:4663 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4656 + // line internal/php5/php5.y:4667 { name := &ast.NameName{ Node: ast.Node{ @@ -7120,7 +7131,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4669 + // line internal/php5/php5.y:4680 { name := &ast.NameRelative{ Node: ast.Node{ @@ -7137,7 +7148,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4684 + // line internal/php5/php5.y:4695 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -7153,7 +7164,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4698 + // line internal/php5/php5.y:4709 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -7167,7 +7178,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4710 + // line internal/php5/php5.y:4721 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -7180,13 +7191,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4721 + // line internal/php5/php5.y:4732 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4725 + // line internal/php5/php5.y:4736 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7198,13 +7209,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4735 + // line internal/php5/php5.y:4746 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4742 + // line internal/php5/php5.y:4753 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7217,7 +7228,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4753 + // line internal/php5/php5.y:4764 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7230,7 +7241,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4764 + // line internal/php5/php5.y:4775 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7243,7 +7254,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4775 + // line internal/php5/php5.y:4786 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7256,7 +7267,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4786 + // line internal/php5/php5.y:4797 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7269,7 +7280,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4797 + // line internal/php5/php5.y:4808 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7282,7 +7293,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4808 + // line internal/php5/php5.y:4819 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7295,7 +7306,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4819 + // line internal/php5/php5.y:4830 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -7307,7 +7318,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4829 + // line internal/php5/php5.y:4840 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -7319,7 +7330,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4839 + // line internal/php5/php5.y:4850 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7332,7 +7343,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4850 + // line internal/php5/php5.y:4861 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7345,7 +7356,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4861 + // line internal/php5/php5.y:4872 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7358,7 +7369,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4872 + // line internal/php5/php5.y:4883 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7371,7 +7382,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4883 + // line internal/php5/php5.y:4894 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7384,7 +7395,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4894 + // line internal/php5/php5.y:4905 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7397,7 +7408,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4905 + // line internal/php5/php5.y:4916 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7410,7 +7421,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4916 + // line internal/php5/php5.y:4927 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7423,7 +7434,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4927 + // line internal/php5/php5.y:4938 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7436,7 +7447,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4938 + // line internal/php5/php5.y:4949 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7449,7 +7460,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4949 + // line internal/php5/php5.y:4960 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7462,7 +7473,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4960 + // line internal/php5/php5.y:4971 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7475,7 +7486,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4971 + // line internal/php5/php5.y:4982 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7488,7 +7499,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4982 + // line internal/php5/php5.y:4993 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7501,7 +7512,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4993 + // line internal/php5/php5.y:5004 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7515,7 +7526,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5005 + // line internal/php5/php5.y:5016 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7528,7 +7539,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5016 + // line internal/php5/php5.y:5027 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7541,7 +7552,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5027 + // line internal/php5/php5.y:5038 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7554,7 +7565,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5038 + // line internal/php5/php5.y:5049 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7567,7 +7578,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5049 + // line internal/php5/php5.y:5060 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -7581,7 +7592,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5061 + // line internal/php5/php5.y:5072 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -7595,7 +7606,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5073 + // line internal/php5/php5.y:5084 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -7607,7 +7618,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5083 + // line internal/php5/php5.y:5094 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -7619,7 +7630,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5093 + // line internal/php5/php5.y:5104 { yyVAL.node = yyDollar[2].node @@ -7629,13 +7640,13 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5104 + // line internal/php5/php5.y:5115 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5108 + // line internal/php5/php5.y:5119 { name := &ast.NameName{ Node: ast.Node{ @@ -7650,7 +7661,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5121 + // line internal/php5/php5.y:5132 { name := &ast.NameRelative{ Node: ast.Node{ @@ -7667,7 +7678,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5136 + // line internal/php5/php5.y:5147 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -7683,7 +7694,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5153 + // line internal/php5/php5.y:5164 { name := &ast.Identifier{ Node: ast.Node{ @@ -7702,49 +7713,51 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5170 + // line internal/php5/php5.y:5181 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5174 + // line internal/php5/php5.y:5185 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5178 + // line internal/php5/php5.y:5189 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5182 + // line internal/php5/php5.y:5193 { - yyVAL.node = &ast.ScalarEncapsed{ast.Node{}, yyDollar[2].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), + }, + OpenQoteTkn: yyDollar[1].token, + Parts: yyDollar[2].list, + CloseQoteTkn: yyDollar[1].token, + } } case 419: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5192 + // line internal/php5/php5.y:5204 { - yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, yyDollar[2].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), + }, + OpenHeredocTkn: yyDollar[1].token, + Parts: yyDollar[2].list, + CloseHeredocTkn: yyDollar[3].token, + } } case 420: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5202 + // line internal/php5/php5.y:5215 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7756,13 +7769,13 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5215 + // line internal/php5/php5.y:5228 { yyVAL.list = nil } case 422: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5219 + // line internal/php5/php5.y:5232 { yyVAL.list = yyDollar[1].list @@ -7773,19 +7786,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5231 + // line internal/php5/php5.y:5244 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5235 + // line internal/php5/php5.y:5248 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5242 + // line internal/php5/php5.y:5255 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -7800,7 +7813,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5255 + // line internal/php5/php5.y:5268 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -7814,7 +7827,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5267 + // line internal/php5/php5.y:5280 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -7828,7 +7841,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5279 + // line internal/php5/php5.y:5292 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -7841,19 +7854,19 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5293 + // line internal/php5/php5.y:5306 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5297 + // line internal/php5/php5.y:5310 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5304 + // line internal/php5/php5.y:5317 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -7870,7 +7883,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5319 + // line internal/php5/php5.y:5332 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -7887,25 +7900,25 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5338 + // line internal/php5/php5.y:5351 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5346 + // line internal/php5/php5.y:5359 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5353 + // line internal/php5/php5.y:5366 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5360 + // line internal/php5/php5.y:5373 { yyVAL.node = yyDollar[1].node @@ -7963,25 +7976,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5416 + // line internal/php5/php5.y:5429 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5423 + // line internal/php5/php5.y:5436 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5427 + // line internal/php5/php5.y:5440 { yyVAL.list = []ast.Vertex{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5435 + // line internal/php5/php5.y:5448 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*ast.ExprMethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*ast.ExprPropertyFetch).Property @@ -7995,7 +8008,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5450 + // line internal/php5/php5.y:5463 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -8009,7 +8022,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5462 + // line internal/php5/php5.y:5475 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = []ast.Vertex{yyDollar[1].node, fetch} @@ -8023,7 +8036,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5477 + // line internal/php5/php5.y:5490 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, nil, nil, yyDollar[1].node.(*ast.ArgumentList)} @@ -8032,31 +8045,31 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5487 + // line internal/php5/php5.y:5500 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5491 + // line internal/php5/php5.y:5504 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5495 + // line internal/php5/php5.y:5508 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5502 + // line internal/php5/php5.y:5515 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5506 + // line internal/php5/php5.y:5519 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -8068,7 +8081,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5519 + // line internal/php5/php5.y:5532 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8081,7 +8094,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5530 + // line internal/php5/php5.y:5543 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8094,13 +8107,13 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5544 + // line internal/php5/php5.y:5557 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5551 + // line internal/php5/php5.y:5564 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8113,7 +8126,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5562 + // line internal/php5/php5.y:5575 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8126,31 +8139,31 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5576 + // line internal/php5/php5.y:5589 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5580 + // line internal/php5/php5.y:5593 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5584 + // line internal/php5/php5.y:5597 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5592 + // line internal/php5/php5.y:5605 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5596 + // line internal/php5/php5.y:5609 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -8162,13 +8175,13 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5606 + // line internal/php5/php5.y:5619 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5613 + // line internal/php5/php5.y:5626 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8181,7 +8194,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5624 + // line internal/php5/php5.y:5637 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8194,13 +8207,13 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5635 + // line internal/php5/php5.y:5648 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5643 + // line internal/php5/php5.y:5656 { name := &ast.Identifier{ Node: ast.Node{ @@ -8219,7 +8232,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5660 + // line internal/php5/php5.y:5673 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -8233,25 +8246,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5675 + // line internal/php5/php5.y:5688 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5679 + // line internal/php5/php5.y:5692 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5687 + // line internal/php5/php5.y:5700 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5691 + // line internal/php5/php5.y:5704 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8261,7 +8274,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5702 + // line internal/php5/php5.y:5715 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -8275,7 +8288,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5714 + // line internal/php5/php5.y:5727 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -8289,7 +8302,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5726 + // line internal/php5/php5.y:5739 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8299,7 +8312,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5737 + // line internal/php5/php5.y:5750 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -8311,7 +8324,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5747 + // line internal/php5/php5.y:5760 { yyVAL.node = yyDollar[2].node @@ -8324,7 +8337,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5761 + // line internal/php5/php5.y:5774 { n := &ast.ExprVariable{ast.Node{}, nil} yyVAL.simpleIndirectReference = simpleIndirectReference{[]*ast.ExprVariable{n}, n} @@ -8337,7 +8350,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5772 + // line internal/php5/php5.y:5785 { n := &ast.ExprVariable{ast.Node{}, nil} @@ -8354,7 +8367,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5790 + // line internal/php5/php5.y:5803 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}} @@ -8367,7 +8380,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5801 + // line internal/php5/php5.y:5814 { if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil { yyVAL.list = []ast.Vertex{} @@ -8377,7 +8390,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5813 + // line internal/php5/php5.y:5826 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} @@ -8389,7 +8402,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5823 + // line internal/php5/php5.y:5836 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, listNode} @@ -8405,19 +8418,19 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5837 + // line internal/php5/php5.y:5850 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} } case 481: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5845 + // line internal/php5/php5.y:5858 { yyVAL.list = []ast.Vertex{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5849 + // line internal/php5/php5.y:5862 { yyVAL.list = yyDollar[1].list @@ -8432,7 +8445,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5865 + // line internal/php5/php5.y:5878 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8447,7 +8460,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5878 + // line internal/php5/php5.y:5891 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8461,7 +8474,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5890 + // line internal/php5/php5.y:5903 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -8475,7 +8488,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5902 + // line internal/php5/php5.y:5915 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -8488,7 +8501,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:5913 + // line internal/php5/php5.y:5926 { reference := &ast.ExprReference{ast.Node{}, yyDollar[6].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, reference} @@ -8506,7 +8519,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5929 + // line internal/php5/php5.y:5942 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -8522,7 +8535,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5943 + // line internal/php5/php5.y:5956 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference} @@ -8539,7 +8552,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5958 + // line internal/php5/php5.y:5971 { reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -8554,45 +8567,49 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5974 + // line internal/php5/php5.y:5987 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5978 + // line internal/php5/php5.y:5991 { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} - yyVAL.list = append(yyDollar[1].list, encapsed) - - // save position - encapsed.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) - - // save comments - yylex.(*Parser).setFreeFloating(encapsed, token.Start, yyDollar[2].token.SkippedTokens) + yyVAL.list = append( + yyDollar[1].list, + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + EncapsedStrTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + }, + ) } case 493: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5989 + // line internal/php5/php5.y:6004 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5993 + // line internal/php5/php5.y:6008 { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} - yyVAL.list = []ast.Vertex{encapsed, yyDollar[2].node} - - // save position - encapsed.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(encapsed, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.list = []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + EncapsedStrTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, + yyDollar[2].node, + } } case 495: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6007 + // line internal/php5/php5.y:6024 { name := &ast.Identifier{ Node: ast.Node{ @@ -8611,7 +8628,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6024 + // line internal/php5/php5.y:6041 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -8633,7 +8650,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6044 + // line internal/php5/php5.y:6061 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -8661,7 +8678,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6070 + // line internal/php5/php5.y:6087 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -8676,7 +8693,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6083 + // line internal/php5/php5.y:6100 { name := &ast.Identifier{ Node: ast.Node{ @@ -8698,7 +8715,7 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:6103 + // line internal/php5/php5.y:6120 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -8722,7 +8739,7 @@ yydefault: } case 501: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6125 + // line internal/php5/php5.y:6142 { yyVAL.node = yyDollar[2].node @@ -8732,7 +8749,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6136 + // line internal/php5/php5.y:6153 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -8744,7 +8761,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6146 + // line internal/php5/php5.y:6163 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -8767,7 +8784,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6167 + // line internal/php5/php5.y:6184 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -8786,7 +8803,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6187 + // line internal/php5/php5.y:6204 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -8800,7 +8817,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6199 + // line internal/php5/php5.y:6216 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -8822,7 +8839,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6219 + // line internal/php5/php5.y:6236 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -8844,7 +8861,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6239 + // line internal/php5/php5.y:6256 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -8856,7 +8873,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6249 + // line internal/php5/php5.y:6266 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -8868,7 +8885,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6259 + // line internal/php5/php5.y:6276 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -8890,7 +8907,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6279 + // line internal/php5/php5.y:6296 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -8902,7 +8919,7 @@ yydefault: } case 512: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6289 + // line internal/php5/php5.y:6306 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -8914,13 +8931,13 @@ yydefault: } case 513: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6302 + // line internal/php5/php5.y:6319 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 514: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6306 + // line internal/php5/php5.y:6323 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -8929,19 +8946,19 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6316 + // line internal/php5/php5.y:6333 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6320 + // line internal/php5/php5.y:6337 { yyVAL.node = yyDollar[1].node } case 517: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6327 + // line internal/php5/php5.y:6344 { target := &ast.Identifier{ Node: ast.Node{ @@ -8961,7 +8978,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6345 + // line internal/php5/php5.y:6362 { target := &ast.Identifier{ Node: ast.Node{ @@ -8981,7 +8998,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6366 + // line internal/php5/php5.y:6383 { target := &ast.Identifier{ Node: ast.Node{ @@ -9001,7 +9018,7 @@ yydefault: } case 520: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6387 + // line internal/php5/php5.y:6404 { target := &ast.Identifier{ Node: ast.Node{ diff --git a/internal/php5/php5.y b/internal/php5/php5.y index e529812..383a19d 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -4467,11 +4467,15 @@ backticks_expr: } | T_ENCAPSED_AND_WHITESPACE { - part := &ast.ScalarEncapsedStringPart{ast.Node{}, $1.Value} - $$ = []ast.Vertex{part} - - // save position - part.GetNode().Position = position.NewTokenPosition($1) + $$ = []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + EncapsedStrTkn: $1, + Value: $1.Value, + }, + } } | encaps_list { @@ -4593,25 +4597,32 @@ common_scalar: } | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $2.Value} - $$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, []ast.Vertex{encapsed}} - - // save position - encapsed.GetNode().Position = position.NewTokenPosition($2) - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + OpenHeredocTkn: $1, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + EncapsedStrTkn: $2, + Value: $2.Value, + }, + }, + CloseHeredocTkn: $3, + } } | T_START_HEREDOC T_END_HEREDOC { - $$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, nil} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $2), + }, + OpenHeredocTkn: $1, + CloseHeredocTkn: $2, + } } ; @@ -5180,23 +5191,25 @@ scalar: } | '"' encaps_list '"' { - $$ = &ast.ScalarEncapsed{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + OpenQoteTkn: $1, + Parts: $2, + CloseQoteTkn: $1, + } } | T_START_HEREDOC encaps_list T_END_HEREDOC { - $$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, $2} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + OpenHeredocTkn: $1, + Parts: $2, + CloseHeredocTkn: $3, + } } | T_CLASS_C { @@ -5976,14 +5989,16 @@ encaps_list: } | encaps_list T_ENCAPSED_AND_WHITESPACE { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $2.Value} - $$ = append($1, encapsed) - - // save position - encapsed.GetNode().Position = position.NewTokenPosition($2) - - // save comments - yylex.(*Parser).setFreeFloating(encapsed, token.Start, $2.SkippedTokens) + $$ = append( + $1, + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + EncapsedStrTkn: $2, + Value: $2.Value, + }, + ) } | encaps_var { @@ -5991,14 +6006,16 @@ encaps_list: } | T_ENCAPSED_AND_WHITESPACE encaps_var { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $1.Value} - $$ = []ast.Vertex{encapsed, $2} - - // save position - encapsed.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating(encapsed, token.Start, $1.SkippedTokens) + $$ = []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + EncapsedStrTkn: $1, + Value: $1.Value, + }, + $2, + } } ; diff --git a/internal/php7/php7.go b/internal/php7/php7.go index 1ee2e1f..0ae49e3 100644 --- a/internal/php7/php7.go +++ b/internal/php7/php7.go @@ -347,7 +347,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php7/php7.y:4971 +// line internal/php7/php7.y:4988 // line yacctab:1 var yyExca = [...]int{ @@ -6482,33 +6482,37 @@ yydefault: yyDollar = yyS[yypt-1 : yypt+1] // line internal/php7/php7.y:3880 { - part := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} - yyVAL.list = []ast.Vertex{part} - - // save position - part.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) + yyVAL.list = []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + EncapsedStrTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, + } } case 396: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3888 + // line internal/php7/php7.y:3892 { yyVAL.list = yyDollar[1].list } case 397: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3895 + // line internal/php7/php7.y:3899 { yyVAL.node = nil } case 398: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3899 + // line internal/php7/php7.y:3903 { yyVAL.node = yyDollar[1].node } case 399: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3906 + // line internal/php7/php7.y:3910 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -6522,7 +6526,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3918 + // line internal/php7/php7.y:3922 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -6535,7 +6539,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3929 + // line internal/php7/php7.y:3933 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -6547,7 +6551,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3942 + // line internal/php7/php7.y:3946 { yyVAL.node = &ast.ScalarLnumber{ Node: ast.Node{ @@ -6559,7 +6563,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3952 + // line internal/php7/php7.y:3956 { yyVAL.node = &ast.ScalarDnumber{ Node: ast.Node{ @@ -6571,7 +6575,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3962 + // line internal/php7/php7.y:3966 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6583,7 +6587,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3972 + // line internal/php7/php7.y:3976 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6595,7 +6599,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3982 + // line internal/php7/php7.y:3986 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6607,7 +6611,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3992 + // line internal/php7/php7.y:3996 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6619,7 +6623,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4002 + // line internal/php7/php7.y:4006 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6631,7 +6635,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4012 + // line internal/php7/php7.y:4016 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6643,7 +6647,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4022 + // line internal/php7/php7.y:4026 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6655,7 +6659,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4032 + // line internal/php7/php7.y:4036 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6667,69 +6671,78 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4042 + // line internal/php7/php7.y:4046 { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} - yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, []ast.Vertex{encapsed}} - - // save position - encapsed.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), + }, + OpenHeredocTkn: yyDollar[1].token, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + EncapsedStrTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + }, + }, + CloseHeredocTkn: yyDollar[3].token, + } } case 413: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4054 + // line internal/php7/php7.y:4065 { - yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, nil} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), + }, + OpenHeredocTkn: yyDollar[1].token, + CloseHeredocTkn: yyDollar[2].token, + } } case 414: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4064 + // line internal/php7/php7.y:4075 { - yyVAL.node = &ast.ScalarEncapsed{ast.Node{}, yyDollar[2].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), + }, + OpenQoteTkn: yyDollar[1].token, + Parts: yyDollar[2].list, + CloseQoteTkn: yyDollar[1].token, + } } case 415: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4074 + // line internal/php7/php7.y:4086 { - yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, yyDollar[2].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), + }, + OpenHeredocTkn: yyDollar[1].token, + Parts: yyDollar[2].list, + CloseHeredocTkn: yyDollar[3].token, + } } case 416: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4084 + // line internal/php7/php7.y:4097 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4088 + // line internal/php7/php7.y:4101 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4095 + // line internal/php7/php7.y:4108 { yyVAL.node = &ast.ExprConstFetch{ast.Node{}, yyDollar[1].node} @@ -6741,7 +6754,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4105 + // line internal/php7/php7.y:4118 { target := &ast.Identifier{ Node: ast.Node{ @@ -6761,7 +6774,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4123 + // line internal/php7/php7.y:4136 { target := &ast.Identifier{ Node: ast.Node{ @@ -6781,43 +6794,43 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4144 + // line internal/php7/php7.y:4157 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4148 + // line internal/php7/php7.y:4161 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:4155 + // line internal/php7/php7.y:4168 { yyVAL.node = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4159 + // line internal/php7/php7.y:4172 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4166 + // line internal/php7/php7.y:4179 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4173 + // line internal/php7/php7.y:4186 { yyVAL.node = yyDollar[1].node } case 427: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4177 + // line internal/php7/php7.y:4190 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6834,19 +6847,19 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4192 + // line internal/php7/php7.y:4205 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4199 + // line internal/php7/php7.y:4212 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4203 + // line internal/php7/php7.y:4216 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6863,19 +6876,19 @@ yydefault: } case 431: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4218 + // line internal/php7/php7.y:4231 { yyVAL.node = yyDollar[1].node } case 432: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4225 + // line internal/php7/php7.y:4238 { yyVAL.node = yyDollar[1].node } case 433: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4229 + // line internal/php7/php7.y:4242 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6888,7 +6901,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4240 + // line internal/php7/php7.y:4253 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6901,7 +6914,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4251 + // line internal/php7/php7.y:4264 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6914,7 +6927,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4262 + // line internal/php7/php7.y:4275 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6927,25 +6940,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4273 + // line internal/php7/php7.y:4286 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4280 + // line internal/php7/php7.y:4293 { yyVAL.node = yyDollar[1].node } case 439: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4284 + // line internal/php7/php7.y:4297 { yyVAL.node = yyDollar[1].node } case 440: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4288 + // line internal/php7/php7.y:4301 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6958,7 +6971,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4302 + // line internal/php7/php7.y:4315 { name := &ast.Identifier{ Node: ast.Node{ @@ -6977,7 +6990,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4319 + // line internal/php7/php7.y:4332 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -6991,7 +7004,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4331 + // line internal/php7/php7.y:4344 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7003,7 +7016,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4344 + // line internal/php7/php7.y:4357 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7016,7 +7029,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4355 + // line internal/php7/php7.y:4368 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7029,13 +7042,13 @@ yydefault: } case 446: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4369 + // line internal/php7/php7.y:4382 { yyVAL.node = yyDollar[1].node } case 447: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4373 + // line internal/php7/php7.y:4386 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7048,7 +7061,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4384 + // line internal/php7/php7.y:4397 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7061,7 +7074,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4395 + // line internal/php7/php7.y:4408 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7074,7 +7087,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4406 + // line internal/php7/php7.y:4419 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7087,7 +7100,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4417 + // line internal/php7/php7.y:4430 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7100,7 +7113,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4431 + // line internal/php7/php7.y:4444 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -7112,7 +7125,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4441 + // line internal/php7/php7.y:4454 { yyVAL.node = yyDollar[2].node @@ -7122,13 +7135,13 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4449 + // line internal/php7/php7.y:4462 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4456 + // line internal/php7/php7.y:4469 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -7140,7 +7153,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4466 + // line internal/php7/php7.y:4479 { yyVAL.node = yyDollar[2].node @@ -7150,31 +7163,31 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4474 + // line internal/php7/php7.y:4487 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4481 + // line internal/php7/php7.y:4494 { yyVAL.list = yyDollar[1].list } case 459: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:4488 + // line internal/php7/php7.y:4501 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} } case 460: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4492 + // line internal/php7/php7.y:4505 { yyVAL.node = yyDollar[1].node } case 461: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4499 + // line internal/php7/php7.y:4512 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}} @@ -7187,7 +7200,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4510 + // line internal/php7/php7.y:4523 { if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil { yyVAL.list = []ast.Vertex{} @@ -7197,7 +7210,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4521 + // line internal/php7/php7.y:4534 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} @@ -7210,7 +7223,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4532 + // line internal/php7/php7.y:4545 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} @@ -7222,7 +7235,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4542 + // line internal/php7/php7.y:4555 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference} @@ -7238,7 +7251,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4556 + // line internal/php7/php7.y:4569 { reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -7252,7 +7265,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4568 + // line internal/php7/php7.y:4581 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, true, nil, yyDollar[2].node} @@ -7264,7 +7277,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:4578 + // line internal/php7/php7.y:4591 { // TODO: Cannot use list() as standalone expression listNode := &ast.ExprList{ast.Node{}, yyDollar[5].list} @@ -7283,7 +7296,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4595 + // line internal/php7/php7.y:4608 { // TODO: Cannot use list() as standalone expression listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -7300,45 +7313,49 @@ yydefault: } case 470: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4613 + // line internal/php7/php7.y:4626 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 471: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4617 + // line internal/php7/php7.y:4630 { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} - yyVAL.list = append(yyDollar[1].list, encapsed) - - // save position - encapsed.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) - - // save comments - yylex.(*Parser).setFreeFloating(encapsed, token.Start, yyDollar[2].token.SkippedTokens) + yyVAL.list = append( + yyDollar[1].list, + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + EncapsedStrTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + }, + ) } case 472: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4628 + // line internal/php7/php7.y:4643 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 473: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4632 + // line internal/php7/php7.y:4647 { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} - yyVAL.list = []ast.Vertex{encapsed, yyDollar[2].node} - - // save position - encapsed.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(encapsed, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.list = []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + EncapsedStrTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, + yyDollar[2].node, + } } case 474: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4646 + // line internal/php7/php7.y:4663 { name := &ast.Identifier{ Node: ast.Node{ @@ -7357,7 +7374,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4663 + // line internal/php7/php7.y:4680 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -7379,7 +7396,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4683 + // line internal/php7/php7.y:4700 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -7407,7 +7424,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4709 + // line internal/php7/php7.y:4726 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7422,7 +7439,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4722 + // line internal/php7/php7.y:4739 { name := &ast.Identifier{ Node: ast.Node{ @@ -7444,7 +7461,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:4742 + // line internal/php7/php7.y:4759 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -7468,7 +7485,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4764 + // line internal/php7/php7.y:4781 { yyVAL.node = yyDollar[2].node @@ -7478,7 +7495,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4775 + // line internal/php7/php7.y:4792 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -7490,7 +7507,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4785 + // line internal/php7/php7.y:4802 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -7513,7 +7530,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4806 + // line internal/php7/php7.y:4823 { _, err := strconv.Atoi(string(yyDollar[2].token.Value)) isInt := err == nil @@ -7540,7 +7557,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4831 + // line internal/php7/php7.y:4848 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -7559,7 +7576,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:4851 + // line internal/php7/php7.y:4868 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -7577,7 +7594,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4867 + // line internal/php7/php7.y:4884 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -7599,7 +7616,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4887 + // line internal/php7/php7.y:4904 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -7611,7 +7628,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4897 + // line internal/php7/php7.y:4914 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -7623,7 +7640,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4907 + // line internal/php7/php7.y:4924 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -7645,7 +7662,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4927 + // line internal/php7/php7.y:4944 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -7657,7 +7674,7 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4937 + // line internal/php7/php7.y:4954 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -7669,13 +7686,13 @@ yydefault: } case 492: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4950 + // line internal/php7/php7.y:4967 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 493: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4954 + // line internal/php7/php7.y:4971 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -7684,7 +7701,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4964 + // line internal/php7/php7.y:4981 { yyVAL.node = yyDollar[1].node } diff --git a/internal/php7/php7.y b/internal/php7/php7.y index d171ae7..f896af8 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -3878,11 +3878,15 @@ backticks_expr: } | T_ENCAPSED_AND_WHITESPACE { - part := &ast.ScalarEncapsedStringPart{ast.Node{}, $1.Value} - $$ = []ast.Vertex{part} - - // save position - part.GetNode().Position = position.NewTokenPosition($1) + $$ = []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + EncapsedStrTkn: $1, + Value: $1.Value, + }, + } } | encaps_list { @@ -4040,45 +4044,54 @@ scalar: } | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $2.Value} - $$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, []ast.Vertex{encapsed}} - - // save position - encapsed.GetNode().Position = position.NewTokenPosition($2) - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + OpenHeredocTkn: $1, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + EncapsedStrTkn: $2, + Value: $2.Value, + }, + }, + CloseHeredocTkn: $3, + } } | T_START_HEREDOC T_END_HEREDOC { - $$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, nil} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $2), + }, + OpenHeredocTkn: $1, + CloseHeredocTkn: $2, + } } | '"' encaps_list '"' { - $$ = &ast.ScalarEncapsed{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + OpenQoteTkn: $1, + Parts: $2, + CloseQoteTkn: $1, + } } | T_START_HEREDOC encaps_list T_END_HEREDOC { - $$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, $2} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + OpenHeredocTkn: $1, + Parts: $2, + CloseHeredocTkn: $3, + } } | dereferencable_scalar { @@ -4615,14 +4628,16 @@ encaps_list: } | encaps_list T_ENCAPSED_AND_WHITESPACE { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $2.Value} - $$ = append($1, encapsed) - - // save position - encapsed.GetNode().Position = position.NewTokenPosition($2) - - // save comments - yylex.(*Parser).setFreeFloating(encapsed, token.Start, $2.SkippedTokens) + $$ = append( + $1, + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + EncapsedStrTkn: $2, + Value: $2.Value, + }, + ) } | encaps_var { @@ -4630,14 +4645,16 @@ encaps_list: } | T_ENCAPSED_AND_WHITESPACE encaps_var { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $1.Value} - $$ = []ast.Vertex{encapsed, $2} - - // save position - encapsed.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating(encapsed, token.Start, $1.SkippedTokens) + $$ = []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + EncapsedStrTkn: $1, + Value: $1.Value, + }, + $2, + } } ; diff --git a/pkg/ast/node.go b/pkg/ast/node.go index 5e6e373..a1b04f4 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -126,7 +126,9 @@ func (n *ScalarDnumber) Accept(v NodeVisitor) { // ScalarEncapsed node type ScalarEncapsed struct { Node - Parts []Vertex + OpenQoteTkn *token.Token + Parts []Vertex + CloseQoteTkn *token.Token } func (n *ScalarEncapsed) Accept(v NodeVisitor) { @@ -136,7 +138,8 @@ func (n *ScalarEncapsed) Accept(v NodeVisitor) { // ScalarEncapsedStringPart node type ScalarEncapsedStringPart struct { Node - Value []byte + EncapsedStrTkn *token.Token + Value []byte } func (n *ScalarEncapsedStringPart) Accept(v NodeVisitor) { @@ -146,8 +149,9 @@ func (n *ScalarEncapsedStringPart) Accept(v NodeVisitor) { // ScalarHeredoc node type ScalarHeredoc struct { Node - Label []byte - Parts []Vertex + OpenHeredocTkn *token.Token + Parts []Vertex + CloseHeredocTkn *token.Token } func (n *ScalarHeredoc) Accept(v NodeVisitor) { diff --git a/pkg/ast/visitor/dump.go b/pkg/ast/visitor/dump.go index 7e11d72..15c3226 100644 --- a/pkg/ast/visitor/dump.go +++ b/pkg/ast/visitor/dump.go @@ -1224,9 +1224,6 @@ func (v *Dump) ScalarHeredoc(n *ast.ScalarHeredoc) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ScalarHeredoc{\n") v.printNode(n.GetNode()) - - v.printIndent(v.indent) - v.print(fmt.Sprintf("Label: %q,\n", n.Label)) } func (v *Dump) ScalarLnumber(n *ast.ScalarLnumber) { diff --git a/pkg/printer/pretty_printer.go b/pkg/printer/pretty_printer.go index 6caa793..b1e411f 100644 --- a/pkg/printer/pretty_printer.go +++ b/pkg/printer/pretty_printer.go @@ -558,7 +558,7 @@ func (p *PrettyPrinter) printScalarEncapsed(n ast.Vertex) { func (p *PrettyPrinter) printScalarHeredoc(n ast.Vertex) { nn := n.(*ast.ScalarHeredoc) - io.WriteString(p.w, string(nn.Label)) + io.WriteString(p.w, string(nn.OpenHeredocTkn.Value)) for _, part := range nn.Parts { switch part.(type) { @@ -571,7 +571,7 @@ func (p *PrettyPrinter) printScalarHeredoc(n ast.Vertex) { } } - io.WriteString(p.w, strings.Trim(string(nn.Label), "<\"'\n")) + io.WriteString(p.w, strings.Trim(string(nn.OpenHeredocTkn.Value), "<\"'\n")) } func (p *PrettyPrinter) printScalarMagicConstant(n ast.Vertex) { diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index 7f5fae5..4925c35 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -687,7 +687,7 @@ func (p *Printer) printScalarHeredoc(n ast.Vertex) { p.printFreeFloatingOrDefault(nn, token.Start, p.bufStart) p.bufStart = "" - p.write(nn.Label) + p.write(nn.OpenHeredocTkn.Value) for _, part := range nn.Parts { switch part.(type) { @@ -710,7 +710,7 @@ func (p *Printer) printScalarHeredoc(n ast.Vertex) { } } - p.write([]byte(strings.Trim(string(nn.Label), "<\"'\n"))) + p.write([]byte(strings.Trim(string(nn.OpenHeredocTkn.Value), "<\"'\n"))) p.printFreeFloating(nn, token.End) }