From 86afa319f3ad5d8cb8a88371d74c8c1a7260e34e Mon Sep 17 00:00:00 2001 From: z7zmey Date: Tue, 25 Dec 2018 10:49:44 +0200 Subject: [PATCH 01/12] #70: [php7] inherit meta.Data at stmt.Use, stmt.GroupUse, stmt.UseList, name.Name --- php7/php7.go | 841 +++++++++++++++-------------- php7/php7.y | 25 +- visitor/dumper_test.go | 4 +- visitor/go_dumper_test.go | 26 +- visitor/json_dumper_test.go | 2 +- visitor/pretty_json_dumper_test.go | 14 +- 6 files changed, 477 insertions(+), 435 deletions(-) diff --git a/php7/php7.go b/php7/php7.go index 4fb4498..6718883 100644 --- a/php7/php7.go +++ b/php7/php7.go @@ -348,7 +348,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php7/php7.y:5456 +//line php7/php7.y:5477 //line yacctab:1 var yyExca = [...]int{ @@ -2643,11 +2643,14 @@ yydefault: // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + // save comments + yyDollar[1].list[0].GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 83: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:401 + //line php7/php7.y:404 { yyVAL.node = name.NewRelative(yyDollar[3].list) @@ -2662,7 +2665,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:414 + //line php7/php7.y:417 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) @@ -2676,7 +2679,7 @@ yydefault: } case 85: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:429 + //line php7/php7.y:432 { // error yyVAL.node = nil @@ -2685,7 +2688,7 @@ yydefault: } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:436 + //line php7/php7.y:439 { yyVAL.node = yyDollar[1].node @@ -2693,7 +2696,7 @@ yydefault: } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:442 + //line php7/php7.y:445 { yyVAL.node = yyDollar[1].node @@ -2701,7 +2704,7 @@ yydefault: } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:448 + //line php7/php7.y:451 { yyVAL.node = yyDollar[1].node @@ -2709,7 +2712,7 @@ yydefault: } case 89: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:454 + //line php7/php7.y:457 { yyVAL.node = yyDollar[1].node @@ -2717,7 +2720,7 @@ yydefault: } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:460 + //line php7/php7.y:463 { yyVAL.node = yyDollar[1].node @@ -2725,7 +2728,7 @@ yydefault: } case 91: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:466 + //line php7/php7.y:469 { yyVAL.node = stmt.NewHaltCompiler() @@ -2745,7 +2748,7 @@ yydefault: } case 92: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:484 + //line php7/php7.y:487 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, nil) @@ -2763,7 +2766,7 @@ yydefault: } case 93: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:500 + //line php7/php7.y:503 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, yyDollar[4].list) @@ -2781,7 +2784,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:516 + //line php7/php7.y:519 { yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) @@ -2797,7 +2800,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:530 + //line php7/php7.y:533 { yyVAL.node = yyDollar[2].node @@ -2813,7 +2816,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:544 + //line php7/php7.y:547 { yyVAL.node = yyDollar[3].node.(*stmt.GroupUse).SetUseType(yyDollar[2].node) @@ -2829,7 +2832,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:558 + //line php7/php7.y:561 { yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) @@ -2845,7 +2848,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:572 + //line php7/php7.y:575 { yyVAL.node = stmt.NewUseList(yyDollar[2].node, yyDollar[3].list) @@ -2861,7 +2864,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:586 + //line php7/php7.y:589 { yyVAL.node = stmt.NewConstList(yyDollar[2].list) @@ -2877,7 +2880,7 @@ yydefault: } case 100: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:603 + //line php7/php7.y:606 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -2891,7 +2894,7 @@ yydefault: } case 101: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:615 + //line php7/php7.y:618 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -2905,7 +2908,7 @@ yydefault: } case 102: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:630 + //line php7/php7.y:633 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) @@ -2923,11 +2926,13 @@ yydefault: } yyDollar[6].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].list[0].GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(name.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 103: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:650 + //line php7/php7.y:655 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -2947,11 +2952,13 @@ yydefault: } yyDollar[7].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[2].list[0].GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(name.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 104: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:675 + //line php7/php7.y:682 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) @@ -2969,11 +2976,13 @@ yydefault: } yyDollar[6].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].list[0].GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(name.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 105: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:695 + //line php7/php7.y:704 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -2993,23 +3002,25 @@ yydefault: } yyDollar[7].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[2].list[0].GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(name.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 106: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:720 + //line php7/php7.y:731 { yyVAL.token = nil } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:724 + //line php7/php7.y:735 { yyVAL.token = yyDollar[1].token } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:731 + //line php7/php7.y:742 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3020,7 +3031,7 @@ yydefault: } case 109: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:740 + //line php7/php7.y:751 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3028,7 +3039,7 @@ yydefault: } case 110: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:749 + //line php7/php7.y:760 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3039,7 +3050,7 @@ yydefault: } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:758 + //line php7/php7.y:769 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3047,7 +3058,7 @@ yydefault: } case 112: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:767 + //line php7/php7.y:778 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3058,7 +3069,7 @@ yydefault: } case 113: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:776 + //line php7/php7.y:787 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3066,23 +3077,27 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:785 + //line php7/php7.y:796 { yyVAL.node = yyDollar[1].node + yyDollar[1].node.(*stmt.Use).Use.GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 115: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:791 + //line php7/php7.y:804 { yyVAL.node = yyDollar[2].node.(*stmt.Use).SetUseType(yyDollar[1].node) + yyDollar[1].node.GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:800 + //line php7/php7.y:815 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -3091,11 +3106,13 @@ yydefault: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + yyDollar[1].list[0].GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(name.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 117: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:811 + //line php7/php7.y:828 { name := name.NewName(yyDollar[1].list) alias := node.NewIdentifier(yyDollar[3].token.Value) @@ -3110,31 +3127,35 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yyDollar[1].list[0].GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(name.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:831 + //line php7/php7.y:850 { yyVAL.node = yyDollar[1].node + yyDollar[1].node.(*stmt.Use).Use.GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 119: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:837 + //line php7/php7.y:858 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.UseLeadingNsSeparatorToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.UseLeadingNsSeparatorToken) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:850 + //line php7/php7.y:871 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3145,7 +3166,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:859 + //line php7/php7.y:880 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3153,7 +3174,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:868 + //line php7/php7.y:889 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3163,7 +3184,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:876 + //line php7/php7.y:897 { yyVAL.list = []node.Node{} @@ -3171,7 +3192,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:885 + //line php7/php7.y:906 { // error yyVAL.node = nil @@ -3180,7 +3201,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:892 + //line php7/php7.y:913 { yyVAL.node = yyDollar[1].node @@ -3188,7 +3209,7 @@ yydefault: } case 126: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:898 + //line php7/php7.y:919 { yyVAL.node = yyDollar[1].node @@ -3196,7 +3217,7 @@ yydefault: } case 127: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:904 + //line php7/php7.y:925 { yyVAL.node = yyDollar[1].node @@ -3204,7 +3225,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:910 + //line php7/php7.y:931 { yyVAL.node = yyDollar[1].node @@ -3212,7 +3233,7 @@ yydefault: } case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:916 + //line php7/php7.y:937 { yyVAL.node = yyDollar[1].node @@ -3220,7 +3241,7 @@ yydefault: } case 130: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:922 + //line php7/php7.y:943 { yyVAL.node = stmt.NewHaltCompiler() @@ -3238,7 +3259,7 @@ yydefault: } case 131: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:940 + //line php7/php7.y:961 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -3253,7 +3274,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:953 + //line php7/php7.y:974 { yyVAL.node = yyDollar[1].node @@ -3261,7 +3282,7 @@ yydefault: } case 133: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:959 + //line php7/php7.y:980 { yyVAL.node = yyDollar[1].node @@ -3269,7 +3290,7 @@ yydefault: } case 134: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:965 + //line php7/php7.y:986 { switch n := yyDollar[5].node.(type) { case *stmt.While: @@ -3292,7 +3313,7 @@ yydefault: } case 135: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:986 + //line php7/php7.y:1007 { yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[5].node) @@ -3311,7 +3332,7 @@ yydefault: } case 136: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1003 + //line php7/php7.y:1024 { switch n := yyDollar[9].node.(type) { case *stmt.For: @@ -3340,7 +3361,7 @@ yydefault: } case 137: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1030 + //line php7/php7.y:1051 { switch n := yyDollar[5].node.(type) { case *stmt.Switch: @@ -3365,7 +3386,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1053 + //line php7/php7.y:1074 { yyVAL.node = stmt.NewBreak(yyDollar[2].node) @@ -3381,7 +3402,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1067 + //line php7/php7.y:1088 { yyVAL.node = stmt.NewContinue(yyDollar[2].node) @@ -3397,7 +3418,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1081 + //line php7/php7.y:1102 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) @@ -3413,7 +3434,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1095 + //line php7/php7.y:1116 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) @@ -3429,7 +3450,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1109 + //line php7/php7.y:1130 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) @@ -3445,7 +3466,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1123 + //line php7/php7.y:1144 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) @@ -3462,7 +3483,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1138 + //line php7/php7.y:1159 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) @@ -3476,7 +3497,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1150 + //line php7/php7.y:1171 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) @@ -3491,7 +3512,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1163 + //line php7/php7.y:1184 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) @@ -3513,7 +3534,7 @@ yydefault: } case 147: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1183 + //line php7/php7.y:1204 { switch n := yyDollar[7].node.(type) { case *stmt.Foreach: @@ -3539,7 +3560,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1207 + //line php7/php7.y:1228 { switch n := yyDollar[9].node.(type) { case *stmt.Foreach: @@ -3568,7 +3589,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1234 + //line php7/php7.y:1255 { yyVAL.node = yyDollar[5].node yyVAL.node.(*stmt.Declare).Consts = yyDollar[3].list @@ -3585,7 +3606,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1249 + //line php7/php7.y:1270 { yyVAL.node = stmt.NewNop() @@ -3600,7 +3621,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1262 + //line php7/php7.y:1283 { if yyDollar[6].node == nil { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3619,7 +3640,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1279 + //line php7/php7.y:1300 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) @@ -3635,7 +3656,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1293 + //line php7/php7.y:1314 { label := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewGoto(label) @@ -3654,7 +3675,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1310 + //line php7/php7.y:1331 { label := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewLabel(label) @@ -3671,7 +3692,7 @@ yydefault: } case 155: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1327 + //line php7/php7.y:1348 { yyVAL.list = []node.Node{} @@ -3679,7 +3700,7 @@ yydefault: } case 156: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1333 + //line php7/php7.y:1354 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[5].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -3704,7 +3725,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1358 + //line php7/php7.y:1379 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3712,7 +3733,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1364 + //line php7/php7.y:1385 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3723,7 +3744,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1376 + //line php7/php7.y:1397 { yyVAL.node = nil @@ -3731,7 +3752,7 @@ yydefault: } case 160: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1382 + //line php7/php7.y:1403 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) @@ -3747,7 +3768,7 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1399 + //line php7/php7.y:1420 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3755,7 +3776,7 @@ yydefault: } case 162: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1405 + //line php7/php7.y:1426 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3766,7 +3787,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1417 + //line php7/php7.y:1438 { yyVAL.node = yyDollar[1].node @@ -3774,7 +3795,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:1426 + //line php7/php7.y:1447 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewFunction(name, yyDollar[2].token != nil, yyDollar[6].list, yyDollar[8].node, yyDollar[10].list, yyDollar[4].str) @@ -3798,31 +3819,31 @@ yydefault: } case 165: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1452 + //line php7/php7.y:1473 { yyVAL.token = nil } case 166: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1456 + //line php7/php7.y:1477 { yyVAL.token = yyDollar[1].token } case 167: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1463 + //line php7/php7.y:1484 { yyVAL.token = nil } case 168: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1467 + //line php7/php7.y:1488 { yyVAL.token = yyDollar[1].token } case 169: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1474 + //line php7/php7.y:1495 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewClass(name, yyDollar[1].list, nil, yyDollar[4].ClassExtends, yyDollar[5].ClassImplements, yyDollar[8].list, yyDollar[6].str) @@ -3841,7 +3862,7 @@ yydefault: } case 170: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:1491 + //line php7/php7.y:1512 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewClass(name, nil, nil, yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) @@ -3860,7 +3881,7 @@ yydefault: } case 171: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1511 + //line php7/php7.y:1532 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3868,7 +3889,7 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1517 + //line php7/php7.y:1538 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3876,7 +3897,7 @@ yydefault: } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1526 + //line php7/php7.y:1547 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3890,7 +3911,7 @@ yydefault: } case 174: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1538 + //line php7/php7.y:1559 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3904,7 +3925,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1553 + //line php7/php7.y:1574 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewTrait(name, yyDollar[5].list, yyDollar[3].str) @@ -3923,7 +3944,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1573 + //line php7/php7.y:1594 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewInterface(name, yyDollar[3].InterfaceExtends, yyDollar[6].list, yyDollar[4].str) @@ -3942,7 +3963,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1593 + //line php7/php7.y:1614 { yyVAL.ClassExtends = nil @@ -3950,7 +3971,7 @@ yydefault: } case 178: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1599 + //line php7/php7.y:1620 { yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) @@ -3964,7 +3985,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1614 + //line php7/php7.y:1635 { yyVAL.InterfaceExtends = nil @@ -3972,7 +3993,7 @@ yydefault: } case 180: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1620 + //line php7/php7.y:1641 { yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) @@ -3986,7 +4007,7 @@ yydefault: } case 181: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1635 + //line php7/php7.y:1656 { yyVAL.ClassImplements = nil @@ -3994,7 +4015,7 @@ yydefault: } case 182: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1641 + //line php7/php7.y:1662 { yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) @@ -4008,7 +4029,7 @@ yydefault: } case 183: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1656 + //line php7/php7.y:1677 { yyVAL.node = yyDollar[1].node @@ -4016,7 +4037,7 @@ yydefault: } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1662 + //line php7/php7.y:1683 { yyVAL.node = expr.NewReference(yyDollar[2].node) @@ -4030,7 +4051,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1674 + //line php7/php7.y:1695 { yyVAL.node = expr.NewList(yyDollar[3].list) @@ -4046,7 +4067,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1688 + //line php7/php7.y:1709 { yyVAL.node = expr.NewShortList(yyDollar[2].list) @@ -4061,7 +4082,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1704 + //line php7/php7.y:1725 { yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) @@ -4072,7 +4093,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1713 + //line php7/php7.y:1734 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) @@ -4091,7 +4112,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1733 + //line php7/php7.y:1754 { yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node) @@ -4102,7 +4123,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1742 + //line php7/php7.y:1763 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList) @@ -4121,7 +4142,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1762 + //line php7/php7.y:1783 { yyVAL.node = stmt.NewDeclare(nil, yyDollar[1].node, false) @@ -4132,7 +4153,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1771 + //line php7/php7.y:1792 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewDeclare(nil, stmtList, true) @@ -4151,7 +4172,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1791 + //line php7/php7.y:1812 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4168,7 +4189,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1806 + //line php7/php7.y:1827 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4187,7 +4208,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1823 + //line php7/php7.y:1844 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -4206,7 +4227,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1840 + //line php7/php7.y:1861 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -4228,7 +4249,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1863 + //line php7/php7.y:1884 { yyVAL.list = []node.Node{} @@ -4236,7 +4257,7 @@ yydefault: } case 198: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1869 + //line php7/php7.y:1890 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yyVAL.list = append(yyDollar[1].list, _case) @@ -4253,7 +4274,7 @@ yydefault: } case 199: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1884 + //line php7/php7.y:1905 { _default := stmt.NewDefault(yyDollar[4].list) yyVAL.list = append(yyDollar[1].list, _default) @@ -4270,19 +4291,19 @@ yydefault: } case 200: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1902 + //line php7/php7.y:1923 { yyVAL.token = yyDollar[1].token } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1906 + //line php7/php7.y:1927 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1913 + //line php7/php7.y:1934 { yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) @@ -4293,7 +4314,7 @@ yydefault: } case 203: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1922 + //line php7/php7.y:1943 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltWhile(nil, stmtList) @@ -4312,7 +4333,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1942 + //line php7/php7.y:1963 { yyVAL.node = stmt.NewIf(yyDollar[3].node, yyDollar[5].node, nil, nil) @@ -4328,7 +4349,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1956 + //line php7/php7.y:1977 { _elseIf := stmt.NewElseIf(yyDollar[4].node, yyDollar[6].node) yyVAL.node = yyDollar[1].node.(*stmt.If).AddElseIf(_elseIf) @@ -4346,7 +4367,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1975 + //line php7/php7.y:1996 { yyVAL.node = yyDollar[1].node @@ -4354,7 +4375,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1981 + //line php7/php7.y:2002 { _else := stmt.NewElse(yyDollar[3].node) yyVAL.node = yyDollar[1].node.(*stmt.If).SetElse(_else) @@ -4370,7 +4391,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1998 + //line php7/php7.y:2019 { stmts := stmt.NewStmtList(yyDollar[6].list) yyVAL.node = stmt.NewAltIf(yyDollar[3].node, stmts, nil, nil) @@ -4389,7 +4410,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:2015 + //line php7/php7.y:2036 { stmts := stmt.NewStmtList(yyDollar[7].list) _elseIf := stmt.NewAltElseIf(yyDollar[4].node, stmts) @@ -4409,7 +4430,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2036 + //line php7/php7.y:2057 { yyVAL.node = yyDollar[1].node @@ -4425,7 +4446,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2050 + //line php7/php7.y:2071 { stmts := stmt.NewStmtList(yyDollar[4].list) _else := stmt.NewAltElse(stmts) @@ -4447,7 +4468,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2073 + //line php7/php7.y:2094 { yyVAL.list = yyDollar[1].list @@ -4455,7 +4476,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2079 + //line php7/php7.y:2100 { yyVAL.list = nil @@ -4463,7 +4484,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2088 + //line php7/php7.y:2109 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4471,7 +4492,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2094 + //line php7/php7.y:2115 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4482,7 +4503,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2106 + //line php7/php7.y:2127 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4515,7 +4536,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2137 + //line php7/php7.y:2158 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4549,7 +4570,7 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2172 + //line php7/php7.y:2193 { yyVAL.node = nil @@ -4557,7 +4578,7 @@ yydefault: } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2178 + //line php7/php7.y:2199 { yyVAL.node = yyDollar[1].node @@ -4565,7 +4586,7 @@ yydefault: } case 220: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2187 + //line php7/php7.y:2208 { yyVAL.node = yyDollar[1].node @@ -4573,7 +4594,7 @@ yydefault: } case 221: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2193 + //line php7/php7.y:2214 { yyVAL.node = node.NewNullable(yyDollar[2].node) @@ -4587,7 +4608,7 @@ yydefault: } case 222: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2208 + //line php7/php7.y:2229 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4601,7 +4622,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2220 + //line php7/php7.y:2241 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4615,7 +4636,7 @@ yydefault: } case 224: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2232 + //line php7/php7.y:2253 { yyVAL.node = yyDollar[1].node @@ -4623,7 +4644,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2241 + //line php7/php7.y:2262 { yyVAL.node = nil @@ -4631,7 +4652,7 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2247 + //line php7/php7.y:2268 { yyVAL.node = yyDollar[2].node @@ -4642,7 +4663,7 @@ yydefault: } case 227: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2259 + //line php7/php7.y:2280 { yyVAL.node = node.NewArgumentList(nil) @@ -4657,7 +4678,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2272 + //line php7/php7.y:2293 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -4676,7 +4697,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2292 + //line php7/php7.y:2313 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4684,7 +4705,7 @@ yydefault: } case 230: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2298 + //line php7/php7.y:2319 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4695,7 +4716,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2310 + //line php7/php7.y:2331 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) @@ -4706,7 +4727,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2319 + //line php7/php7.y:2340 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4720,7 +4741,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2334 + //line php7/php7.y:2355 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4731,7 +4752,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2343 + //line php7/php7.y:2364 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4739,7 +4760,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2352 + //line php7/php7.y:2373 { yyVAL.node = yyDollar[1].node @@ -4747,7 +4768,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2361 + //line php7/php7.y:2382 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4758,7 +4779,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2370 + //line php7/php7.y:2391 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4766,7 +4787,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2379 + //line php7/php7.y:2400 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4785,7 +4806,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2396 + //line php7/php7.y:2417 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4805,7 +4826,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2417 + //line php7/php7.y:2438 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4813,7 +4834,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2423 + //line php7/php7.y:2444 { yyVAL.list = []node.Node{} @@ -4821,7 +4842,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2432 + //line php7/php7.y:2453 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4836,7 +4857,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2445 + //line php7/php7.y:2466 { yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) @@ -4852,7 +4873,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2459 + //line php7/php7.y:2480 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].node) @@ -4866,7 +4887,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-10 : yypt+1] - //line php7/php7.y:2471 + //line php7/php7.y:2492 { name := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewClassMethod(name, yyDollar[1].list, yyDollar[3].token != nil, yyDollar[7].list, yyDollar[9].node, yyDollar[10].node, yyDollar[5].str) @@ -4892,7 +4913,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2498 + //line php7/php7.y:2519 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4900,7 +4921,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2504 + //line php7/php7.y:2525 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4911,7 +4932,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2516 + //line php7/php7.y:2537 { yyVAL.node = stmt.NewNop() @@ -4925,7 +4946,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2529 + //line php7/php7.y:2550 { yyVAL.node = stmt.NewTraitAdaptationList(nil) @@ -4939,7 +4960,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2541 + //line php7/php7.y:2562 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -4953,7 +4974,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2556 + //line php7/php7.y:2577 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4961,7 +4982,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2562 + //line php7/php7.y:2583 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4969,7 +4990,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2571 + //line php7/php7.y:2592 { yyVAL.node = yyDollar[1].node @@ -4981,7 +5002,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2581 + //line php7/php7.y:2602 { yyVAL.node = yyDollar[1].node @@ -4993,7 +5014,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2594 + //line php7/php7.y:2615 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -5007,7 +5028,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2609 + //line php7/php7.y:2630 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -5024,7 +5045,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2624 + //line php7/php7.y:2645 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -5041,7 +5062,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2639 + //line php7/php7.y:2660 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -5058,7 +5079,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2654 + //line php7/php7.y:2675 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -5072,7 +5093,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2669 + //line php7/php7.y:2690 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -5088,7 +5109,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2683 + //line php7/php7.y:2704 { yyVAL.node = yyDollar[1].node @@ -5096,7 +5117,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2692 + //line php7/php7.y:2713 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -5113,7 +5134,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2710 + //line php7/php7.y:2731 { yyVAL.node = stmt.NewNop() @@ -5128,7 +5149,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2723 + //line php7/php7.y:2744 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -5143,7 +5164,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2739 + //line php7/php7.y:2760 { yyVAL.list = yyDollar[1].list @@ -5151,7 +5172,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2745 + //line php7/php7.y:2766 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -5166,7 +5187,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2761 + //line php7/php7.y:2782 { yyVAL.list = nil @@ -5174,7 +5195,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2767 + //line php7/php7.y:2788 { yyVAL.list = yyDollar[1].list @@ -5182,7 +5203,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2776 + //line php7/php7.y:2797 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5190,7 +5211,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2782 + //line php7/php7.y:2803 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5198,7 +5219,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2791 + //line php7/php7.y:2812 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5212,7 +5233,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2803 + //line php7/php7.y:2824 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5226,7 +5247,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2815 + //line php7/php7.y:2836 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5240,7 +5261,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2827 + //line php7/php7.y:2848 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5254,7 +5275,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2839 + //line php7/php7.y:2860 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5268,7 +5289,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2851 + //line php7/php7.y:2872 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5282,7 +5303,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2866 + //line php7/php7.y:2887 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5293,7 +5314,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2875 + //line php7/php7.y:2896 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5301,7 +5322,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2884 + //line php7/php7.y:2905 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5320,7 +5341,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2901 + //line php7/php7.y:2922 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5340,7 +5361,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2922 + //line php7/php7.y:2943 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5351,7 +5372,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2931 + //line php7/php7.y:2952 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5359,7 +5380,7 @@ yydefault: } case 283: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2940 + //line php7/php7.y:2961 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -5376,7 +5397,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2958 + //line php7/php7.y:2979 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -5393,7 +5414,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2976 + //line php7/php7.y:2997 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5404,7 +5425,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2985 + //line php7/php7.y:3006 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5412,7 +5433,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2994 + //line php7/php7.y:3015 { yyVAL.node = yyDollar[1].node @@ -5420,7 +5441,7 @@ yydefault: } case 288: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3003 + //line php7/php7.y:3024 { yyVAL.list = nil @@ -5428,7 +5449,7 @@ yydefault: } case 289: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3009 + //line php7/php7.y:3030 { yyVAL.list = yyDollar[1].list @@ -5436,7 +5457,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3018 + //line php7/php7.y:3039 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5447,7 +5468,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3027 + //line php7/php7.y:3048 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5455,7 +5476,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:3036 + //line php7/php7.y:3057 { if yyDollar[2].node != nil { yyVAL.node = stmt.NewClass(nil, nil, yyDollar[2].node.(*node.ArgumentList), yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) @@ -5475,7 +5496,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3057 + //line php7/php7.y:3078 { if yyDollar[3].node != nil { yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].node.(*node.ArgumentList)) @@ -5492,7 +5513,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3072 + //line php7/php7.y:3093 { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) @@ -5506,7 +5527,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:3087 + //line php7/php7.y:3108 { list := expr.NewList(yyDollar[3].list) yyVAL.node = assign.NewAssign(list, yyDollar[6].node) @@ -5525,7 +5546,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3104 + //line php7/php7.y:3125 { shortList := expr.NewShortList(yyDollar[2].list) yyVAL.node = assign.NewAssign(shortList, yyDollar[5].node) @@ -5543,7 +5564,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3120 + //line php7/php7.y:3141 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -5557,7 +5578,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3132 + //line php7/php7.y:3153 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) @@ -5572,7 +5593,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3145 + //line php7/php7.y:3166 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5586,7 +5607,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3157 + //line php7/php7.y:3178 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5600,7 +5621,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3169 + //line php7/php7.y:3190 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5614,7 +5635,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3181 + //line php7/php7.y:3202 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5628,7 +5649,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3193 + //line php7/php7.y:3214 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5642,7 +5663,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3205 + //line php7/php7.y:3226 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5656,7 +5677,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3217 + //line php7/php7.y:3238 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5670,7 +5691,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3229 + //line php7/php7.y:3250 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5684,7 +5705,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3241 + //line php7/php7.y:3262 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5698,7 +5719,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3253 + //line php7/php7.y:3274 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5712,7 +5733,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3265 + //line php7/php7.y:3286 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5726,7 +5747,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3277 + //line php7/php7.y:3298 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5740,7 +5761,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3289 + //line php7/php7.y:3310 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5754,7 +5775,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3301 + //line php7/php7.y:3322 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5768,7 +5789,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3313 + //line php7/php7.y:3334 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5782,7 +5803,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3325 + //line php7/php7.y:3346 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5796,7 +5817,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3337 + //line php7/php7.y:3358 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5810,7 +5831,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3349 + //line php7/php7.y:3370 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5824,7 +5845,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3361 + //line php7/php7.y:3382 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5838,7 +5859,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3373 + //line php7/php7.y:3394 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -5852,7 +5873,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3385 + //line php7/php7.y:3406 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -5866,7 +5887,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3397 + //line php7/php7.y:3418 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -5880,7 +5901,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3409 + //line php7/php7.y:3430 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5894,7 +5915,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3421 + //line php7/php7.y:3442 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5908,7 +5929,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3433 + //line php7/php7.y:3454 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5922,7 +5943,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3445 + //line php7/php7.y:3466 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5936,7 +5957,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3457 + //line php7/php7.y:3478 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5950,7 +5971,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3469 + //line php7/php7.y:3490 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5964,7 +5985,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3481 + //line php7/php7.y:3502 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5978,7 +5999,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3493 + //line php7/php7.y:3514 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5992,7 +6013,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3505 + //line php7/php7.y:3526 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -6006,7 +6027,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3517 + //line php7/php7.y:3538 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -6020,7 +6041,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3529 + //line php7/php7.y:3550 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -6034,7 +6055,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3541 + //line php7/php7.y:3562 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -6048,7 +6069,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3553 + //line php7/php7.y:3574 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -6062,7 +6083,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3565 + //line php7/php7.y:3586 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -6076,7 +6097,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3577 + //line php7/php7.y:3598 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -6090,7 +6111,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3589 + //line php7/php7.y:3610 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -6104,7 +6125,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3601 + //line php7/php7.y:3622 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6118,7 +6139,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3613 + //line php7/php7.y:3634 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6132,7 +6153,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3625 + //line php7/php7.y:3646 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -6146,7 +6167,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3637 + //line php7/php7.y:3658 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -6161,7 +6182,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3650 + //line php7/php7.y:3671 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -6175,7 +6196,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3662 + //line php7/php7.y:3683 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6189,7 +6210,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3674 + //line php7/php7.y:3695 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -6203,7 +6224,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3686 + //line php7/php7.y:3707 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6217,7 +6238,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3698 + //line php7/php7.y:3719 { yyVAL.node = binary.NewSpaceship(yyDollar[1].node, yyDollar[3].node) @@ -6231,7 +6252,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3710 + //line php7/php7.y:3731 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -6245,7 +6266,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3722 + //line php7/php7.y:3743 { yyVAL.node = yyDollar[2].node @@ -6259,7 +6280,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3734 + //line php7/php7.y:3755 { yyVAL.node = yyDollar[1].node @@ -6267,7 +6288,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3740 + //line php7/php7.y:3761 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -6282,7 +6303,7 @@ yydefault: } case 350: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3753 + //line php7/php7.y:3774 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -6297,7 +6318,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3766 + //line php7/php7.y:3787 { yyVAL.node = binary.NewCoalesce(yyDollar[1].node, yyDollar[3].node) @@ -6311,7 +6332,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3778 + //line php7/php7.y:3799 { yyVAL.node = yyDollar[1].node @@ -6319,7 +6340,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3784 + //line php7/php7.y:3805 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -6334,7 +6355,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3797 + //line php7/php7.y:3818 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -6349,7 +6370,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3810 + //line php7/php7.y:3831 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -6364,7 +6385,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3823 + //line php7/php7.y:3844 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -6379,7 +6400,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3836 + //line php7/php7.y:3857 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -6394,7 +6415,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3849 + //line php7/php7.y:3870 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -6409,7 +6430,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3862 + //line php7/php7.y:3883 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -6424,7 +6445,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3875 + //line php7/php7.y:3896 { var e *expr.Exit if yyDollar[2].node != nil { @@ -6453,7 +6474,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3902 + //line php7/php7.y:3923 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -6467,7 +6488,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3914 + //line php7/php7.y:3935 { yyVAL.node = yyDollar[1].node @@ -6475,7 +6496,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3920 + //line php7/php7.y:3941 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -6489,7 +6510,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3932 + //line php7/php7.y:3953 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -6503,7 +6524,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3944 + //line php7/php7.y:3965 { yyVAL.node = expr.NewYield(nil, nil) @@ -6517,7 +6538,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3956 + //line php7/php7.y:3977 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6531,7 +6552,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3968 + //line php7/php7.y:3989 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6546,7 +6567,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3981 + //line php7/php7.y:4002 { yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) @@ -6560,7 +6581,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:3993 + //line php7/php7.y:4014 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].token != nil, yyDollar[3].str) @@ -6581,7 +6602,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-12 : yypt+1] - //line php7/php7.y:4012 + //line php7/php7.y:4033 { yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].ClosureUse, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].token != nil, yyDollar[4].str) @@ -6603,7 +6624,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4035 + //line php7/php7.y:4056 { yyVAL.str = yylex.(*Parser).PhpDocComment yylex.(*Parser).PhpDocComment = "" @@ -6612,19 +6633,19 @@ yydefault: } case 372: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4045 + //line php7/php7.y:4066 { yyVAL.token = nil } case 373: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4049 + //line php7/php7.y:4070 { yyVAL.token = yyDollar[1].token } case 374: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4056 + //line php7/php7.y:4077 { yyVAL.ClosureUse = nil @@ -6632,7 +6653,7 @@ yydefault: } case 375: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4062 + //line php7/php7.y:4083 { yyVAL.ClosureUse = expr.NewClosureUse(yyDollar[3].list) @@ -6648,7 +6669,7 @@ yydefault: } case 376: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4079 + //line php7/php7.y:4100 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6659,7 +6680,7 @@ yydefault: } case 377: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4088 + //line php7/php7.y:4109 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -6667,7 +6688,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4097 + //line php7/php7.y:4118 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -6684,7 +6705,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4112 + //line php7/php7.y:4133 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[2].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6704,7 +6725,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4133 + //line php7/php7.y:4154 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6715,7 +6736,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4142 + //line php7/php7.y:4163 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6729,7 +6750,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4154 + //line php7/php7.y:4175 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6743,7 +6764,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4166 + //line php7/php7.y:4187 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6754,7 +6775,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4178 + //line php7/php7.y:4199 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6768,7 +6789,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4190 + //line php7/php7.y:4211 { yyVAL.node = yyDollar[1].node @@ -6776,7 +6797,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4199 + //line php7/php7.y:4220 { yyVAL.node = yyDollar[1].node @@ -6784,7 +6805,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4205 + //line php7/php7.y:4226 { yyVAL.node = yyDollar[1].node @@ -6792,7 +6813,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4214 + //line php7/php7.y:4235 { yyVAL.node = nil @@ -6800,7 +6821,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4220 + //line php7/php7.y:4241 { yyVAL.node = expr.NewExit(yyDollar[2].node) @@ -6817,7 +6838,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4238 + //line php7/php7.y:4259 { yyVAL.list = []node.Node{} @@ -6825,7 +6846,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4244 + //line php7/php7.y:4265 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} @@ -6833,7 +6854,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4250 + //line php7/php7.y:4271 { yyVAL.list = yyDollar[1].list @@ -6841,7 +6862,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4259 + //line php7/php7.y:4280 { yyVAL.node = nil @@ -6849,7 +6870,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4265 + //line php7/php7.y:4286 { yyVAL.node = yyDollar[1].node @@ -6857,7 +6878,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4274 + //line php7/php7.y:4295 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -6873,7 +6894,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4288 + //line php7/php7.y:4309 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -6888,7 +6909,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4301 + //line php7/php7.y:4322 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -6902,7 +6923,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4316 + //line php7/php7.y:4337 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -6916,7 +6937,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4328 + //line php7/php7.y:4349 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -6930,7 +6951,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4340 + //line php7/php7.y:4361 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6944,7 +6965,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4352 + //line php7/php7.y:4373 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6958,7 +6979,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4364 + //line php7/php7.y:4385 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6972,7 +6993,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4376 + //line php7/php7.y:4397 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6986,7 +7007,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4388 + //line php7/php7.y:4409 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7000,7 +7021,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4400 + //line php7/php7.y:4421 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7014,7 +7035,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4412 + //line php7/php7.y:4433 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7028,7 +7049,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4424 + //line php7/php7.y:4445 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7042,7 +7063,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4436 + //line php7/php7.y:4457 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -7058,7 +7079,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4450 + //line php7/php7.y:4471 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -7072,7 +7093,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4462 + //line php7/php7.y:4483 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -7086,7 +7107,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4474 + //line php7/php7.y:4495 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -7100,7 +7121,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4486 + //line php7/php7.y:4507 { yyVAL.node = yyDollar[1].node @@ -7108,7 +7129,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4492 + //line php7/php7.y:4513 { yyVAL.node = yyDollar[1].node @@ -7116,7 +7137,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4501 + //line php7/php7.y:4522 { yyVAL.node = expr.NewConstFetch(yyDollar[1].node) @@ -7127,7 +7148,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4510 + //line php7/php7.y:4531 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7144,7 +7165,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4525 + //line php7/php7.y:4546 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7161,7 +7182,7 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4543 + //line php7/php7.y:4564 { yyVAL.node = yyDollar[1].node @@ -7169,7 +7190,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4549 + //line php7/php7.y:4570 { yyVAL.node = yyDollar[1].node @@ -7177,7 +7198,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4558 + //line php7/php7.y:4579 { yyVAL.node = nil @@ -7185,7 +7206,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4564 + //line php7/php7.y:4585 { yyVAL.node = yyDollar[1].node @@ -7193,7 +7214,7 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4573 + //line php7/php7.y:4594 { yyVAL.node = yyDollar[1].node @@ -7201,7 +7222,7 @@ yydefault: } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4582 + //line php7/php7.y:4603 { yyVAL.node = yyDollar[1].node @@ -7209,7 +7230,7 @@ yydefault: } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4588 + //line php7/php7.y:4609 { yyVAL.node = yyDollar[2].node @@ -7223,7 +7244,7 @@ yydefault: } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4600 + //line php7/php7.y:4621 { yyVAL.node = yyDollar[1].node @@ -7231,7 +7252,7 @@ yydefault: } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4609 + //line php7/php7.y:4630 { yyVAL.node = yyDollar[1].node @@ -7239,7 +7260,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4615 + //line php7/php7.y:4636 { yyVAL.node = yyDollar[2].node @@ -7253,7 +7274,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4627 + //line php7/php7.y:4648 { yyVAL.node = yyDollar[1].node @@ -7261,7 +7282,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4636 + //line php7/php7.y:4657 { yyVAL.node = yyDollar[1].node @@ -7269,7 +7290,7 @@ yydefault: } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4642 + //line php7/php7.y:4663 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7286,7 +7307,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4657 + //line php7/php7.y:4678 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7303,7 +7324,7 @@ yydefault: } case 431: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4672 + //line php7/php7.y:4693 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7320,7 +7341,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4687 + //line php7/php7.y:4708 { yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7334,7 +7355,7 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4699 + //line php7/php7.y:4720 { yyVAL.node = yyDollar[1].node @@ -7342,7 +7363,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4708 + //line php7/php7.y:4729 { yyVAL.node = yyDollar[1].node @@ -7350,7 +7371,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4714 + //line php7/php7.y:4735 { yyVAL.node = yyDollar[1].node @@ -7358,7 +7379,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4720 + //line php7/php7.y:4741 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7372,7 +7393,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4735 + //line php7/php7.y:4756 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7389,7 +7410,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4750 + //line php7/php7.y:4771 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -7408,7 +7429,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4767 + //line php7/php7.y:4788 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -7423,7 +7444,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4783 + //line php7/php7.y:4804 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7437,7 +7458,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4795 + //line php7/php7.y:4816 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7451,7 +7472,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4810 + //line php7/php7.y:4831 { yyVAL.node = yyDollar[1].node @@ -7459,7 +7480,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4816 + //line php7/php7.y:4837 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7476,7 +7497,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4831 + //line php7/php7.y:4852 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7493,7 +7514,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4846 + //line php7/php7.y:4867 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7507,7 +7528,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4858 + //line php7/php7.y:4879 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7521,7 +7542,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4870 + //line php7/php7.y:4891 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7535,7 +7556,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4885 + //line php7/php7.y:4906 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7549,7 +7570,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4897 + //line php7/php7.y:4918 { yyVAL.node = yyDollar[2].node @@ -7563,7 +7584,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4909 + //line php7/php7.y:4930 { yyVAL.node = yyDollar[1].node @@ -7571,7 +7592,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4918 + //line php7/php7.y:4939 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7585,7 +7606,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4930 + //line php7/php7.y:4951 { yyVAL.node = yyDollar[2].node @@ -7599,7 +7620,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4942 + //line php7/php7.y:4963 { yyVAL.node = yyDollar[1].node @@ -7607,7 +7628,7 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4951 + //line php7/php7.y:4972 { yyVAL.list = yyDollar[1].list @@ -7615,7 +7636,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4960 + //line php7/php7.y:4981 { yyVAL.node = expr.NewArrayItem(nil, nil) @@ -7623,7 +7644,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4966 + //line php7/php7.y:4987 { yyVAL.node = yyDollar[1].node @@ -7631,7 +7652,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4975 + //line php7/php7.y:4996 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil)} @@ -7646,7 +7667,7 @@ yydefault: } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4988 + //line php7/php7.y:5009 { if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { yyVAL.list = []node.Node{} @@ -7658,7 +7679,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5001 + //line php7/php7.y:5022 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) @@ -7672,7 +7693,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5013 + //line php7/php7.y:5034 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) @@ -7683,7 +7704,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5022 + //line php7/php7.y:5043 { reference := expr.NewReference(yyDollar[4].node) yyVAL.node = expr.NewArrayItem(yyDollar[1].node, reference) @@ -7700,7 +7721,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5037 + //line php7/php7.y:5058 { reference := expr.NewReference(yyDollar[2].node) yyVAL.node = expr.NewArrayItem(nil, reference) @@ -7716,7 +7737,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5051 + //line php7/php7.y:5072 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[5].list) @@ -7736,7 +7757,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5069 + //line php7/php7.y:5090 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[3].list) @@ -7755,7 +7776,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5089 + //line php7/php7.y:5110 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -7763,7 +7784,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5095 + //line php7/php7.y:5116 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -7778,7 +7799,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5108 + //line php7/php7.y:5129 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -7786,7 +7807,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5114 + //line php7/php7.y:5135 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -7801,7 +7822,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5130 + //line php7/php7.y:5151 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7818,7 +7839,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5145 + //line php7/php7.y:5166 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7841,7 +7862,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5166 + //line php7/php7.y:5187 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7864,7 +7885,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5187 + //line php7/php7.y:5208 { variable := expr.NewVariable(yyDollar[2].node) @@ -7883,7 +7904,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5204 + //line php7/php7.y:5225 { name := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(name) @@ -7905,7 +7926,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5224 + //line php7/php7.y:5245 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -7930,7 +7951,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5247 + //line php7/php7.y:5268 { yyVAL.node = yyDollar[2].node @@ -7944,7 +7965,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5262 + //line php7/php7.y:5283 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -7958,7 +7979,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5274 + //line php7/php7.y:5295 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -7974,7 +7995,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5288 + //line php7/php7.y:5309 { var lnumber *scalar.Lnumber // TODO: add option to handle 64 bit integer @@ -8002,7 +8023,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5314 + //line php7/php7.y:5335 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -8019,7 +8040,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:5332 + //line php7/php7.y:5353 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -8039,7 +8060,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5350 + //line php7/php7.y:5371 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -8055,7 +8076,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5364 + //line php7/php7.y:5385 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -8069,7 +8090,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5376 + //line php7/php7.y:5397 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -8083,7 +8104,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5388 + //line php7/php7.y:5409 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -8099,7 +8120,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5402 + //line php7/php7.y:5423 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -8113,7 +8134,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5414 + //line php7/php7.y:5435 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -8127,7 +8148,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5429 + //line php7/php7.y:5450 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -8135,7 +8156,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5435 + //line php7/php7.y:5456 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -8146,7 +8167,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5447 + //line php7/php7.y:5468 { yyVAL.node = yyDollar[1].node diff --git a/php7/php7.y b/php7/php7.y index 7e6529f..2f4a51f 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -395,6 +395,9 @@ name: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + // save comments + $1[0].GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NAMESPACE T_NS_SEPARATOR namespace_name @@ -644,6 +647,8 @@ group_use_declaration: } $6.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + $1[0].GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(name.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations possible_comma '}' @@ -666,6 +671,8 @@ group_use_declaration: } $7.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + $2[0].GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(name.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -689,6 +696,8 @@ mixed_group_use_declaration: } $6.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + $1[0].GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(name.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' inline_use_declarations possible_comma '}' @@ -711,6 +720,8 @@ mixed_group_use_declaration: } $7.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + $2[0].GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(name.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -785,12 +796,16 @@ inline_use_declaration: { $$ = $1 + $1.(*stmt.Use).Use.GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | use_type unprefixed_use_declaration { $$ = $2.(*stmt.Use).SetUseType($1) + $1.GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -805,6 +820,8 @@ unprefixed_use_declaration: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + $1[0].GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(name.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | namespace_name T_AS T_STRING @@ -822,6 +839,8 @@ unprefixed_use_declaration: $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + $1[0].GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo(name.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -831,6 +850,8 @@ use_declaration: { $$ = $1 + $1.(*stmt.Use).Use.GetMeta().Cut(meta.TokenNameFilter(meta.NodeStart)).AppendTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NS_SEPARATOR unprefixed_use_declaration @@ -838,8 +859,8 @@ use_declaration: $$ = $2; // save comments - $1.Meta.SetTokenName(meta.UseLeadingNsSeparatorToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.UseLeadingNsSeparatorToken) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } diff --git a/visitor/dumper_test.go b/visitor/dumper_test.go index f69b879..285e510 100644 --- a/visitor/dumper_test.go +++ b/visitor/dumper_test.go @@ -122,11 +122,11 @@ func ExampleDumper() { // | [*name.Name] // | "Position": Pos{Line: 5-5 Pos: 86-89} // | "NamespacedName": "null" + // | "Meta": + // | " " before "NodeStart" // | "Parts": // | [*name.NamePart] // | "Position": Pos{Line: 5-5 Pos: 86-89} - // | "Meta": - // | " " before "NodeStart" // | "Value": "null" // | "Stmt": // | [*stmt.StmtList] diff --git a/visitor/go_dumper_test.go b/visitor/go_dumper_test.go index e06a3a1..e81c019 100644 --- a/visitor/go_dumper_test.go +++ b/visitor/go_dumper_test.go @@ -355,6 +355,19 @@ func ExampleGoDumper() { // StartPos: 86, // EndPos: 89, // }, + // Meta: meta.Collection{ + // &meta.Data{ + // Type: meta.WhiteSpaceType, + // Position: &position.Position{ + // StartLine: 5, + // EndLine: 5, + // StartPos: 85, + // EndPos: 85, + // }, + // Value: " ", + // TokenName: meta.NodeStart, + // }, + // }, // Parts: []node.Node{ // &name.NamePart{ // Position: &position.Position{ @@ -363,19 +376,6 @@ func ExampleGoDumper() { // StartPos: 86, // EndPos: 89, // }, - // Meta: meta.Collection{ - // &meta.Data{ - // Type: meta.WhiteSpaceType, - // Position: &position.Position{ - // StartLine: 5, - // EndLine: 5, - // StartPos: 85, - // EndPos: 85, - // }, - // Value: " ", - // TokenName: meta.NodeStart, - // }, - // }, // Value: "null", // }, // }, diff --git a/visitor/json_dumper_test.go b/visitor/json_dumper_test.go index 9d91c7a..87ed55c 100644 --- a/visitor/json_dumper_test.go +++ b/visitor/json_dumper_test.go @@ -37,5 +37,5 @@ func ExampleJsonDumper() { nodes.Walk(dumper) // Output: - // {"type":"*node.Root","position":{"startPos":10,"endPos":166,"startLine":3,"endLine":12},"Stmts":[{"type":"*stmt.Namespace","position":{"startPos":10,"endPos":166,"startLine":3,"endLine":12},"meta":[{"type":"*meta.TokenType","value":" Date: Tue, 25 Dec 2018 11:56:32 +0200 Subject: [PATCH 02/12] #70: [php7] inherit meta.Data at stmt.Expression and stmt.Label --- php7/parser.go | 8 + php7/php7.go | 714 +++++++++++++++-------------- php7/php7.y | 24 +- visitor/dumper_test.go | 6 +- visitor/go_dumper_test.go | 66 +-- visitor/json_dumper_test.go | 2 +- visitor/pretty_json_dumper_test.go | 50 +- 7 files changed, 441 insertions(+), 429 deletions(-) diff --git a/php7/parser.go b/php7/parser.go index bf082bb..c8cb795 100644 --- a/php7/parser.go +++ b/php7/parser.go @@ -13,6 +13,14 @@ import ( "github.com/z7zmey/php-parser/scanner" ) +var inheritMetaFilter = meta.AndFilter( + meta.TokenNameFilter(meta.NodeStart), + meta.OrFilter( + meta.TypeFilter(meta.CommentType, meta.WhiteSpaceType), + meta.ValueFilter(" Date: Tue, 25 Dec 2018 22:16:19 +0200 Subject: [PATCH 03/12] #70: [php7] inherit meta.Data at stmt.Class and node.Parameter --- php7/php7.go | 666 +++++++++++++++-------------- php7/php7.y | 22 +- visitor/dumper_test.go | 2 +- visitor/go_dumper_test.go | 2 +- visitor/json_dumper_test.go | 2 +- visitor/pretty_json_dumper_test.go | 2 +- 6 files changed, 363 insertions(+), 333 deletions(-) diff --git a/php7/php7.go b/php7/php7.go index 920653f..57dea94 100644 --- a/php7/php7.go +++ b/php7/php7.go @@ -1,5 +1,3 @@ -// Code generated by goyacc -o php7/php7.go php7/php7.y. DO NOT EDIT. - //line php7/php7.y:2 package php7 @@ -348,7 +346,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php7/php7.y:5479 +//line php7/php7.y:5495 //line yacctab:1 var yyExca = [...]int{ @@ -3860,11 +3858,13 @@ yydefault: yyDollar[7].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[9].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].list[0].GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 170: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:1514 + //line php7/php7.y:1516 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewClass(name, nil, nil, yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) @@ -3874,7 +3874,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ClassToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) yyDollar[6].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[8].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) @@ -3883,7 +3883,7 @@ yydefault: } case 171: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1534 + //line php7/php7.y:1536 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3891,7 +3891,7 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1540 + //line php7/php7.y:1542 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3899,7 +3899,7 @@ yydefault: } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1549 + //line php7/php7.y:1551 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3913,7 +3913,7 @@ yydefault: } case 174: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1561 + //line php7/php7.y:1563 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3927,7 +3927,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1576 + //line php7/php7.y:1578 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewTrait(name, yyDollar[5].list, yyDollar[3].str) @@ -3946,7 +3946,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1596 + //line php7/php7.y:1598 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewInterface(name, yyDollar[3].InterfaceExtends, yyDollar[6].list, yyDollar[4].str) @@ -3965,7 +3965,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1616 + //line php7/php7.y:1618 { yyVAL.ClassExtends = nil @@ -3973,7 +3973,7 @@ yydefault: } case 178: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1622 + //line php7/php7.y:1624 { yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) @@ -3987,7 +3987,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1637 + //line php7/php7.y:1639 { yyVAL.InterfaceExtends = nil @@ -3995,7 +3995,7 @@ yydefault: } case 180: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1643 + //line php7/php7.y:1645 { yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) @@ -4009,7 +4009,7 @@ yydefault: } case 181: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1658 + //line php7/php7.y:1660 { yyVAL.ClassImplements = nil @@ -4017,7 +4017,7 @@ yydefault: } case 182: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1664 + //line php7/php7.y:1666 { yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) @@ -4031,7 +4031,7 @@ yydefault: } case 183: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1679 + //line php7/php7.y:1681 { yyVAL.node = yyDollar[1].node @@ -4039,7 +4039,7 @@ yydefault: } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1685 + //line php7/php7.y:1687 { yyVAL.node = expr.NewReference(yyDollar[2].node) @@ -4053,7 +4053,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1697 + //line php7/php7.y:1699 { yyVAL.node = expr.NewList(yyDollar[3].list) @@ -4069,7 +4069,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1711 + //line php7/php7.y:1713 { yyVAL.node = expr.NewShortList(yyDollar[2].list) @@ -4084,7 +4084,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1727 + //line php7/php7.y:1729 { yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) @@ -4095,7 +4095,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1736 + //line php7/php7.y:1738 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) @@ -4114,7 +4114,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1756 + //line php7/php7.y:1758 { yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node) @@ -4125,7 +4125,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1765 + //line php7/php7.y:1767 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList) @@ -4144,7 +4144,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1785 + //line php7/php7.y:1787 { yyVAL.node = stmt.NewDeclare(nil, yyDollar[1].node, false) @@ -4155,7 +4155,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1794 + //line php7/php7.y:1796 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewDeclare(nil, stmtList, true) @@ -4174,7 +4174,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1814 + //line php7/php7.y:1816 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4191,7 +4191,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1829 + //line php7/php7.y:1831 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4210,7 +4210,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1846 + //line php7/php7.y:1848 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -4229,7 +4229,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1863 + //line php7/php7.y:1865 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -4251,7 +4251,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1886 + //line php7/php7.y:1888 { yyVAL.list = []node.Node{} @@ -4259,7 +4259,7 @@ yydefault: } case 198: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1892 + //line php7/php7.y:1894 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yyVAL.list = append(yyDollar[1].list, _case) @@ -4276,7 +4276,7 @@ yydefault: } case 199: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1907 + //line php7/php7.y:1909 { _default := stmt.NewDefault(yyDollar[4].list) yyVAL.list = append(yyDollar[1].list, _default) @@ -4293,19 +4293,19 @@ yydefault: } case 200: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1925 + //line php7/php7.y:1927 { yyVAL.token = yyDollar[1].token } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1929 + //line php7/php7.y:1931 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1936 + //line php7/php7.y:1938 { yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) @@ -4316,7 +4316,7 @@ yydefault: } case 203: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1945 + //line php7/php7.y:1947 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltWhile(nil, stmtList) @@ -4335,7 +4335,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1965 + //line php7/php7.y:1967 { yyVAL.node = stmt.NewIf(yyDollar[3].node, yyDollar[5].node, nil, nil) @@ -4351,7 +4351,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1979 + //line php7/php7.y:1981 { _elseIf := stmt.NewElseIf(yyDollar[4].node, yyDollar[6].node) yyVAL.node = yyDollar[1].node.(*stmt.If).AddElseIf(_elseIf) @@ -4369,7 +4369,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1998 + //line php7/php7.y:2000 { yyVAL.node = yyDollar[1].node @@ -4377,7 +4377,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2004 + //line php7/php7.y:2006 { _else := stmt.NewElse(yyDollar[3].node) yyVAL.node = yyDollar[1].node.(*stmt.If).SetElse(_else) @@ -4393,7 +4393,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2021 + //line php7/php7.y:2023 { stmts := stmt.NewStmtList(yyDollar[6].list) yyVAL.node = stmt.NewAltIf(yyDollar[3].node, stmts, nil, nil) @@ -4412,7 +4412,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:2038 + //line php7/php7.y:2040 { stmts := stmt.NewStmtList(yyDollar[7].list) _elseIf := stmt.NewAltElseIf(yyDollar[4].node, stmts) @@ -4432,7 +4432,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2059 + //line php7/php7.y:2061 { yyVAL.node = yyDollar[1].node @@ -4448,7 +4448,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2073 + //line php7/php7.y:2075 { stmts := stmt.NewStmtList(yyDollar[4].list) _else := stmt.NewAltElse(stmts) @@ -4470,7 +4470,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2096 + //line php7/php7.y:2098 { yyVAL.list = yyDollar[1].list @@ -4478,7 +4478,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2102 + //line php7/php7.y:2104 { yyVAL.list = nil @@ -4486,7 +4486,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2111 + //line php7/php7.y:2113 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4494,7 +4494,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2117 + //line php7/php7.y:2119 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4505,7 +4505,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2129 + //line php7/php7.y:2131 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4525,20 +4525,27 @@ yydefault: } // save comments + if yyDollar[1].node != nil { + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + } if yyDollar[2].token != nil { yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) } if yyDollar[3].token != nil { yyDollar[3].token.Meta.SetTokenName(meta.EllipsisToken).AppendTo(yyVAL.node.GetMeta()) } - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + if yyDollar[1].node == nil && yyDollar[2].token == nil && yyDollar[3].token == nil { + yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + } else { + yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + } yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 217: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2160 + //line php7/php7.y:2169 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4558,13 +4565,20 @@ yydefault: } // save comments + if yyDollar[1].node != nil { + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + } if yyDollar[2].token != nil { yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) } if yyDollar[3].token != nil { yyDollar[3].token.Meta.SetTokenName(meta.EllipsisToken).AppendTo(yyVAL.node.GetMeta()) } - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + if yyDollar[1].node == nil && yyDollar[2].token == nil && yyDollar[3].token == nil { + yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + } else { + yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + } yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[5].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) @@ -4572,7 +4586,7 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2195 + //line php7/php7.y:2211 { yyVAL.node = nil @@ -4580,7 +4594,7 @@ yydefault: } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2201 + //line php7/php7.y:2217 { yyVAL.node = yyDollar[1].node @@ -4588,7 +4602,7 @@ yydefault: } case 220: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2210 + //line php7/php7.y:2226 { yyVAL.node = yyDollar[1].node @@ -4596,7 +4610,7 @@ yydefault: } case 221: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2216 + //line php7/php7.y:2232 { yyVAL.node = node.NewNullable(yyDollar[2].node) @@ -4610,7 +4624,7 @@ yydefault: } case 222: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2231 + //line php7/php7.y:2247 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4624,7 +4638,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2243 + //line php7/php7.y:2259 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4638,7 +4652,7 @@ yydefault: } case 224: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2255 + //line php7/php7.y:2271 { yyVAL.node = yyDollar[1].node @@ -4646,7 +4660,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2264 + //line php7/php7.y:2280 { yyVAL.node = nil @@ -4654,7 +4668,7 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2270 + //line php7/php7.y:2286 { yyVAL.node = yyDollar[2].node @@ -4665,7 +4679,7 @@ yydefault: } case 227: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2282 + //line php7/php7.y:2298 { yyVAL.node = node.NewArgumentList(nil) @@ -4680,7 +4694,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2295 + //line php7/php7.y:2311 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -4699,7 +4713,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2315 + //line php7/php7.y:2331 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4707,7 +4721,7 @@ yydefault: } case 230: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2321 + //line php7/php7.y:2337 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4718,7 +4732,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2333 + //line php7/php7.y:2349 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) @@ -4729,7 +4743,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2342 + //line php7/php7.y:2358 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4743,7 +4757,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2357 + //line php7/php7.y:2373 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4754,7 +4768,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2366 + //line php7/php7.y:2382 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4762,7 +4776,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2375 + //line php7/php7.y:2391 { yyVAL.node = yyDollar[1].node @@ -4770,7 +4784,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2384 + //line php7/php7.y:2400 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4781,7 +4795,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2393 + //line php7/php7.y:2409 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4789,7 +4803,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2402 + //line php7/php7.y:2418 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4808,7 +4822,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2419 + //line php7/php7.y:2435 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4828,7 +4842,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2440 + //line php7/php7.y:2456 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4836,7 +4850,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2446 + //line php7/php7.y:2462 { yyVAL.list = []node.Node{} @@ -4844,7 +4858,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2455 + //line php7/php7.y:2471 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4859,7 +4873,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2468 + //line php7/php7.y:2484 { yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) @@ -4875,7 +4889,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2482 + //line php7/php7.y:2498 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].node) @@ -4889,7 +4903,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-10 : yypt+1] - //line php7/php7.y:2494 + //line php7/php7.y:2510 { name := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewClassMethod(name, yyDollar[1].list, yyDollar[3].token != nil, yyDollar[7].list, yyDollar[9].node, yyDollar[10].node, yyDollar[5].str) @@ -4915,7 +4929,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2521 + //line php7/php7.y:2537 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4923,7 +4937,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2527 + //line php7/php7.y:2543 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4934,7 +4948,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2539 + //line php7/php7.y:2555 { yyVAL.node = stmt.NewNop() @@ -4948,7 +4962,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2552 + //line php7/php7.y:2568 { yyVAL.node = stmt.NewTraitAdaptationList(nil) @@ -4962,7 +4976,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2564 + //line php7/php7.y:2580 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -4976,7 +4990,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2579 + //line php7/php7.y:2595 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4984,7 +4998,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2585 + //line php7/php7.y:2601 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4992,7 +5006,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2594 + //line php7/php7.y:2610 { yyVAL.node = yyDollar[1].node @@ -5004,7 +5018,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2604 + //line php7/php7.y:2620 { yyVAL.node = yyDollar[1].node @@ -5016,7 +5030,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2617 + //line php7/php7.y:2633 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -5030,7 +5044,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2632 + //line php7/php7.y:2648 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -5047,7 +5061,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2647 + //line php7/php7.y:2663 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -5064,7 +5078,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2662 + //line php7/php7.y:2678 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -5081,7 +5095,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2677 + //line php7/php7.y:2693 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -5095,7 +5109,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2692 + //line php7/php7.y:2708 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -5111,7 +5125,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2706 + //line php7/php7.y:2722 { yyVAL.node = yyDollar[1].node @@ -5119,7 +5133,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2715 + //line php7/php7.y:2731 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -5136,7 +5150,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2733 + //line php7/php7.y:2749 { yyVAL.node = stmt.NewNop() @@ -5151,7 +5165,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2746 + //line php7/php7.y:2762 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -5166,7 +5180,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2762 + //line php7/php7.y:2778 { yyVAL.list = yyDollar[1].list @@ -5174,7 +5188,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2768 + //line php7/php7.y:2784 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -5189,7 +5203,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2784 + //line php7/php7.y:2800 { yyVAL.list = nil @@ -5197,7 +5211,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2790 + //line php7/php7.y:2806 { yyVAL.list = yyDollar[1].list @@ -5205,7 +5219,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2799 + //line php7/php7.y:2815 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5213,7 +5227,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2805 + //line php7/php7.y:2821 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5221,7 +5235,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2814 + //line php7/php7.y:2830 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5235,7 +5249,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2826 + //line php7/php7.y:2842 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5249,7 +5263,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2838 + //line php7/php7.y:2854 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5263,7 +5277,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2850 + //line php7/php7.y:2866 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5277,7 +5291,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2862 + //line php7/php7.y:2878 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5291,7 +5305,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2874 + //line php7/php7.y:2890 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5305,7 +5319,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2889 + //line php7/php7.y:2905 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5316,7 +5330,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2898 + //line php7/php7.y:2914 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5324,7 +5338,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2907 + //line php7/php7.y:2923 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5343,7 +5357,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2924 + //line php7/php7.y:2940 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5363,7 +5377,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2945 + //line php7/php7.y:2961 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5374,7 +5388,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2954 + //line php7/php7.y:2970 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5382,7 +5396,7 @@ yydefault: } case 283: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2963 + //line php7/php7.y:2979 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -5399,7 +5413,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2981 + //line php7/php7.y:2997 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -5416,7 +5430,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2999 + //line php7/php7.y:3015 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5427,7 +5441,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3008 + //line php7/php7.y:3024 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5435,7 +5449,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3017 + //line php7/php7.y:3033 { yyVAL.node = yyDollar[1].node @@ -5443,7 +5457,7 @@ yydefault: } case 288: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3026 + //line php7/php7.y:3042 { yyVAL.list = nil @@ -5451,7 +5465,7 @@ yydefault: } case 289: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3032 + //line php7/php7.y:3048 { yyVAL.list = yyDollar[1].list @@ -5459,7 +5473,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3041 + //line php7/php7.y:3057 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5470,7 +5484,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3050 + //line php7/php7.y:3066 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5478,7 +5492,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:3059 + //line php7/php7.y:3075 { if yyDollar[2].node != nil { yyVAL.node = stmt.NewClass(nil, nil, yyDollar[2].node.(*node.ArgumentList), yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) @@ -5498,7 +5512,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3080 + //line php7/php7.y:3096 { if yyDollar[3].node != nil { yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].node.(*node.ArgumentList)) @@ -5515,7 +5529,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3095 + //line php7/php7.y:3111 { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) @@ -5529,7 +5543,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:3110 + //line php7/php7.y:3126 { list := expr.NewList(yyDollar[3].list) yyVAL.node = assign.NewAssign(list, yyDollar[6].node) @@ -5548,7 +5562,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3127 + //line php7/php7.y:3143 { shortList := expr.NewShortList(yyDollar[2].list) yyVAL.node = assign.NewAssign(shortList, yyDollar[5].node) @@ -5566,7 +5580,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3143 + //line php7/php7.y:3159 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -5580,7 +5594,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3155 + //line php7/php7.y:3171 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) @@ -5595,7 +5609,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3168 + //line php7/php7.y:3184 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5609,7 +5623,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3180 + //line php7/php7.y:3196 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5623,7 +5637,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3192 + //line php7/php7.y:3208 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5637,7 +5651,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3204 + //line php7/php7.y:3220 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5651,7 +5665,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3216 + //line php7/php7.y:3232 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5665,7 +5679,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3228 + //line php7/php7.y:3244 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5679,7 +5693,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3240 + //line php7/php7.y:3256 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5693,7 +5707,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3252 + //line php7/php7.y:3268 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5707,7 +5721,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3264 + //line php7/php7.y:3280 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5721,7 +5735,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3276 + //line php7/php7.y:3292 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5735,7 +5749,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3288 + //line php7/php7.y:3304 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5749,7 +5763,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3300 + //line php7/php7.y:3316 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5763,7 +5777,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3312 + //line php7/php7.y:3328 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5777,7 +5791,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3324 + //line php7/php7.y:3340 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5791,7 +5805,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3336 + //line php7/php7.y:3352 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5805,7 +5819,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3348 + //line php7/php7.y:3364 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5819,7 +5833,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3360 + //line php7/php7.y:3376 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5833,7 +5847,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3372 + //line php7/php7.y:3388 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5847,7 +5861,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3384 + //line php7/php7.y:3400 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5861,7 +5875,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3396 + //line php7/php7.y:3412 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -5875,7 +5889,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3408 + //line php7/php7.y:3424 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -5889,7 +5903,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3420 + //line php7/php7.y:3436 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -5903,7 +5917,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3432 + //line php7/php7.y:3448 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5917,7 +5931,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3444 + //line php7/php7.y:3460 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5931,7 +5945,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3456 + //line php7/php7.y:3472 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5945,7 +5959,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3468 + //line php7/php7.y:3484 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5959,7 +5973,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3480 + //line php7/php7.y:3496 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5973,7 +5987,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3492 + //line php7/php7.y:3508 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5987,7 +6001,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3504 + //line php7/php7.y:3520 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -6001,7 +6015,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3516 + //line php7/php7.y:3532 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -6015,7 +6029,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3528 + //line php7/php7.y:3544 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -6029,7 +6043,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3540 + //line php7/php7.y:3556 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -6043,7 +6057,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3552 + //line php7/php7.y:3568 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -6057,7 +6071,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3564 + //line php7/php7.y:3580 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -6071,7 +6085,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3576 + //line php7/php7.y:3592 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -6085,7 +6099,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3588 + //line php7/php7.y:3604 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -6099,7 +6113,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3600 + //line php7/php7.y:3616 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -6113,7 +6127,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3612 + //line php7/php7.y:3628 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -6127,7 +6141,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3624 + //line php7/php7.y:3640 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6141,7 +6155,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3636 + //line php7/php7.y:3652 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6155,7 +6169,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3648 + //line php7/php7.y:3664 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -6169,7 +6183,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3660 + //line php7/php7.y:3676 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -6184,7 +6198,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3673 + //line php7/php7.y:3689 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -6198,7 +6212,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3685 + //line php7/php7.y:3701 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6212,7 +6226,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3697 + //line php7/php7.y:3713 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -6226,7 +6240,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3709 + //line php7/php7.y:3725 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6240,7 +6254,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3721 + //line php7/php7.y:3737 { yyVAL.node = binary.NewSpaceship(yyDollar[1].node, yyDollar[3].node) @@ -6254,7 +6268,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3733 + //line php7/php7.y:3749 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -6268,7 +6282,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3745 + //line php7/php7.y:3761 { yyVAL.node = yyDollar[2].node @@ -6282,7 +6296,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3757 + //line php7/php7.y:3773 { yyVAL.node = yyDollar[1].node @@ -6290,7 +6304,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3763 + //line php7/php7.y:3779 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -6305,7 +6319,7 @@ yydefault: } case 350: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3776 + //line php7/php7.y:3792 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -6320,7 +6334,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3789 + //line php7/php7.y:3805 { yyVAL.node = binary.NewCoalesce(yyDollar[1].node, yyDollar[3].node) @@ -6334,7 +6348,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3801 + //line php7/php7.y:3817 { yyVAL.node = yyDollar[1].node @@ -6342,7 +6356,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3807 + //line php7/php7.y:3823 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -6357,7 +6371,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3820 + //line php7/php7.y:3836 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -6372,7 +6386,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3833 + //line php7/php7.y:3849 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -6387,7 +6401,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3846 + //line php7/php7.y:3862 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -6402,7 +6416,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3859 + //line php7/php7.y:3875 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -6417,7 +6431,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3872 + //line php7/php7.y:3888 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -6432,7 +6446,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3885 + //line php7/php7.y:3901 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -6447,7 +6461,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3898 + //line php7/php7.y:3914 { var e *expr.Exit if yyDollar[2].node != nil { @@ -6476,7 +6490,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3925 + //line php7/php7.y:3941 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -6490,7 +6504,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3937 + //line php7/php7.y:3953 { yyVAL.node = yyDollar[1].node @@ -6498,7 +6512,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3943 + //line php7/php7.y:3959 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -6512,7 +6526,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3955 + //line php7/php7.y:3971 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -6526,7 +6540,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3967 + //line php7/php7.y:3983 { yyVAL.node = expr.NewYield(nil, nil) @@ -6540,7 +6554,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3979 + //line php7/php7.y:3995 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6554,7 +6568,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3991 + //line php7/php7.y:4007 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6569,7 +6583,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4004 + //line php7/php7.y:4020 { yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) @@ -6583,7 +6597,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:4016 + //line php7/php7.y:4032 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].token != nil, yyDollar[3].str) @@ -6604,7 +6618,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-12 : yypt+1] - //line php7/php7.y:4035 + //line php7/php7.y:4051 { yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].ClosureUse, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].token != nil, yyDollar[4].str) @@ -6626,7 +6640,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4058 + //line php7/php7.y:4074 { yyVAL.str = yylex.(*Parser).PhpDocComment yylex.(*Parser).PhpDocComment = "" @@ -6635,19 +6649,19 @@ yydefault: } case 372: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4068 + //line php7/php7.y:4084 { yyVAL.token = nil } case 373: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4072 + //line php7/php7.y:4088 { yyVAL.token = yyDollar[1].token } case 374: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4079 + //line php7/php7.y:4095 { yyVAL.ClosureUse = nil @@ -6655,7 +6669,7 @@ yydefault: } case 375: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4085 + //line php7/php7.y:4101 { yyVAL.ClosureUse = expr.NewClosureUse(yyDollar[3].list) @@ -6671,7 +6685,7 @@ yydefault: } case 376: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4102 + //line php7/php7.y:4118 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6682,7 +6696,7 @@ yydefault: } case 377: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4111 + //line php7/php7.y:4127 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -6690,7 +6704,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4120 + //line php7/php7.y:4136 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -6707,7 +6721,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4135 + //line php7/php7.y:4151 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[2].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6727,7 +6741,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4156 + //line php7/php7.y:4172 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6738,7 +6752,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4165 + //line php7/php7.y:4181 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6752,7 +6766,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4177 + //line php7/php7.y:4193 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6766,7 +6780,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4189 + //line php7/php7.y:4205 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6777,7 +6791,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4201 + //line php7/php7.y:4217 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6791,7 +6805,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4213 + //line php7/php7.y:4229 { yyVAL.node = yyDollar[1].node @@ -6799,7 +6813,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4222 + //line php7/php7.y:4238 { yyVAL.node = yyDollar[1].node @@ -6807,7 +6821,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4228 + //line php7/php7.y:4244 { yyVAL.node = yyDollar[1].node @@ -6815,7 +6829,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4237 + //line php7/php7.y:4253 { yyVAL.node = nil @@ -6823,7 +6837,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4243 + //line php7/php7.y:4259 { yyVAL.node = expr.NewExit(yyDollar[2].node) @@ -6840,7 +6854,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4261 + //line php7/php7.y:4277 { yyVAL.list = []node.Node{} @@ -6848,7 +6862,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4267 + //line php7/php7.y:4283 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} @@ -6856,7 +6870,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4273 + //line php7/php7.y:4289 { yyVAL.list = yyDollar[1].list @@ -6864,7 +6878,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4282 + //line php7/php7.y:4298 { yyVAL.node = nil @@ -6872,7 +6886,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4288 + //line php7/php7.y:4304 { yyVAL.node = yyDollar[1].node @@ -6880,7 +6894,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4297 + //line php7/php7.y:4313 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -6896,7 +6910,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4311 + //line php7/php7.y:4327 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -6911,7 +6925,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4324 + //line php7/php7.y:4340 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -6925,7 +6939,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4339 + //line php7/php7.y:4355 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -6939,7 +6953,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4351 + //line php7/php7.y:4367 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -6953,7 +6967,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4363 + //line php7/php7.y:4379 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6967,7 +6981,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4375 + //line php7/php7.y:4391 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6981,7 +6995,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4387 + //line php7/php7.y:4403 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6995,7 +7009,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4399 + //line php7/php7.y:4415 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7009,7 +7023,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4411 + //line php7/php7.y:4427 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7023,7 +7037,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4423 + //line php7/php7.y:4439 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7037,7 +7051,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4435 + //line php7/php7.y:4451 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7051,7 +7065,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4447 + //line php7/php7.y:4463 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7065,7 +7079,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4459 + //line php7/php7.y:4475 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -7081,7 +7095,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4473 + //line php7/php7.y:4489 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -7095,7 +7109,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4485 + //line php7/php7.y:4501 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -7109,7 +7123,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4497 + //line php7/php7.y:4513 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -7123,7 +7137,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4509 + //line php7/php7.y:4525 { yyVAL.node = yyDollar[1].node @@ -7131,7 +7145,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4515 + //line php7/php7.y:4531 { yyVAL.node = yyDollar[1].node @@ -7139,7 +7153,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4524 + //line php7/php7.y:4540 { yyVAL.node = expr.NewConstFetch(yyDollar[1].node) @@ -7150,7 +7164,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4533 + //line php7/php7.y:4549 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7167,7 +7181,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4548 + //line php7/php7.y:4564 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7184,7 +7198,7 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4566 + //line php7/php7.y:4582 { yyVAL.node = yyDollar[1].node @@ -7192,7 +7206,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4572 + //line php7/php7.y:4588 { yyVAL.node = yyDollar[1].node @@ -7200,7 +7214,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4581 + //line php7/php7.y:4597 { yyVAL.node = nil @@ -7208,7 +7222,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4587 + //line php7/php7.y:4603 { yyVAL.node = yyDollar[1].node @@ -7216,7 +7230,7 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4596 + //line php7/php7.y:4612 { yyVAL.node = yyDollar[1].node @@ -7224,7 +7238,7 @@ yydefault: } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4605 + //line php7/php7.y:4621 { yyVAL.node = yyDollar[1].node @@ -7232,7 +7246,7 @@ yydefault: } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4611 + //line php7/php7.y:4627 { yyVAL.node = yyDollar[2].node @@ -7246,7 +7260,7 @@ yydefault: } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4623 + //line php7/php7.y:4639 { yyVAL.node = yyDollar[1].node @@ -7254,7 +7268,7 @@ yydefault: } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4632 + //line php7/php7.y:4648 { yyVAL.node = yyDollar[1].node @@ -7262,7 +7276,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4638 + //line php7/php7.y:4654 { yyVAL.node = yyDollar[2].node @@ -7276,7 +7290,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4650 + //line php7/php7.y:4666 { yyVAL.node = yyDollar[1].node @@ -7284,7 +7298,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4659 + //line php7/php7.y:4675 { yyVAL.node = yyDollar[1].node @@ -7292,7 +7306,7 @@ yydefault: } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4665 + //line php7/php7.y:4681 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7309,7 +7323,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4680 + //line php7/php7.y:4696 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7326,7 +7340,7 @@ yydefault: } case 431: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4695 + //line php7/php7.y:4711 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7343,7 +7357,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4710 + //line php7/php7.y:4726 { yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7357,7 +7371,7 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4722 + //line php7/php7.y:4738 { yyVAL.node = yyDollar[1].node @@ -7365,7 +7379,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4731 + //line php7/php7.y:4747 { yyVAL.node = yyDollar[1].node @@ -7373,7 +7387,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4737 + //line php7/php7.y:4753 { yyVAL.node = yyDollar[1].node @@ -7381,7 +7395,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4743 + //line php7/php7.y:4759 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7395,7 +7409,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4758 + //line php7/php7.y:4774 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7412,7 +7426,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4773 + //line php7/php7.y:4789 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -7431,7 +7445,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4790 + //line php7/php7.y:4806 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -7446,7 +7460,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4806 + //line php7/php7.y:4822 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7460,7 +7474,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4818 + //line php7/php7.y:4834 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7474,7 +7488,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4833 + //line php7/php7.y:4849 { yyVAL.node = yyDollar[1].node @@ -7482,7 +7496,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4839 + //line php7/php7.y:4855 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7499,7 +7513,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4854 + //line php7/php7.y:4870 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7516,7 +7530,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4869 + //line php7/php7.y:4885 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7530,7 +7544,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4881 + //line php7/php7.y:4897 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7544,7 +7558,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4893 + //line php7/php7.y:4909 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7558,7 +7572,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4908 + //line php7/php7.y:4924 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7572,7 +7586,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4920 + //line php7/php7.y:4936 { yyVAL.node = yyDollar[2].node @@ -7586,7 +7600,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4932 + //line php7/php7.y:4948 { yyVAL.node = yyDollar[1].node @@ -7594,7 +7608,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4941 + //line php7/php7.y:4957 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7608,7 +7622,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4953 + //line php7/php7.y:4969 { yyVAL.node = yyDollar[2].node @@ -7622,7 +7636,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4965 + //line php7/php7.y:4981 { yyVAL.node = yyDollar[1].node @@ -7630,7 +7644,7 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4974 + //line php7/php7.y:4990 { yyVAL.list = yyDollar[1].list @@ -7638,7 +7652,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4983 + //line php7/php7.y:4999 { yyVAL.node = expr.NewArrayItem(nil, nil) @@ -7646,7 +7660,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4989 + //line php7/php7.y:5005 { yyVAL.node = yyDollar[1].node @@ -7654,7 +7668,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4998 + //line php7/php7.y:5014 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil)} @@ -7669,7 +7683,7 @@ yydefault: } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5011 + //line php7/php7.y:5027 { if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { yyVAL.list = []node.Node{} @@ -7681,7 +7695,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5024 + //line php7/php7.y:5040 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) @@ -7695,7 +7709,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5036 + //line php7/php7.y:5052 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) @@ -7706,7 +7720,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5045 + //line php7/php7.y:5061 { reference := expr.NewReference(yyDollar[4].node) yyVAL.node = expr.NewArrayItem(yyDollar[1].node, reference) @@ -7723,7 +7737,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5060 + //line php7/php7.y:5076 { reference := expr.NewReference(yyDollar[2].node) yyVAL.node = expr.NewArrayItem(nil, reference) @@ -7739,7 +7753,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5074 + //line php7/php7.y:5090 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[5].list) @@ -7759,7 +7773,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5092 + //line php7/php7.y:5108 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[3].list) @@ -7778,7 +7792,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5112 + //line php7/php7.y:5128 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -7786,7 +7800,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5118 + //line php7/php7.y:5134 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -7801,7 +7815,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5131 + //line php7/php7.y:5147 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -7809,7 +7823,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5137 + //line php7/php7.y:5153 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -7824,7 +7838,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5153 + //line php7/php7.y:5169 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7841,7 +7855,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5168 + //line php7/php7.y:5184 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7864,7 +7878,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5189 + //line php7/php7.y:5205 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7887,7 +7901,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5210 + //line php7/php7.y:5226 { variable := expr.NewVariable(yyDollar[2].node) @@ -7906,7 +7920,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5227 + //line php7/php7.y:5243 { name := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(name) @@ -7928,7 +7942,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5247 + //line php7/php7.y:5263 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -7953,7 +7967,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5270 + //line php7/php7.y:5286 { yyVAL.node = yyDollar[2].node @@ -7967,7 +7981,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5285 + //line php7/php7.y:5301 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -7981,7 +7995,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5297 + //line php7/php7.y:5313 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -7997,7 +8011,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5311 + //line php7/php7.y:5327 { var lnumber *scalar.Lnumber // TODO: add option to handle 64 bit integer @@ -8025,7 +8039,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5337 + //line php7/php7.y:5353 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -8042,7 +8056,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:5355 + //line php7/php7.y:5371 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -8062,7 +8076,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5373 + //line php7/php7.y:5389 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -8078,7 +8092,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5387 + //line php7/php7.y:5403 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -8092,7 +8106,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5399 + //line php7/php7.y:5415 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -8106,7 +8120,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5411 + //line php7/php7.y:5427 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -8122,7 +8136,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5425 + //line php7/php7.y:5441 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -8136,7 +8150,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5437 + //line php7/php7.y:5453 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -8150,7 +8164,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5452 + //line php7/php7.y:5468 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -8158,7 +8172,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5458 + //line php7/php7.y:5474 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -8169,7 +8183,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5470 + //line php7/php7.y:5486 { yyVAL.node = yyDollar[1].node diff --git a/php7/php7.y b/php7/php7.y index a4ba1c3..62e396d 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -1508,6 +1508,8 @@ class_declaration_statement: $7.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) $9.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) + $1[0].GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CLASS T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' @@ -1520,7 +1522,7 @@ class_declaration_statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) // save comments - $1.Meta.SetTokenName(meta.ClassToken).AppendTo($$.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) $6.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) $8.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) @@ -2145,13 +2147,20 @@ parameter: } // save comments + if $1 != nil { + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + } if $2 != nil { $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) } if $3 != nil { $3.Meta.SetTokenName(meta.EllipsisToken).AppendTo($$.GetMeta()) } - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + if $1 == nil && $2 == nil && $3 == nil { + $4.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + } else { + $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + } yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2176,13 +2185,20 @@ parameter: } // save comments + if $1 != nil { + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + } if $2 != nil { $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) } if $3 != nil { $3.Meta.SetTokenName(meta.EllipsisToken).AppendTo($$.GetMeta()) } - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + if $1 == nil && $2 == nil && $3 == nil { + $4.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + } else { + $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + } yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $5.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) diff --git a/visitor/dumper_test.go b/visitor/dumper_test.go index d785983..214f1d9 100644 --- a/visitor/dumper_test.go +++ b/visitor/dumper_test.go @@ -61,7 +61,7 @@ func ExampleDumper() { // | "Position": Pos{Line: 4-10 Pos: 29-139} // | "NamespacedName": "Foo\\Bar" // | "Meta": - // | "\n\t\t\t" before "ClassToken" + // | "\n\t\t\t" before "NodeStart" // | " " before "OpenCurlyBracesToken" // | "\n\t\t\t" before "CloseCurlyBracesToken" // | "PhpDocComment": "" diff --git a/visitor/go_dumper_test.go b/visitor/go_dumper_test.go index 03a6f4b..1765cee 100644 --- a/visitor/go_dumper_test.go +++ b/visitor/go_dumper_test.go @@ -146,7 +146,7 @@ func ExampleGoDumper() { // EndPos: 28, // }, // Value: "\n\t\t\t", - // TokenName: meta.ClassToken, + // TokenName: meta.NodeStart, // }, // &meta.Data{ // Type: meta.WhiteSpaceType, diff --git a/visitor/json_dumper_test.go b/visitor/json_dumper_test.go index 13435a7..4b6328a 100644 --- a/visitor/json_dumper_test.go +++ b/visitor/json_dumper_test.go @@ -37,5 +37,5 @@ func ExampleJsonDumper() { nodes.Walk(dumper) // Output: - // {"type":"*node.Root","position":{"startPos":10,"endPos":166,"startLine":3,"endLine":12},"Stmts":[{"type":"*stmt.Namespace","position":{"startPos":10,"endPos":166,"startLine":3,"endLine":12},"meta":[{"type":"*meta.TokenType","value":" Date: Wed, 26 Dec 2018 12:09:54 +0200 Subject: [PATCH 04/12] #70: [php7] inherit meta.Data at node.Argument, stmt.PropertyList, stmt.ClassConstList, stmt.ClassMethod, stmt.TraitUsePrecedence, stmt.TraitUseAlias, stmt.TraitMethodRef --- php5/php5.go | 1 + php7/php7.go | 545 +++++++++++++++-------------- php7/php7.y | 27 +- visitor/dumper_test.go | 3 +- visitor/go_dumper_test.go | 24 +- visitor/json_dumper_test.go | 2 +- visitor/pretty_json_dumper_test.go | 12 +- 7 files changed, 328 insertions(+), 286 deletions(-) diff --git a/php5/php5.go b/php5/php5.go index f704ada..87a32d0 100644 --- a/php5/php5.go +++ b/php5/php5.go @@ -349,6 +349,7 @@ const yyErrCode = 2 const yyInitialStackSize = 16 //line php5/php5.y:6988 + type simpleIndirectReference struct { all []*expr.Variable last *expr.Variable diff --git a/php7/php7.go b/php7/php7.go index 57dea94..b4d962d 100644 --- a/php7/php7.go +++ b/php7/php7.go @@ -1,3 +1,5 @@ +// Code generated by goyacc -o php7/php7.go php7/php7.y. DO NOT EDIT. + //line php7/php7.y:2 package php7 @@ -346,7 +348,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php7/php7.y:5495 +//line php7/php7.y:5518 //line yacctab:1 var yyExca = [...]int{ @@ -4739,11 +4741,14 @@ yydefault: // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + // save comments + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 232: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2358 + //line php7/php7.y:2361 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4751,13 +4756,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.EllipsisToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2373 + //line php7/php7.y:2376 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4768,7 +4773,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2382 + //line php7/php7.y:2385 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4776,7 +4781,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2391 + //line php7/php7.y:2394 { yyVAL.node = yyDollar[1].node @@ -4784,7 +4789,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2400 + //line php7/php7.y:2403 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4795,7 +4800,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2409 + //line php7/php7.y:2412 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4803,7 +4808,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2418 + //line php7/php7.y:2421 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4822,7 +4827,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2435 + //line php7/php7.y:2438 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4842,7 +4847,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2456 + //line php7/php7.y:2459 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4850,7 +4855,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2462 + //line php7/php7.y:2465 { yyVAL.list = []node.Node{} @@ -4858,7 +4863,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2471 + //line php7/php7.y:2474 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4869,11 +4874,13 @@ yydefault: yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yyDollar[1].list[0].GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 243: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2484 + //line php7/php7.y:2489 { yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) @@ -4889,7 +4896,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2498 + //line php7/php7.y:2505 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].node) @@ -4903,7 +4910,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-10 : yypt+1] - //line php7/php7.y:2510 + //line php7/php7.y:2517 { name := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewClassMethod(name, yyDollar[1].list, yyDollar[3].token != nil, yyDollar[7].list, yyDollar[9].node, yyDollar[10].node, yyDollar[5].str) @@ -4925,11 +4932,15 @@ yydefault: yyDollar[6].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[8].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + if len(yyDollar[1].list) > 0 { + yyDollar[1].list[0].GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + } + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2537 + //line php7/php7.y:2548 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4937,7 +4948,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2543 + //line php7/php7.y:2554 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4948,7 +4959,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2555 + //line php7/php7.y:2566 { yyVAL.node = stmt.NewNop() @@ -4962,7 +4973,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2568 + //line php7/php7.y:2579 { yyVAL.node = stmt.NewTraitAdaptationList(nil) @@ -4976,7 +4987,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2580 + //line php7/php7.y:2591 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -4990,7 +5001,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2595 + //line php7/php7.y:2606 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4998,7 +5009,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2601 + //line php7/php7.y:2612 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5006,7 +5017,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2610 + //line php7/php7.y:2621 { yyVAL.node = yyDollar[1].node @@ -5018,7 +5029,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2620 + //line php7/php7.y:2631 { yyVAL.node = yyDollar[1].node @@ -5030,7 +5041,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2633 + //line php7/php7.y:2644 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -5040,11 +5051,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.InsteadofToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2648 + //line php7/php7.y:2661 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -5057,11 +5070,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2663 + //line php7/php7.y:2678 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -5074,11 +5089,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 258: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2678 + //line php7/php7.y:2695 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -5091,11 +5108,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2693 + //line php7/php7.y:2712 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -5105,11 +5124,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 260: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2708 + //line php7/php7.y:2729 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -5119,13 +5140,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 261: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2722 + //line php7/php7.y:2743 { yyVAL.node = yyDollar[1].node @@ -5133,7 +5154,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2731 + //line php7/php7.y:2752 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -5146,11 +5167,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 263: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2749 + //line php7/php7.y:2772 { yyVAL.node = stmt.NewNop() @@ -5165,7 +5188,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2762 + //line php7/php7.y:2785 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -5180,7 +5203,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2778 + //line php7/php7.y:2801 { yyVAL.list = yyDollar[1].list @@ -5188,7 +5211,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2784 + //line php7/php7.y:2807 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -5203,7 +5226,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2800 + //line php7/php7.y:2823 { yyVAL.list = nil @@ -5211,7 +5234,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2806 + //line php7/php7.y:2829 { yyVAL.list = yyDollar[1].list @@ -5219,7 +5242,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2815 + //line php7/php7.y:2838 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5227,7 +5250,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2821 + //line php7/php7.y:2844 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5235,7 +5258,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2830 + //line php7/php7.y:2853 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5249,7 +5272,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2842 + //line php7/php7.y:2865 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5263,7 +5286,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2854 + //line php7/php7.y:2877 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5277,7 +5300,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2866 + //line php7/php7.y:2889 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5291,7 +5314,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2878 + //line php7/php7.y:2901 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5305,7 +5328,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2890 + //line php7/php7.y:2913 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5319,7 +5342,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2905 + //line php7/php7.y:2928 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5330,7 +5353,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2914 + //line php7/php7.y:2937 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5338,7 +5361,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2923 + //line php7/php7.y:2946 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5357,7 +5380,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2940 + //line php7/php7.y:2963 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5377,7 +5400,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2961 + //line php7/php7.y:2984 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5388,7 +5411,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2970 + //line php7/php7.y:2993 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5396,7 +5419,7 @@ yydefault: } case 283: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2979 + //line php7/php7.y:3002 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -5413,7 +5436,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2997 + //line php7/php7.y:3020 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -5430,7 +5453,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3015 + //line php7/php7.y:3038 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5441,7 +5464,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3024 + //line php7/php7.y:3047 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5449,7 +5472,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3033 + //line php7/php7.y:3056 { yyVAL.node = yyDollar[1].node @@ -5457,7 +5480,7 @@ yydefault: } case 288: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3042 + //line php7/php7.y:3065 { yyVAL.list = nil @@ -5465,7 +5488,7 @@ yydefault: } case 289: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3048 + //line php7/php7.y:3071 { yyVAL.list = yyDollar[1].list @@ -5473,7 +5496,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3057 + //line php7/php7.y:3080 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5484,7 +5507,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3066 + //line php7/php7.y:3089 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5492,7 +5515,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:3075 + //line php7/php7.y:3098 { if yyDollar[2].node != nil { yyVAL.node = stmt.NewClass(nil, nil, yyDollar[2].node.(*node.ArgumentList), yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) @@ -5512,7 +5535,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3096 + //line php7/php7.y:3119 { if yyDollar[3].node != nil { yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].node.(*node.ArgumentList)) @@ -5529,7 +5552,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3111 + //line php7/php7.y:3134 { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) @@ -5543,7 +5566,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:3126 + //line php7/php7.y:3149 { list := expr.NewList(yyDollar[3].list) yyVAL.node = assign.NewAssign(list, yyDollar[6].node) @@ -5562,7 +5585,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3143 + //line php7/php7.y:3166 { shortList := expr.NewShortList(yyDollar[2].list) yyVAL.node = assign.NewAssign(shortList, yyDollar[5].node) @@ -5580,7 +5603,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3159 + //line php7/php7.y:3182 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -5594,7 +5617,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3171 + //line php7/php7.y:3194 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) @@ -5609,7 +5632,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3184 + //line php7/php7.y:3207 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5623,7 +5646,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3196 + //line php7/php7.y:3219 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5637,7 +5660,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3208 + //line php7/php7.y:3231 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5651,7 +5674,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3220 + //line php7/php7.y:3243 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5665,7 +5688,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3232 + //line php7/php7.y:3255 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5679,7 +5702,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3244 + //line php7/php7.y:3267 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5693,7 +5716,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3256 + //line php7/php7.y:3279 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5707,7 +5730,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3268 + //line php7/php7.y:3291 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5721,7 +5744,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3280 + //line php7/php7.y:3303 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5735,7 +5758,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3292 + //line php7/php7.y:3315 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5749,7 +5772,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3304 + //line php7/php7.y:3327 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5763,7 +5786,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3316 + //line php7/php7.y:3339 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5777,7 +5800,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3328 + //line php7/php7.y:3351 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5791,7 +5814,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3340 + //line php7/php7.y:3363 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5805,7 +5828,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3352 + //line php7/php7.y:3375 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5819,7 +5842,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3364 + //line php7/php7.y:3387 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5833,7 +5856,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3376 + //line php7/php7.y:3399 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5847,7 +5870,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3388 + //line php7/php7.y:3411 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5861,7 +5884,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3400 + //line php7/php7.y:3423 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5875,7 +5898,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3412 + //line php7/php7.y:3435 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -5889,7 +5912,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3424 + //line php7/php7.y:3447 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -5903,7 +5926,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3436 + //line php7/php7.y:3459 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -5917,7 +5940,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3448 + //line php7/php7.y:3471 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5931,7 +5954,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3460 + //line php7/php7.y:3483 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5945,7 +5968,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3472 + //line php7/php7.y:3495 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5959,7 +5982,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3484 + //line php7/php7.y:3507 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5973,7 +5996,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3496 + //line php7/php7.y:3519 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5987,7 +6010,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3508 + //line php7/php7.y:3531 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -6001,7 +6024,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3520 + //line php7/php7.y:3543 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -6015,7 +6038,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3532 + //line php7/php7.y:3555 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -6029,7 +6052,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3544 + //line php7/php7.y:3567 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -6043,7 +6066,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3556 + //line php7/php7.y:3579 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -6057,7 +6080,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3568 + //line php7/php7.y:3591 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -6071,7 +6094,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3580 + //line php7/php7.y:3603 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -6085,7 +6108,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3592 + //line php7/php7.y:3615 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -6099,7 +6122,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3604 + //line php7/php7.y:3627 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -6113,7 +6136,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3616 + //line php7/php7.y:3639 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -6127,7 +6150,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3628 + //line php7/php7.y:3651 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -6141,7 +6164,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3640 + //line php7/php7.y:3663 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6155,7 +6178,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3652 + //line php7/php7.y:3675 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6169,7 +6192,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3664 + //line php7/php7.y:3687 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -6183,7 +6206,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3676 + //line php7/php7.y:3699 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -6198,7 +6221,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3689 + //line php7/php7.y:3712 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -6212,7 +6235,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3701 + //line php7/php7.y:3724 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6226,7 +6249,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3713 + //line php7/php7.y:3736 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -6240,7 +6263,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3725 + //line php7/php7.y:3748 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6254,7 +6277,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3737 + //line php7/php7.y:3760 { yyVAL.node = binary.NewSpaceship(yyDollar[1].node, yyDollar[3].node) @@ -6268,7 +6291,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3749 + //line php7/php7.y:3772 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -6282,7 +6305,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3761 + //line php7/php7.y:3784 { yyVAL.node = yyDollar[2].node @@ -6296,7 +6319,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3773 + //line php7/php7.y:3796 { yyVAL.node = yyDollar[1].node @@ -6304,7 +6327,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3779 + //line php7/php7.y:3802 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -6319,7 +6342,7 @@ yydefault: } case 350: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3792 + //line php7/php7.y:3815 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -6334,7 +6357,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3805 + //line php7/php7.y:3828 { yyVAL.node = binary.NewCoalesce(yyDollar[1].node, yyDollar[3].node) @@ -6348,7 +6371,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3817 + //line php7/php7.y:3840 { yyVAL.node = yyDollar[1].node @@ -6356,7 +6379,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3823 + //line php7/php7.y:3846 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -6371,7 +6394,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3836 + //line php7/php7.y:3859 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -6386,7 +6409,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3849 + //line php7/php7.y:3872 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -6401,7 +6424,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3862 + //line php7/php7.y:3885 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -6416,7 +6439,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3875 + //line php7/php7.y:3898 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -6431,7 +6454,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3888 + //line php7/php7.y:3911 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -6446,7 +6469,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3901 + //line php7/php7.y:3924 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -6461,7 +6484,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3914 + //line php7/php7.y:3937 { var e *expr.Exit if yyDollar[2].node != nil { @@ -6490,7 +6513,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3941 + //line php7/php7.y:3964 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -6504,7 +6527,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3953 + //line php7/php7.y:3976 { yyVAL.node = yyDollar[1].node @@ -6512,7 +6535,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3959 + //line php7/php7.y:3982 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -6526,7 +6549,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3971 + //line php7/php7.y:3994 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -6540,7 +6563,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3983 + //line php7/php7.y:4006 { yyVAL.node = expr.NewYield(nil, nil) @@ -6554,7 +6577,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3995 + //line php7/php7.y:4018 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6568,7 +6591,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4007 + //line php7/php7.y:4030 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6583,7 +6606,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4020 + //line php7/php7.y:4043 { yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) @@ -6597,7 +6620,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:4032 + //line php7/php7.y:4055 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].token != nil, yyDollar[3].str) @@ -6618,7 +6641,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-12 : yypt+1] - //line php7/php7.y:4051 + //line php7/php7.y:4074 { yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].ClosureUse, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].token != nil, yyDollar[4].str) @@ -6640,7 +6663,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4074 + //line php7/php7.y:4097 { yyVAL.str = yylex.(*Parser).PhpDocComment yylex.(*Parser).PhpDocComment = "" @@ -6649,19 +6672,19 @@ yydefault: } case 372: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4084 + //line php7/php7.y:4107 { yyVAL.token = nil } case 373: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4088 + //line php7/php7.y:4111 { yyVAL.token = yyDollar[1].token } case 374: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4095 + //line php7/php7.y:4118 { yyVAL.ClosureUse = nil @@ -6669,7 +6692,7 @@ yydefault: } case 375: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4101 + //line php7/php7.y:4124 { yyVAL.ClosureUse = expr.NewClosureUse(yyDollar[3].list) @@ -6685,7 +6708,7 @@ yydefault: } case 376: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4118 + //line php7/php7.y:4141 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6696,7 +6719,7 @@ yydefault: } case 377: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4127 + //line php7/php7.y:4150 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -6704,7 +6727,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4136 + //line php7/php7.y:4159 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -6721,7 +6744,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4151 + //line php7/php7.y:4174 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[2].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6741,7 +6764,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4172 + //line php7/php7.y:4195 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6752,7 +6775,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4181 + //line php7/php7.y:4204 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6766,7 +6789,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4193 + //line php7/php7.y:4216 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6780,7 +6803,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4205 + //line php7/php7.y:4228 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6791,7 +6814,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4217 + //line php7/php7.y:4240 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6805,7 +6828,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4229 + //line php7/php7.y:4252 { yyVAL.node = yyDollar[1].node @@ -6813,7 +6836,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4238 + //line php7/php7.y:4261 { yyVAL.node = yyDollar[1].node @@ -6821,7 +6844,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4244 + //line php7/php7.y:4267 { yyVAL.node = yyDollar[1].node @@ -6829,7 +6852,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4253 + //line php7/php7.y:4276 { yyVAL.node = nil @@ -6837,7 +6860,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4259 + //line php7/php7.y:4282 { yyVAL.node = expr.NewExit(yyDollar[2].node) @@ -6854,7 +6877,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4277 + //line php7/php7.y:4300 { yyVAL.list = []node.Node{} @@ -6862,7 +6885,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4283 + //line php7/php7.y:4306 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} @@ -6870,7 +6893,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4289 + //line php7/php7.y:4312 { yyVAL.list = yyDollar[1].list @@ -6878,7 +6901,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4298 + //line php7/php7.y:4321 { yyVAL.node = nil @@ -6886,7 +6909,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4304 + //line php7/php7.y:4327 { yyVAL.node = yyDollar[1].node @@ -6894,7 +6917,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4313 + //line php7/php7.y:4336 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -6910,7 +6933,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4327 + //line php7/php7.y:4350 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -6925,7 +6948,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4340 + //line php7/php7.y:4363 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -6939,7 +6962,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4355 + //line php7/php7.y:4378 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -6953,7 +6976,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4367 + //line php7/php7.y:4390 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -6967,7 +6990,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4379 + //line php7/php7.y:4402 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6981,7 +7004,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4391 + //line php7/php7.y:4414 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6995,7 +7018,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4403 + //line php7/php7.y:4426 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7009,7 +7032,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4415 + //line php7/php7.y:4438 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7023,7 +7046,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4427 + //line php7/php7.y:4450 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7037,7 +7060,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4439 + //line php7/php7.y:4462 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7051,7 +7074,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4451 + //line php7/php7.y:4474 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7065,7 +7088,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4463 + //line php7/php7.y:4486 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7079,7 +7102,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4475 + //line php7/php7.y:4498 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -7095,7 +7118,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4489 + //line php7/php7.y:4512 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -7109,7 +7132,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4501 + //line php7/php7.y:4524 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -7123,7 +7146,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4513 + //line php7/php7.y:4536 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -7137,7 +7160,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4525 + //line php7/php7.y:4548 { yyVAL.node = yyDollar[1].node @@ -7145,7 +7168,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4531 + //line php7/php7.y:4554 { yyVAL.node = yyDollar[1].node @@ -7153,7 +7176,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4540 + //line php7/php7.y:4563 { yyVAL.node = expr.NewConstFetch(yyDollar[1].node) @@ -7164,7 +7187,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4549 + //line php7/php7.y:4572 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7181,7 +7204,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4564 + //line php7/php7.y:4587 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7198,7 +7221,7 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4582 + //line php7/php7.y:4605 { yyVAL.node = yyDollar[1].node @@ -7206,7 +7229,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4588 + //line php7/php7.y:4611 { yyVAL.node = yyDollar[1].node @@ -7214,7 +7237,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4597 + //line php7/php7.y:4620 { yyVAL.node = nil @@ -7222,7 +7245,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4603 + //line php7/php7.y:4626 { yyVAL.node = yyDollar[1].node @@ -7230,7 +7253,7 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4612 + //line php7/php7.y:4635 { yyVAL.node = yyDollar[1].node @@ -7238,7 +7261,7 @@ yydefault: } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4621 + //line php7/php7.y:4644 { yyVAL.node = yyDollar[1].node @@ -7246,7 +7269,7 @@ yydefault: } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4627 + //line php7/php7.y:4650 { yyVAL.node = yyDollar[2].node @@ -7260,7 +7283,7 @@ yydefault: } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4639 + //line php7/php7.y:4662 { yyVAL.node = yyDollar[1].node @@ -7268,7 +7291,7 @@ yydefault: } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4648 + //line php7/php7.y:4671 { yyVAL.node = yyDollar[1].node @@ -7276,7 +7299,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4654 + //line php7/php7.y:4677 { yyVAL.node = yyDollar[2].node @@ -7290,7 +7313,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4666 + //line php7/php7.y:4689 { yyVAL.node = yyDollar[1].node @@ -7298,7 +7321,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4675 + //line php7/php7.y:4698 { yyVAL.node = yyDollar[1].node @@ -7306,7 +7329,7 @@ yydefault: } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4681 + //line php7/php7.y:4704 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7323,7 +7346,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4696 + //line php7/php7.y:4719 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7340,7 +7363,7 @@ yydefault: } case 431: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4711 + //line php7/php7.y:4734 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7357,7 +7380,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4726 + //line php7/php7.y:4749 { yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7371,7 +7394,7 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4738 + //line php7/php7.y:4761 { yyVAL.node = yyDollar[1].node @@ -7379,7 +7402,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4747 + //line php7/php7.y:4770 { yyVAL.node = yyDollar[1].node @@ -7387,7 +7410,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4753 + //line php7/php7.y:4776 { yyVAL.node = yyDollar[1].node @@ -7395,7 +7418,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4759 + //line php7/php7.y:4782 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7409,7 +7432,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4774 + //line php7/php7.y:4797 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7426,7 +7449,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4789 + //line php7/php7.y:4812 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -7445,7 +7468,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4806 + //line php7/php7.y:4829 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -7460,7 +7483,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4822 + //line php7/php7.y:4845 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7474,7 +7497,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4834 + //line php7/php7.y:4857 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7488,7 +7511,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4849 + //line php7/php7.y:4872 { yyVAL.node = yyDollar[1].node @@ -7496,7 +7519,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4855 + //line php7/php7.y:4878 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7513,7 +7536,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4870 + //line php7/php7.y:4893 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7530,7 +7553,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4885 + //line php7/php7.y:4908 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7544,7 +7567,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4897 + //line php7/php7.y:4920 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7558,7 +7581,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4909 + //line php7/php7.y:4932 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7572,7 +7595,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4924 + //line php7/php7.y:4947 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7586,7 +7609,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4936 + //line php7/php7.y:4959 { yyVAL.node = yyDollar[2].node @@ -7600,7 +7623,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4948 + //line php7/php7.y:4971 { yyVAL.node = yyDollar[1].node @@ -7608,7 +7631,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4957 + //line php7/php7.y:4980 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7622,7 +7645,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4969 + //line php7/php7.y:4992 { yyVAL.node = yyDollar[2].node @@ -7636,7 +7659,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4981 + //line php7/php7.y:5004 { yyVAL.node = yyDollar[1].node @@ -7644,7 +7667,7 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4990 + //line php7/php7.y:5013 { yyVAL.list = yyDollar[1].list @@ -7652,7 +7675,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4999 + //line php7/php7.y:5022 { yyVAL.node = expr.NewArrayItem(nil, nil) @@ -7660,7 +7683,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5005 + //line php7/php7.y:5028 { yyVAL.node = yyDollar[1].node @@ -7668,7 +7691,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5014 + //line php7/php7.y:5037 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil)} @@ -7683,7 +7706,7 @@ yydefault: } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5027 + //line php7/php7.y:5050 { if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { yyVAL.list = []node.Node{} @@ -7695,7 +7718,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5040 + //line php7/php7.y:5063 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) @@ -7709,7 +7732,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5052 + //line php7/php7.y:5075 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) @@ -7720,7 +7743,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5061 + //line php7/php7.y:5084 { reference := expr.NewReference(yyDollar[4].node) yyVAL.node = expr.NewArrayItem(yyDollar[1].node, reference) @@ -7737,7 +7760,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5076 + //line php7/php7.y:5099 { reference := expr.NewReference(yyDollar[2].node) yyVAL.node = expr.NewArrayItem(nil, reference) @@ -7753,7 +7776,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5090 + //line php7/php7.y:5113 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[5].list) @@ -7773,7 +7796,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5108 + //line php7/php7.y:5131 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[3].list) @@ -7792,7 +7815,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5128 + //line php7/php7.y:5151 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -7800,7 +7823,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5134 + //line php7/php7.y:5157 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -7815,7 +7838,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5147 + //line php7/php7.y:5170 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -7823,7 +7846,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5153 + //line php7/php7.y:5176 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -7838,7 +7861,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5169 + //line php7/php7.y:5192 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7855,7 +7878,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5184 + //line php7/php7.y:5207 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7878,7 +7901,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5205 + //line php7/php7.y:5228 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7901,7 +7924,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5226 + //line php7/php7.y:5249 { variable := expr.NewVariable(yyDollar[2].node) @@ -7920,7 +7943,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5243 + //line php7/php7.y:5266 { name := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(name) @@ -7942,7 +7965,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5263 + //line php7/php7.y:5286 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -7967,7 +7990,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5286 + //line php7/php7.y:5309 { yyVAL.node = yyDollar[2].node @@ -7981,7 +8004,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5301 + //line php7/php7.y:5324 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -7995,7 +8018,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5313 + //line php7/php7.y:5336 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -8011,7 +8034,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5327 + //line php7/php7.y:5350 { var lnumber *scalar.Lnumber // TODO: add option to handle 64 bit integer @@ -8039,7 +8062,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5353 + //line php7/php7.y:5376 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -8056,7 +8079,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:5371 + //line php7/php7.y:5394 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -8076,7 +8099,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5389 + //line php7/php7.y:5412 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -8092,7 +8115,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5403 + //line php7/php7.y:5426 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -8106,7 +8129,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5415 + //line php7/php7.y:5438 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -8120,7 +8143,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5427 + //line php7/php7.y:5450 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -8136,7 +8159,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5441 + //line php7/php7.y:5464 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -8150,7 +8173,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5453 + //line php7/php7.y:5476 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -8164,7 +8187,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5468 + //line php7/php7.y:5491 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -8172,7 +8195,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5474 + //line php7/php7.y:5497 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -8183,7 +8206,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5486 + //line php7/php7.y:5509 { yyVAL.node = yyDollar[1].node diff --git a/php7/php7.y b/php7/php7.y index 62e396d..8ac9435 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -2352,6 +2352,9 @@ argument: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + // save comments + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_ELLIPSIS expr @@ -2362,7 +2365,7 @@ argument: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.EllipsisToken).AppendTo($$.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2478,6 +2481,8 @@ class_statement: $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + $1[0].GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | method_modifiers T_CONST class_const_list ';' @@ -2492,6 +2497,8 @@ class_statement: $4.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.SemiColonToken) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_USE name_list trait_adaptations @@ -2528,6 +2535,10 @@ class_statement: $6.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) $8.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + if len($1) > 0 { + $1[0].GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + } + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -2639,6 +2650,8 @@ trait_precedence: // save comments $2.Meta.SetTokenName(meta.InsteadofToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -2657,6 +2670,8 @@ trait_alias: $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | trait_method_reference T_AS reserved_non_modifiers @@ -2672,6 +2687,8 @@ trait_alias: $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | trait_method_reference T_AS member_modifier identifier @@ -2687,6 +2704,8 @@ trait_alias: $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) $4.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | trait_method_reference T_AS member_modifier @@ -2699,6 +2718,8 @@ trait_alias: // save comments $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -2714,7 +2735,7 @@ trait_method_reference: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2740,6 +2761,8 @@ absolute_trait_method_reference: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; diff --git a/visitor/dumper_test.go b/visitor/dumper_test.go index 214f1d9..8944b64 100644 --- a/visitor/dumper_test.go +++ b/visitor/dumper_test.go @@ -75,6 +75,7 @@ func ExampleDumper() { // | [*stmt.ClassMethod] // | "Position": Pos{Line: 5-9 Pos: 45-134} // | "Meta": + // | "\n\t\t\t\t" before "NodeStart" // | " " before "FunctionToken" // | "ReturnsRef": false // | "PhpDocComment": "" @@ -87,8 +88,6 @@ func ExampleDumper() { // | "Modifiers": // | [*node.Identifier] // | "Position": Pos{Line: 5-5 Pos: 45-50} - // | "Meta": - // | "\n\t\t\t\t" before "NodeStart" // | "Value": "public" // | "Params": // | [*node.Parameter] diff --git a/visitor/go_dumper_test.go b/visitor/go_dumper_test.go index 1765cee..a3c13c6 100644 --- a/visitor/go_dumper_test.go +++ b/visitor/go_dumper_test.go @@ -206,6 +206,17 @@ func ExampleGoDumper() { // &meta.Data{ // Type: meta.WhiteSpaceType, // Position: &position.Position{ + // StartLine: 4, + // EndLine: 5, + // StartPos: 40, + // EndPos: 44, + // }, + // Value: "\n\t\t\t\t", + // TokenName: meta.NodeStart, + // }, + // &meta.Data{ + // Type: meta.WhiteSpaceType, + // Position: &position.Position{ // StartLine: 5, // EndLine: 5, // StartPos: 51, @@ -247,19 +258,6 @@ func ExampleGoDumper() { // StartPos: 45, // EndPos: 50, // }, - // Meta: meta.Collection{ - // &meta.Data{ - // Type: meta.WhiteSpaceType, - // Position: &position.Position{ - // StartLine: 4, - // EndLine: 5, - // StartPos: 40, - // EndPos: 44, - // }, - // Value: "\n\t\t\t\t", - // TokenName: meta.NodeStart, - // }, - // }, // Value: "public", // }, // }, diff --git a/visitor/json_dumper_test.go b/visitor/json_dumper_test.go index 4b6328a..81af330 100644 --- a/visitor/json_dumper_test.go +++ b/visitor/json_dumper_test.go @@ -37,5 +37,5 @@ func ExampleJsonDumper() { nodes.Walk(dumper) // Output: - // {"type":"*node.Root","position":{"startPos":10,"endPos":166,"startLine":3,"endLine":12},"Stmts":[{"type":"*stmt.Namespace","position":{"startPos":10,"endPos":166,"startLine":3,"endLine":12},"meta":[{"type":"*meta.TokenType","value":" Date: Mon, 31 Dec 2018 17:06:27 +0200 Subject: [PATCH 05/12] #70: [php7] fix meta filter --- php7/parser.go | 20 ++++++++++++-------- php7/php7.go | 48 +++++++++++++++++++++++------------------------- php7/php7.y | 46 +++++++++++++++++++++++----------------------- 3 files changed, 58 insertions(+), 56 deletions(-) diff --git a/php7/parser.go b/php7/parser.go index c8cb795..fe46e28 100644 --- a/php7/parser.go +++ b/php7/parser.go @@ -13,14 +13,6 @@ import ( "github.com/z7zmey/php-parser/scanner" ) -var inheritMetaFilter = meta.AndFilter( - meta.TokenNameFilter(meta.NodeStart), - meta.OrFilter( - meta.TypeFilter(meta.CommentType, meta.WhiteSpaceType), - meta.ValueFilter(" 0 { - yyDollar[1].list[0].GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -5051,7 +5049,7 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.InsteadofToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5070,7 +5068,7 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5089,7 +5087,7 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5108,7 +5106,7 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5124,7 +5122,7 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AsToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5167,7 +5165,7 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - yyDollar[1].node.GetMeta().Cut(inheritMetaFilter).PrependTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } diff --git a/php7/php7.y b/php7/php7.y index 8ac9435..cbba504 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -396,7 +396,7 @@ name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) // save comments - $1[0].GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -647,7 +647,7 @@ group_use_declaration: } $6.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) - $1[0].GetMeta().Cut(inheritMetaFilter).PrependTo(name.GetMeta()) + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -671,7 +671,7 @@ group_use_declaration: } $7.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) - $2[0].GetMeta().Cut(inheritMetaFilter).PrependTo(name.GetMeta()) + $2[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -696,7 +696,7 @@ mixed_group_use_declaration: } $6.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) - $1[0].GetMeta().Cut(inheritMetaFilter).PrependTo(name.GetMeta()) + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -720,7 +720,7 @@ mixed_group_use_declaration: } $7.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) - $2[0].GetMeta().Cut(inheritMetaFilter).PrependTo(name.GetMeta()) + $2[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -796,7 +796,7 @@ inline_use_declaration: { $$ = $1 - $1.(*stmt.Use).Use.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1.(*stmt.Use).Use.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -804,7 +804,7 @@ inline_use_declaration: { $$ = $2.(*stmt.Use).SetUseType($1) - $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -820,7 +820,7 @@ unprefixed_use_declaration: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) - $1[0].GetMeta().Cut(inheritMetaFilter).PrependTo(name.GetMeta()) + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -839,7 +839,7 @@ unprefixed_use_declaration: $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - $1[0].GetMeta().Cut(inheritMetaFilter).PrependTo(name.GetMeta()) + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -850,7 +850,7 @@ use_declaration: { $$ = $1 - $1.(*stmt.Use).Use.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1.(*stmt.Use).Use.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1178,7 +1178,7 @@ statement: $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) - $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1508,7 +1508,7 @@ class_declaration_statement: $7.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) $9.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) - $1[0].GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2148,7 +2148,7 @@ parameter: // save comments if $1 != nil { - $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) } if $2 != nil { $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) @@ -2186,7 +2186,7 @@ parameter: // save comments if $1 != nil { - $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) } if $2 != nil { $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) @@ -2353,7 +2353,7 @@ argument: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) // save comments - $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2481,7 +2481,7 @@ class_statement: $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) - $1[0].GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2536,7 +2536,7 @@ class_statement: $8.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) if len($1) > 0 { - $1[0].GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2650,7 +2650,7 @@ trait_precedence: // save comments $2.Meta.SetTokenName(meta.InsteadofToken).AppendTo($$.GetMeta()) - $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2670,7 +2670,7 @@ trait_alias: $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2687,7 +2687,7 @@ trait_alias: $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2704,7 +2704,7 @@ trait_alias: $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) $4.Meta.SetTokenName(meta.NodeStart).AppendTo(alias.GetMeta()) - $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2718,7 +2718,7 @@ trait_alias: // save comments $2.Meta.SetTokenName(meta.AsToken).AppendTo($$.GetMeta()) - $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2761,7 +2761,7 @@ absolute_trait_method_reference: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) - $1.GetMeta().Cut(inheritMetaFilter).PrependTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } From a0dda154bfce9af97fe57f00a13b265aa56bf81c Mon Sep 17 00:00:00 2001 From: z7zmey Date: Mon, 31 Dec 2018 17:13:05 +0200 Subject: [PATCH 06/12] #70: [php7] inherit meta.Data at stmt.Property, stmt.Constant, stmt.Class, expr.PostDec, expr.PostInc, expr.Ternary and assign, binary nodes --- php7/php7.go | 500 ++++++++++++++++++++++++++++++--------------------- php7/php7.y | 114 ++++++++++-- 2 files changed, 399 insertions(+), 215 deletions(-) diff --git a/php7/php7.go b/php7/php7.go index 7303841..a9c5f79 100644 --- a/php7/php7.go +++ b/php7/php7.go @@ -346,7 +346,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php7/php7.y:5518 +//line php7/php7.y:5610 //line yacctab:1 var yyExca = [...]int{ @@ -5371,7 +5371,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -5390,7 +5390,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) @@ -5427,7 +5427,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -5444,7 +5444,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -5525,7 +5525,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ClassToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[6].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[8].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) @@ -5574,7 +5574,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(list.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) yyDollar[5].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) @@ -5593,7 +5593,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(shortList.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(shortList.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) @@ -5611,11 +5611,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 298: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3194 + //line php7/php7.y:3196 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) @@ -5626,11 +5628,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 299: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3207 + //line php7/php7.y:3211 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5644,7 +5648,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3219 + //line php7/php7.y:3223 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5654,11 +5658,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PlusEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3231 + //line php7/php7.y:3237 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5668,11 +5674,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.MinusEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3243 + //line php7/php7.y:3251 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5682,11 +5690,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.MulEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3255 + //line php7/php7.y:3265 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5696,11 +5706,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PowEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3267 + //line php7/php7.y:3279 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5710,11 +5722,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DivEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3279 + //line php7/php7.y:3293 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5724,11 +5738,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.ConcatEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3291 + //line php7/php7.y:3307 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5738,11 +5754,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.ModEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3303 + //line php7/php7.y:3321 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5752,11 +5770,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AndEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3315 + //line php7/php7.y:3335 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5766,11 +5786,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.OrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3327 + //line php7/php7.y:3349 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5780,11 +5802,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.XorEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 310: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3339 + //line php7/php7.y:3363 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5794,11 +5818,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SlEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 311: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3351 + //line php7/php7.y:3377 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5808,11 +5834,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3363 + //line php7/php7.y:3391 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5822,11 +5850,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IncToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3375 + //line php7/php7.y:3405 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5840,7 +5870,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3387 + //line php7/php7.y:3417 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5850,11 +5880,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DecToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 315: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3399 + //line php7/php7.y:3431 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5868,7 +5900,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3411 + //line php7/php7.y:3443 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5878,11 +5910,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.BooleanOrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3423 + //line php7/php7.y:3457 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5892,11 +5926,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.BooleanAndToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 318: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3435 + //line php7/php7.y:3471 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -5906,11 +5942,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalOrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3447 + //line php7/php7.y:3485 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -5920,11 +5958,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalAndToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3459 + //line php7/php7.y:3499 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -5934,11 +5974,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalXorToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3471 + //line php7/php7.y:3513 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5948,11 +5990,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.VerticalBarToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3483 + //line php7/php7.y:3527 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5962,11 +6006,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3495 + //line php7/php7.y:3541 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5976,11 +6022,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.CaretToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3507 + //line php7/php7.y:3555 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5990,11 +6038,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DotToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3519 + //line php7/php7.y:3569 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -6004,11 +6054,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PlusToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3531 + //line php7/php7.y:3583 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -6018,11 +6070,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.MinusToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3543 + //line php7/php7.y:3597 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -6032,11 +6086,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AsteriskToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3555 + //line php7/php7.y:3611 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -6046,11 +6102,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PowToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3567 + //line php7/php7.y:3625 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -6060,11 +6118,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SlashToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3579 + //line php7/php7.y:3639 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -6074,11 +6134,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PercentToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 331: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3591 + //line php7/php7.y:3653 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -6088,11 +6150,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SlToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 332: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3603 + //line php7/php7.y:3667 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -6102,11 +6166,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3615 + //line php7/php7.y:3681 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -6120,7 +6186,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3627 + //line php7/php7.y:3693 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -6134,7 +6200,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3639 + //line php7/php7.y:3705 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -6148,7 +6214,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3651 + //line php7/php7.y:3717 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -6162,7 +6228,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3663 + //line php7/php7.y:3729 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6172,11 +6238,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3675 + //line php7/php7.y:3743 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6186,11 +6254,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3687 + //line php7/php7.y:3757 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -6200,11 +6270,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3699 + //line php7/php7.y:3771 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -6215,11 +6287,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.IsNotEqualToken) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3712 + //line php7/php7.y:3786 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -6229,11 +6303,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LessToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3724 + //line php7/php7.y:3800 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6243,11 +6319,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3736 + //line php7/php7.y:3814 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -6257,11 +6335,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.GreaterToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3748 + //line php7/php7.y:3828 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6271,11 +6351,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3760 + //line php7/php7.y:3842 { yyVAL.node = binary.NewSpaceship(yyDollar[1].node, yyDollar[3].node) @@ -6285,11 +6367,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SpaceshipToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 346: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3772 + //line php7/php7.y:3856 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -6299,11 +6383,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.InstanceofToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 347: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3784 + //line php7/php7.y:3870 { yyVAL.node = yyDollar[2].node @@ -6317,7 +6403,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3796 + //line php7/php7.y:3882 { yyVAL.node = yyDollar[1].node @@ -6325,7 +6411,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3802 + //line php7/php7.y:3888 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -6336,11 +6422,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 350: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3815 + //line php7/php7.y:3903 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -6351,11 +6439,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 351: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3828 + //line php7/php7.y:3918 { yyVAL.node = binary.NewCoalesce(yyDollar[1].node, yyDollar[3].node) @@ -6365,11 +6455,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.CoalesceToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3840 + //line php7/php7.y:3932 { yyVAL.node = yyDollar[1].node @@ -6377,7 +6469,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3846 + //line php7/php7.y:3938 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -6392,7 +6484,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3859 + //line php7/php7.y:3951 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -6407,7 +6499,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3872 + //line php7/php7.y:3964 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -6422,7 +6514,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3885 + //line php7/php7.y:3977 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -6437,7 +6529,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3898 + //line php7/php7.y:3990 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -6452,7 +6544,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3911 + //line php7/php7.y:4003 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -6467,7 +6559,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3924 + //line php7/php7.y:4016 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -6482,7 +6574,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3937 + //line php7/php7.y:4029 { var e *expr.Exit if yyDollar[2].node != nil { @@ -6511,7 +6603,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3964 + //line php7/php7.y:4056 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -6525,7 +6617,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3976 + //line php7/php7.y:4068 { yyVAL.node = yyDollar[1].node @@ -6533,7 +6625,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3982 + //line php7/php7.y:4074 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -6547,7 +6639,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3994 + //line php7/php7.y:4086 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -6561,7 +6653,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4006 + //line php7/php7.y:4098 { yyVAL.node = expr.NewYield(nil, nil) @@ -6575,7 +6667,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4018 + //line php7/php7.y:4110 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6589,7 +6681,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4030 + //line php7/php7.y:4122 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6604,7 +6696,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4043 + //line php7/php7.y:4135 { yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) @@ -6618,7 +6710,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:4055 + //line php7/php7.y:4147 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].token != nil, yyDollar[3].str) @@ -6639,7 +6731,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-12 : yypt+1] - //line php7/php7.y:4074 + //line php7/php7.y:4166 { yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].ClosureUse, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].token != nil, yyDollar[4].str) @@ -6661,7 +6753,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4097 + //line php7/php7.y:4189 { yyVAL.str = yylex.(*Parser).PhpDocComment yylex.(*Parser).PhpDocComment = "" @@ -6670,19 +6762,19 @@ yydefault: } case 372: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4107 + //line php7/php7.y:4199 { yyVAL.token = nil } case 373: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4111 + //line php7/php7.y:4203 { yyVAL.token = yyDollar[1].token } case 374: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4118 + //line php7/php7.y:4210 { yyVAL.ClosureUse = nil @@ -6690,7 +6782,7 @@ yydefault: } case 375: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4124 + //line php7/php7.y:4216 { yyVAL.ClosureUse = expr.NewClosureUse(yyDollar[3].list) @@ -6706,7 +6798,7 @@ yydefault: } case 376: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4141 + //line php7/php7.y:4233 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6717,7 +6809,7 @@ yydefault: } case 377: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4150 + //line php7/php7.y:4242 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -6725,7 +6817,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4159 + //line php7/php7.y:4251 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -6742,7 +6834,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4174 + //line php7/php7.y:4266 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[2].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6762,7 +6854,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4195 + //line php7/php7.y:4287 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6773,7 +6865,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4204 + //line php7/php7.y:4296 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6787,7 +6879,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4216 + //line php7/php7.y:4308 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6801,7 +6893,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4228 + //line php7/php7.y:4320 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6812,7 +6904,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4240 + //line php7/php7.y:4332 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6826,7 +6918,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4252 + //line php7/php7.y:4344 { yyVAL.node = yyDollar[1].node @@ -6834,7 +6926,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4261 + //line php7/php7.y:4353 { yyVAL.node = yyDollar[1].node @@ -6842,7 +6934,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4267 + //line php7/php7.y:4359 { yyVAL.node = yyDollar[1].node @@ -6850,7 +6942,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4276 + //line php7/php7.y:4368 { yyVAL.node = nil @@ -6858,7 +6950,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4282 + //line php7/php7.y:4374 { yyVAL.node = expr.NewExit(yyDollar[2].node) @@ -6875,7 +6967,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4300 + //line php7/php7.y:4392 { yyVAL.list = []node.Node{} @@ -6883,7 +6975,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4306 + //line php7/php7.y:4398 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} @@ -6891,7 +6983,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4312 + //line php7/php7.y:4404 { yyVAL.list = yyDollar[1].list @@ -6899,7 +6991,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4321 + //line php7/php7.y:4413 { yyVAL.node = nil @@ -6907,7 +6999,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4327 + //line php7/php7.y:4419 { yyVAL.node = yyDollar[1].node @@ -6915,7 +7007,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4336 + //line php7/php7.y:4428 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -6931,7 +7023,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4350 + //line php7/php7.y:4442 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -6946,7 +7038,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4363 + //line php7/php7.y:4455 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -6960,7 +7052,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4378 + //line php7/php7.y:4470 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -6974,7 +7066,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4390 + //line php7/php7.y:4482 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -6988,7 +7080,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4402 + //line php7/php7.y:4494 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7002,7 +7094,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4414 + //line php7/php7.y:4506 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7016,7 +7108,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4426 + //line php7/php7.y:4518 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7030,7 +7122,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4438 + //line php7/php7.y:4530 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7044,7 +7136,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4450 + //line php7/php7.y:4542 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7058,7 +7150,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4462 + //line php7/php7.y:4554 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7072,7 +7164,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4474 + //line php7/php7.y:4566 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7086,7 +7178,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4486 + //line php7/php7.y:4578 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7100,7 +7192,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4498 + //line php7/php7.y:4590 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -7116,7 +7208,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4512 + //line php7/php7.y:4604 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -7130,7 +7222,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4524 + //line php7/php7.y:4616 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -7144,7 +7236,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4536 + //line php7/php7.y:4628 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -7158,7 +7250,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4548 + //line php7/php7.y:4640 { yyVAL.node = yyDollar[1].node @@ -7166,7 +7258,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4554 + //line php7/php7.y:4646 { yyVAL.node = yyDollar[1].node @@ -7174,7 +7266,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4563 + //line php7/php7.y:4655 { yyVAL.node = expr.NewConstFetch(yyDollar[1].node) @@ -7185,7 +7277,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4572 + //line php7/php7.y:4664 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7202,7 +7294,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4587 + //line php7/php7.y:4679 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7219,7 +7311,7 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4605 + //line php7/php7.y:4697 { yyVAL.node = yyDollar[1].node @@ -7227,7 +7319,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4611 + //line php7/php7.y:4703 { yyVAL.node = yyDollar[1].node @@ -7235,7 +7327,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4620 + //line php7/php7.y:4712 { yyVAL.node = nil @@ -7243,7 +7335,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4626 + //line php7/php7.y:4718 { yyVAL.node = yyDollar[1].node @@ -7251,7 +7343,7 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4635 + //line php7/php7.y:4727 { yyVAL.node = yyDollar[1].node @@ -7259,7 +7351,7 @@ yydefault: } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4644 + //line php7/php7.y:4736 { yyVAL.node = yyDollar[1].node @@ -7267,7 +7359,7 @@ yydefault: } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4650 + //line php7/php7.y:4742 { yyVAL.node = yyDollar[2].node @@ -7281,7 +7373,7 @@ yydefault: } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4662 + //line php7/php7.y:4754 { yyVAL.node = yyDollar[1].node @@ -7289,7 +7381,7 @@ yydefault: } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4671 + //line php7/php7.y:4763 { yyVAL.node = yyDollar[1].node @@ -7297,7 +7389,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4677 + //line php7/php7.y:4769 { yyVAL.node = yyDollar[2].node @@ -7311,7 +7403,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4689 + //line php7/php7.y:4781 { yyVAL.node = yyDollar[1].node @@ -7319,7 +7411,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4698 + //line php7/php7.y:4790 { yyVAL.node = yyDollar[1].node @@ -7327,7 +7419,7 @@ yydefault: } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4704 + //line php7/php7.y:4796 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7344,7 +7436,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4719 + //line php7/php7.y:4811 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7361,7 +7453,7 @@ yydefault: } case 431: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4734 + //line php7/php7.y:4826 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7378,7 +7470,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4749 + //line php7/php7.y:4841 { yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7392,7 +7484,7 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4761 + //line php7/php7.y:4853 { yyVAL.node = yyDollar[1].node @@ -7400,7 +7492,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4770 + //line php7/php7.y:4862 { yyVAL.node = yyDollar[1].node @@ -7408,7 +7500,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4776 + //line php7/php7.y:4868 { yyVAL.node = yyDollar[1].node @@ -7416,7 +7508,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4782 + //line php7/php7.y:4874 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7430,7 +7522,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4797 + //line php7/php7.y:4889 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7447,7 +7539,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4812 + //line php7/php7.y:4904 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -7466,7 +7558,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4829 + //line php7/php7.y:4921 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -7481,7 +7573,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4845 + //line php7/php7.y:4937 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7495,7 +7587,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4857 + //line php7/php7.y:4949 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7509,7 +7601,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4872 + //line php7/php7.y:4964 { yyVAL.node = yyDollar[1].node @@ -7517,7 +7609,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4878 + //line php7/php7.y:4970 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7534,7 +7626,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4893 + //line php7/php7.y:4985 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7551,7 +7643,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4908 + //line php7/php7.y:5000 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7565,7 +7657,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4920 + //line php7/php7.y:5012 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7579,7 +7671,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4932 + //line php7/php7.y:5024 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7593,7 +7685,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4947 + //line php7/php7.y:5039 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7607,13 +7699,13 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4959 + //line php7/php7.y:5051 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) @@ -7621,7 +7713,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4971 + //line php7/php7.y:5063 { yyVAL.node = yyDollar[1].node @@ -7629,7 +7721,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4980 + //line php7/php7.y:5072 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7643,13 +7735,13 @@ yydefault: } case 452: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4992 + //line php7/php7.y:5084 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) @@ -7657,7 +7749,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5004 + //line php7/php7.y:5096 { yyVAL.node = yyDollar[1].node @@ -7665,7 +7757,7 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5013 + //line php7/php7.y:5105 { yyVAL.list = yyDollar[1].list @@ -7673,7 +7765,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:5022 + //line php7/php7.y:5114 { yyVAL.node = expr.NewArrayItem(nil, nil) @@ -7681,7 +7773,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5028 + //line php7/php7.y:5120 { yyVAL.node = yyDollar[1].node @@ -7689,7 +7781,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5037 + //line php7/php7.y:5129 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil)} @@ -7704,7 +7796,7 @@ yydefault: } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5050 + //line php7/php7.y:5142 { if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { yyVAL.list = []node.Node{} @@ -7716,7 +7808,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5063 + //line php7/php7.y:5155 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) @@ -7730,7 +7822,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5075 + //line php7/php7.y:5167 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) @@ -7741,7 +7833,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5084 + //line php7/php7.y:5176 { reference := expr.NewReference(yyDollar[4].node) yyVAL.node = expr.NewArrayItem(yyDollar[1].node, reference) @@ -7758,7 +7850,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5099 + //line php7/php7.y:5191 { reference := expr.NewReference(yyDollar[2].node) yyVAL.node = expr.NewArrayItem(nil, reference) @@ -7774,7 +7866,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5113 + //line php7/php7.y:5205 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[5].list) @@ -7794,7 +7886,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5131 + //line php7/php7.y:5223 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[3].list) @@ -7813,7 +7905,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5151 + //line php7/php7.y:5243 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -7821,7 +7913,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5157 + //line php7/php7.y:5249 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -7836,7 +7928,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5170 + //line php7/php7.y:5262 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -7844,7 +7936,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5176 + //line php7/php7.y:5268 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -7859,7 +7951,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5192 + //line php7/php7.y:5284 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7876,7 +7968,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5207 + //line php7/php7.y:5299 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7899,7 +7991,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5228 + //line php7/php7.y:5320 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7922,7 +8014,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5249 + //line php7/php7.y:5341 { variable := expr.NewVariable(yyDollar[2].node) @@ -7941,7 +8033,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5266 + //line php7/php7.y:5358 { name := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(name) @@ -7963,7 +8055,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5286 + //line php7/php7.y:5378 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -7988,7 +8080,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5309 + //line php7/php7.y:5401 { yyVAL.node = yyDollar[2].node @@ -8002,7 +8094,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5324 + //line php7/php7.y:5416 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -8016,7 +8108,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5336 + //line php7/php7.y:5428 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -8032,7 +8124,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5350 + //line php7/php7.y:5442 { var lnumber *scalar.Lnumber // TODO: add option to handle 64 bit integer @@ -8060,7 +8152,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5376 + //line php7/php7.y:5468 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -8077,7 +8169,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:5394 + //line php7/php7.y:5486 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -8097,7 +8189,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5412 + //line php7/php7.y:5504 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -8113,7 +8205,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5426 + //line php7/php7.y:5518 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -8127,7 +8219,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5438 + //line php7/php7.y:5530 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -8141,7 +8233,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5450 + //line php7/php7.y:5542 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -8157,7 +8249,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5464 + //line php7/php7.y:5556 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -8171,7 +8263,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5476 + //line php7/php7.y:5568 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -8185,7 +8277,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5491 + //line php7/php7.y:5583 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -8193,7 +8285,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5497 + //line php7/php7.y:5589 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -8204,7 +8296,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5509 + //line php7/php7.y:5601 { yyVAL.node = yyDollar[1].node diff --git a/php7/php7.y b/php7/php7.y index cbba504..e78c9d6 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -2954,7 +2954,7 @@ property: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2971,7 +2971,7 @@ property: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) @@ -3008,7 +3008,7 @@ class_const_decl: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -3026,7 +3026,7 @@ const_decl: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -3106,7 +3106,7 @@ anonymous_class: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) // save comments - $1.Meta.SetTokenName(meta.ClassToken).AppendTo($$.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $6.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) $8.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) @@ -3155,7 +3155,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(list.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) $5.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) @@ -3172,7 +3172,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(shortList.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(shortList.GetMeta()) $4.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) @@ -3188,6 +3188,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable '=' '&' expr @@ -3201,6 +3203,8 @@ expr_without_variable: $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CLONE expr @@ -3225,6 +3229,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PlusEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_MINUS_EQUAL expr @@ -3237,6 +3243,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.MinusEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_MUL_EQUAL expr @@ -3249,6 +3257,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.MulEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_POW_EQUAL expr @@ -3261,6 +3271,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PowEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_DIV_EQUAL expr @@ -3273,6 +3285,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.DivEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_CONCAT_EQUAL expr @@ -3285,6 +3299,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.ConcatEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_MOD_EQUAL expr @@ -3297,6 +3313,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.ModEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_AND_EQUAL expr @@ -3309,6 +3327,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.AndEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_OR_EQUAL expr @@ -3321,6 +3341,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.OrEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_XOR_EQUAL expr @@ -3333,6 +3355,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.XorEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_SL_EQUAL expr @@ -3345,6 +3369,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SlEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_SR_EQUAL expr @@ -3357,6 +3383,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SrEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_INC @@ -3369,6 +3397,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IncToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_INC variable @@ -3393,6 +3423,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.DecToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_DEC variable @@ -3417,6 +3449,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.BooleanOrToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_BOOLEAN_AND expr @@ -3429,6 +3463,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.BooleanAndToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_LOGICAL_OR expr @@ -3441,6 +3477,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.LogicalOrToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_LOGICAL_AND expr @@ -3453,6 +3491,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.LogicalAndToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_LOGICAL_XOR expr @@ -3465,6 +3505,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.LogicalXorToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '|' expr @@ -3477,6 +3519,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.VerticalBarToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '&' expr @@ -3489,6 +3533,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '^' expr @@ -3501,6 +3547,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.CaretToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '.' expr @@ -3513,6 +3561,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.DotToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '+' expr @@ -3525,6 +3575,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PlusToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '-' expr @@ -3537,6 +3589,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.MinusToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '*' expr @@ -3549,6 +3603,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.AsteriskToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_POW expr @@ -3561,6 +3617,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PowToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '/' expr @@ -3573,6 +3631,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SlashToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '%' expr @@ -3585,6 +3645,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PercentToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_SL expr @@ -3597,6 +3659,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SlToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_SR expr @@ -3609,6 +3673,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SrToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '+' expr %prec T_INC @@ -3669,6 +3735,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_NOT_IDENTICAL expr @@ -3681,6 +3749,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_EQUAL expr @@ -3693,6 +3763,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_NOT_EQUAL expr @@ -3706,6 +3778,8 @@ expr_without_variable: $2.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.IsNotEqualToken) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '<' expr @@ -3718,6 +3792,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.LessToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_SMALLER_OR_EQUAL expr @@ -3730,6 +3806,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '>' expr @@ -3742,6 +3820,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.GreaterToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_GREATER_OR_EQUAL expr @@ -3754,6 +3834,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_SPACESHIP expr @@ -3766,6 +3848,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SpaceshipToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_INSTANCEOF class_name_reference @@ -3778,6 +3862,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.InstanceofToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '(' expr ')' @@ -3809,6 +3895,8 @@ expr_without_variable: $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) $4.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '?' ':' expr @@ -3822,6 +3910,8 @@ expr_without_variable: $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_COALESCE expr @@ -3834,6 +3924,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.CoalesceToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | internal_functions_in_yacc @@ -4960,8 +5052,8 @@ member_name: $$ = $2; // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) + $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) @@ -4993,8 +5085,8 @@ property_name: $$ = $2; // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) + $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) From 4abd14d2a6bc158cbe591e261005b1f808dd745f Mon Sep 17 00:00:00 2001 From: z7zmey Date: Mon, 31 Dec 2018 18:27:46 +0200 Subject: [PATCH 07/12] #70: [php7] inherit meta.Data at expr.FunctionCall, expr.StaticCall, expr.ConstFetch, expr.ArrayDimFetch, expr.MethodCall, expr.PropertyFetch, expr.StaticPropertyFetch, expr.ArrayItem --- php7/php7.go | 332 ++++++++++++++++------------- php7/php7.y | 86 ++++++-- visitor/dumper_test.go | 4 +- visitor/go_dumper_test.go | 26 +-- visitor/json_dumper_test.go | 2 +- visitor/pretty_json_dumper_test.go | 14 +- 6 files changed, 274 insertions(+), 190 deletions(-) diff --git a/php7/php7.go b/php7/php7.go index a9c5f79..5c73743 100644 --- a/php7/php7.go +++ b/php7/php7.go @@ -346,7 +346,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php7/php7.y:5610 +//line php7/php7.y:5652 //line yacctab:1 var yyExca = [...]int{ @@ -6861,11 +6861,14 @@ yydefault: // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node)) + // save comments + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 381: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4296 + //line php7/php7.y:4299 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6874,12 +6877,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4308 + //line php7/php7.y:4312 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6888,23 +6892,25 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 383: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4320 + //line php7/php7.y:4325 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node)) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4332 + //line php7/php7.y:4338 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6918,7 +6924,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4344 + //line php7/php7.y:4350 { yyVAL.node = yyDollar[1].node @@ -6926,7 +6932,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4353 + //line php7/php7.y:4359 { yyVAL.node = yyDollar[1].node @@ -6934,7 +6940,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4359 + //line php7/php7.y:4365 { yyVAL.node = yyDollar[1].node @@ -6942,7 +6948,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4368 + //line php7/php7.y:4374 { yyVAL.node = nil @@ -6950,7 +6956,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4374 + //line php7/php7.y:4380 { yyVAL.node = expr.NewExit(yyDollar[2].node) @@ -6958,8 +6964,8 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.OpenParenthesisToken) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.OpenParenthesisToken) + yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.CloseParenthesisToken) @@ -6967,7 +6973,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4392 + //line php7/php7.y:4398 { yyVAL.list = []node.Node{} @@ -6975,7 +6981,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4398 + //line php7/php7.y:4404 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} @@ -6983,7 +6989,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4404 + //line php7/php7.y:4410 { yyVAL.list = yyDollar[1].list @@ -6991,7 +6997,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4413 + //line php7/php7.y:4419 { yyVAL.node = nil @@ -6999,7 +7005,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4419 + //line php7/php7.y:4425 { yyVAL.node = yyDollar[1].node @@ -7007,7 +7013,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4428 + //line php7/php7.y:4434 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -7023,7 +7029,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4442 + //line php7/php7.y:4448 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -7038,7 +7044,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4455 + //line php7/php7.y:4461 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -7052,7 +7058,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4470 + //line php7/php7.y:4476 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -7066,7 +7072,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4482 + //line php7/php7.y:4488 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -7080,7 +7086,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4494 + //line php7/php7.y:4500 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7094,7 +7100,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4506 + //line php7/php7.y:4512 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7108,7 +7114,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4518 + //line php7/php7.y:4524 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7122,7 +7128,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4530 + //line php7/php7.y:4536 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7136,7 +7142,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4542 + //line php7/php7.y:4548 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7150,7 +7156,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4554 + //line php7/php7.y:4560 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7164,7 +7170,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4566 + //line php7/php7.y:4572 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7178,7 +7184,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4578 + //line php7/php7.y:4584 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7192,7 +7198,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4590 + //line php7/php7.y:4596 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -7208,7 +7214,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4604 + //line php7/php7.y:4610 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -7222,7 +7228,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4616 + //line php7/php7.y:4622 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -7236,7 +7242,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4628 + //line php7/php7.y:4634 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -7250,7 +7256,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4640 + //line php7/php7.y:4646 { yyVAL.node = yyDollar[1].node @@ -7258,7 +7264,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4646 + //line php7/php7.y:4652 { yyVAL.node = yyDollar[1].node @@ -7266,18 +7272,21 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4655 + //line php7/php7.y:4661 { yyVAL.node = expr.NewConstFetch(yyDollar[1].node) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + // save comments + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 415: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4664 + //line php7/php7.y:4673 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7290,11 +7299,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4679 + //line php7/php7.y:4690 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7307,11 +7318,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4697 + //line php7/php7.y:4710 { yyVAL.node = yyDollar[1].node @@ -7319,7 +7332,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4703 + //line php7/php7.y:4716 { yyVAL.node = yyDollar[1].node @@ -7327,7 +7340,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4712 + //line php7/php7.y:4725 { yyVAL.node = nil @@ -7335,7 +7348,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4718 + //line php7/php7.y:4731 { yyVAL.node = yyDollar[1].node @@ -7343,7 +7356,7 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4727 + //line php7/php7.y:4740 { yyVAL.node = yyDollar[1].node @@ -7351,7 +7364,7 @@ yydefault: } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4736 + //line php7/php7.y:4749 { yyVAL.node = yyDollar[1].node @@ -7359,7 +7372,7 @@ yydefault: } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4742 + //line php7/php7.y:4755 { yyVAL.node = yyDollar[2].node @@ -7373,7 +7386,7 @@ yydefault: } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4754 + //line php7/php7.y:4767 { yyVAL.node = yyDollar[1].node @@ -7381,7 +7394,7 @@ yydefault: } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4763 + //line php7/php7.y:4776 { yyVAL.node = yyDollar[1].node @@ -7389,13 +7402,13 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4769 + //line php7/php7.y:4782 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) @@ -7403,7 +7416,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4781 + //line php7/php7.y:4794 { yyVAL.node = yyDollar[1].node @@ -7411,7 +7424,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4790 + //line php7/php7.y:4803 { yyVAL.node = yyDollar[1].node @@ -7419,7 +7432,7 @@ yydefault: } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4796 + //line php7/php7.y:4809 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7427,31 +7440,16 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) + yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).PrependTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 430: - yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4811 - { - yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) - - // save position - yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) - - // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) - yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) - - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) - } - case 431: yyDollar = yyS[yypt-4 : yypt+1] //line php7/php7.y:4826 { @@ -7461,16 +7459,37 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenCurlyBracesToken) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) + yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).PrependTo(yyVAL.node.GetMeta()) + yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 431: + yyDollar = yyS[yypt-4 : yypt+1] + //line php7/php7.y:4843 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenCurlyBracesToken) + yyDollar[2].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).PrependTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseCurlyBracesToken) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 432: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4841 + //line php7/php7.y:4860 { yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7480,11 +7499,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4853 + //line php7/php7.y:4874 { yyVAL.node = yyDollar[1].node @@ -7492,7 +7513,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4862 + //line php7/php7.y:4883 { yyVAL.node = yyDollar[1].node @@ -7500,7 +7521,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4868 + //line php7/php7.y:4889 { yyVAL.node = yyDollar[1].node @@ -7508,7 +7529,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4874 + //line php7/php7.y:4895 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7518,11 +7539,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4889 + //line php7/php7.y:4912 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7539,7 +7562,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4904 + //line php7/php7.y:4927 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -7558,7 +7581,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4921 + //line php7/php7.y:4944 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -7573,7 +7596,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4937 + //line php7/php7.y:4960 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7583,11 +7606,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 441: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4949 + //line php7/php7.y:4974 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7597,11 +7622,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 442: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4964 + //line php7/php7.y:4991 { yyVAL.node = yyDollar[1].node @@ -7609,7 +7636,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4970 + //line php7/php7.y:4997 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7617,16 +7644,18 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) + yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).PrependTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 444: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4985 + //line php7/php7.y:5014 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7634,16 +7663,18 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) // save comments - yyDollar[2].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenCurlyBracesToken) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenCurlyBracesToken) + yyDollar[2].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).PrependTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseCurlyBracesToken) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5000 + //line php7/php7.y:5031 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7653,11 +7684,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5012 + //line php7/php7.y:5045 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7667,11 +7700,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5024 + //line php7/php7.y:5059 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7681,11 +7716,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5039 + //line php7/php7.y:5076 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7699,7 +7736,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5051 + //line php7/php7.y:5088 { yyVAL.node = yyDollar[2].node @@ -7713,7 +7750,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5063 + //line php7/php7.y:5100 { yyVAL.node = yyDollar[1].node @@ -7721,7 +7758,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5072 + //line php7/php7.y:5109 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7735,7 +7772,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5084 + //line php7/php7.y:5121 { yyVAL.node = yyDollar[2].node @@ -7749,7 +7786,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5096 + //line php7/php7.y:5133 { yyVAL.node = yyDollar[1].node @@ -7757,7 +7794,7 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5105 + //line php7/php7.y:5142 { yyVAL.list = yyDollar[1].list @@ -7765,7 +7802,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:5114 + //line php7/php7.y:5151 { yyVAL.node = expr.NewArrayItem(nil, nil) @@ -7773,7 +7810,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5120 + //line php7/php7.y:5157 { yyVAL.node = yyDollar[1].node @@ -7781,7 +7818,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5129 + //line php7/php7.y:5166 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil)} @@ -7796,7 +7833,7 @@ yydefault: } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5142 + //line php7/php7.y:5179 { if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { yyVAL.list = []node.Node{} @@ -7808,7 +7845,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5155 + //line php7/php7.y:5192 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) @@ -7818,22 +7855,26 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 460: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5167 + //line php7/php7.y:5206 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5176 + //line php7/php7.y:5217 { reference := expr.NewReference(yyDollar[4].node) yyVAL.node = expr.NewArrayItem(yyDollar[1].node, reference) @@ -7846,11 +7887,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5191 + //line php7/php7.y:5234 { reference := expr.NewReference(yyDollar[2].node) yyVAL.node = expr.NewArrayItem(nil, reference) @@ -7860,13 +7903,13 @@ yydefault: reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 463: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5205 + //line php7/php7.y:5248 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[5].list) @@ -7882,11 +7925,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) yyDollar[6].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5223 + //line php7/php7.y:5268 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[3].list) @@ -7897,7 +7942,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(list.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) @@ -7905,7 +7950,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5243 + //line php7/php7.y:5288 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -7913,7 +7958,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5249 + //line php7/php7.y:5294 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -7928,7 +7973,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5262 + //line php7/php7.y:5307 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -7936,7 +7981,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5268 + //line php7/php7.y:5313 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -7951,7 +7996,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5284 + //line php7/php7.y:5329 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7968,7 +8013,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5299 + //line php7/php7.y:5344 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7980,7 +8025,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenCurlyBracesToken) @@ -7991,7 +8035,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5320 + //line php7/php7.y:5364 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -8005,7 +8049,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[2].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(fetch.GetMeta()) @@ -8014,7 +8057,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5341 + //line php7/php7.y:5384 { variable := expr.NewVariable(yyDollar[2].node) @@ -8024,7 +8067,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) @@ -8033,7 +8075,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5358 + //line php7/php7.y:5400 { name := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(name) @@ -8045,7 +8087,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) @@ -8055,7 +8096,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5378 + //line php7/php7.y:5419 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -8067,7 +8108,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) yyDollar[3].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.OpenSquareBracket) @@ -8080,12 +8120,11 @@ yydefault: } case 475: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5401 + //line php7/php7.y:5441 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) @@ -8094,7 +8133,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5416 + //line php7/php7.y:5455 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -8108,7 +8147,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5428 + //line php7/php7.y:5467 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -8120,11 +8159,14 @@ yydefault: // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + // save comments + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 478: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5442 + //line php7/php7.y:5484 { var lnumber *scalar.Lnumber // TODO: add option to handle 64 bit integer @@ -8152,7 +8194,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5468 + //line php7/php7.y:5510 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -8169,7 +8211,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:5486 + //line php7/php7.y:5528 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -8189,7 +8231,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5504 + //line php7/php7.y:5546 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -8205,7 +8247,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5518 + //line php7/php7.y:5560 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -8219,7 +8261,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5530 + //line php7/php7.y:5572 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -8233,7 +8275,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5542 + //line php7/php7.y:5584 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -8249,7 +8291,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5556 + //line php7/php7.y:5598 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -8263,7 +8305,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5568 + //line php7/php7.y:5610 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -8277,7 +8319,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5583 + //line php7/php7.y:5625 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -8285,7 +8327,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5589 + //line php7/php7.y:5631 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -8296,7 +8338,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5601 + //line php7/php7.y:5643 { yyVAL.node = yyDollar[1].node diff --git a/php7/php7.y b/php7/php7.y index e78c9d6..cb3cb14 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -4290,6 +4290,9 @@ function_call: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2)) + // save comments + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list @@ -4301,6 +4304,7 @@ function_call: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4313,6 +4317,7 @@ function_call: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4322,6 +4327,7 @@ function_call: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2)) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4378,8 +4384,8 @@ exit_expr: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.OpenParenthesisToken) + yylex.(*Parser).prependMetaToken($$, $1, meta.OpenParenthesisToken) + $1.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo($$.GetMeta()) $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.CloseParenthesisToken) @@ -4658,6 +4664,9 @@ constant: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + // save comments + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | class_name T_PAAMAYIM_NEKUDOTAYIM identifier @@ -4673,6 +4682,8 @@ constant: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM identifier @@ -4688,6 +4699,8 @@ constant: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -4770,8 +4783,8 @@ callable_expr: $$ = $2; // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) + $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) @@ -4800,11 +4813,13 @@ callable_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) + yylex.(*Parser).prependMetaToken($$, $2, meta.OpenSquareBracket) + $2.Meta.SetTokenName(meta.OpenSquareBracket).PrependTo($$.GetMeta()) $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | constant '[' optional_expr ']' @@ -4815,11 +4830,13 @@ callable_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) + yylex.(*Parser).prependMetaToken($$, $2, meta.OpenSquareBracket) + $2.Meta.SetTokenName(meta.OpenSquareBracket).PrependTo($$.GetMeta()) $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | dereferencable '{' expr '}' @@ -4830,11 +4847,13 @@ callable_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenCurlyBracesToken) + yylex.(*Parser).prependMetaToken($$, $2, meta.OpenCurlyBracesToken) + $2.Meta.SetTokenName(meta.OpenCurlyBracesToken).PrependTo($$.GetMeta()) $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseCurlyBracesToken) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | dereferencable T_OBJECT_OPERATOR property_name argument_list @@ -4847,6 +4866,8 @@ callable_variable: // save comments $2.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | function_call @@ -4880,6 +4901,8 @@ variable: // save comments $2.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -4943,6 +4966,8 @@ static_member: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable @@ -4955,6 +4980,8 @@ static_member: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -4974,11 +5001,13 @@ new_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) + yylex.(*Parser).prependMetaToken($$, $2, meta.OpenSquareBracket) + $2.Meta.SetTokenName(meta.OpenSquareBracket).PrependTo($$.GetMeta()) $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | new_variable '{' expr '}' @@ -4989,11 +5018,13 @@ new_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) // save comments - $2.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenCurlyBracesToken) + yylex.(*Parser).prependMetaToken($$, $2, meta.OpenCurlyBracesToken) + $2.Meta.SetTokenName(meta.OpenCurlyBracesToken).PrependTo($$.GetMeta()) $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseCurlyBracesToken) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | new_variable T_OBJECT_OPERATOR property_name @@ -5006,6 +5037,8 @@ new_variable: // save comments $2.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable @@ -5018,6 +5051,8 @@ new_variable: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | new_variable T_PAAMAYIM_NEKUDOTAYIM simple_variable @@ -5030,6 +5065,8 @@ new_variable: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -5161,6 +5198,8 @@ array_pair: // save comments $2.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr @@ -5170,6 +5209,8 @@ array_pair: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_DOUBLE_ARROW '&' variable @@ -5185,6 +5226,8 @@ array_pair: $2.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '&' variable @@ -5197,7 +5240,7 @@ array_pair: reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5217,6 +5260,8 @@ array_pair: $4.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) $6.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_LIST '(' array_pair_list ')' @@ -5230,7 +5275,7 @@ array_pair: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(list.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) @@ -5307,7 +5352,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.OpenCurlyBracesToken) @@ -5330,7 +5374,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $2.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(fetch.GetMeta()) @@ -5347,7 +5390,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) @@ -5366,7 +5408,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) @@ -5386,7 +5427,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) $3.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.OpenSquareBracket) @@ -5402,7 +5442,6 @@ encaps_var: $$ = $2; // save comments - $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) @@ -5436,6 +5475,9 @@ encaps_var_offset: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + // save comments + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '-' T_NUM_STRING diff --git a/visitor/dumper_test.go b/visitor/dumper_test.go index 8944b64..6451ca1 100644 --- a/visitor/dumper_test.go +++ b/visitor/dumper_test.go @@ -117,12 +117,12 @@ func ExampleDumper() { // | "DefaultValue": // | [*expr.ConstFetch] // | "Position": Pos{Line: 5-5 Pos: 86-89} + // | "Meta": + // | " " before "NodeStart" // | "Constant": // | [*name.Name] // | "Position": Pos{Line: 5-5 Pos: 86-89} // | "NamespacedName": "null" - // | "Meta": - // | " " before "NodeStart" // | "Parts": // | [*name.NamePart] // | "Position": Pos{Line: 5-5 Pos: 86-89} diff --git a/visitor/go_dumper_test.go b/visitor/go_dumper_test.go index a3c13c6..c7aa0db 100644 --- a/visitor/go_dumper_test.go +++ b/visitor/go_dumper_test.go @@ -346,6 +346,19 @@ func ExampleGoDumper() { // StartPos: 86, // EndPos: 89, // }, + // Meta: meta.Collection{ + // &meta.Data{ + // Type: meta.WhiteSpaceType, + // Position: &position.Position{ + // StartLine: 5, + // EndLine: 5, + // StartPos: 85, + // EndPos: 85, + // }, + // Value: " ", + // TokenName: meta.NodeStart, + // }, + // }, // Constant: &name.Name{ // Position: &position.Position{ // StartLine: 5, @@ -353,19 +366,6 @@ func ExampleGoDumper() { // StartPos: 86, // EndPos: 89, // }, - // Meta: meta.Collection{ - // &meta.Data{ - // Type: meta.WhiteSpaceType, - // Position: &position.Position{ - // StartLine: 5, - // EndLine: 5, - // StartPos: 85, - // EndPos: 85, - // }, - // Value: " ", - // TokenName: meta.NodeStart, - // }, - // }, // Parts: []node.Node{ // &name.NamePart{ // Position: &position.Position{ diff --git a/visitor/json_dumper_test.go b/visitor/json_dumper_test.go index 81af330..aacc186 100644 --- a/visitor/json_dumper_test.go +++ b/visitor/json_dumper_test.go @@ -37,5 +37,5 @@ func ExampleJsonDumper() { nodes.Walk(dumper) // Output: - // {"type":"*node.Root","position":{"startPos":10,"endPos":166,"startLine":3,"endLine":12},"Stmts":[{"type":"*stmt.Namespace","position":{"startPos":10,"endPos":166,"startLine":3,"endLine":12},"meta":[{"type":"*meta.TokenType","value":" Date: Wed, 2 Jan 2019 23:21:09 +0200 Subject: [PATCH 08/12] #70: [php7] fix inheriting meta.Data at stmt.GroupUse, stmt.Use --- php7/php7.go | 759 ++++++++++++++++++++++++++------------------------- php7/php7.y | 13 +- 2 files changed, 387 insertions(+), 385 deletions(-) diff --git a/php7/php7.go b/php7/php7.go index 5c73743..18d76a6 100644 --- a/php7/php7.go +++ b/php7/php7.go @@ -346,7 +346,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php7/php7.y:5652 +//line php7/php7.y:5653 //line yacctab:1 var yyExca = [...]int{ @@ -2940,8 +2940,9 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.UseLeadingNsSeparatorToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.UseLeadingNsSeparatorToken) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yylex.(*Parser).appendMetaToken(name, yyDollar[1].token, meta.NodeStart) + yyDollar[2].list[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(name.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) if yyDollar[6].token != nil { @@ -2950,13 +2951,11 @@ yydefault: } yyDollar[7].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 104: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:682 + //line php7/php7.y:681 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) @@ -2980,7 +2979,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:704 + //line php7/php7.y:703 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -2990,8 +2989,9 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.UseLeadingNsSeparatorToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.UseLeadingNsSeparatorToken) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yylex.(*Parser).appendMetaToken(name, yyDollar[1].token, meta.NodeStart) + yyDollar[2].list[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(name.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) if yyDollar[6].token != nil { @@ -3148,12 +3148,13 @@ yydefault: // save comments yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yyDollar[2].node.(*stmt.Use).Use.GetMeta().Cut(newInheritMetaFilter()).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:871 + //line php7/php7.y:872 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3164,7 +3165,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:880 + //line php7/php7.y:881 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3172,7 +3173,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:889 + //line php7/php7.y:890 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3182,7 +3183,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:897 + //line php7/php7.y:898 { yyVAL.list = []node.Node{} @@ -3190,7 +3191,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:906 + //line php7/php7.y:907 { // error yyVAL.node = nil @@ -3199,7 +3200,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:913 + //line php7/php7.y:914 { yyVAL.node = yyDollar[1].node @@ -3207,7 +3208,7 @@ yydefault: } case 126: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:919 + //line php7/php7.y:920 { yyVAL.node = yyDollar[1].node @@ -3215,7 +3216,7 @@ yydefault: } case 127: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:925 + //line php7/php7.y:926 { yyVAL.node = yyDollar[1].node @@ -3223,7 +3224,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:931 + //line php7/php7.y:932 { yyVAL.node = yyDollar[1].node @@ -3231,7 +3232,7 @@ yydefault: } case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:937 + //line php7/php7.y:938 { yyVAL.node = yyDollar[1].node @@ -3239,7 +3240,7 @@ yydefault: } case 130: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:943 + //line php7/php7.y:944 { yyVAL.node = stmt.NewHaltCompiler() @@ -3257,7 +3258,7 @@ yydefault: } case 131: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:961 + //line php7/php7.y:962 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -3272,7 +3273,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:974 + //line php7/php7.y:975 { yyVAL.node = yyDollar[1].node @@ -3280,7 +3281,7 @@ yydefault: } case 133: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:980 + //line php7/php7.y:981 { yyVAL.node = yyDollar[1].node @@ -3288,7 +3289,7 @@ yydefault: } case 134: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:986 + //line php7/php7.y:987 { switch n := yyDollar[5].node.(type) { case *stmt.While: @@ -3311,7 +3312,7 @@ yydefault: } case 135: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1007 + //line php7/php7.y:1008 { yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[5].node) @@ -3330,7 +3331,7 @@ yydefault: } case 136: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1024 + //line php7/php7.y:1025 { switch n := yyDollar[9].node.(type) { case *stmt.For: @@ -3359,7 +3360,7 @@ yydefault: } case 137: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1051 + //line php7/php7.y:1052 { switch n := yyDollar[5].node.(type) { case *stmt.Switch: @@ -3384,7 +3385,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1074 + //line php7/php7.y:1075 { yyVAL.node = stmt.NewBreak(yyDollar[2].node) @@ -3400,7 +3401,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1088 + //line php7/php7.y:1089 { yyVAL.node = stmt.NewContinue(yyDollar[2].node) @@ -3416,7 +3417,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1102 + //line php7/php7.y:1103 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) @@ -3432,7 +3433,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1116 + //line php7/php7.y:1117 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) @@ -3448,7 +3449,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1130 + //line php7/php7.y:1131 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) @@ -3464,7 +3465,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1144 + //line php7/php7.y:1145 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) @@ -3481,7 +3482,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1159 + //line php7/php7.y:1160 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) @@ -3495,7 +3496,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1171 + //line php7/php7.y:1172 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) @@ -3512,7 +3513,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1186 + //line php7/php7.y:1187 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) @@ -3534,7 +3535,7 @@ yydefault: } case 147: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1206 + //line php7/php7.y:1207 { switch n := yyDollar[7].node.(type) { case *stmt.Foreach: @@ -3560,7 +3561,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1230 + //line php7/php7.y:1231 { switch n := yyDollar[9].node.(type) { case *stmt.Foreach: @@ -3589,7 +3590,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1257 + //line php7/php7.y:1258 { yyVAL.node = yyDollar[5].node yyVAL.node.(*stmt.Declare).Consts = yyDollar[3].list @@ -3606,7 +3607,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1272 + //line php7/php7.y:1273 { yyVAL.node = stmt.NewNop() @@ -3621,7 +3622,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1285 + //line php7/php7.y:1286 { if yyDollar[6].node == nil { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3640,7 +3641,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1302 + //line php7/php7.y:1303 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) @@ -3656,7 +3657,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1316 + //line php7/php7.y:1317 { label := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewGoto(label) @@ -3675,7 +3676,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1333 + //line php7/php7.y:1334 { label := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewLabel(label) @@ -3692,7 +3693,7 @@ yydefault: } case 155: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1350 + //line php7/php7.y:1351 { yyVAL.list = []node.Node{} @@ -3700,7 +3701,7 @@ yydefault: } case 156: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1356 + //line php7/php7.y:1357 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[5].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -3725,7 +3726,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1381 + //line php7/php7.y:1382 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3733,7 +3734,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1387 + //line php7/php7.y:1388 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3744,7 +3745,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1399 + //line php7/php7.y:1400 { yyVAL.node = nil @@ -3752,7 +3753,7 @@ yydefault: } case 160: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1405 + //line php7/php7.y:1406 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) @@ -3768,7 +3769,7 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1422 + //line php7/php7.y:1423 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3776,7 +3777,7 @@ yydefault: } case 162: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1428 + //line php7/php7.y:1429 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3787,7 +3788,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1440 + //line php7/php7.y:1441 { yyVAL.node = yyDollar[1].node @@ -3795,7 +3796,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:1449 + //line php7/php7.y:1450 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewFunction(name, yyDollar[2].token != nil, yyDollar[6].list, yyDollar[8].node, yyDollar[10].list, yyDollar[4].str) @@ -3819,31 +3820,31 @@ yydefault: } case 165: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1475 + //line php7/php7.y:1476 { yyVAL.token = nil } case 166: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1479 + //line php7/php7.y:1480 { yyVAL.token = yyDollar[1].token } case 167: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1486 + //line php7/php7.y:1487 { yyVAL.token = nil } case 168: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1490 + //line php7/php7.y:1491 { yyVAL.token = yyDollar[1].token } case 169: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1497 + //line php7/php7.y:1498 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewClass(name, yyDollar[1].list, nil, yyDollar[4].ClassExtends, yyDollar[5].ClassImplements, yyDollar[8].list, yyDollar[6].str) @@ -3864,7 +3865,7 @@ yydefault: } case 170: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:1516 + //line php7/php7.y:1517 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewClass(name, nil, nil, yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) @@ -3883,7 +3884,7 @@ yydefault: } case 171: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1536 + //line php7/php7.y:1537 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3891,7 +3892,7 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1542 + //line php7/php7.y:1543 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3899,7 +3900,7 @@ yydefault: } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1551 + //line php7/php7.y:1552 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3913,7 +3914,7 @@ yydefault: } case 174: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1563 + //line php7/php7.y:1564 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3927,7 +3928,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1578 + //line php7/php7.y:1579 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewTrait(name, yyDollar[5].list, yyDollar[3].str) @@ -3946,7 +3947,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1598 + //line php7/php7.y:1599 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewInterface(name, yyDollar[3].InterfaceExtends, yyDollar[6].list, yyDollar[4].str) @@ -3965,7 +3966,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1618 + //line php7/php7.y:1619 { yyVAL.ClassExtends = nil @@ -3973,7 +3974,7 @@ yydefault: } case 178: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1624 + //line php7/php7.y:1625 { yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) @@ -3987,7 +3988,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1639 + //line php7/php7.y:1640 { yyVAL.InterfaceExtends = nil @@ -3995,7 +3996,7 @@ yydefault: } case 180: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1645 + //line php7/php7.y:1646 { yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) @@ -4009,7 +4010,7 @@ yydefault: } case 181: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1660 + //line php7/php7.y:1661 { yyVAL.ClassImplements = nil @@ -4017,7 +4018,7 @@ yydefault: } case 182: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1666 + //line php7/php7.y:1667 { yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) @@ -4031,7 +4032,7 @@ yydefault: } case 183: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1681 + //line php7/php7.y:1682 { yyVAL.node = yyDollar[1].node @@ -4039,7 +4040,7 @@ yydefault: } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1687 + //line php7/php7.y:1688 { yyVAL.node = expr.NewReference(yyDollar[2].node) @@ -4053,7 +4054,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1699 + //line php7/php7.y:1700 { yyVAL.node = expr.NewList(yyDollar[3].list) @@ -4069,7 +4070,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1713 + //line php7/php7.y:1714 { yyVAL.node = expr.NewShortList(yyDollar[2].list) @@ -4084,7 +4085,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1729 + //line php7/php7.y:1730 { yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) @@ -4095,7 +4096,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1738 + //line php7/php7.y:1739 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) @@ -4114,7 +4115,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1758 + //line php7/php7.y:1759 { yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node) @@ -4125,7 +4126,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1767 + //line php7/php7.y:1768 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList) @@ -4144,7 +4145,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1787 + //line php7/php7.y:1788 { yyVAL.node = stmt.NewDeclare(nil, yyDollar[1].node, false) @@ -4155,7 +4156,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1796 + //line php7/php7.y:1797 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewDeclare(nil, stmtList, true) @@ -4174,7 +4175,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1816 + //line php7/php7.y:1817 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4191,7 +4192,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1831 + //line php7/php7.y:1832 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4210,7 +4211,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1848 + //line php7/php7.y:1849 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -4229,7 +4230,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1865 + //line php7/php7.y:1866 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -4251,7 +4252,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1888 + //line php7/php7.y:1889 { yyVAL.list = []node.Node{} @@ -4259,7 +4260,7 @@ yydefault: } case 198: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1894 + //line php7/php7.y:1895 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yyVAL.list = append(yyDollar[1].list, _case) @@ -4276,7 +4277,7 @@ yydefault: } case 199: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1909 + //line php7/php7.y:1910 { _default := stmt.NewDefault(yyDollar[4].list) yyVAL.list = append(yyDollar[1].list, _default) @@ -4293,19 +4294,19 @@ yydefault: } case 200: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1927 + //line php7/php7.y:1928 { yyVAL.token = yyDollar[1].token } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1931 + //line php7/php7.y:1932 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1938 + //line php7/php7.y:1939 { yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) @@ -4316,7 +4317,7 @@ yydefault: } case 203: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1947 + //line php7/php7.y:1948 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltWhile(nil, stmtList) @@ -4335,7 +4336,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1967 + //line php7/php7.y:1968 { yyVAL.node = stmt.NewIf(yyDollar[3].node, yyDollar[5].node, nil, nil) @@ -4351,7 +4352,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1981 + //line php7/php7.y:1982 { _elseIf := stmt.NewElseIf(yyDollar[4].node, yyDollar[6].node) yyVAL.node = yyDollar[1].node.(*stmt.If).AddElseIf(_elseIf) @@ -4369,7 +4370,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2000 + //line php7/php7.y:2001 { yyVAL.node = yyDollar[1].node @@ -4377,7 +4378,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2006 + //line php7/php7.y:2007 { _else := stmt.NewElse(yyDollar[3].node) yyVAL.node = yyDollar[1].node.(*stmt.If).SetElse(_else) @@ -4393,7 +4394,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2023 + //line php7/php7.y:2024 { stmts := stmt.NewStmtList(yyDollar[6].list) yyVAL.node = stmt.NewAltIf(yyDollar[3].node, stmts, nil, nil) @@ -4412,7 +4413,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:2040 + //line php7/php7.y:2041 { stmts := stmt.NewStmtList(yyDollar[7].list) _elseIf := stmt.NewAltElseIf(yyDollar[4].node, stmts) @@ -4432,7 +4433,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2061 + //line php7/php7.y:2062 { yyVAL.node = yyDollar[1].node @@ -4448,7 +4449,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2075 + //line php7/php7.y:2076 { stmts := stmt.NewStmtList(yyDollar[4].list) _else := stmt.NewAltElse(stmts) @@ -4470,7 +4471,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2098 + //line php7/php7.y:2099 { yyVAL.list = yyDollar[1].list @@ -4478,7 +4479,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2104 + //line php7/php7.y:2105 { yyVAL.list = nil @@ -4486,7 +4487,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2113 + //line php7/php7.y:2114 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4494,7 +4495,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2119 + //line php7/php7.y:2120 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4505,7 +4506,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2131 + //line php7/php7.y:2132 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4545,7 +4546,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2169 + //line php7/php7.y:2170 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4586,7 +4587,7 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2211 + //line php7/php7.y:2212 { yyVAL.node = nil @@ -4594,7 +4595,7 @@ yydefault: } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2217 + //line php7/php7.y:2218 { yyVAL.node = yyDollar[1].node @@ -4602,7 +4603,7 @@ yydefault: } case 220: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2226 + //line php7/php7.y:2227 { yyVAL.node = yyDollar[1].node @@ -4610,7 +4611,7 @@ yydefault: } case 221: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2232 + //line php7/php7.y:2233 { yyVAL.node = node.NewNullable(yyDollar[2].node) @@ -4624,7 +4625,7 @@ yydefault: } case 222: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2247 + //line php7/php7.y:2248 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4638,7 +4639,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2259 + //line php7/php7.y:2260 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4652,7 +4653,7 @@ yydefault: } case 224: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2271 + //line php7/php7.y:2272 { yyVAL.node = yyDollar[1].node @@ -4660,7 +4661,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2280 + //line php7/php7.y:2281 { yyVAL.node = nil @@ -4668,7 +4669,7 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2286 + //line php7/php7.y:2287 { yyVAL.node = yyDollar[2].node @@ -4679,7 +4680,7 @@ yydefault: } case 227: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2298 + //line php7/php7.y:2299 { yyVAL.node = node.NewArgumentList(nil) @@ -4694,7 +4695,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2311 + //line php7/php7.y:2312 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -4713,7 +4714,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2331 + //line php7/php7.y:2332 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4721,7 +4722,7 @@ yydefault: } case 230: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2337 + //line php7/php7.y:2338 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4732,7 +4733,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2349 + //line php7/php7.y:2350 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) @@ -4746,7 +4747,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2361 + //line php7/php7.y:2362 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4760,7 +4761,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2376 + //line php7/php7.y:2377 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4771,7 +4772,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2385 + //line php7/php7.y:2386 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4779,7 +4780,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2394 + //line php7/php7.y:2395 { yyVAL.node = yyDollar[1].node @@ -4787,7 +4788,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2403 + //line php7/php7.y:2404 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4798,7 +4799,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2412 + //line php7/php7.y:2413 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4806,7 +4807,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2421 + //line php7/php7.y:2422 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4825,7 +4826,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2438 + //line php7/php7.y:2439 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4845,7 +4846,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2459 + //line php7/php7.y:2460 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4853,7 +4854,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2465 + //line php7/php7.y:2466 { yyVAL.list = []node.Node{} @@ -4861,7 +4862,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2474 + //line php7/php7.y:2475 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4878,7 +4879,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2489 + //line php7/php7.y:2490 { yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) @@ -4894,7 +4895,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2505 + //line php7/php7.y:2506 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].node) @@ -4908,7 +4909,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-10 : yypt+1] - //line php7/php7.y:2517 + //line php7/php7.y:2518 { name := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewClassMethod(name, yyDollar[1].list, yyDollar[3].token != nil, yyDollar[7].list, yyDollar[9].node, yyDollar[10].node, yyDollar[5].str) @@ -4938,7 +4939,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2548 + //line php7/php7.y:2549 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4946,7 +4947,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2554 + //line php7/php7.y:2555 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4957,7 +4958,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2566 + //line php7/php7.y:2567 { yyVAL.node = stmt.NewNop() @@ -4971,7 +4972,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2579 + //line php7/php7.y:2580 { yyVAL.node = stmt.NewTraitAdaptationList(nil) @@ -4985,7 +4986,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2591 + //line php7/php7.y:2592 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -4999,7 +5000,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2606 + //line php7/php7.y:2607 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5007,7 +5008,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2612 + //line php7/php7.y:2613 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5015,7 +5016,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2621 + //line php7/php7.y:2622 { yyVAL.node = yyDollar[1].node @@ -5027,7 +5028,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2631 + //line php7/php7.y:2632 { yyVAL.node = yyDollar[1].node @@ -5039,7 +5040,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2644 + //line php7/php7.y:2645 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -5055,7 +5056,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2661 + //line php7/php7.y:2662 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -5074,7 +5075,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2678 + //line php7/php7.y:2679 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -5093,7 +5094,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2695 + //line php7/php7.y:2696 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -5112,7 +5113,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2712 + //line php7/php7.y:2713 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -5128,7 +5129,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2729 + //line php7/php7.y:2730 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -5144,7 +5145,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2743 + //line php7/php7.y:2744 { yyVAL.node = yyDollar[1].node @@ -5152,7 +5153,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2752 + //line php7/php7.y:2753 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -5171,7 +5172,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2772 + //line php7/php7.y:2773 { yyVAL.node = stmt.NewNop() @@ -5186,7 +5187,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2785 + //line php7/php7.y:2786 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -5201,7 +5202,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2801 + //line php7/php7.y:2802 { yyVAL.list = yyDollar[1].list @@ -5209,7 +5210,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2807 + //line php7/php7.y:2808 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -5224,7 +5225,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2823 + //line php7/php7.y:2824 { yyVAL.list = nil @@ -5232,7 +5233,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2829 + //line php7/php7.y:2830 { yyVAL.list = yyDollar[1].list @@ -5240,7 +5241,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2838 + //line php7/php7.y:2839 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5248,7 +5249,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2844 + //line php7/php7.y:2845 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5256,7 +5257,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2853 + //line php7/php7.y:2854 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5270,7 +5271,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2865 + //line php7/php7.y:2866 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5284,7 +5285,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2877 + //line php7/php7.y:2878 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5298,7 +5299,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2889 + //line php7/php7.y:2890 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5312,7 +5313,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2901 + //line php7/php7.y:2902 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5326,7 +5327,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2913 + //line php7/php7.y:2914 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5340,7 +5341,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2928 + //line php7/php7.y:2929 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5351,7 +5352,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2937 + //line php7/php7.y:2938 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5359,7 +5360,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2946 + //line php7/php7.y:2947 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5378,7 +5379,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2963 + //line php7/php7.y:2964 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5398,7 +5399,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2984 + //line php7/php7.y:2985 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5409,7 +5410,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2993 + //line php7/php7.y:2994 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5417,7 +5418,7 @@ yydefault: } case 283: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3002 + //line php7/php7.y:3003 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -5434,7 +5435,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3020 + //line php7/php7.y:3021 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -5451,7 +5452,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3038 + //line php7/php7.y:3039 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5462,7 +5463,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3047 + //line php7/php7.y:3048 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5470,7 +5471,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3056 + //line php7/php7.y:3057 { yyVAL.node = yyDollar[1].node @@ -5478,7 +5479,7 @@ yydefault: } case 288: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3065 + //line php7/php7.y:3066 { yyVAL.list = nil @@ -5486,7 +5487,7 @@ yydefault: } case 289: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3071 + //line php7/php7.y:3072 { yyVAL.list = yyDollar[1].list @@ -5494,7 +5495,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3080 + //line php7/php7.y:3081 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5505,7 +5506,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3089 + //line php7/php7.y:3090 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5513,7 +5514,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:3098 + //line php7/php7.y:3099 { if yyDollar[2].node != nil { yyVAL.node = stmt.NewClass(nil, nil, yyDollar[2].node.(*node.ArgumentList), yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) @@ -5533,7 +5534,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3119 + //line php7/php7.y:3120 { if yyDollar[3].node != nil { yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].node.(*node.ArgumentList)) @@ -5550,7 +5551,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3134 + //line php7/php7.y:3135 { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) @@ -5564,7 +5565,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:3149 + //line php7/php7.y:3150 { list := expr.NewList(yyDollar[3].list) yyVAL.node = assign.NewAssign(list, yyDollar[6].node) @@ -5583,7 +5584,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3166 + //line php7/php7.y:3167 { shortList := expr.NewShortList(yyDollar[2].list) yyVAL.node = assign.NewAssign(shortList, yyDollar[5].node) @@ -5601,7 +5602,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3182 + //line php7/php7.y:3183 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -5617,7 +5618,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3196 + //line php7/php7.y:3197 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) @@ -5634,7 +5635,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3211 + //line php7/php7.y:3212 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5648,7 +5649,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3223 + //line php7/php7.y:3224 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5664,7 +5665,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3237 + //line php7/php7.y:3238 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5680,7 +5681,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3251 + //line php7/php7.y:3252 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5696,7 +5697,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3265 + //line php7/php7.y:3266 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5712,7 +5713,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3279 + //line php7/php7.y:3280 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5728,7 +5729,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3293 + //line php7/php7.y:3294 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5744,7 +5745,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3307 + //line php7/php7.y:3308 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5760,7 +5761,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3321 + //line php7/php7.y:3322 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5776,7 +5777,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3335 + //line php7/php7.y:3336 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5792,7 +5793,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3349 + //line php7/php7.y:3350 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5808,7 +5809,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3363 + //line php7/php7.y:3364 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5824,7 +5825,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3377 + //line php7/php7.y:3378 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5840,7 +5841,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3391 + //line php7/php7.y:3392 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5856,7 +5857,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3405 + //line php7/php7.y:3406 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5870,7 +5871,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3417 + //line php7/php7.y:3418 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5886,7 +5887,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3431 + //line php7/php7.y:3432 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5900,7 +5901,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3443 + //line php7/php7.y:3444 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5916,7 +5917,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3457 + //line php7/php7.y:3458 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5932,7 +5933,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3471 + //line php7/php7.y:3472 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -5948,7 +5949,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3485 + //line php7/php7.y:3486 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -5964,7 +5965,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3499 + //line php7/php7.y:3500 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -5980,7 +5981,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3513 + //line php7/php7.y:3514 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5996,7 +5997,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3527 + //line php7/php7.y:3528 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -6012,7 +6013,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3541 + //line php7/php7.y:3542 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -6028,7 +6029,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3555 + //line php7/php7.y:3556 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -6044,7 +6045,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3569 + //line php7/php7.y:3570 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -6060,7 +6061,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3583 + //line php7/php7.y:3584 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -6076,7 +6077,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3597 + //line php7/php7.y:3598 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -6092,7 +6093,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3611 + //line php7/php7.y:3612 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -6108,7 +6109,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3625 + //line php7/php7.y:3626 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -6124,7 +6125,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3639 + //line php7/php7.y:3640 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -6140,7 +6141,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3653 + //line php7/php7.y:3654 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -6156,7 +6157,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3667 + //line php7/php7.y:3668 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -6172,7 +6173,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3681 + //line php7/php7.y:3682 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -6186,7 +6187,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3693 + //line php7/php7.y:3694 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -6200,7 +6201,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3705 + //line php7/php7.y:3706 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -6214,7 +6215,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3717 + //line php7/php7.y:3718 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -6228,7 +6229,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3729 + //line php7/php7.y:3730 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6244,7 +6245,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3743 + //line php7/php7.y:3744 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6260,7 +6261,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3757 + //line php7/php7.y:3758 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -6276,7 +6277,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3771 + //line php7/php7.y:3772 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -6293,7 +6294,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3786 + //line php7/php7.y:3787 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -6309,7 +6310,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3800 + //line php7/php7.y:3801 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6325,7 +6326,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3814 + //line php7/php7.y:3815 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -6341,7 +6342,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3828 + //line php7/php7.y:3829 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6357,7 +6358,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3842 + //line php7/php7.y:3843 { yyVAL.node = binary.NewSpaceship(yyDollar[1].node, yyDollar[3].node) @@ -6373,7 +6374,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3856 + //line php7/php7.y:3857 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -6389,7 +6390,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3870 + //line php7/php7.y:3871 { yyVAL.node = yyDollar[2].node @@ -6403,7 +6404,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3882 + //line php7/php7.y:3883 { yyVAL.node = yyDollar[1].node @@ -6411,7 +6412,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3888 + //line php7/php7.y:3889 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -6428,7 +6429,7 @@ yydefault: } case 350: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3903 + //line php7/php7.y:3904 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -6445,7 +6446,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3918 + //line php7/php7.y:3919 { yyVAL.node = binary.NewCoalesce(yyDollar[1].node, yyDollar[3].node) @@ -6461,7 +6462,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3932 + //line php7/php7.y:3933 { yyVAL.node = yyDollar[1].node @@ -6469,7 +6470,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3938 + //line php7/php7.y:3939 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -6484,7 +6485,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3951 + //line php7/php7.y:3952 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -6499,7 +6500,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3964 + //line php7/php7.y:3965 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -6514,7 +6515,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3977 + //line php7/php7.y:3978 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -6529,7 +6530,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3990 + //line php7/php7.y:3991 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -6544,7 +6545,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4003 + //line php7/php7.y:4004 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -6559,7 +6560,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4016 + //line php7/php7.y:4017 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -6574,7 +6575,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4029 + //line php7/php7.y:4030 { var e *expr.Exit if yyDollar[2].node != nil { @@ -6603,7 +6604,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4056 + //line php7/php7.y:4057 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -6617,7 +6618,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4068 + //line php7/php7.y:4069 { yyVAL.node = yyDollar[1].node @@ -6625,7 +6626,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4074 + //line php7/php7.y:4075 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -6639,7 +6640,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4086 + //line php7/php7.y:4087 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -6653,7 +6654,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4098 + //line php7/php7.y:4099 { yyVAL.node = expr.NewYield(nil, nil) @@ -6667,7 +6668,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4110 + //line php7/php7.y:4111 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6681,7 +6682,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4122 + //line php7/php7.y:4123 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6696,7 +6697,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4135 + //line php7/php7.y:4136 { yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) @@ -6710,7 +6711,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:4147 + //line php7/php7.y:4148 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].token != nil, yyDollar[3].str) @@ -6731,7 +6732,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-12 : yypt+1] - //line php7/php7.y:4166 + //line php7/php7.y:4167 { yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].ClosureUse, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].token != nil, yyDollar[4].str) @@ -6753,7 +6754,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4189 + //line php7/php7.y:4190 { yyVAL.str = yylex.(*Parser).PhpDocComment yylex.(*Parser).PhpDocComment = "" @@ -6762,19 +6763,19 @@ yydefault: } case 372: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4199 + //line php7/php7.y:4200 { yyVAL.token = nil } case 373: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4203 + //line php7/php7.y:4204 { yyVAL.token = yyDollar[1].token } case 374: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4210 + //line php7/php7.y:4211 { yyVAL.ClosureUse = nil @@ -6782,7 +6783,7 @@ yydefault: } case 375: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4216 + //line php7/php7.y:4217 { yyVAL.ClosureUse = expr.NewClosureUse(yyDollar[3].list) @@ -6798,7 +6799,7 @@ yydefault: } case 376: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4233 + //line php7/php7.y:4234 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6809,7 +6810,7 @@ yydefault: } case 377: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4242 + //line php7/php7.y:4243 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -6817,7 +6818,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4251 + //line php7/php7.y:4252 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -6834,7 +6835,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4266 + //line php7/php7.y:4267 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[2].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6854,7 +6855,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4287 + //line php7/php7.y:4288 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6868,7 +6869,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4299 + //line php7/php7.y:4300 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6883,7 +6884,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4312 + //line php7/php7.y:4313 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6898,7 +6899,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4325 + //line php7/php7.y:4326 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6910,7 +6911,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4338 + //line php7/php7.y:4339 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6924,7 +6925,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4350 + //line php7/php7.y:4351 { yyVAL.node = yyDollar[1].node @@ -6932,7 +6933,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4359 + //line php7/php7.y:4360 { yyVAL.node = yyDollar[1].node @@ -6940,7 +6941,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4365 + //line php7/php7.y:4366 { yyVAL.node = yyDollar[1].node @@ -6948,7 +6949,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4374 + //line php7/php7.y:4375 { yyVAL.node = nil @@ -6956,7 +6957,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4380 + //line php7/php7.y:4381 { yyVAL.node = expr.NewExit(yyDollar[2].node) @@ -6973,7 +6974,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4398 + //line php7/php7.y:4399 { yyVAL.list = []node.Node{} @@ -6981,7 +6982,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4404 + //line php7/php7.y:4405 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} @@ -6989,7 +6990,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4410 + //line php7/php7.y:4411 { yyVAL.list = yyDollar[1].list @@ -6997,7 +6998,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4419 + //line php7/php7.y:4420 { yyVAL.node = nil @@ -7005,7 +7006,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4425 + //line php7/php7.y:4426 { yyVAL.node = yyDollar[1].node @@ -7013,7 +7014,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4434 + //line php7/php7.y:4435 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -7029,7 +7030,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4448 + //line php7/php7.y:4449 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -7044,7 +7045,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4461 + //line php7/php7.y:4462 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -7058,7 +7059,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4476 + //line php7/php7.y:4477 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -7072,7 +7073,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4488 + //line php7/php7.y:4489 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -7086,7 +7087,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4500 + //line php7/php7.y:4501 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7100,7 +7101,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4512 + //line php7/php7.y:4513 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7114,7 +7115,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4524 + //line php7/php7.y:4525 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7128,7 +7129,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4536 + //line php7/php7.y:4537 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7142,7 +7143,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4548 + //line php7/php7.y:4549 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7156,7 +7157,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4560 + //line php7/php7.y:4561 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7170,7 +7171,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4572 + //line php7/php7.y:4573 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7184,7 +7185,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4584 + //line php7/php7.y:4585 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7198,7 +7199,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4596 + //line php7/php7.y:4597 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -7214,7 +7215,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4610 + //line php7/php7.y:4611 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -7228,7 +7229,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4622 + //line php7/php7.y:4623 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -7242,7 +7243,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4634 + //line php7/php7.y:4635 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -7256,7 +7257,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4646 + //line php7/php7.y:4647 { yyVAL.node = yyDollar[1].node @@ -7264,7 +7265,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4652 + //line php7/php7.y:4653 { yyVAL.node = yyDollar[1].node @@ -7272,7 +7273,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4661 + //line php7/php7.y:4662 { yyVAL.node = expr.NewConstFetch(yyDollar[1].node) @@ -7286,7 +7287,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4673 + //line php7/php7.y:4674 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7305,7 +7306,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4690 + //line php7/php7.y:4691 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7324,7 +7325,7 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4710 + //line php7/php7.y:4711 { yyVAL.node = yyDollar[1].node @@ -7332,7 +7333,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4716 + //line php7/php7.y:4717 { yyVAL.node = yyDollar[1].node @@ -7340,7 +7341,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4725 + //line php7/php7.y:4726 { yyVAL.node = nil @@ -7348,7 +7349,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4731 + //line php7/php7.y:4732 { yyVAL.node = yyDollar[1].node @@ -7356,7 +7357,7 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4740 + //line php7/php7.y:4741 { yyVAL.node = yyDollar[1].node @@ -7364,7 +7365,7 @@ yydefault: } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4749 + //line php7/php7.y:4750 { yyVAL.node = yyDollar[1].node @@ -7372,7 +7373,7 @@ yydefault: } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4755 + //line php7/php7.y:4756 { yyVAL.node = yyDollar[2].node @@ -7386,7 +7387,7 @@ yydefault: } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4767 + //line php7/php7.y:4768 { yyVAL.node = yyDollar[1].node @@ -7394,7 +7395,7 @@ yydefault: } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4776 + //line php7/php7.y:4777 { yyVAL.node = yyDollar[1].node @@ -7402,7 +7403,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4782 + //line php7/php7.y:4783 { yyVAL.node = yyDollar[2].node @@ -7416,7 +7417,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4794 + //line php7/php7.y:4795 { yyVAL.node = yyDollar[1].node @@ -7424,7 +7425,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4803 + //line php7/php7.y:4804 { yyVAL.node = yyDollar[1].node @@ -7432,7 +7433,7 @@ yydefault: } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4809 + //line php7/php7.y:4810 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7451,7 +7452,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4826 + //line php7/php7.y:4827 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7470,7 +7471,7 @@ yydefault: } case 431: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4843 + //line php7/php7.y:4844 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7489,7 +7490,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4860 + //line php7/php7.y:4861 { yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7505,7 +7506,7 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4874 + //line php7/php7.y:4875 { yyVAL.node = yyDollar[1].node @@ -7513,7 +7514,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4883 + //line php7/php7.y:4884 { yyVAL.node = yyDollar[1].node @@ -7521,7 +7522,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4889 + //line php7/php7.y:4890 { yyVAL.node = yyDollar[1].node @@ -7529,7 +7530,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4895 + //line php7/php7.y:4896 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7545,7 +7546,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4912 + //line php7/php7.y:4913 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7562,7 +7563,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4927 + //line php7/php7.y:4928 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -7581,7 +7582,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4944 + //line php7/php7.y:4945 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -7596,7 +7597,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4960 + //line php7/php7.y:4961 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7612,7 +7613,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4974 + //line php7/php7.y:4975 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7628,7 +7629,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4991 + //line php7/php7.y:4992 { yyVAL.node = yyDollar[1].node @@ -7636,7 +7637,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4997 + //line php7/php7.y:4998 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7655,7 +7656,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5014 + //line php7/php7.y:5015 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7674,7 +7675,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5031 + //line php7/php7.y:5032 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7690,7 +7691,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5045 + //line php7/php7.y:5046 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7706,7 +7707,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5059 + //line php7/php7.y:5060 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7722,7 +7723,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5076 + //line php7/php7.y:5077 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7736,7 +7737,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5088 + //line php7/php7.y:5089 { yyVAL.node = yyDollar[2].node @@ -7750,7 +7751,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5100 + //line php7/php7.y:5101 { yyVAL.node = yyDollar[1].node @@ -7758,7 +7759,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5109 + //line php7/php7.y:5110 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7772,7 +7773,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5121 + //line php7/php7.y:5122 { yyVAL.node = yyDollar[2].node @@ -7786,7 +7787,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5133 + //line php7/php7.y:5134 { yyVAL.node = yyDollar[1].node @@ -7794,7 +7795,7 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5142 + //line php7/php7.y:5143 { yyVAL.list = yyDollar[1].list @@ -7802,7 +7803,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:5151 + //line php7/php7.y:5152 { yyVAL.node = expr.NewArrayItem(nil, nil) @@ -7810,7 +7811,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5157 + //line php7/php7.y:5158 { yyVAL.node = yyDollar[1].node @@ -7818,7 +7819,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5166 + //line php7/php7.y:5167 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil)} @@ -7833,7 +7834,7 @@ yydefault: } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5179 + //line php7/php7.y:5180 { if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { yyVAL.list = []node.Node{} @@ -7845,7 +7846,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5192 + //line php7/php7.y:5193 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) @@ -7861,7 +7862,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5206 + //line php7/php7.y:5207 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) @@ -7874,7 +7875,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5217 + //line php7/php7.y:5218 { reference := expr.NewReference(yyDollar[4].node) yyVAL.node = expr.NewArrayItem(yyDollar[1].node, reference) @@ -7893,7 +7894,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5234 + //line php7/php7.y:5235 { reference := expr.NewReference(yyDollar[2].node) yyVAL.node = expr.NewArrayItem(nil, reference) @@ -7909,7 +7910,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5248 + //line php7/php7.y:5249 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[5].list) @@ -7931,7 +7932,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5268 + //line php7/php7.y:5269 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[3].list) @@ -7950,7 +7951,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5288 + //line php7/php7.y:5289 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -7958,7 +7959,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5294 + //line php7/php7.y:5295 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -7973,7 +7974,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5307 + //line php7/php7.y:5308 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -7981,7 +7982,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5313 + //line php7/php7.y:5314 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -7996,7 +7997,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5329 + //line php7/php7.y:5330 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -8013,7 +8014,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5344 + //line php7/php7.y:5345 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -8035,7 +8036,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5364 + //line php7/php7.y:5365 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -8057,7 +8058,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5384 + //line php7/php7.y:5385 { variable := expr.NewVariable(yyDollar[2].node) @@ -8075,7 +8076,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5400 + //line php7/php7.y:5401 { name := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(name) @@ -8096,7 +8097,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5419 + //line php7/php7.y:5420 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -8120,7 +8121,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5441 + //line php7/php7.y:5442 { yyVAL.node = yyDollar[2].node @@ -8133,7 +8134,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5455 + //line php7/php7.y:5456 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -8147,7 +8148,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5467 + //line php7/php7.y:5468 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -8166,7 +8167,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5484 + //line php7/php7.y:5485 { var lnumber *scalar.Lnumber // TODO: add option to handle 64 bit integer @@ -8194,7 +8195,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5510 + //line php7/php7.y:5511 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -8211,7 +8212,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:5528 + //line php7/php7.y:5529 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -8231,7 +8232,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5546 + //line php7/php7.y:5547 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -8247,7 +8248,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5560 + //line php7/php7.y:5561 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -8261,7 +8262,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5572 + //line php7/php7.y:5573 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -8275,7 +8276,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5584 + //line php7/php7.y:5585 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -8291,7 +8292,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5598 + //line php7/php7.y:5599 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -8305,7 +8306,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5610 + //line php7/php7.y:5611 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -8319,7 +8320,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5625 + //line php7/php7.y:5626 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -8327,7 +8328,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5631 + //line php7/php7.y:5632 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -8338,7 +8339,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5643 + //line php7/php7.y:5644 { yyVAL.node = yyDollar[1].node diff --git a/php7/php7.y b/php7/php7.y index cb3cb14..47f0a59 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -661,8 +661,9 @@ group_use_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) // save comments - $1.Meta.SetTokenName(meta.UseLeadingNsSeparatorToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.UseLeadingNsSeparatorToken) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yylex.(*Parser).appendMetaToken(name, $1, meta.NodeStart) + $2[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(name.GetMeta()) $3.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo($$.GetMeta()) $4.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) if $6 != nil { @@ -671,8 +672,6 @@ group_use_declaration: } $7.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) - $2[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(name.GetMeta()) - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -710,8 +709,9 @@ mixed_group_use_declaration: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) // save comments - $1.Meta.SetTokenName(meta.UseLeadingNsSeparatorToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.UseLeadingNsSeparatorToken) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yylex.(*Parser).appendMetaToken(name, $1, meta.NodeStart) + $2[0].GetMeta().Cut(newInheritMetaFilter()).AppendTo(name.GetMeta()) $3.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo($$.GetMeta()) $4.Meta.SetTokenName(meta.OpenCurlyBracesToken).AppendTo($$.GetMeta()) if $6 != nil { @@ -861,6 +861,7 @@ use_declaration: // save comments $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + $2.(*stmt.Use).Use.GetMeta().Cut(newInheritMetaFilter()).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } From 28e5540108f138842942e3f28d98b99f47360b6e Mon Sep 17 00:00:00 2001 From: z7zmey Date: Wed, 2 Jan 2019 23:22:28 +0200 Subject: [PATCH 09/12] #70: [php5] inherit meta.Data at stmt.Use --- php5/parser.go | 12 + php5/php5.go | 1047 ++++++++++++++++++++++++------------------------ php5/php5.y | 43 +- 3 files changed, 575 insertions(+), 527 deletions(-) diff --git a/php5/parser.go b/php5/parser.go index c08eda8..e3c4802 100644 --- a/php5/parser.go +++ b/php5/parser.go @@ -113,6 +113,18 @@ func isDollar(r rune) bool { return r == '$' } +func newInheritMetaFilter() meta.Filter { + return meta.StopOnFailureFilter( + meta.AndFilter( + meta.TokenNameFilter(meta.NodeStart), + meta.OrFilter( + meta.TypeFilter(meta.CommentType, meta.WhiteSpaceType), + meta.ValueFilter(" Date: Wed, 2 Jan 2019 23:23:21 +0200 Subject: [PATCH 10/12] #70: remove constant UseLeadingNsSeparatorToken --- meta/tokenName.go | 1 - meta/tokenName_string.go | 4 ++-- printer/printer.go | 3 --- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/meta/tokenName.go b/meta/tokenName.go index e1018d1..348a203 100644 --- a/meta/tokenName.go +++ b/meta/tokenName.go @@ -24,7 +24,6 @@ const ( ImplementsToken DoubleArrowToken PaamayimNekudotayimToken - UseLeadingNsSeparatorToken NsSeparatorToken EllipsisToken LogicalOrToken diff --git a/meta/tokenName_string.go b/meta/tokenName_string.go index 10d56de..6eebadc 100644 --- a/meta/tokenName_string.go +++ b/meta/tokenName_string.go @@ -4,9 +4,9 @@ package meta import "strconv" -const _TokenName_name = "NodeStartNodeEndWhileTokenEndwhileTokenForInitSemicolonTokenForCondSemicolonTokenEndforTokenEndforeachTokenEnddeclareTokenAsTokenEndswitchTokenFunctionTokenConstTokenInsteadofTokenClassTokenExtendsTokenImplementsTokenDoubleArrowTokenPaamayimNekudotayimTokenUseLeadingNsSeparatorTokenNsSeparatorTokenEllipsisTokenLogicalOrTokenLogicalXorTokenLogicalAndTokenInstanceofTokenEndifTokenIncTokenDecTokenObjectOperatorTokenCoalesceTokenSpaceshipTokenPlusEqualTokenMinusEqualTokenMulEqualTokenPowEqualTokenDivEqualTokenConcatEqualTokenModEqualTokenAndEqualTokenOrEqualTokenXorEqualTokenSlEqualTokenSrEqualTokenBooleanOrTokenBooleanAndTokenPowTokenSlTokenSrTokenIsIdenticalTokenIsNotIdenticalTokenIsEqualTokenIsNotEqualTokenIsSmallerOrEqualTokenIsGreaterOrEqualTokenCaseSeparatorTokenOpenCurlyBracesTokenCloseCurlyBracesTokenSemiColonTokenColonTokenOpenParenthesisTokenCloseParenthesisTokenOpenSquareBracketCloseSquareBracketQuestionMarkTokenAmpersandTokenMinusTokenPlusTokenCommaTokenVerticalBarTokenEqualTokenCaretTokenAsteriskTokenSlashTokenPercentTokenLessTokenGreaterTokenDotToken" +const _TokenName_name = "NodeStartNodeEndWhileTokenEndwhileTokenForInitSemicolonTokenForCondSemicolonTokenEndforTokenEndforeachTokenEnddeclareTokenAsTokenEndswitchTokenFunctionTokenConstTokenInsteadofTokenClassTokenExtendsTokenImplementsTokenDoubleArrowTokenPaamayimNekudotayimTokenNsSeparatorTokenEllipsisTokenLogicalOrTokenLogicalXorTokenLogicalAndTokenInstanceofTokenEndifTokenIncTokenDecTokenObjectOperatorTokenCoalesceTokenSpaceshipTokenPlusEqualTokenMinusEqualTokenMulEqualTokenPowEqualTokenDivEqualTokenConcatEqualTokenModEqualTokenAndEqualTokenOrEqualTokenXorEqualTokenSlEqualTokenSrEqualTokenBooleanOrTokenBooleanAndTokenPowTokenSlTokenSrTokenIsIdenticalTokenIsNotIdenticalTokenIsEqualTokenIsNotEqualTokenIsSmallerOrEqualTokenIsGreaterOrEqualTokenCaseSeparatorTokenOpenCurlyBracesTokenCloseCurlyBracesTokenSemiColonTokenColonTokenOpenParenthesisTokenCloseParenthesisTokenOpenSquareBracketCloseSquareBracketQuestionMarkTokenAmpersandTokenMinusTokenPlusTokenCommaTokenVerticalBarTokenEqualTokenCaretTokenAsteriskTokenSlashTokenPercentTokenLessTokenGreaterTokenDotToken" -var _TokenName_index = [...]uint16{0, 9, 16, 26, 39, 60, 81, 92, 107, 122, 129, 143, 156, 166, 180, 190, 202, 217, 233, 257, 283, 299, 312, 326, 341, 356, 371, 381, 389, 397, 416, 429, 443, 457, 472, 485, 498, 511, 527, 540, 553, 565, 578, 590, 602, 616, 631, 639, 646, 653, 669, 688, 700, 715, 736, 757, 775, 795, 816, 830, 840, 860, 881, 898, 916, 933, 947, 957, 966, 976, 992, 1002, 1012, 1025, 1035, 1047, 1056, 1068, 1076} +var _TokenName_index = [...]uint16{0, 9, 16, 26, 39, 60, 81, 92, 107, 122, 129, 143, 156, 166, 180, 190, 202, 217, 233, 257, 273, 286, 300, 315, 330, 345, 355, 363, 371, 390, 403, 417, 431, 446, 459, 472, 485, 501, 514, 527, 539, 552, 564, 576, 590, 605, 613, 620, 627, 643, 662, 674, 689, 710, 731, 749, 769, 790, 804, 814, 834, 855, 872, 890, 907, 921, 931, 940, 950, 966, 976, 986, 999, 1009, 1021, 1030, 1042, 1050} func (i TokenName) String() string { if i < 0 || i >= TokenName(len(_TokenName_index)-1) { diff --git a/printer/printer.go b/printer/printer.go index 24b2bbb..e6d701f 100644 --- a/printer/printer.go +++ b/printer/printer.go @@ -2293,7 +2293,6 @@ func (p *Printer) printStmtGroupUse(n node.Node) { p.Print(nn.UseType) } - p.printMeta(nn, meta.UseLeadingNsSeparatorToken) p.Print(nn.Prefix) p.printMeta(nn, meta.NsSeparatorToken) io.WriteString(p.w, "\\") @@ -2675,8 +2674,6 @@ func (p *Printer) printStmtUse(n node.Node) { p.Print(nn.UseType) } - p.printMeta(nn, meta.UseLeadingNsSeparatorToken) - p.Print(nn.Use) if nn.Alias != nil { From 1ee63c5e63b16addf4f3026fc3ed037a4efe47f8 Mon Sep 17 00:00:00 2001 From: z7zmey Date: Thu, 3 Jan 2019 19:02:58 +0200 Subject: [PATCH 11/12] #70: [php7] fix saving meta for *expr.NewArrayDimFetch at encaps_var --- php7/php7.go | 6 ++++-- php7/php7.y | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/php7/php7.go b/php7/php7.go index 18d76a6..57b32e7 100644 --- a/php7/php7.go +++ b/php7/php7.go @@ -1,3 +1,5 @@ +// Code generated by goyacc -o php7/php7.go php7/php7.y. DO NOT EDIT. + //line php7/php7.y:2 package php7 @@ -8028,9 +8030,9 @@ yydefault: // save comments yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenCurlyBracesToken) + yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseCurlyBracesToken) + yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } diff --git a/php7/php7.y b/php7/php7.y index 47f0a59..f1ecbed 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -5355,9 +5355,9 @@ encaps_var: // save comments yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $2, meta.OpenCurlyBracesToken) + yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $4, meta.CloseCurlyBracesToken) + yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } From d7ca55693f74ed2e1cd0cd3c54459595d3b4efb1 Mon Sep 17 00:00:00 2001 From: z7zmey Date: Thu, 3 Jan 2019 19:03:20 +0200 Subject: [PATCH 12/12] #70: [php5] inherit meta.Data --- php5/php5.go | 1262 ++++++++++++++++++++++++++++++-------------------- php5/php5.y | 340 ++++++++++++-- 2 files changed, 1054 insertions(+), 548 deletions(-) diff --git a/php5/php5.go b/php5/php5.go index 04a27a6..822ab09 100644 --- a/php5/php5.go +++ b/php5/php5.go @@ -1,3 +1,5 @@ +// Code generated by goyacc -o php5/php5.go php5/php5.y. DO NOT EDIT. + //line php5/php5.y:2 package php5 @@ -346,7 +348,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php5/php5.y:7007 +//line php5/php5.y:7259 type simpleIndirectReference struct { all []*expr.Variable @@ -2864,7 +2866,7 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastConst.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2885,7 +2887,7 @@ yydefault: // save comments yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2979,7 +2981,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(label.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -3264,11 +3266,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 62: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1145 + //line php5/php5.y:1147 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) @@ -3284,7 +3288,7 @@ yydefault: } case 63: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1159 + //line php5/php5.y:1161 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) @@ -3300,7 +3304,7 @@ yydefault: } case 64: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1173 + //line php5/php5.y:1175 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) @@ -3317,7 +3321,7 @@ yydefault: } case 65: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1188 + //line php5/php5.y:1190 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) @@ -3331,7 +3335,7 @@ yydefault: } case 66: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1200 + //line php5/php5.y:1202 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) @@ -3342,11 +3346,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 67: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1213 + //line php5/php5.y:1217 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) @@ -3364,7 +3370,7 @@ yydefault: } case 68: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1229 + //line php5/php5.y:1233 { if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { @@ -3406,7 +3412,7 @@ yydefault: } case 69: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1269 + //line php5/php5.y:1273 { if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { @@ -3448,7 +3454,7 @@ yydefault: } case 70: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1309 + //line php5/php5.y:1313 { yyVAL.node = yyDollar[5].node yyVAL.node.(*stmt.Declare).Consts = yyDollar[3].list @@ -3465,7 +3471,7 @@ yydefault: } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1324 + //line php5/php5.y:1328 { yyVAL.node = stmt.NewNop() @@ -3480,7 +3486,7 @@ yydefault: } case 72: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1337 + //line php5/php5.y:1341 { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3500,7 +3506,7 @@ yydefault: } case 73: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1355 + //line php5/php5.y:1359 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) @@ -3516,7 +3522,7 @@ yydefault: } case 74: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1369 + //line php5/php5.y:1373 { label := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewGoto(label) @@ -3535,7 +3541,7 @@ yydefault: } case 75: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1389 + //line php5/php5.y:1393 { yyVAL.list = []node.Node{} @@ -3543,7 +3549,7 @@ yydefault: } case 76: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:1395 + //line php5/php5.y:1399 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -3568,7 +3574,7 @@ yydefault: } case 77: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1421 + //line php5/php5.y:1425 { yyVAL.node = nil @@ -3576,7 +3582,7 @@ yydefault: } case 78: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1427 + //line php5/php5.y:1431 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) @@ -3592,7 +3598,7 @@ yydefault: } case 79: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1444 + //line php5/php5.y:1448 { yyVAL.list = yyDollar[1].list @@ -3600,7 +3606,7 @@ yydefault: } case 80: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1450 + //line php5/php5.y:1454 { yyVAL.list = []node.Node{} @@ -3608,7 +3614,7 @@ yydefault: } case 81: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1459 + //line php5/php5.y:1463 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3616,7 +3622,7 @@ yydefault: } case 82: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1465 + //line php5/php5.y:1469 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3624,7 +3630,7 @@ yydefault: } case 83: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1474 + //line php5/php5.y:1478 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -3648,7 +3654,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1499 + //line php5/php5.y:1503 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3656,7 +3662,7 @@ yydefault: } case 85: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1505 + //line php5/php5.y:1509 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3667,7 +3673,7 @@ yydefault: } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1517 + //line php5/php5.y:1521 { yyVAL.node = yyDollar[1].node @@ -3675,7 +3681,7 @@ yydefault: } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1526 + //line php5/php5.y:1530 { yyVAL.node = yyDollar[1].node @@ -3683,7 +3689,7 @@ yydefault: } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1535 + //line php5/php5.y:1539 { yyVAL.node = yyDollar[1].node @@ -3691,31 +3697,31 @@ yydefault: } case 89: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1544 + //line php5/php5.y:1548 { yyVAL.token = nil } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1548 + //line php5/php5.y:1552 { yyVAL.token = yyDollar[1].token } case 91: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1555 + //line php5/php5.y:1559 { yyVAL.token = nil } case 92: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1559 + //line php5/php5.y:1563 { yyVAL.token = yyDollar[1].token } case 93: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:1566 + //line php5/php5.y:1570 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewFunction(name, yyDollar[2].token != nil, yyDollar[5].list, nil, yyDollar[8].list, "") @@ -3739,7 +3745,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-7 : yypt+1] - //line php5/php5.y:1591 + //line php5/php5.y:1595 { name := node.NewIdentifier(yyDollar[2].token.Value) switch n := yyDollar[1].node.(type) { @@ -3769,7 +3775,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1619 + //line php5/php5.y:1623 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewInterface(name, yyDollar[3].InterfaceExtends, yyDollar[5].list, "") @@ -3788,7 +3794,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1640 + //line php5/php5.y:1644 { yyVAL.node = stmt.NewClass(nil, nil, nil, nil, nil, nil, "") @@ -3796,13 +3802,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ClassToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 97: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1652 + //line php5/php5.y:1656 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewClass(nil, []node.Node{classModifier}, nil, nil, nil, nil, "") @@ -3812,14 +3818,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(classModifier.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.ClassToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 98: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1667 + //line php5/php5.y:1671 { yyVAL.node = stmt.NewTrait(nil, nil, "") @@ -3833,7 +3839,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1679 + //line php5/php5.y:1683 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewClass(nil, []node.Node{classModifier}, nil, nil, nil, nil, "") @@ -3843,14 +3849,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(classModifier.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.ClassToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 100: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1697 + //line php5/php5.y:1701 { yyVAL.ClassExtends = nil @@ -3858,7 +3864,7 @@ yydefault: } case 101: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1703 + //line php5/php5.y:1707 { yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) @@ -3872,13 +3878,13 @@ yydefault: } case 102: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1718 + //line php5/php5.y:1722 { yyVAL.token = yyDollar[1].token } case 103: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1725 + //line php5/php5.y:1729 { yyVAL.InterfaceExtends = nil @@ -3886,7 +3892,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1731 + //line php5/php5.y:1735 { yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) @@ -3900,7 +3906,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1746 + //line php5/php5.y:1750 { yyVAL.ClassImplements = nil @@ -3908,7 +3914,7 @@ yydefault: } case 106: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1752 + //line php5/php5.y:1756 { yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) @@ -3922,7 +3928,7 @@ yydefault: } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1767 + //line php5/php5.y:1771 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3930,7 +3936,7 @@ yydefault: } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1773 + //line php5/php5.y:1777 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3941,7 +3947,7 @@ yydefault: } case 109: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1785 + //line php5/php5.y:1789 { yyVAL.node = nil @@ -3949,7 +3955,7 @@ yydefault: } case 110: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1791 + //line php5/php5.y:1795 { yyVAL.node = yyDollar[2].node @@ -3960,7 +3966,7 @@ yydefault: } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1803 + //line php5/php5.y:1807 { yyVAL.node = yyDollar[1].node @@ -3968,7 +3974,7 @@ yydefault: } case 112: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1809 + //line php5/php5.y:1813 { yyVAL.node = expr.NewReference(yyDollar[2].node) @@ -3982,7 +3988,7 @@ yydefault: } case 113: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1821 + //line php5/php5.y:1825 { yyVAL.node = expr.NewList(yyDollar[3].list) @@ -3998,7 +4004,7 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1838 + //line php5/php5.y:1842 { yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) @@ -4009,7 +4015,7 @@ yydefault: } case 115: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1847 + //line php5/php5.y:1851 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) @@ -4028,7 +4034,7 @@ yydefault: } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1867 + //line php5/php5.y:1871 { yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node) @@ -4039,7 +4045,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1876 + //line php5/php5.y:1880 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList) @@ -4058,7 +4064,7 @@ yydefault: } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1897 + //line php5/php5.y:1901 { yyVAL.node = stmt.NewDeclare(nil, yyDollar[1].node, false) @@ -4069,7 +4075,7 @@ yydefault: } case 119: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1906 + //line php5/php5.y:1910 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewDeclare(nil, stmtList, true) @@ -4088,7 +4094,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1927 + //line php5/php5.y:1931 { name := node.NewIdentifier(yyDollar[1].token.Value) constant := stmt.NewConstant(name, yyDollar[3].node, "") @@ -4099,14 +4105,14 @@ yydefault: constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 121: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1943 + //line php5/php5.y:1947 { name := node.NewIdentifier(yyDollar[3].token.Value) constant := stmt.NewConstant(name, yyDollar[5].node, "") @@ -4118,14 +4124,14 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 122: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1964 + //line php5/php5.y:1968 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4142,7 +4148,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1979 + //line php5/php5.y:1983 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4161,7 +4167,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1996 + //line php5/php5.y:2000 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -4180,7 +4186,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2013 + //line php5/php5.y:2017 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -4202,7 +4208,7 @@ yydefault: } case 126: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2037 + //line php5/php5.y:2041 { yyVAL.list = []node.Node{} @@ -4210,7 +4216,7 @@ yydefault: } case 127: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2043 + //line php5/php5.y:2047 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yyVAL.list = append(yyDollar[1].list, _case) @@ -4227,7 +4233,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2058 + //line php5/php5.y:2062 { _default := stmt.NewDefault(yyDollar[4].list) yyVAL.list = append(yyDollar[1].list, _default) @@ -4244,19 +4250,19 @@ yydefault: } case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2077 + //line php5/php5.y:2081 { yyVAL.token = yyDollar[1].token } case 130: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2081 + //line php5/php5.y:2085 { yyVAL.token = yyDollar[1].token } case 131: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2089 + //line php5/php5.y:2093 { yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) @@ -4267,7 +4273,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2098 + //line php5/php5.y:2102 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltWhile(nil, stmtList) @@ -4286,7 +4292,7 @@ yydefault: } case 133: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2120 + //line php5/php5.y:2124 { yyVAL.list = nil @@ -4294,7 +4300,7 @@ yydefault: } case 134: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2126 + //line php5/php5.y:2130 { _elseIf := stmt.NewElseIf(yyDollar[3].node, yyDollar[4].node) yyVAL.list = append(yyDollar[1].list, _elseIf) @@ -4311,7 +4317,7 @@ yydefault: } case 135: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2145 + //line php5/php5.y:2149 { yyVAL.list = nil @@ -4319,7 +4325,7 @@ yydefault: } case 136: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2151 + //line php5/php5.y:2155 { stmts := stmt.NewStmtList(yyDollar[5].list) _elseIf := stmt.NewAltElseIf(yyDollar[3].node, stmts) @@ -4339,7 +4345,7 @@ yydefault: } case 137: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2173 + //line php5/php5.y:2177 { yyVAL.node = nil @@ -4347,7 +4353,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2179 + //line php5/php5.y:2183 { yyVAL.node = stmt.NewElse(yyDollar[2].node) @@ -4361,7 +4367,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2195 + //line php5/php5.y:2199 { yyVAL.node = nil @@ -4369,7 +4375,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2201 + //line php5/php5.y:2205 { stmts := stmt.NewStmtList(yyDollar[3].list) yyVAL.node = stmt.NewAltElse(stmts) @@ -4386,7 +4392,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2220 + //line php5/php5.y:2224 { yyVAL.list = yyDollar[1].list @@ -4394,7 +4400,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2226 + //line php5/php5.y:2230 { yyVAL.list = nil @@ -4402,7 +4408,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2235 + //line php5/php5.y:2239 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4410,7 +4416,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2241 + //line php5/php5.y:2245 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4421,7 +4427,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2253 + //line php5/php5.y:2257 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4441,20 +4447,27 @@ yydefault: } // save comments + if yyDollar[1].node != nil { + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + } if yyDollar[2].token != nil { yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) } if yyDollar[3].token != nil { yyDollar[3].token.Meta.SetTokenName(meta.EllipsisToken).AppendTo(yyVAL.node.GetMeta()) } - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + if yyDollar[1].node == nil && yyDollar[2].token == nil && yyDollar[3].token == nil { + yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + } else { + yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + } yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:2284 + //line php5/php5.y:2295 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4474,13 +4487,20 @@ yydefault: } // save comments + if yyDollar[1].node != nil { + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + } if yyDollar[2].token != nil { yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) } if yyDollar[3].token != nil { yyDollar[3].token.Meta.SetTokenName(meta.EllipsisToken).AppendTo(yyVAL.node.GetMeta()) } - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + if yyDollar[1].node == nil && yyDollar[2].token == nil && yyDollar[3].token == nil { + yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + } else { + yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + } yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[5].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) @@ -4488,7 +4508,7 @@ yydefault: } case 147: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2320 + //line php5/php5.y:2338 { yyVAL.node = nil @@ -4496,7 +4516,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2326 + //line php5/php5.y:2344 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4510,7 +4530,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2338 + //line php5/php5.y:2356 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4524,7 +4544,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2350 + //line php5/php5.y:2368 { yyVAL.node = yyDollar[1].node @@ -4532,7 +4552,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2360 + //line php5/php5.y:2378 { yyVAL.node = node.NewArgumentList(nil) @@ -4547,7 +4567,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2373 + //line php5/php5.y:2391 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -4562,7 +4582,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2386 + //line php5/php5.y:2404 { arg := node.NewArgument(yyDollar[2].node, false, false) yyVAL.node = node.NewArgumentList([]node.Node{arg}) @@ -4579,7 +4599,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2405 + //line php5/php5.y:2423 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4587,7 +4607,7 @@ yydefault: } case 155: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2411 + //line php5/php5.y:2429 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4598,29 +4618,35 @@ yydefault: } case 156: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2423 + //line php5/php5.y:2441 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + // save comments + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2432 + //line php5/php5.y:2453 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + // save comments + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 158: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2441 + //line php5/php5.y:2465 { yyVAL.node = node.NewArgument(yyDollar[2].node, false, true) @@ -4634,7 +4660,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2453 + //line php5/php5.y:2477 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4648,7 +4674,7 @@ yydefault: } case 160: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2468 + //line php5/php5.y:2492 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4659,7 +4685,7 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2477 + //line php5/php5.y:2501 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4667,7 +4693,7 @@ yydefault: } case 162: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2487 + //line php5/php5.y:2511 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -4684,7 +4710,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2502 + //line php5/php5.y:2526 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -4700,7 +4726,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2516 + //line php5/php5.y:2540 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -4719,7 +4745,7 @@ yydefault: } case 165: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2537 + //line php5/php5.y:2561 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4733,14 +4759,14 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 166: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2556 + //line php5/php5.y:2580 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4754,7 +4780,7 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(staticVar.GetMeta()) @@ -4762,7 +4788,7 @@ yydefault: } case 167: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2576 + //line php5/php5.y:2600 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4775,14 +4801,14 @@ yydefault: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 168: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2594 + //line php5/php5.y:2618 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4795,7 +4821,7 @@ yydefault: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(staticVar.GetMeta()) @@ -4803,7 +4829,7 @@ yydefault: } case 169: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2617 + //line php5/php5.y:2641 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4811,7 +4837,7 @@ yydefault: } case 170: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2623 + //line php5/php5.y:2647 { yyVAL.list = []node.Node{} @@ -4819,7 +4845,7 @@ yydefault: } case 171: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2633 + //line php5/php5.y:2657 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4830,11 +4856,13 @@ yydefault: yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2646 + //line php5/php5.y:2672 { yyVAL.node = yyDollar[1].node @@ -4849,7 +4877,7 @@ yydefault: } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2659 + //line php5/php5.y:2685 { yyVAL.node = yyDollar[1].node @@ -4857,7 +4885,7 @@ yydefault: } case 174: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:2665 + //line php5/php5.y:2691 { name := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewClassMethod(name, yyDollar[1].list, yyDollar[3].token != nil, yyDollar[6].list, nil, yyDollar[8].node, "") @@ -4883,7 +4911,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2692 + //line php5/php5.y:2718 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].node) @@ -4897,7 +4925,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2707 + //line php5/php5.y:2733 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4905,7 +4933,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2713 + //line php5/php5.y:2739 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4916,7 +4944,7 @@ yydefault: } case 178: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2725 + //line php5/php5.y:2751 { yyVAL.node = stmt.NewNop() @@ -4930,7 +4958,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2738 + //line php5/php5.y:2764 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -4944,7 +4972,7 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2753 + //line php5/php5.y:2779 { yyVAL.list = nil @@ -4952,7 +4980,7 @@ yydefault: } case 181: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2759 + //line php5/php5.y:2785 { yyVAL.list = yyDollar[1].list @@ -4960,7 +4988,7 @@ yydefault: } case 182: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2768 + //line php5/php5.y:2794 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4968,7 +4996,7 @@ yydefault: } case 183: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2774 + //line php5/php5.y:2800 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4976,7 +5004,7 @@ yydefault: } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2783 + //line php5/php5.y:2809 { yyVAL.node = yyDollar[1].node @@ -4988,7 +5016,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2793 + //line php5/php5.y:2819 { yyVAL.node = yyDollar[1].node @@ -5000,7 +5028,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2806 + //line php5/php5.y:2832 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -5014,7 +5042,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2821 + //line php5/php5.y:2847 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5022,7 +5050,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2827 + //line php5/php5.y:2853 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5033,7 +5061,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2839 + //line php5/php5.y:2865 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -5049,7 +5077,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2853 + //line php5/php5.y:2879 { yyVAL.node = yyDollar[1].node @@ -5057,7 +5085,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2862 + //line php5/php5.y:2888 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -5074,7 +5102,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2880 + //line php5/php5.y:2906 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -5091,7 +5119,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2895 + //line php5/php5.y:2921 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -5105,7 +5133,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2910 + //line php5/php5.y:2936 { yyVAL.node = nil @@ -5113,7 +5141,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2916 + //line php5/php5.y:2942 { yyVAL.node = yyDollar[1].node @@ -5121,7 +5149,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2925 + //line php5/php5.y:2951 { yyVAL.node = stmt.NewNop() @@ -5136,7 +5164,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2938 + //line php5/php5.y:2964 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -5151,7 +5179,7 @@ yydefault: } case 198: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2954 + //line php5/php5.y:2980 { yyVAL.list = yyDollar[1].list @@ -5159,7 +5187,7 @@ yydefault: } case 199: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2960 + //line php5/php5.y:2986 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -5174,7 +5202,7 @@ yydefault: } case 200: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2976 + //line php5/php5.y:3002 { yyVAL.list = nil @@ -5182,7 +5210,7 @@ yydefault: } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2982 + //line php5/php5.y:3008 { yyVAL.list = yyDollar[1].list @@ -5190,7 +5218,7 @@ yydefault: } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2991 + //line php5/php5.y:3017 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5198,7 +5226,7 @@ yydefault: } case 203: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2997 + //line php5/php5.y:3023 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5206,7 +5234,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3006 + //line php5/php5.y:3032 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5220,7 +5248,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3018 + //line php5/php5.y:3044 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5234,7 +5262,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3030 + //line php5/php5.y:3056 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5248,7 +5276,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3042 + //line php5/php5.y:3068 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5262,7 +5290,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3054 + //line php5/php5.y:3080 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5276,7 +5304,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3066 + //line php5/php5.y:3092 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5290,7 +5318,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3081 + //line php5/php5.y:3107 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5311,7 +5339,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3100 + //line php5/php5.y:3126 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5333,7 +5361,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3120 + //line php5/php5.y:3146 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5353,7 +5381,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3138 + //line php5/php5.y:3164 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5374,7 +5402,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3160 + //line php5/php5.y:3186 { name := node.NewIdentifier(yyDollar[3].token.Value) constant := stmt.NewConstant(name, yyDollar[5].node, "") @@ -5390,14 +5418,14 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastConst.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 215: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3181 + //line php5/php5.y:3207 { name := node.NewIdentifier(yyDollar[2].token.Value) constant := stmt.NewConstant(name, yyDollar[4].node, "") @@ -5410,14 +5438,14 @@ yydefault: // save comments yyDollar[1].token.Meta.SetTokenName(meta.ConstToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 216: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3202 + //line php5/php5.y:3228 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5428,7 +5456,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3211 + //line php5/php5.y:3237 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5436,7 +5464,7 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3221 + //line php5/php5.y:3247 { yyVAL.list = nil @@ -5444,7 +5472,7 @@ yydefault: } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3227 + //line php5/php5.y:3253 { yyVAL.list = yyDollar[1].list @@ -5452,7 +5480,7 @@ yydefault: } case 220: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3236 + //line php5/php5.y:3262 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5463,7 +5491,7 @@ yydefault: } case 221: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3245 + //line php5/php5.y:3271 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5471,7 +5499,7 @@ yydefault: } case 222: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3254 + //line php5/php5.y:3280 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -5479,7 +5507,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3260 + //line php5/php5.y:3286 { yyVAL.list = yyDollar[1].list @@ -5487,7 +5515,7 @@ yydefault: } case 224: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3269 + //line php5/php5.y:3295 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -5505,7 +5533,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3285 + //line php5/php5.y:3311 { fetch := expr.NewArrayDimFetch(nil, yyDollar[2].node) yyVAL.list = []node.Node{fetch} @@ -5523,7 +5551,7 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3304 + //line php5/php5.y:3330 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -5531,7 +5559,7 @@ yydefault: } case 227: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3310 + //line php5/php5.y:3336 { yyVAL.list = yyDollar[1].list @@ -5539,7 +5567,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3316 + //line php5/php5.y:3342 { yyVAL.list = yyDollar[1].list @@ -5547,7 +5575,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3325 + //line php5/php5.y:3351 { yyVAL.list = nil @@ -5555,7 +5583,7 @@ yydefault: } case 230: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3331 + //line php5/php5.y:3357 { yyVAL.list = yyDollar[1].list @@ -5563,7 +5591,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3340 + //line php5/php5.y:3366 { if yyDollar[3].node != nil { @@ -5581,7 +5609,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3359 + //line php5/php5.y:3385 { list := expr.NewList(yyDollar[3].list) yyVAL.node = assign.NewAssign(list, yyDollar[6].node) @@ -5591,7 +5619,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(list.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) yyDollar[5].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) @@ -5600,7 +5628,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3376 + //line php5/php5.y:3402 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -5614,13 +5642,15 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3388 + //line php5/php5.y:3414 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + // save comments yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) @@ -5629,7 +5659,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3401 + //line php5/php5.y:3429 { var _new *expr.New @@ -5653,11 +5683,13 @@ yydefault: yyDollar[3].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(_new.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 236: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3427 + //line php5/php5.y:3457 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5671,7 +5703,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3439 + //line php5/php5.y:3469 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5681,11 +5713,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PlusEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 238: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3451 + //line php5/php5.y:3483 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5695,11 +5729,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.MinusEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3463 + //line php5/php5.y:3497 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5709,11 +5745,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.MulEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 240: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3475 + //line php5/php5.y:3511 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5723,11 +5761,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PowEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 241: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3487 + //line php5/php5.y:3525 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5737,11 +5777,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DivEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3499 + //line php5/php5.y:3539 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5751,11 +5793,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.ConcatEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 243: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3511 + //line php5/php5.y:3553 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5765,11 +5809,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.ModEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3523 + //line php5/php5.y:3567 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5779,11 +5825,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AndEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 245: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3535 + //line php5/php5.y:3581 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5793,11 +5841,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.OrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 246: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3547 + //line php5/php5.y:3595 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5807,11 +5857,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.XorEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3559 + //line php5/php5.y:3609 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5821,11 +5873,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SlEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 248: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3571 + //line php5/php5.y:3623 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5835,11 +5889,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3583 + //line php5/php5.y:3637 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5849,11 +5905,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IncToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 250: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3595 + //line php5/php5.y:3651 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5867,7 +5925,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3607 + //line php5/php5.y:3663 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5877,11 +5935,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DecToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3619 + //line php5/php5.y:3677 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5895,7 +5955,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3631 + //line php5/php5.y:3689 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5905,11 +5965,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.BooleanOrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 254: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3643 + //line php5/php5.y:3703 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5919,11 +5981,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.BooleanAndToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3655 + //line php5/php5.y:3717 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -5933,11 +5997,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalOrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3667 + //line php5/php5.y:3731 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -5947,11 +6013,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalAndToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3679 + //line php5/php5.y:3745 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -5961,11 +6029,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalXorToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 258: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3691 + //line php5/php5.y:3759 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5975,11 +6045,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.VerticalBarToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3703 + //line php5/php5.y:3773 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5989,11 +6061,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 260: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3715 + //line php5/php5.y:3787 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -6003,11 +6077,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.CaretToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 261: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3727 + //line php5/php5.y:3801 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -6017,11 +6093,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DotToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3739 + //line php5/php5.y:3815 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -6031,11 +6109,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PlusToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 263: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3751 + //line php5/php5.y:3829 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -6045,11 +6125,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.MinusToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3763 + //line php5/php5.y:3843 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -6059,11 +6141,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AsteriskToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 265: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3775 + //line php5/php5.y:3857 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -6073,11 +6157,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PowToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 266: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3787 + //line php5/php5.y:3871 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -6087,11 +6173,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SlashToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 267: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3799 + //line php5/php5.y:3885 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -6101,11 +6189,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PercentToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 268: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3811 + //line php5/php5.y:3899 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -6115,11 +6205,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SlToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 269: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3823 + //line php5/php5.y:3913 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -6129,11 +6221,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3835 + //line php5/php5.y:3927 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -6147,7 +6241,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3847 + //line php5/php5.y:3939 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -6161,7 +6255,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3859 + //line php5/php5.y:3951 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -6175,7 +6269,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3871 + //line php5/php5.y:3963 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -6189,7 +6283,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3883 + //line php5/php5.y:3975 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6199,11 +6293,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 275: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3895 + //line php5/php5.y:3989 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6213,11 +6309,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 276: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3907 + //line php5/php5.y:4003 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -6227,11 +6325,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3919 + //line php5/php5.y:4017 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -6242,11 +6342,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.IsNotEqualToken) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 278: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3932 + //line php5/php5.y:4032 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -6256,11 +6358,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LessToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 279: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3944 + //line php5/php5.y:4046 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6270,11 +6374,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 280: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3956 + //line php5/php5.y:4060 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -6284,11 +6390,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.GreaterToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3968 + //line php5/php5.y:4074 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6298,11 +6406,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 282: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3980 + //line php5/php5.y:4088 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -6312,11 +6422,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.InstanceofToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 283: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3992 + //line php5/php5.y:4102 { yyVAL.node = yyDollar[1].node @@ -6327,7 +6439,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4001 + //line php5/php5.y:4111 { yyVAL.node = yyDollar[1].node @@ -6335,38 +6447,43 @@ yydefault: } case 285: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4007 + //line php5/php5.y:4117 { yyVAL.node = yyDollar[2].node + // save comments + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + for _, n := range yyDollar[4].list { switch nn := n.(type) { case *expr.ArrayDimFetch: nn.Variable = yyVAL.node yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.PropertyFetch: nn.Variable = yyVAL.node yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.MethodCall: nn.Variable = yyVAL.node yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) } // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, n)) } - // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 286: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:4036 + //line php5/php5.y:4151 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -6377,11 +6494,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 287: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4049 + //line php5/php5.y:4166 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -6392,11 +6511,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 288: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4062 + //line php5/php5.y:4181 { yyVAL.node = yyDollar[1].node @@ -6404,7 +6525,7 @@ yydefault: } case 289: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4068 + //line php5/php5.y:4187 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -6419,7 +6540,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4081 + //line php5/php5.y:4200 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -6434,7 +6555,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4094 + //line php5/php5.y:4213 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -6449,7 +6570,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4107 + //line php5/php5.y:4226 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -6464,7 +6585,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4120 + //line php5/php5.y:4239 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -6479,7 +6600,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4133 + //line php5/php5.y:4252 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -6494,7 +6615,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4146 + //line php5/php5.y:4265 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -6509,7 +6630,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4159 + //line php5/php5.y:4278 { var e *expr.Exit if yyDollar[2].node != nil { @@ -6538,7 +6659,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4186 + //line php5/php5.y:4305 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -6552,7 +6673,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4198 + //line php5/php5.y:4317 { yyVAL.node = yyDollar[1].node @@ -6560,7 +6681,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4204 + //line php5/php5.y:4323 { yyVAL.node = yyDollar[1].node @@ -6568,7 +6689,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4210 + //line php5/php5.y:4329 { yyVAL.node = yyDollar[1].node @@ -6576,7 +6697,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4216 + //line php5/php5.y:4335 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -6590,7 +6711,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4228 + //line php5/php5.y:4347 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -6604,7 +6725,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4240 + //line php5/php5.y:4359 { yyVAL.node = expr.NewYield(nil, nil) @@ -6618,7 +6739,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:4252 + //line php5/php5.y:4371 { yyVAL.node = expr.NewClosure(yyDollar[4].list, yyDollar[6].ClosureUse, nil, yyDollar[8].list, false, yyDollar[2].token != nil, "") @@ -6639,7 +6760,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] - //line php5/php5.y:4271 + //line php5/php5.y:4390 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].ClosureUse, nil, yyDollar[9].list, true, yyDollar[3].token != nil, "") @@ -6661,7 +6782,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4294 + //line php5/php5.y:4413 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6675,7 +6796,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4306 + //line php5/php5.y:4425 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6689,7 +6810,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4318 + //line php5/php5.y:4437 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6704,7 +6825,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4331 + //line php5/php5.y:4450 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6719,7 +6840,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4347 + //line php5/php5.y:4466 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6732,11 +6853,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 311: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4362 + //line php5/php5.y:4483 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6749,11 +6872,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 312: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4377 + //line php5/php5.y:4500 { str := scalar.NewString(yyDollar[1].token.Value) yyVAL.node = expr.NewArrayDimFetch(str, yyDollar[3].node) @@ -6763,6 +6888,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(str, yyDollar[4].token)) // save comments + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) @@ -6772,7 +6898,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4394 + //line php5/php5.y:4518 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6785,11 +6911,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 314: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4412 + //line php5/php5.y:4538 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -6805,7 +6933,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4426 + //line php5/php5.y:4552 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -6820,13 +6948,13 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4442 + //line php5/php5.y:4568 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4449 + //line php5/php5.y:4575 { yyVAL.ClosureUse = nil @@ -6834,7 +6962,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4455 + //line php5/php5.y:4581 { yyVAL.ClosureUse = expr.NewClosureUse(yyDollar[3].list) @@ -6850,7 +6978,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4472 + //line php5/php5.y:4598 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6869,7 +6997,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4489 + //line php5/php5.y:4615 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6891,7 +7019,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4509 + //line php5/php5.y:4635 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6909,7 +7037,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4525 + //line php5/php5.y:4651 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[2].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6930,7 +7058,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4547 + //line php5/php5.y:4673 { name := name.NewName(yyDollar[1].list) yyVAL.node = expr.NewFunctionCall(name, yyDollar[2].node.(*node.ArgumentList)) @@ -6939,11 +7067,14 @@ yydefault: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(name, yyDollar[2].node)) + // save comments + yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 324: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4558 + //line php5/php5.y:4687 { funcName := name.NewRelative(yyDollar[3].list) yyVAL.node = expr.NewFunctionCall(funcName, yyDollar[4].node.(*node.ArgumentList)) @@ -6953,14 +7084,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, yyDollar[4].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(funcName.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(funcName.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4573 + //line php5/php5.y:4702 { funcName := name.NewFullyQualified(yyDollar[2].list) yyVAL.node = expr.NewFunctionCall(funcName, yyDollar[3].node.(*node.ArgumentList)) @@ -6970,13 +7101,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(funcName.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 326: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4587 + //line php5/php5.y:4716 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6985,12 +7116,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 327: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4599 + //line php5/php5.y:4729 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6999,12 +7131,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 328: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4611 + //line php5/php5.y:4742 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7013,12 +7146,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 329: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4623 + //line php5/php5.y:4755 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7027,23 +7161,25 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 330: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4635 + //line php5/php5.y:4768 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node)) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 331: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4647 + //line php5/php5.y:4781 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7057,18 +7193,21 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4659 + //line php5/php5.y:4793 { yyVAL.node = name.NewName(yyDollar[1].list) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + // save comments + yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 333: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4668 + //line php5/php5.y:4805 { yyVAL.node = name.NewRelative(yyDollar[3].list) @@ -7083,7 +7222,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4681 + //line php5/php5.y:4818 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) @@ -7097,18 +7236,21 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4696 + //line php5/php5.y:4833 { yyVAL.node = name.NewName(yyDollar[1].list) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + // save comments + yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 336: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4705 + //line php5/php5.y:4845 { yyVAL.node = name.NewRelative(yyDollar[3].list) @@ -7123,7 +7265,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4718 + //line php5/php5.y:4858 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) @@ -7137,7 +7279,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4733 + //line php5/php5.y:4873 { yyVAL.node = yyDollar[1].node @@ -7145,7 +7287,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4739 + //line php5/php5.y:4879 { yyVAL.node = yyDollar[1].node @@ -7153,7 +7295,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4748 + //line php5/php5.y:4888 { yyVAL.node = yyDollar[1].node @@ -7166,11 +7308,13 @@ yydefault: nn.Variable = yyVAL.node yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.PropertyFetch: nn.Variable = yyVAL.node yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) } } @@ -7180,11 +7324,13 @@ yydefault: nn.Variable = yyVAL.node yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.PropertyFetch: nn.Variable = yyVAL.node yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) } } @@ -7192,7 +7338,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4785 + //line php5/php5.y:4929 { yyVAL.node = yyDollar[1].node @@ -7200,7 +7346,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4795 + //line php5/php5.y:4939 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -7208,7 +7354,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4801 + //line php5/php5.y:4945 { yyVAL.list = []node.Node{} @@ -7216,7 +7362,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4811 + //line php5/php5.y:4955 { yyVAL.list = yyDollar[2].list @@ -7227,7 +7373,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4823 + //line php5/php5.y:4967 { yyVAL.node = nil @@ -7235,7 +7381,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4829 + //line php5/php5.y:4973 { yyVAL.node = expr.NewExit(nil) @@ -7252,7 +7398,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4844 + //line php5/php5.y:4988 { yyVAL.node = expr.NewExit(yyDollar[1].node) @@ -7271,7 +7417,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4864 + //line php5/php5.y:5008 { yyVAL.list = []node.Node{} @@ -7279,7 +7425,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4870 + //line php5/php5.y:5014 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} @@ -7287,7 +7433,7 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4876 + //line php5/php5.y:5020 { yyVAL.list = yyDollar[1].list @@ -7295,7 +7441,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4885 + //line php5/php5.y:5029 { yyVAL.node = nil @@ -7303,7 +7449,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4891 + //line php5/php5.y:5035 { yyVAL.node = yyDollar[1].node @@ -7311,7 +7457,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4900 + //line php5/php5.y:5044 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -7325,7 +7471,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4912 + //line php5/php5.y:5056 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -7339,7 +7485,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4924 + //line php5/php5.y:5068 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -7353,7 +7499,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4936 + //line php5/php5.y:5080 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7367,7 +7513,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4948 + //line php5/php5.y:5092 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7381,7 +7527,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4960 + //line php5/php5.y:5104 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7395,7 +7541,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4972 + //line php5/php5.y:5116 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7409,7 +7555,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4984 + //line php5/php5.y:5128 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7423,7 +7569,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4996 + //line php5/php5.y:5140 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7437,7 +7583,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5008 + //line php5/php5.y:5152 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7451,7 +7597,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5020 + //line php5/php5.y:5164 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -7467,7 +7613,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5034 + //line php5/php5.y:5178 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -7481,7 +7627,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5049 + //line php5/php5.y:5193 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7494,11 +7640,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 366: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5067 + //line php5/php5.y:5213 { yyVAL.node = yyDollar[1].node @@ -7506,7 +7654,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5076 + //line php5/php5.y:5222 { yyVAL.node = yyDollar[1].node @@ -7514,7 +7662,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5082 + //line php5/php5.y:5228 { yyVAL.node = yyDollar[1].node @@ -7522,7 +7670,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5088 + //line php5/php5.y:5234 { name := name.NewName(yyDollar[1].list) yyVAL.node = expr.NewConstFetch(name) @@ -7531,11 +7679,14 @@ yydefault: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + // save comments + yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 370: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5099 + //line php5/php5.y:5248 { name := name.NewRelative(yyDollar[3].list) yyVAL.node = expr.NewConstFetch(name) @@ -7545,14 +7696,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 371: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5114 + //line php5/php5.y:5263 { name := name.NewFullyQualified(yyDollar[2].list) yyVAL.node = expr.NewConstFetch(name) @@ -7562,13 +7713,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 372: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5128 + //line php5/php5.y:5277 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -7584,7 +7735,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5142 + //line php5/php5.y:5291 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -7599,7 +7750,7 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5155 + //line php5/php5.y:5304 { yyVAL.node = yyDollar[1].node @@ -7607,7 +7758,7 @@ yydefault: } case 375: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5161 + //line php5/php5.y:5310 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7621,7 +7772,7 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5173 + //line php5/php5.y:5322 { yyVAL.node = yyDollar[1].node @@ -7629,7 +7780,7 @@ yydefault: } case 377: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5182 + //line php5/php5.y:5331 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7642,11 +7793,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 378: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5197 + //line php5/php5.y:5348 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -7656,11 +7809,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PlusToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 379: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5209 + //line php5/php5.y:5362 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -7670,11 +7825,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.MinusToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 380: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5221 + //line php5/php5.y:5376 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -7684,11 +7841,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AsteriskToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 381: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5233 + //line php5/php5.y:5390 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -7698,11 +7857,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PowToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 382: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5245 + //line php5/php5.y:5404 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -7712,11 +7873,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SlashToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 383: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5257 + //line php5/php5.y:5418 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -7726,11 +7889,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PercentToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 384: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5269 + //line php5/php5.y:5432 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -7744,7 +7909,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5281 + //line php5/php5.y:5444 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -7758,7 +7923,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5293 + //line php5/php5.y:5456 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -7768,11 +7933,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.VerticalBarToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 387: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5305 + //line php5/php5.y:5470 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -7782,11 +7949,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 388: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5317 + //line php5/php5.y:5484 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -7796,11 +7965,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.CaretToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5329 + //line php5/php5.y:5498 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -7810,11 +7981,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SlToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 390: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5341 + //line php5/php5.y:5512 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -7824,11 +7997,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 391: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5353 + //line php5/php5.y:5526 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -7838,11 +8013,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DotToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 392: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5365 + //line php5/php5.y:5540 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -7852,11 +8029,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalXorToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 393: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5377 + //line php5/php5.y:5554 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -7866,11 +8045,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalAndToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 394: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5389 + //line php5/php5.y:5568 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -7880,11 +8061,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalOrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 395: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5401 + //line php5/php5.y:5582 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -7894,11 +8077,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.BooleanAndToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5413 + //line php5/php5.y:5596 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -7908,11 +8093,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.BooleanOrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 397: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5425 + //line php5/php5.y:5610 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -7922,11 +8109,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 398: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5437 + //line php5/php5.y:5624 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -7936,11 +8125,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 399: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5449 + //line php5/php5.y:5638 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -7950,11 +8141,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 400: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5461 + //line php5/php5.y:5652 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -7965,11 +8158,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.IsNotEqualToken) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 401: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5474 + //line php5/php5.y:5667 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -7979,11 +8174,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LessToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 402: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5486 + //line php5/php5.y:5681 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -7993,11 +8190,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.GreaterToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 403: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5498 + //line php5/php5.y:5695 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -8007,11 +8206,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 404: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5510 + //line php5/php5.y:5709 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -8021,11 +8222,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 405: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5522 + //line php5/php5.y:5723 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -8036,11 +8239,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 406: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:5535 + //line php5/php5.y:5738 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -8051,11 +8256,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 407: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5548 + //line php5/php5.y:5753 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -8069,7 +8276,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5560 + //line php5/php5.y:5765 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -8083,19 +8290,21 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5572 + //line php5/php5.y:5777 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 410: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5585 + //line php5/php5.y:5792 { yyVAL.node = yyDollar[1].node @@ -8103,7 +8312,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5591 + //line php5/php5.y:5798 { name := name.NewName(yyDollar[1].list) yyVAL.node = expr.NewConstFetch(name) @@ -8112,11 +8321,14 @@ yydefault: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + // save comments + yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 412: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5602 + //line php5/php5.y:5812 { name := name.NewRelative(yyDollar[3].list) yyVAL.node = expr.NewConstFetch(name) @@ -8124,14 +8336,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 413: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5615 + //line php5/php5.y:5825 { name := name.NewFullyQualified(yyDollar[2].list) yyVAL.node = expr.NewConstFetch(name) @@ -8141,13 +8353,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5632 + //line php5/php5.y:5842 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = expr.NewVariable(name) @@ -8164,7 +8376,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5647 + //line php5/php5.y:5857 { yyVAL.node = yyDollar[1].node @@ -8172,7 +8384,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5653 + //line php5/php5.y:5863 { yyVAL.node = yyDollar[1].node @@ -8180,7 +8392,7 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5659 + //line php5/php5.y:5869 { yyVAL.node = yyDollar[1].node @@ -8188,7 +8400,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5665 + //line php5/php5.y:5875 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -8202,7 +8414,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5677 + //line php5/php5.y:5887 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -8216,7 +8428,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5689 + //line php5/php5.y:5899 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -8230,7 +8442,7 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:5704 + //line php5/php5.y:5914 { yyVAL.list = nil @@ -8238,7 +8450,7 @@ yydefault: } case 422: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5710 + //line php5/php5.y:5920 { yyVAL.list = yyDollar[1].list @@ -8251,19 +8463,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:5724 + //line php5/php5.y:5934 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5728 + //line php5/php5.y:5938 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:5735 + //line php5/php5.y:5945 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8275,11 +8487,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5749 + //line php5/php5.y:5961 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8290,11 +8504,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 427: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5762 + //line php5/php5.y:5976 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) yyVAL.list = []node.Node{arrayItem} @@ -8305,11 +8521,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5775 + //line php5/php5.y:5991 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node) yyVAL.list = []node.Node{arrayItem} @@ -8317,11 +8535,13 @@ yydefault: // save position arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 429: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5788 + //line php5/php5.y:6006 { yyVAL.node = yyDollar[1].node @@ -8329,7 +8549,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5794 + //line php5/php5.y:6012 { yyVAL.node = yyDollar[1].node @@ -8337,13 +8557,13 @@ yydefault: } case 431: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5803 + //line php5/php5.y:6021 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.OpenParenthesisToken) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.OpenParenthesisToken) + yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.CloseParenthesisToken) @@ -8351,13 +8571,13 @@ yydefault: } case 432: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5815 + //line php5/php5.y:6033 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.OpenParenthesisToken) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.OpenParenthesisToken) + yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.CloseParenthesisToken) @@ -8365,7 +8585,7 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5831 + //line php5/php5.y:6049 { yyVAL.node = yyDollar[1].node @@ -8373,7 +8593,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5841 + //line php5/php5.y:6059 { yyVAL.node = yyDollar[1].node @@ -8381,7 +8601,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5850 + //line php5/php5.y:6068 { yyVAL.node = yyDollar[1].node @@ -8389,7 +8609,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:5859 + //line php5/php5.y:6077 { yyVAL.node = yyDollar[1].node @@ -8407,16 +8627,19 @@ yydefault: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.PropertyFetch: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.MethodCall: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) } } @@ -8426,16 +8649,19 @@ yydefault: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.PropertyFetch: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.MethodCall: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) } } @@ -8443,7 +8669,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5911 + //line php5/php5.y:6135 { yyVAL.node = yyDollar[1].node @@ -8451,7 +8677,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5920 + //line php5/php5.y:6144 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -8459,7 +8685,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:5926 + //line php5/php5.y:6150 { yyVAL.list = []node.Node{} @@ -8467,7 +8693,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5936 + //line php5/php5.y:6160 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*expr.MethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*expr.PropertyFetch).Property @@ -8483,7 +8709,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5953 + //line php5/php5.y:6177 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -8501,7 +8727,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5969 + //line php5/php5.y:6193 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = []node.Node{yyDollar[1].node, fetch} @@ -8519,7 +8745,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5988 + //line php5/php5.y:6212 { yyVAL.node = expr.NewMethodCall(nil, nil, yyDollar[1].node.(*node.ArgumentList)) @@ -8530,7 +8756,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6000 + //line php5/php5.y:6224 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -8538,7 +8764,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6006 + //line php5/php5.y:6230 { yyVAL.list = yyDollar[1].list @@ -8546,7 +8772,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6012 + //line php5/php5.y:6236 { yyVAL.list = nil @@ -8554,7 +8780,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6021 + //line php5/php5.y:6245 { yyVAL.node = yyDollar[1].node @@ -8562,7 +8788,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6027 + //line php5/php5.y:6251 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -8576,7 +8802,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6042 + //line php5/php5.y:6266 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -8586,11 +8812,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 450: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6054 + //line php5/php5.y:6280 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -8600,11 +8828,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6069 + //line php5/php5.y:6297 { yyVAL.node = yyDollar[1].node @@ -8612,7 +8842,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6078 + //line php5/php5.y:6306 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8625,11 +8855,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 453: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6093 + //line php5/php5.y:6323 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8642,11 +8874,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6111 + //line php5/php5.y:6343 { yyVAL.node = yyDollar[1].node @@ -8654,7 +8888,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6117 + //line php5/php5.y:6349 { yyVAL.node = yyDollar[1].node @@ -8662,7 +8896,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6123 + //line php5/php5.y:6355 { yyVAL.node = yyDollar[1].node @@ -8670,7 +8904,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6133 + //line php5/php5.y:6365 { yyVAL.node = yyDollar[1].node @@ -8678,7 +8912,7 @@ yydefault: } case 458: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6139 + //line php5/php5.y:6371 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -8692,7 +8926,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6151 + //line php5/php5.y:6383 { yyVAL.node = yyDollar[1].node @@ -8700,7 +8934,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6160 + //line php5/php5.y:6392 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8713,11 +8947,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6175 + //line php5/php5.y:6409 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8730,11 +8966,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseCurlyBracesToken) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 462: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6190 + //line php5/php5.y:6426 { yyVAL.node = yyDollar[1].node @@ -8742,7 +8980,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6200 + //line php5/php5.y:6436 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -8759,7 +8997,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6215 + //line php5/php5.y:6451 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -8778,7 +9016,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6235 + //line php5/php5.y:6471 { yyVAL.node = nil @@ -8786,7 +9024,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6241 + //line php5/php5.y:6477 { yyVAL.node = yyDollar[1].node @@ -8794,7 +9032,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6251 + //line php5/php5.y:6487 { yyVAL.list = yyDollar[1].list @@ -8802,7 +9040,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6257 + //line php5/php5.y:6493 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yyVAL.list = []node.Node{fetch} @@ -8814,7 +9052,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6270 + //line php5/php5.y:6506 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -8832,7 +9070,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6286 + //line php5/php5.y:6522 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -8850,7 +9088,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6302 + //line php5/php5.y:6538 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yyVAL.list = []node.Node{fetch} @@ -8862,7 +9100,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6315 + //line php5/php5.y:6551 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -8876,7 +9114,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6327 + //line php5/php5.y:6563 { yyVAL.node = yyDollar[2].node @@ -8884,8 +9122,8 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) @@ -8893,7 +9131,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6345 + //line php5/php5.y:6581 { n := expr.NewVariable(nil) yyVAL.simpleIndirectReference = simpleIndirectReference{[]*expr.Variable{n}, n} @@ -8909,7 +9147,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6359 + //line php5/php5.y:6595 { n := expr.NewVariable(nil) @@ -8929,7 +9167,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6380 + //line php5/php5.y:6616 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil)} @@ -8944,7 +9182,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6393 + //line php5/php5.y:6629 { if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { yyVAL.list = []node.Node{} @@ -8956,18 +9194,20 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6407 + //line php5/php5.y:6643 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 479: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6416 + //line php5/php5.y:6654 { item := expr.NewList(yyDollar[3].list) yyVAL.node = expr.NewArrayItem(nil, item) @@ -8977,7 +9217,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(item)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(item.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(item.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(item.GetMeta()) @@ -8985,7 +9225,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6432 + //line php5/php5.y:6670 { yyVAL.node = expr.NewArrayItem(nil, nil) @@ -8993,7 +9233,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6442 + //line php5/php5.y:6680 { yyVAL.list = []node.Node{} @@ -9001,7 +9241,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6448 + //line php5/php5.y:6686 { yyVAL.list = yyDollar[1].list @@ -9018,7 +9258,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:6466 + //line php5/php5.y:6704 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -9030,11 +9270,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 484: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6480 + //line php5/php5.y:6720 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -9045,11 +9287,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 485: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6493 + //line php5/php5.y:6735 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) yyVAL.list = []node.Node{arrayItem} @@ -9060,11 +9304,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 486: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6506 + //line php5/php5.y:6750 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node) yyVAL.list = []node.Node{arrayItem} @@ -9072,11 +9318,13 @@ yydefault: // save position arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 487: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:6516 + //line php5/php5.y:6762 { reference := expr.NewReference(yyDollar[6].node) arrayItem := expr.NewArrayItem(yyDollar[3].node, reference) @@ -9091,11 +9339,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) yyDollar[5].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 488: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6533 + //line php5/php5.y:6781 { reference := expr.NewReference(yyDollar[4].node) arrayItem := expr.NewArrayItem(nil, reference) @@ -9107,13 +9357,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(arrayItem.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 489: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6549 + //line php5/php5.y:6797 { reference := expr.NewReference(yyDollar[4].node) arrayItem := expr.NewArrayItem(yyDollar[1].node, reference) @@ -9127,11 +9377,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 490: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6565 + //line php5/php5.y:6815 { reference := expr.NewReference(yyDollar[2].node) arrayItem := expr.NewArrayItem(nil, reference) @@ -9142,13 +9394,13 @@ yydefault: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(arrayItem.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 491: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6583 + //line php5/php5.y:6833 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -9156,7 +9408,7 @@ yydefault: } case 492: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6589 + //line php5/php5.y:6839 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -9171,7 +9423,7 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6602 + //line php5/php5.y:6852 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -9179,7 +9431,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6608 + //line php5/php5.y:6858 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -9194,7 +9446,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6624 + //line php5/php5.y:6874 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -9211,7 +9463,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6639 + //line php5/php5.y:6889 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -9223,7 +9475,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) @@ -9234,7 +9485,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6660 + //line php5/php5.y:6909 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -9248,7 +9499,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[2].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(fetch.GetMeta()) @@ -9257,7 +9507,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6681 + //line php5/php5.y:6929 { variable := expr.NewVariable(yyDollar[2].node) @@ -9267,7 +9517,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) @@ -9276,7 +9525,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6698 + //line php5/php5.y:6945 { name := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(name) @@ -9288,7 +9537,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) @@ -9298,7 +9546,7 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:6718 + //line php5/php5.y:6964 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -9310,7 +9558,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) yyDollar[3].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.OpenSquareBracket) @@ -9323,12 +9570,11 @@ yydefault: } case 501: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6741 + //line php5/php5.y:6986 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) @@ -9337,7 +9583,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6756 + //line php5/php5.y:7000 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -9351,7 +9597,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6768 + //line php5/php5.y:7012 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -9367,7 +9613,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6782 + //line php5/php5.y:7026 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -9384,7 +9630,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6800 + //line php5/php5.y:7044 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -9400,7 +9646,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6814 + //line php5/php5.y:7058 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -9416,7 +9662,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6828 + //line php5/php5.y:7072 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -9432,7 +9678,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6842 + //line php5/php5.y:7086 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -9446,7 +9692,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6854 + //line php5/php5.y:7098 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -9460,7 +9706,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6866 + //line php5/php5.y:7110 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -9476,7 +9722,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6880 + //line php5/php5.y:7124 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -9490,7 +9736,7 @@ yydefault: } case 512: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6892 + //line php5/php5.y:7136 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -9504,7 +9750,7 @@ yydefault: } case 513: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6907 + //line php5/php5.y:7151 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -9512,7 +9758,7 @@ yydefault: } case 514: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6913 + //line php5/php5.y:7157 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -9523,7 +9769,7 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6925 + //line php5/php5.y:7169 { yyVAL.node = yyDollar[1].node @@ -9531,7 +9777,7 @@ yydefault: } case 516: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6931 + //line php5/php5.y:7175 { yyVAL.node = yyDollar[1].node @@ -9539,7 +9785,7 @@ yydefault: } case 517: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6940 + //line php5/php5.y:7184 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9552,11 +9798,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 518: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6955 + //line php5/php5.y:7201 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9569,11 +9817,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 519: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6973 + //line php5/php5.y:7221 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9586,11 +9836,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 520: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6991 + //line php5/php5.y:7241 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9603,6 +9855,8 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } } diff --git a/php5/php5.y b/php5/php5.y index 543e801..5c6de94 100644 --- a/php5/php5.y +++ b/php5/php5.y @@ -775,7 +775,7 @@ constant_declaration: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastConst.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $3.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) $4.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -794,7 +794,7 @@ constant_declaration: // save comments $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $2.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) $3.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -881,7 +881,7 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(label.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -1139,6 +1139,8 @@ unticked_statement: $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_GLOBAL global_var_list ';' @@ -1207,6 +1209,8 @@ unticked_statement: $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_UNSET '(' unset_variables ')' ';' @@ -1644,7 +1648,7 @@ class_entry_type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.ClassToken).AppendTo($$.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1658,7 +1662,7 @@ class_entry_type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(classModifier.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.ClassToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -1685,7 +1689,7 @@ class_entry_type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(classModifier.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.ClassToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -1934,7 +1938,7 @@ declare_list: constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) $2.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -1951,7 +1955,7 @@ declare_list: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $3.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) $4.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2269,13 +2273,20 @@ parameter: } // save comments + if $1 != nil { + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + } if $2 != nil { $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) } if $3 != nil { $3.Meta.SetTokenName(meta.EllipsisToken).AppendTo($$.GetMeta()) } - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + if $1 == nil && $2 == nil && $3 == nil { + $4.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + } else { + $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + } yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2300,13 +2311,20 @@ parameter: } // save comments + if $1 != nil { + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + } if $2 != nil { $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) } if $3 != nil { $3.Meta.SetTokenName(meta.EllipsisToken).AppendTo($$.GetMeta()) } - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + if $1 == nil && $2 == nil && $3 == nil { + $4.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + } else { + $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + } yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $5.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) @@ -2426,6 +2444,9 @@ function_call_parameter: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + // save comments + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable @@ -2435,6 +2456,9 @@ function_call_parameter: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + // save comments + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '&' w_variable @@ -2547,7 +2571,7 @@ static_var_list: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + $3.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2566,7 +2590,7 @@ static_var_list: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + $3.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $4.Meta.SetTokenName(meta.EqualToken).AppendTo(staticVar.GetMeta()) @@ -2585,7 +2609,7 @@ static_var_list: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2603,7 +2627,7 @@ static_var_list: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $2.Meta.SetTokenName(meta.EqualToken).AppendTo(staticVar.GetMeta()) @@ -2640,6 +2664,8 @@ class_statement: $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | class_constant_declaration ';' @@ -3172,7 +3198,7 @@ class_constant_declaration: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastConst.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $3.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) $4.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -3190,7 +3216,7 @@ class_constant_declaration: // save comments $1.Meta.SetTokenName(meta.ConstToken).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $2.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) $3.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -3365,7 +3391,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(list.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) $5.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) @@ -3391,6 +3417,8 @@ expr_without_variable: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + // save comments $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) @@ -3421,6 +3449,8 @@ expr_without_variable: $3.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) $4.Meta.SetTokenName(meta.NodeStart).AppendTo(_new.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CLONE expr @@ -3445,6 +3475,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PlusEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_MINUS_EQUAL expr @@ -3457,6 +3489,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.MinusEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_MUL_EQUAL expr @@ -3469,6 +3503,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.MulEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_POW_EQUAL expr @@ -3481,6 +3517,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PowEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_DIV_EQUAL expr @@ -3493,6 +3531,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.DivEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_CONCAT_EQUAL expr @@ -3505,6 +3545,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.ConcatEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_MOD_EQUAL expr @@ -3517,6 +3559,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.ModEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_AND_EQUAL expr @@ -3529,6 +3573,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.AndEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_OR_EQUAL expr @@ -3541,6 +3587,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.OrEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_XOR_EQUAL expr @@ -3553,6 +3601,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.XorEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_SL_EQUAL expr @@ -3565,6 +3615,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SlEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_SR_EQUAL expr @@ -3577,6 +3629,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SrEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | rw_variable T_INC @@ -3589,6 +3643,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IncToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_INC rw_variable @@ -3613,6 +3669,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.DecToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_DEC rw_variable @@ -3637,6 +3695,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.BooleanOrToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_BOOLEAN_AND expr @@ -3649,6 +3709,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.BooleanAndToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_LOGICAL_OR expr @@ -3661,6 +3723,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.LogicalOrToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_LOGICAL_AND expr @@ -3673,6 +3737,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.LogicalAndToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_LOGICAL_XOR expr @@ -3685,6 +3751,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.LogicalXorToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '|' expr @@ -3697,6 +3765,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.VerticalBarToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '&' expr @@ -3709,6 +3779,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '^' expr @@ -3721,6 +3793,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.CaretToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '.' expr @@ -3733,6 +3807,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.DotToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '+' expr @@ -3745,6 +3821,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PlusToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '-' expr @@ -3757,6 +3835,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.MinusToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '*' expr @@ -3769,6 +3849,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.AsteriskToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_POW expr @@ -3781,6 +3863,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PowToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '/' expr @@ -3793,6 +3877,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SlashToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '%' expr @@ -3805,6 +3891,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PercentToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_SL expr @@ -3817,6 +3905,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SlToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_SR expr @@ -3829,6 +3919,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SrToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '+' expr %prec T_INC @@ -3889,6 +3981,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_NOT_IDENTICAL expr @@ -3901,6 +3995,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_EQUAL expr @@ -3913,6 +4009,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_NOT_EQUAL expr @@ -3926,6 +4024,8 @@ expr_without_variable: $2.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.IsNotEqualToken) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '<' expr @@ -3938,6 +4038,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.LessToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_SMALLER_OR_EQUAL expr @@ -3950,6 +4052,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '>' expr @@ -3962,6 +4066,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.GreaterToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_GREATER_OR_EQUAL expr @@ -3974,6 +4080,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_INSTANCEOF class_name_reference @@ -3986,6 +4094,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.InstanceofToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | parenthesis_expr @@ -4007,29 +4117,34 @@ expr_without_variable: { $$ = $2 + // save comments + yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) + $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) + $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) + yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + for _, n := range($4) { switch nn := n.(type) { case *expr.ArrayDimFetch: nn.Variable = $$ $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.PropertyFetch: nn.Variable = $$ $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.MethodCall: nn.Variable = $$ $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) } // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, n)) } - // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '?' expr ':' expr @@ -4043,6 +4158,8 @@ expr_without_variable: $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) $4.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '?' ':' expr @@ -4056,6 +4173,8 @@ expr_without_variable: $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | internal_functions_in_yacc @@ -4356,6 +4475,8 @@ combined_scalar_offset: $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | combined_scalar_offset '[' dim_offset ']' @@ -4371,6 +4492,8 @@ combined_scalar_offset: $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']' @@ -4383,6 +4506,7 @@ combined_scalar_offset: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(str, $4)) // save comments + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) @@ -4403,6 +4527,8 @@ combined_scalar_offset: $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -4552,6 +4678,9 @@ function_call: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(name, $2)) + // save comments + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NAMESPACE T_NS_SEPARATOR namespace_name function_call_parameter_list @@ -4564,7 +4693,7 @@ function_call: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(funcName.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(funcName.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -4579,7 +4708,7 @@ function_call: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(funcName.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4592,6 +4721,7 @@ function_call: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4604,6 +4734,7 @@ function_call: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4616,6 +4747,7 @@ function_call: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4628,6 +4760,7 @@ function_call: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4637,6 +4770,7 @@ function_call: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2)) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4661,6 +4795,9 @@ class_name: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + + // save comments + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4698,6 +4835,9 @@ fully_qualified_class_name: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + + // save comments + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4757,11 +4897,13 @@ dynamic_class_name_reference: nn.Variable = $$ $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.PropertyFetch: nn.Variable = $$ $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) } } @@ -4771,11 +4913,13 @@ dynamic_class_name_reference: nn.Variable = $$ $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.PropertyFetch: nn.Variable = $$ $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) } } @@ -5058,6 +5202,8 @@ static_class_constant: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -5093,6 +5239,9 @@ static_scalar_value: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + // save comments + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NAMESPACE T_NS_SEPARATOR namespace_name @@ -5105,7 +5254,7 @@ static_scalar_value: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -5120,7 +5269,7 @@ static_scalar_value: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5191,6 +5340,8 @@ static_operation: $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '+' static_scalar_value @@ -5203,6 +5354,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.PlusToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '-' static_scalar_value @@ -5214,6 +5367,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.MinusToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5226,6 +5381,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.AsteriskToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5238,6 +5395,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.PowToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5250,6 +5409,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.SlashToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5262,6 +5423,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.PercentToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5298,6 +5461,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.VerticalBarToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5310,6 +5475,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5322,6 +5489,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.CaretToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5334,6 +5503,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.SlToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5346,6 +5517,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.SrToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5358,6 +5531,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.DotToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5370,6 +5545,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.LogicalXorToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5382,6 +5559,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.LogicalAndToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5394,6 +5573,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.LogicalOrToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5406,6 +5587,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.BooleanAndToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5418,6 +5601,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.BooleanOrToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5430,6 +5615,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5442,6 +5629,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5454,6 +5643,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.IsEqualToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5467,6 +5658,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.IsNotEqualToken) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5479,6 +5672,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.LessToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5491,6 +5686,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.GreaterToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5503,6 +5700,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5515,6 +5714,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5528,6 +5729,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5541,6 +5744,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) $4.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5573,8 +5778,10 @@ static_operation: $$ = $2 // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) + $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) + $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) + yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5596,6 +5803,9 @@ general_constant: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + // save comments + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NAMESPACE T_NS_SEPARATOR namespace_name @@ -5606,7 +5816,7 @@ general_constant: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -5621,7 +5831,7 @@ general_constant: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5743,6 +5953,8 @@ non_empty_static_array_pair_list: $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) $4.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_static_array_pair_list ',' static_scalar_value @@ -5756,6 +5968,8 @@ non_empty_static_array_pair_list: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_DOUBLE_ARROW static_scalar_value @@ -5769,6 +5983,8 @@ non_empty_static_array_pair_list: // save comments $2.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value @@ -5779,6 +5995,8 @@ non_empty_static_array_pair_list: // save position arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -5804,8 +6022,8 @@ parenthesis_expr: $$ = $2 // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.OpenParenthesisToken) + yylex.(*Parser).prependMetaToken($$, $1, meta.OpenParenthesisToken) + $1.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo($$.GetMeta()) $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.CloseParenthesisToken) @@ -5816,8 +6034,8 @@ parenthesis_expr: $$ = $2 // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.OpenParenthesisToken) + yylex.(*Parser).prependMetaToken($$, $1, meta.OpenParenthesisToken) + $1.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo($$.GetMeta()) $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.CloseParenthesisToken) @@ -5873,16 +6091,19 @@ variable: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.PropertyFetch: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.MethodCall: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) } } @@ -5892,16 +6113,19 @@ variable: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.PropertyFetch: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.MethodCall: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) } } @@ -6048,6 +6272,8 @@ static_member: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects @@ -6060,6 +6286,8 @@ static_member: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -6087,6 +6315,8 @@ array_function_dereference: $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | function_call '[' dim_offset ']' @@ -6102,6 +6332,8 @@ array_function_dereference: $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -6169,6 +6401,8 @@ reference_variable: $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | reference_variable '{' expr '}' @@ -6184,6 +6418,8 @@ reference_variable: $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseCurlyBracesToken) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | compound_variable @@ -6331,8 +6567,8 @@ variable_name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) + $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) @@ -6410,6 +6646,8 @@ assignment_list_element: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_LIST '(' assignment_list ')' @@ -6422,7 +6660,7 @@ assignment_list_element: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(item)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(item.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(item.GetMeta()) $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(item.GetMeta()) @@ -6474,6 +6712,8 @@ non_empty_array_pair_list: $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) $4.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_array_pair_list ',' expr @@ -6487,6 +6727,8 @@ non_empty_array_pair_list: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_DOUBLE_ARROW expr @@ -6500,6 +6742,8 @@ non_empty_array_pair_list: // save comments $2.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr @@ -6510,6 +6754,8 @@ non_empty_array_pair_list: // save position arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_array_pair_list ',' expr T_DOUBLE_ARROW '&' w_variable @@ -6527,6 +6773,8 @@ non_empty_array_pair_list: $4.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) $5.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_array_pair_list ',' '&' w_variable @@ -6541,7 +6789,7 @@ non_empty_array_pair_list: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + $3.Meta.SetTokenName(meta.NodeStart).AppendTo(arrayItem.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6559,6 +6807,8 @@ non_empty_array_pair_list: $2.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '&' w_variable @@ -6572,7 +6822,7 @@ non_empty_array_pair_list: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo(arrayItem.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6647,7 +6897,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) @@ -6670,7 +6919,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $2.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(fetch.GetMeta()) @@ -6687,7 +6935,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) @@ -6706,7 +6953,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) @@ -6726,7 +6972,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) $3.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.OpenSquareBracket) @@ -6742,7 +6987,6 @@ encaps_var: $$ = $2; // save comments - $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) @@ -6949,6 +7193,8 @@ class_constant: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING @@ -6964,6 +7210,8 @@ class_constant: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -6982,6 +7230,8 @@ static_class_name_scalar: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -7000,6 +7250,8 @@ class_name_scalar: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ;