diff --git a/php5/parser.go b/php5/parser.go index e3c4802..4c67385 100644 --- a/php5/parser.go +++ b/php5/parser.go @@ -2,6 +2,7 @@ package php5 import ( "io" + "strings" "github.com/z7zmey/php-parser/errors" "github.com/z7zmey/php-parser/meta" @@ -163,6 +164,73 @@ func (l *Parser) prependMetaToken(n node.Node, t *scanner.Token, tn meta.TokenNa n.GetMeta().Unshift(m) } +func (l *Parser) splitSemicolonTokenAndPhpCloseTag(htmlNode node.Node, prevNode node.Node) { + SemiColonTokenMeta := prevNode.GetMeta().Cut(meta.AndFilter( + meta.TokenNameFilter(meta.SemiColonToken), + meta.TypeFilter(meta.TokenType), + )) + + if len(*SemiColonTokenMeta) < 1 { + return + } + + metaTokenValue := (*SemiColonTokenMeta)[0].Value + + i := strings.Index(metaTokenValue, "?>") + + if i < 0 { + SemiColonTokenMeta.AppendTo(prevNode.GetMeta()) + } else { + if metaTokenValue[0] == ';' { + prevNode.GetMeta().Push(&meta.Data{ + Value: metaTokenValue[0:1], + Type: meta.TokenType, + Position: nil, + TokenName: meta.SemiColonToken, + }) + + htmlNode.GetMeta().Push(&meta.Data{ + Value: metaTokenValue[1:i], + Type: meta.WhiteSpaceType, + Position: nil, + TokenName: meta.NodeStart, + }) + + htmlNode.GetMeta().Push(&meta.Data{ + Value: metaTokenValue[i : i+2], + Type: meta.TokenType, + Position: nil, + TokenName: meta.NodeStart, + }) + + if len(metaTokenValue) > i+2 { + htmlNode.GetMeta().Push(&meta.Data{ + Value: metaTokenValue[i+2:], + Type: meta.WhiteSpaceType, + Position: nil, + TokenName: meta.NodeStart, + }) + } + } else { + htmlNode.GetMeta().Push(&meta.Data{ + Value: metaTokenValue[:2], + Type: meta.TokenType, + Position: nil, + TokenName: meta.NodeStart, + }) + + if len(metaTokenValue) > 2 { + htmlNode.GetMeta().Push(&meta.Data{ + Value: metaTokenValue[2:], + Type: meta.WhiteSpaceType, + Position: nil, + TokenName: meta.NodeStart, + }) + } + } + } +} + func (p *Parser) returnTokenToPool(yyDollar []yySymType, yyVAL *yySymType) { for i := 1; i < len(yyDollar); i++ { if yyDollar[i].token != nil { diff --git a/php5/php5.go b/php5/php5.go index 77757d7..5728047 100644 --- a/php5/php5.go +++ b/php5/php5.go @@ -1,5 +1,3 @@ -// Code generated by goyacc -o php5/php5.go php5/php5.y. DO NOT EDIT. - //line php5/php5.y:2 package php5 @@ -348,7 +346,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php5/php5.y:7261 +//line php5/php5.y:7271 type simpleIndirectReference struct { all []*expr.Variable @@ -2343,6 +2341,11 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] //line php5/php5.y:295 { + if inlineHtmlNode, ok := yyDollar[2].node.(*stmt.InlineHtml); ok && len(yyDollar[1].list) > 0 { + prevNode := lastNode(yyDollar[1].list) + yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + } + if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } @@ -2351,7 +2354,7 @@ yydefault: } case 3: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:303 + //line php5/php5.y:308 { yyVAL.list = []node.Node{} @@ -2359,7 +2362,7 @@ yydefault: } case 4: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:312 + //line php5/php5.y:317 { namePart := name.NewNamePart(yyDollar[1].token.Value) yyVAL.list = []node.Node{namePart} @@ -2374,7 +2377,7 @@ yydefault: } case 5: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:325 + //line php5/php5.y:330 { namePart := name.NewNamePart(yyDollar[3].token.Value) yyVAL.list = append(yyDollar[1].list, namePart) @@ -2390,7 +2393,7 @@ yydefault: } case 6: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:342 + //line php5/php5.y:347 { // error yyVAL.node = nil @@ -2399,7 +2402,7 @@ yydefault: } case 7: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:349 + //line php5/php5.y:354 { yyVAL.node = yyDollar[1].node @@ -2407,7 +2410,7 @@ yydefault: } case 8: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:355 + //line php5/php5.y:360 { yyVAL.node = yyDollar[1].node @@ -2415,7 +2418,7 @@ yydefault: } case 9: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:361 + //line php5/php5.y:366 { yyVAL.node = yyDollar[1].node @@ -2423,7 +2426,7 @@ yydefault: } case 10: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:367 + //line php5/php5.y:372 { yyVAL.node = stmt.NewHaltCompiler() @@ -2443,7 +2446,7 @@ yydefault: } case 11: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:385 + //line php5/php5.y:390 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, nil) @@ -2461,7 +2464,7 @@ yydefault: } case 12: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:401 + //line php5/php5.y:406 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, yyDollar[4].list) @@ -2479,7 +2482,7 @@ yydefault: } case 13: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:417 + //line php5/php5.y:422 { yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) @@ -2495,7 +2498,7 @@ yydefault: } case 14: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:431 + //line php5/php5.y:436 { yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) @@ -2511,7 +2514,7 @@ yydefault: } case 15: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:445 + //line php5/php5.y:450 { useType := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewUseList(useType, yyDollar[3].list) @@ -2530,7 +2533,7 @@ yydefault: } case 16: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:462 + //line php5/php5.y:467 { useType := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewUseList(useType, yyDollar[3].list) @@ -2549,7 +2552,7 @@ yydefault: } case 17: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:479 + //line php5/php5.y:484 { yyVAL.node = yyDollar[1].node @@ -2564,7 +2567,7 @@ yydefault: } case 18: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:495 + //line php5/php5.y:500 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2575,7 +2578,7 @@ yydefault: } case 19: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:504 + //line php5/php5.y:509 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -2583,7 +2586,7 @@ yydefault: } case 20: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:513 + //line php5/php5.y:518 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -2599,7 +2602,7 @@ yydefault: } case 21: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:527 + //line php5/php5.y:532 { name := name.NewName(yyDollar[1].list) alias := node.NewIdentifier(yyDollar[3].token.Value) @@ -2620,7 +2623,7 @@ yydefault: } case 22: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:546 + //line php5/php5.y:551 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -2638,7 +2641,7 @@ yydefault: } case 23: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:562 + //line php5/php5.y:567 { name := name.NewName(yyDollar[2].list) alias := node.NewIdentifier(yyDollar[4].token.Value) @@ -2660,7 +2663,7 @@ yydefault: } case 24: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:585 + //line php5/php5.y:590 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2671,7 +2674,7 @@ yydefault: } case 25: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:594 + //line php5/php5.y:599 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -2679,7 +2682,7 @@ yydefault: } case 26: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:603 + //line php5/php5.y:608 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -2695,7 +2698,7 @@ yydefault: } case 27: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:617 + //line php5/php5.y:622 { name := name.NewName(yyDollar[1].list) alias := node.NewIdentifier(yyDollar[3].token.Value) @@ -2715,7 +2718,7 @@ yydefault: } case 28: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:635 + //line php5/php5.y:640 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -2733,7 +2736,7 @@ yydefault: } case 29: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:651 + //line php5/php5.y:656 { name := name.NewName(yyDollar[2].list) alias := node.NewIdentifier(yyDollar[4].token.Value) @@ -2755,7 +2758,7 @@ yydefault: } case 30: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:674 + //line php5/php5.y:679 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2766,7 +2769,7 @@ yydefault: } case 31: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:683 + //line php5/php5.y:688 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -2774,7 +2777,7 @@ yydefault: } case 32: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:692 + //line php5/php5.y:697 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -2790,7 +2793,7 @@ yydefault: } case 33: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:706 + //line php5/php5.y:711 { name := name.NewName(yyDollar[1].list) alias := node.NewIdentifier(yyDollar[3].token.Value) @@ -2810,7 +2813,7 @@ yydefault: } case 34: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:724 + //line php5/php5.y:729 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -2828,7 +2831,7 @@ yydefault: } case 35: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:740 + //line php5/php5.y:745 { name := name.NewName(yyDollar[2].list) alias := node.NewIdentifier(yyDollar[4].token.Value) @@ -2850,7 +2853,7 @@ yydefault: } case 36: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:763 + //line php5/php5.y:768 { name := node.NewIdentifier(yyDollar[3].token.Value) constant := stmt.NewConstant(name, yyDollar[5].node, "") @@ -2873,7 +2876,7 @@ yydefault: } case 37: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:784 + //line php5/php5.y:789 { name := node.NewIdentifier(yyDollar[2].token.Value) constant := stmt.NewConstant(name, yyDollar[4].node, "") @@ -2894,8 +2897,13 @@ yydefault: } case 38: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:806 + //line php5/php5.y:811 { + if inlineHtmlNode, ok := yyDollar[2].node.(*stmt.InlineHtml); ok && len(yyDollar[1].list) > 0 { + prevNode := lastNode(yyDollar[1].list) + yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + } + if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } @@ -2904,7 +2912,7 @@ yydefault: } case 39: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:814 + //line php5/php5.y:824 { yyVAL.list = []node.Node{} @@ -2912,7 +2920,7 @@ yydefault: } case 40: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:824 + //line php5/php5.y:834 { // error yyVAL.node = nil @@ -2921,7 +2929,7 @@ yydefault: } case 41: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:831 + //line php5/php5.y:841 { yyVAL.node = yyDollar[1].node @@ -2929,7 +2937,7 @@ yydefault: } case 42: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:837 + //line php5/php5.y:847 { yyVAL.node = yyDollar[1].node @@ -2937,7 +2945,7 @@ yydefault: } case 43: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:843 + //line php5/php5.y:853 { yyVAL.node = yyDollar[1].node @@ -2945,7 +2953,7 @@ yydefault: } case 44: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:849 + //line php5/php5.y:859 { yyVAL.node = stmt.NewHaltCompiler() @@ -2963,7 +2971,7 @@ yydefault: } case 45: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:869 + //line php5/php5.y:879 { yyVAL.node = yyDollar[1].node @@ -2971,7 +2979,7 @@ yydefault: } case 46: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:875 + //line php5/php5.y:885 { label := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewLabel(label) @@ -2988,7 +2996,7 @@ yydefault: } case 47: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:893 + //line php5/php5.y:903 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -3003,7 +3011,7 @@ yydefault: } case 48: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:906 + //line php5/php5.y:916 { yyVAL.node = stmt.NewIf(yyDollar[2].node, yyDollar[3].node, yyDollar[4].list, yyDollar[5].node) @@ -3025,7 +3033,7 @@ yydefault: } case 49: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:926 + //line php5/php5.y:936 { stmts := stmt.NewStmtList(yyDollar[4].list) yyVAL.node = stmt.NewAltIf(yyDollar[2].node, stmts, yyDollar[5].list, yyDollar[6].node) @@ -3047,7 +3055,7 @@ yydefault: } case 50: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:946 + //line php5/php5.y:956 { switch n := yyDollar[3].node.(type) { case *stmt.While: @@ -3070,7 +3078,7 @@ yydefault: } case 51: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:967 + //line php5/php5.y:977 { yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[4].node) @@ -3089,7 +3097,7 @@ yydefault: } case 52: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:984 + //line php5/php5.y:994 { switch n := yyDollar[9].node.(type) { case *stmt.For: @@ -3118,7 +3126,7 @@ yydefault: } case 53: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1011 + //line php5/php5.y:1021 { switch n := yyDollar[3].node.(type) { case *stmt.Switch: @@ -3143,7 +3151,7 @@ yydefault: } case 54: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1034 + //line php5/php5.y:1044 { yyVAL.node = stmt.NewBreak(nil) @@ -3159,7 +3167,7 @@ yydefault: } case 55: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1048 + //line php5/php5.y:1058 { yyVAL.node = stmt.NewBreak(yyDollar[2].node) @@ -3175,7 +3183,7 @@ yydefault: } case 56: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1062 + //line php5/php5.y:1072 { yyVAL.node = stmt.NewContinue(nil) @@ -3191,7 +3199,7 @@ yydefault: } case 57: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1076 + //line php5/php5.y:1086 { yyVAL.node = stmt.NewContinue(yyDollar[2].node) @@ -3207,7 +3215,7 @@ yydefault: } case 58: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1090 + //line php5/php5.y:1100 { yyVAL.node = stmt.NewReturn(nil) @@ -3223,7 +3231,7 @@ yydefault: } case 59: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1104 + //line php5/php5.y:1114 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) @@ -3239,7 +3247,7 @@ yydefault: } case 60: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1118 + //line php5/php5.y:1128 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) @@ -3255,7 +3263,7 @@ yydefault: } case 61: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1132 + //line php5/php5.y:1142 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) @@ -3272,7 +3280,7 @@ yydefault: } case 62: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1147 + //line php5/php5.y:1157 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) @@ -3288,7 +3296,7 @@ yydefault: } case 63: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1161 + //line php5/php5.y:1171 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) @@ -3304,7 +3312,7 @@ yydefault: } case 64: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1175 + //line php5/php5.y:1185 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) @@ -3321,7 +3329,7 @@ yydefault: } case 65: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1190 + //line php5/php5.y:1200 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) @@ -3335,7 +3343,7 @@ yydefault: } case 66: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1202 + //line php5/php5.y:1212 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) @@ -3352,7 +3360,7 @@ yydefault: } case 67: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1217 + //line php5/php5.y:1227 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) @@ -3370,7 +3378,7 @@ yydefault: } case 68: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1233 + //line php5/php5.y:1243 { if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { @@ -3412,7 +3420,7 @@ yydefault: } case 69: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1273 + //line php5/php5.y:1283 { if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { @@ -3454,7 +3462,7 @@ yydefault: } case 70: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1313 + //line php5/php5.y:1323 { yyVAL.node = yyDollar[5].node yyVAL.node.(*stmt.Declare).Consts = yyDollar[3].list @@ -3471,7 +3479,7 @@ yydefault: } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1328 + //line php5/php5.y:1338 { yyVAL.node = stmt.NewNop() @@ -3486,7 +3494,7 @@ yydefault: } case 72: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1341 + //line php5/php5.y:1351 { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3506,7 +3514,7 @@ yydefault: } case 73: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1359 + //line php5/php5.y:1369 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) @@ -3522,7 +3530,7 @@ yydefault: } case 74: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1373 + //line php5/php5.y:1383 { label := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewGoto(label) @@ -3541,7 +3549,7 @@ yydefault: } case 75: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1393 + //line php5/php5.y:1403 { yyVAL.list = []node.Node{} @@ -3549,7 +3557,7 @@ yydefault: } case 76: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:1399 + //line php5/php5.y:1409 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -3574,7 +3582,7 @@ yydefault: } case 77: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1425 + //line php5/php5.y:1435 { yyVAL.node = nil @@ -3582,7 +3590,7 @@ yydefault: } case 78: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1431 + //line php5/php5.y:1441 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) @@ -3598,7 +3606,7 @@ yydefault: } case 79: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1448 + //line php5/php5.y:1458 { yyVAL.list = yyDollar[1].list @@ -3606,7 +3614,7 @@ yydefault: } case 80: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1454 + //line php5/php5.y:1464 { yyVAL.list = []node.Node{} @@ -3614,7 +3622,7 @@ yydefault: } case 81: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1463 + //line php5/php5.y:1473 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3622,7 +3630,7 @@ yydefault: } case 82: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1469 + //line php5/php5.y:1479 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3630,7 +3638,7 @@ yydefault: } case 83: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1478 + //line php5/php5.y:1488 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -3654,7 +3662,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1503 + //line php5/php5.y:1513 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3662,7 +3670,7 @@ yydefault: } case 85: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1509 + //line php5/php5.y:1519 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3673,7 +3681,7 @@ yydefault: } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1521 + //line php5/php5.y:1531 { yyVAL.node = yyDollar[1].node @@ -3681,7 +3689,7 @@ yydefault: } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1530 + //line php5/php5.y:1540 { yyVAL.node = yyDollar[1].node @@ -3689,7 +3697,7 @@ yydefault: } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1539 + //line php5/php5.y:1549 { yyVAL.node = yyDollar[1].node @@ -3697,31 +3705,31 @@ yydefault: } case 89: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1548 + //line php5/php5.y:1558 { yyVAL.token = nil } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1552 + //line php5/php5.y:1562 { yyVAL.token = yyDollar[1].token } case 91: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1559 + //line php5/php5.y:1569 { yyVAL.token = nil } case 92: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1563 + //line php5/php5.y:1573 { yyVAL.token = yyDollar[1].token } case 93: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:1570 + //line php5/php5.y:1580 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewFunction(name, yyDollar[2].token != nil, yyDollar[5].list, nil, yyDollar[8].list, "") @@ -3745,7 +3753,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-7 : yypt+1] - //line php5/php5.y:1595 + //line php5/php5.y:1605 { name := node.NewIdentifier(yyDollar[2].token.Value) switch n := yyDollar[1].node.(type) { @@ -3775,7 +3783,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1623 + //line php5/php5.y:1633 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewInterface(name, yyDollar[3].InterfaceExtends, yyDollar[5].list, "") @@ -3794,7 +3802,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1644 + //line php5/php5.y:1654 { yyVAL.node = stmt.NewClass(nil, nil, nil, nil, nil, nil, "") @@ -3808,7 +3816,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1656 + //line php5/php5.y:1666 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewClass(nil, []node.Node{classModifier}, nil, nil, nil, nil, "") @@ -3825,7 +3833,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1671 + //line php5/php5.y:1681 { yyVAL.node = stmt.NewTrait(nil, nil, "") @@ -3839,7 +3847,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1683 + //line php5/php5.y:1693 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewClass(nil, []node.Node{classModifier}, nil, nil, nil, nil, "") @@ -3856,7 +3864,7 @@ yydefault: } case 100: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1701 + //line php5/php5.y:1711 { yyVAL.ClassExtends = nil @@ -3864,7 +3872,7 @@ yydefault: } case 101: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1707 + //line php5/php5.y:1717 { yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) @@ -3878,13 +3886,13 @@ yydefault: } case 102: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1722 + //line php5/php5.y:1732 { yyVAL.token = yyDollar[1].token } case 103: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1729 + //line php5/php5.y:1739 { yyVAL.InterfaceExtends = nil @@ -3892,7 +3900,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1735 + //line php5/php5.y:1745 { yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) @@ -3906,7 +3914,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1750 + //line php5/php5.y:1760 { yyVAL.ClassImplements = nil @@ -3914,7 +3922,7 @@ yydefault: } case 106: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1756 + //line php5/php5.y:1766 { yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) @@ -3928,7 +3936,7 @@ yydefault: } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1771 + //line php5/php5.y:1781 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3936,7 +3944,7 @@ yydefault: } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1777 + //line php5/php5.y:1787 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3947,7 +3955,7 @@ yydefault: } case 109: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1789 + //line php5/php5.y:1799 { yyVAL.node = nil @@ -3955,7 +3963,7 @@ yydefault: } case 110: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1795 + //line php5/php5.y:1805 { yyVAL.node = yyDollar[2].node @@ -3966,7 +3974,7 @@ yydefault: } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1807 + //line php5/php5.y:1817 { yyVAL.node = yyDollar[1].node @@ -3974,7 +3982,7 @@ yydefault: } case 112: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1813 + //line php5/php5.y:1823 { yyVAL.node = expr.NewReference(yyDollar[2].node) @@ -3988,7 +3996,7 @@ yydefault: } case 113: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1825 + //line php5/php5.y:1835 { yyVAL.node = expr.NewList(yyDollar[3].list) @@ -4004,7 +4012,7 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1842 + //line php5/php5.y:1852 { yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) @@ -4015,7 +4023,7 @@ yydefault: } case 115: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1851 + //line php5/php5.y:1861 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) @@ -4034,7 +4042,7 @@ yydefault: } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1871 + //line php5/php5.y:1881 { yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node) @@ -4045,7 +4053,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1880 + //line php5/php5.y:1890 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList) @@ -4064,7 +4072,7 @@ yydefault: } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1901 + //line php5/php5.y:1911 { yyVAL.node = stmt.NewDeclare(nil, yyDollar[1].node, false) @@ -4075,7 +4083,7 @@ yydefault: } case 119: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1910 + //line php5/php5.y:1920 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewDeclare(nil, stmtList, true) @@ -4094,7 +4102,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1931 + //line php5/php5.y:1941 { name := node.NewIdentifier(yyDollar[1].token.Value) constant := stmt.NewConstant(name, yyDollar[3].node, "") @@ -4112,7 +4120,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1947 + //line php5/php5.y:1957 { name := node.NewIdentifier(yyDollar[3].token.Value) constant := stmt.NewConstant(name, yyDollar[5].node, "") @@ -4131,7 +4139,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1968 + //line php5/php5.y:1978 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4148,7 +4156,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1983 + //line php5/php5.y:1993 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4167,7 +4175,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2000 + //line php5/php5.y:2010 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -4186,7 +4194,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2017 + //line php5/php5.y:2027 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -4208,7 +4216,7 @@ yydefault: } case 126: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2041 + //line php5/php5.y:2051 { yyVAL.list = []node.Node{} @@ -4216,7 +4224,7 @@ yydefault: } case 127: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2047 + //line php5/php5.y:2057 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yyVAL.list = append(yyDollar[1].list, _case) @@ -4233,7 +4241,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2062 + //line php5/php5.y:2072 { _default := stmt.NewDefault(yyDollar[4].list) yyVAL.list = append(yyDollar[1].list, _default) @@ -4250,19 +4258,19 @@ yydefault: } case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2081 + //line php5/php5.y:2091 { yyVAL.token = yyDollar[1].token } case 130: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2085 + //line php5/php5.y:2095 { yyVAL.token = yyDollar[1].token } case 131: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2093 + //line php5/php5.y:2103 { yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) @@ -4273,7 +4281,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2102 + //line php5/php5.y:2112 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltWhile(nil, stmtList) @@ -4292,7 +4300,7 @@ yydefault: } case 133: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2124 + //line php5/php5.y:2134 { yyVAL.list = nil @@ -4300,7 +4308,7 @@ yydefault: } case 134: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2130 + //line php5/php5.y:2140 { _elseIf := stmt.NewElseIf(yyDollar[3].node, yyDollar[4].node) yyVAL.list = append(yyDollar[1].list, _elseIf) @@ -4317,7 +4325,7 @@ yydefault: } case 135: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2149 + //line php5/php5.y:2159 { yyVAL.list = nil @@ -4325,7 +4333,7 @@ yydefault: } case 136: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2155 + //line php5/php5.y:2165 { stmts := stmt.NewStmtList(yyDollar[5].list) _elseIf := stmt.NewAltElseIf(yyDollar[3].node, stmts) @@ -4345,7 +4353,7 @@ yydefault: } case 137: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2177 + //line php5/php5.y:2187 { yyVAL.node = nil @@ -4353,7 +4361,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2183 + //line php5/php5.y:2193 { yyVAL.node = stmt.NewElse(yyDollar[2].node) @@ -4367,7 +4375,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2199 + //line php5/php5.y:2209 { yyVAL.node = nil @@ -4375,7 +4383,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2205 + //line php5/php5.y:2215 { stmts := stmt.NewStmtList(yyDollar[3].list) yyVAL.node = stmt.NewAltElse(stmts) @@ -4392,7 +4400,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2224 + //line php5/php5.y:2234 { yyVAL.list = yyDollar[1].list @@ -4400,7 +4408,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2230 + //line php5/php5.y:2240 { yyVAL.list = nil @@ -4408,7 +4416,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2239 + //line php5/php5.y:2249 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4416,7 +4424,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2245 + //line php5/php5.y:2255 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4427,7 +4435,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2257 + //line php5/php5.y:2267 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4467,7 +4475,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:2295 + //line php5/php5.y:2305 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4508,7 +4516,7 @@ yydefault: } case 147: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2338 + //line php5/php5.y:2348 { yyVAL.node = nil @@ -4516,7 +4524,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2344 + //line php5/php5.y:2354 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4530,7 +4538,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2356 + //line php5/php5.y:2366 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4544,7 +4552,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2368 + //line php5/php5.y:2378 { yyVAL.node = yyDollar[1].node @@ -4552,7 +4560,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2378 + //line php5/php5.y:2388 { yyVAL.node = node.NewArgumentList(nil) @@ -4567,7 +4575,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2391 + //line php5/php5.y:2401 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -4582,7 +4590,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2404 + //line php5/php5.y:2414 { arg := node.NewArgument(yyDollar[2].node, false, false) yyVAL.node = node.NewArgumentList([]node.Node{arg}) @@ -4599,7 +4607,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2423 + //line php5/php5.y:2433 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4607,7 +4615,7 @@ yydefault: } case 155: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2429 + //line php5/php5.y:2439 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4618,7 +4626,7 @@ yydefault: } case 156: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2441 + //line php5/php5.y:2451 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) @@ -4632,7 +4640,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2453 + //line php5/php5.y:2463 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) @@ -4646,7 +4654,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2465 + //line php5/php5.y:2475 { yyVAL.node = node.NewArgument(yyDollar[2].node, false, true) @@ -4660,7 +4668,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2477 + //line php5/php5.y:2487 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4674,7 +4682,7 @@ yydefault: } case 160: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2492 + //line php5/php5.y:2502 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4685,7 +4693,7 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2501 + //line php5/php5.y:2511 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4693,7 +4701,7 @@ yydefault: } case 162: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2511 + //line php5/php5.y:2521 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -4710,7 +4718,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2526 + //line php5/php5.y:2536 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -4726,7 +4734,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2540 + //line php5/php5.y:2550 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -4745,7 +4753,7 @@ yydefault: } case 165: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2561 + //line php5/php5.y:2571 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4766,7 +4774,7 @@ yydefault: } case 166: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2580 + //line php5/php5.y:2590 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4788,7 +4796,7 @@ yydefault: } case 167: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2600 + //line php5/php5.y:2610 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4808,7 +4816,7 @@ yydefault: } case 168: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2618 + //line php5/php5.y:2628 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4829,7 +4837,7 @@ yydefault: } case 169: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2641 + //line php5/php5.y:2651 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4837,7 +4845,7 @@ yydefault: } case 170: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2647 + //line php5/php5.y:2657 { yyVAL.list = []node.Node{} @@ -4845,7 +4853,7 @@ yydefault: } case 171: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2657 + //line php5/php5.y:2667 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4862,7 +4870,7 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2672 + //line php5/php5.y:2682 { yyVAL.node = yyDollar[1].node @@ -4877,7 +4885,7 @@ yydefault: } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2685 + //line php5/php5.y:2695 { yyVAL.node = yyDollar[1].node @@ -4885,7 +4893,7 @@ yydefault: } case 174: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:2691 + //line php5/php5.y:2701 { 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, "") @@ -4911,7 +4919,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2718 + //line php5/php5.y:2728 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].node) @@ -4925,7 +4933,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2733 + //line php5/php5.y:2743 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4933,7 +4941,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2739 + //line php5/php5.y:2749 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4944,7 +4952,7 @@ yydefault: } case 178: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2751 + //line php5/php5.y:2761 { yyVAL.node = stmt.NewNop() @@ -4958,7 +4966,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2764 + //line php5/php5.y:2774 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -4972,7 +4980,7 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2779 + //line php5/php5.y:2789 { yyVAL.list = nil @@ -4980,7 +4988,7 @@ yydefault: } case 181: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2785 + //line php5/php5.y:2795 { yyVAL.list = yyDollar[1].list @@ -4988,7 +4996,7 @@ yydefault: } case 182: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2794 + //line php5/php5.y:2804 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4996,25 +5004,13 @@ yydefault: } case 183: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2800 + //line php5/php5.y:2810 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 184: - yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2809 - { - yyVAL.node = yyDollar[1].node - - // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) - - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) - } - case 185: yyDollar = yyS[yypt-2 : yypt+1] //line php5/php5.y:2819 { @@ -5024,11 +5020,23 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 185: + yyDollar = yyS[yypt-2 : yypt+1] + //line php5/php5.y:2829 + { + yyVAL.node = yyDollar[1].node + + // save comments + yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2832 + //line php5/php5.y:2842 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -5042,7 +5050,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2847 + //line php5/php5.y:2857 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5050,7 +5058,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2853 + //line php5/php5.y:2863 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5061,7 +5069,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2865 + //line php5/php5.y:2875 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -5077,7 +5085,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2879 + //line php5/php5.y:2889 { yyVAL.node = yyDollar[1].node @@ -5085,7 +5093,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2888 + //line php5/php5.y:2898 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -5102,7 +5110,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2906 + //line php5/php5.y:2916 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -5119,7 +5127,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2921 + //line php5/php5.y:2931 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -5133,7 +5141,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2936 + //line php5/php5.y:2946 { yyVAL.node = nil @@ -5141,7 +5149,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2942 + //line php5/php5.y:2952 { yyVAL.node = yyDollar[1].node @@ -5149,7 +5157,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2951 + //line php5/php5.y:2961 { yyVAL.node = stmt.NewNop() @@ -5164,7 +5172,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2964 + //line php5/php5.y:2974 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -5179,7 +5187,7 @@ yydefault: } case 198: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2980 + //line php5/php5.y:2990 { yyVAL.list = yyDollar[1].list @@ -5187,7 +5195,7 @@ yydefault: } case 199: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2986 + //line php5/php5.y:2996 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -5202,7 +5210,7 @@ yydefault: } case 200: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3002 + //line php5/php5.y:3012 { yyVAL.list = nil @@ -5210,7 +5218,7 @@ yydefault: } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3008 + //line php5/php5.y:3018 { yyVAL.list = yyDollar[1].list @@ -5218,7 +5226,7 @@ yydefault: } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3017 + //line php5/php5.y:3027 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5226,7 +5234,7 @@ yydefault: } case 203: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3023 + //line php5/php5.y:3033 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5234,7 +5242,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3032 + //line php5/php5.y:3042 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5248,7 +5256,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3044 + //line php5/php5.y:3054 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5262,7 +5270,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3056 + //line php5/php5.y:3066 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5276,7 +5284,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3068 + //line php5/php5.y:3078 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5290,7 +5298,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3080 + //line php5/php5.y:3090 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5304,7 +5312,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3092 + //line php5/php5.y:3102 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5318,7 +5326,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3107 + //line php5/php5.y:3117 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5332,14 +5340,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(property.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 211: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3126 + //line php5/php5.y:3136 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5353,7 +5361,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(property.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(property.GetMeta()) @@ -5361,7 +5369,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3146 + //line php5/php5.y:3156 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5374,14 +5382,14 @@ yydefault: property.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(property.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 213: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3164 + //line php5/php5.y:3174 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5394,7 +5402,7 @@ yydefault: property.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(property.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(property.GetMeta()) @@ -5402,7 +5410,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3186 + //line php5/php5.y:3196 { name := node.NewIdentifier(yyDollar[3].token.Value) constant := stmt.NewConstant(name, yyDollar[5].node, "") @@ -5425,7 +5433,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3207 + //line php5/php5.y:3217 { name := node.NewIdentifier(yyDollar[2].token.Value) constant := stmt.NewConstant(name, yyDollar[4].node, "") @@ -5445,7 +5453,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3228 + //line php5/php5.y:3238 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5456,7 +5464,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3237 + //line php5/php5.y:3247 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5464,7 +5472,7 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3247 + //line php5/php5.y:3257 { yyVAL.list = nil @@ -5472,7 +5480,7 @@ yydefault: } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3253 + //line php5/php5.y:3263 { yyVAL.list = yyDollar[1].list @@ -5480,7 +5488,7 @@ yydefault: } case 220: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3262 + //line php5/php5.y:3272 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5491,7 +5499,7 @@ yydefault: } case 221: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3271 + //line php5/php5.y:3281 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5499,7 +5507,7 @@ yydefault: } case 222: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3280 + //line php5/php5.y:3290 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -5507,7 +5515,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3286 + //line php5/php5.y:3296 { yyVAL.list = yyDollar[1].list @@ -5515,7 +5523,7 @@ yydefault: } case 224: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3295 + //line php5/php5.y:3305 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -5533,7 +5541,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3311 + //line php5/php5.y:3321 { fetch := expr.NewArrayDimFetch(nil, yyDollar[2].node) yyVAL.list = []node.Node{fetch} @@ -5551,7 +5559,7 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3330 + //line php5/php5.y:3340 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -5559,7 +5567,7 @@ yydefault: } case 227: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3336 + //line php5/php5.y:3346 { yyVAL.list = yyDollar[1].list @@ -5567,7 +5575,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3342 + //line php5/php5.y:3352 { yyVAL.list = yyDollar[1].list @@ -5575,7 +5583,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3351 + //line php5/php5.y:3361 { yyVAL.list = nil @@ -5583,7 +5591,7 @@ yydefault: } case 230: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3357 + //line php5/php5.y:3367 { yyVAL.list = yyDollar[1].list @@ -5591,7 +5599,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3366 + //line php5/php5.y:3376 { if yyDollar[3].node != nil { @@ -5609,7 +5617,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3385 + //line php5/php5.y:3395 { list := expr.NewList(yyDollar[3].list) yyVAL.node = assign.NewAssign(list, yyDollar[6].node) @@ -5628,7 +5636,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3402 + //line php5/php5.y:3412 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -5644,7 +5652,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3416 + //line php5/php5.y:3426 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) @@ -5661,7 +5669,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3431 + //line php5/php5.y:3441 { var _new *expr.New @@ -5691,7 +5699,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3459 + //line php5/php5.y:3469 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5705,7 +5713,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3471 + //line php5/php5.y:3481 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5721,7 +5729,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3485 + //line php5/php5.y:3495 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5737,7 +5745,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3499 + //line php5/php5.y:3509 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5753,7 +5761,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3513 + //line php5/php5.y:3523 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5769,7 +5777,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3527 + //line php5/php5.y:3537 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5785,7 +5793,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3541 + //line php5/php5.y:3551 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5801,7 +5809,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3555 + //line php5/php5.y:3565 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5817,7 +5825,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3569 + //line php5/php5.y:3579 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5833,7 +5841,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3583 + //line php5/php5.y:3593 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5849,7 +5857,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3597 + //line php5/php5.y:3607 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5865,7 +5873,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3611 + //line php5/php5.y:3621 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5881,7 +5889,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3625 + //line php5/php5.y:3635 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5897,7 +5905,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3639 + //line php5/php5.y:3649 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5913,7 +5921,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3653 + //line php5/php5.y:3663 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5927,7 +5935,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3665 + //line php5/php5.y:3675 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5943,7 +5951,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3679 + //line php5/php5.y:3689 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5957,7 +5965,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3691 + //line php5/php5.y:3701 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5973,7 +5981,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3705 + //line php5/php5.y:3715 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5989,7 +5997,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3719 + //line php5/php5.y:3729 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -6005,7 +6013,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3733 + //line php5/php5.y:3743 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -6021,7 +6029,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3747 + //line php5/php5.y:3757 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -6037,7 +6045,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3761 + //line php5/php5.y:3771 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -6053,7 +6061,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3775 + //line php5/php5.y:3785 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -6069,7 +6077,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3789 + //line php5/php5.y:3799 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -6085,7 +6093,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3803 + //line php5/php5.y:3813 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -6101,7 +6109,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3817 + //line php5/php5.y:3827 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -6117,7 +6125,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3831 + //line php5/php5.y:3841 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -6133,7 +6141,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3845 + //line php5/php5.y:3855 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -6149,7 +6157,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3859 + //line php5/php5.y:3869 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -6165,7 +6173,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3873 + //line php5/php5.y:3883 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -6181,7 +6189,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3887 + //line php5/php5.y:3897 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -6197,7 +6205,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3901 + //line php5/php5.y:3911 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -6213,7 +6221,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3915 + //line php5/php5.y:3925 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -6229,7 +6237,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3929 + //line php5/php5.y:3939 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -6243,7 +6251,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3941 + //line php5/php5.y:3951 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -6257,7 +6265,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3953 + //line php5/php5.y:3963 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -6271,7 +6279,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3965 + //line php5/php5.y:3975 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -6285,7 +6293,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3977 + //line php5/php5.y:3987 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6301,7 +6309,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3991 + //line php5/php5.y:4001 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6317,7 +6325,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4005 + //line php5/php5.y:4015 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -6333,7 +6341,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4019 + //line php5/php5.y:4029 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -6350,7 +6358,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4034 + //line php5/php5.y:4044 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -6366,7 +6374,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4048 + //line php5/php5.y:4058 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6382,7 +6390,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4062 + //line php5/php5.y:4072 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -6398,7 +6406,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4076 + //line php5/php5.y:4086 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6414,7 +6422,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4090 + //line php5/php5.y:4100 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -6430,7 +6438,7 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4104 + //line php5/php5.y:4114 { yyVAL.node = yyDollar[1].node @@ -6441,7 +6449,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4113 + //line php5/php5.y:4123 { yyVAL.node = yyDollar[1].node @@ -6449,7 +6457,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4119 + //line php5/php5.y:4129 { yyVAL.node = yyDollar[2].node @@ -6485,7 +6493,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:4153 + //line php5/php5.y:4163 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -6502,7 +6510,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4168 + //line php5/php5.y:4178 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -6519,7 +6527,7 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4183 + //line php5/php5.y:4193 { yyVAL.node = yyDollar[1].node @@ -6527,7 +6535,7 @@ yydefault: } case 289: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4189 + //line php5/php5.y:4199 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -6542,7 +6550,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4202 + //line php5/php5.y:4212 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -6557,7 +6565,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4215 + //line php5/php5.y:4225 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -6572,7 +6580,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4228 + //line php5/php5.y:4238 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -6587,7 +6595,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4241 + //line php5/php5.y:4251 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -6602,7 +6610,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4254 + //line php5/php5.y:4264 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -6617,7 +6625,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4267 + //line php5/php5.y:4277 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -6632,7 +6640,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4280 + //line php5/php5.y:4290 { var e *expr.Exit if yyDollar[2].node != nil { @@ -6661,7 +6669,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4307 + //line php5/php5.y:4317 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -6675,7 +6683,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4319 + //line php5/php5.y:4329 { yyVAL.node = yyDollar[1].node @@ -6683,7 +6691,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4325 + //line php5/php5.y:4335 { yyVAL.node = yyDollar[1].node @@ -6691,7 +6699,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4331 + //line php5/php5.y:4341 { yyVAL.node = yyDollar[1].node @@ -6699,7 +6707,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4337 + //line php5/php5.y:4347 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -6713,7 +6721,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4349 + //line php5/php5.y:4359 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -6727,7 +6735,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4361 + //line php5/php5.y:4371 { yyVAL.node = expr.NewYield(nil, nil) @@ -6741,7 +6749,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:4373 + //line php5/php5.y:4383 { yyVAL.node = expr.NewClosure(yyDollar[4].list, yyDollar[6].ClosureUse, nil, yyDollar[8].list, false, yyDollar[2].token != nil, "") @@ -6762,7 +6770,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] - //line php5/php5.y:4392 + //line php5/php5.y:4402 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].ClosureUse, nil, yyDollar[9].list, true, yyDollar[3].token != nil, "") @@ -6784,7 +6792,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4415 + //line php5/php5.y:4425 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6798,7 +6806,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4427 + //line php5/php5.y:4437 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6812,7 +6820,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4439 + //line php5/php5.y:4449 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6827,7 +6835,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4452 + //line php5/php5.y:4462 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6842,7 +6850,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4468 + //line php5/php5.y:4478 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6861,7 +6869,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4485 + //line php5/php5.y:4495 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6880,7 +6888,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4502 + //line php5/php5.y:4512 { str := scalar.NewString(yyDollar[1].token.Value) yyVAL.node = expr.NewArrayDimFetch(str, yyDollar[3].node) @@ -6900,7 +6908,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4520 + //line php5/php5.y:4530 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6919,7 +6927,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4540 + //line php5/php5.y:4550 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -6935,7 +6943,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4554 + //line php5/php5.y:4564 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -6950,13 +6958,13 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4570 + //line php5/php5.y:4580 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4577 + //line php5/php5.y:4587 { yyVAL.ClosureUse = nil @@ -6964,7 +6972,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4583 + //line php5/php5.y:4593 { yyVAL.ClosureUse = expr.NewClosureUse(yyDollar[3].list) @@ -6980,7 +6988,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4600 + //line php5/php5.y:4610 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6999,7 +7007,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4617 + //line php5/php5.y:4627 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7021,7 +7029,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4637 + //line php5/php5.y:4647 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7039,7 +7047,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4653 + //line php5/php5.y:4663 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[2].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -7060,7 +7068,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4675 + //line php5/php5.y:4685 { name := name.NewName(yyDollar[1].list) yyVAL.node = expr.NewFunctionCall(name, yyDollar[2].node.(*node.ArgumentList)) @@ -7076,7 +7084,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4689 + //line php5/php5.y:4699 { funcName := name.NewRelative(yyDollar[3].list) yyVAL.node = expr.NewFunctionCall(funcName, yyDollar[4].node.(*node.ArgumentList)) @@ -7093,7 +7101,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4704 + //line php5/php5.y:4714 { funcName := name.NewFullyQualified(yyDollar[2].list) yyVAL.node = expr.NewFunctionCall(funcName, yyDollar[3].node.(*node.ArgumentList)) @@ -7109,7 +7117,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4718 + //line php5/php5.y:4728 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7124,7 +7132,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4731 + //line php5/php5.y:4741 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7139,7 +7147,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4744 + //line php5/php5.y:4754 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7154,7 +7162,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4757 + //line php5/php5.y:4767 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7169,7 +7177,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4770 + //line php5/php5.y:4780 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -7181,7 +7189,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4783 + //line php5/php5.y:4793 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7195,7 +7203,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4795 + //line php5/php5.y:4805 { yyVAL.node = name.NewName(yyDollar[1].list) @@ -7209,7 +7217,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4807 + //line php5/php5.y:4817 { yyVAL.node = name.NewRelative(yyDollar[3].list) @@ -7224,7 +7232,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4820 + //line php5/php5.y:4830 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) @@ -7238,7 +7246,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4835 + //line php5/php5.y:4845 { yyVAL.node = name.NewName(yyDollar[1].list) @@ -7252,7 +7260,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4847 + //line php5/php5.y:4857 { yyVAL.node = name.NewRelative(yyDollar[3].list) @@ -7267,7 +7275,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4860 + //line php5/php5.y:4870 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) @@ -7281,7 +7289,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4875 + //line php5/php5.y:4885 { yyVAL.node = yyDollar[1].node @@ -7289,7 +7297,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4881 + //line php5/php5.y:4891 { yyVAL.node = yyDollar[1].node @@ -7297,7 +7305,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4890 + //line php5/php5.y:4900 { yyVAL.node = yyDollar[1].node @@ -7340,7 +7348,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4931 + //line php5/php5.y:4941 { yyVAL.node = yyDollar[1].node @@ -7348,7 +7356,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4941 + //line php5/php5.y:4951 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -7356,7 +7364,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4947 + //line php5/php5.y:4957 { yyVAL.list = []node.Node{} @@ -7364,7 +7372,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4957 + //line php5/php5.y:4967 { yyVAL.list = yyDollar[2].list @@ -7375,7 +7383,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4969 + //line php5/php5.y:4979 { yyVAL.node = nil @@ -7383,7 +7391,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4975 + //line php5/php5.y:4985 { yyVAL.node = expr.NewExit(nil) @@ -7400,7 +7408,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4990 + //line php5/php5.y:5000 { yyVAL.node = expr.NewExit(yyDollar[1].node) @@ -7419,7 +7427,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:5010 + //line php5/php5.y:5020 { yyVAL.list = []node.Node{} @@ -7427,7 +7435,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5016 + //line php5/php5.y:5026 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} @@ -7435,7 +7443,7 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5022 + //line php5/php5.y:5032 { yyVAL.list = yyDollar[1].list @@ -7443,7 +7451,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:5031 + //line php5/php5.y:5041 { yyVAL.node = nil @@ -7451,7 +7459,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5037 + //line php5/php5.y:5047 { yyVAL.node = yyDollar[1].node @@ -7459,7 +7467,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5046 + //line php5/php5.y:5056 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -7473,7 +7481,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5058 + //line php5/php5.y:5068 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -7487,7 +7495,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5070 + //line php5/php5.y:5080 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -7501,7 +7509,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5082 + //line php5/php5.y:5092 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7515,7 +7523,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5094 + //line php5/php5.y:5104 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7529,7 +7537,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5106 + //line php5/php5.y:5116 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7543,7 +7551,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5118 + //line php5/php5.y:5128 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7557,7 +7565,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5130 + //line php5/php5.y:5140 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7571,7 +7579,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5142 + //line php5/php5.y:5152 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7585,7 +7593,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5154 + //line php5/php5.y:5164 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7599,7 +7607,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5166 + //line php5/php5.y:5176 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -7615,7 +7623,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5180 + //line php5/php5.y:5190 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -7629,7 +7637,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5195 + //line php5/php5.y:5205 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7648,7 +7656,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5215 + //line php5/php5.y:5225 { yyVAL.node = yyDollar[1].node @@ -7656,7 +7664,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5224 + //line php5/php5.y:5234 { yyVAL.node = yyDollar[1].node @@ -7664,7 +7672,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5230 + //line php5/php5.y:5240 { yyVAL.node = yyDollar[1].node @@ -7672,7 +7680,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5236 + //line php5/php5.y:5246 { name := name.NewName(yyDollar[1].list) yyVAL.node = expr.NewConstFetch(name) @@ -7688,7 +7696,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5250 + //line php5/php5.y:5260 { name := name.NewRelative(yyDollar[3].list) yyVAL.node = expr.NewConstFetch(name) @@ -7705,7 +7713,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5265 + //line php5/php5.y:5275 { name := name.NewFullyQualified(yyDollar[2].list) yyVAL.node = expr.NewConstFetch(name) @@ -7721,7 +7729,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5279 + //line php5/php5.y:5289 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -7737,7 +7745,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5293 + //line php5/php5.y:5303 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -7752,7 +7760,7 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5306 + //line php5/php5.y:5316 { yyVAL.node = yyDollar[1].node @@ -7760,7 +7768,7 @@ yydefault: } case 375: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5312 + //line php5/php5.y:5322 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7774,7 +7782,7 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5324 + //line php5/php5.y:5334 { yyVAL.node = yyDollar[1].node @@ -7782,7 +7790,7 @@ yydefault: } case 377: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5333 + //line php5/php5.y:5343 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7801,7 +7809,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5350 + //line php5/php5.y:5360 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -7817,7 +7825,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5364 + //line php5/php5.y:5374 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -7833,7 +7841,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5378 + //line php5/php5.y:5388 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -7849,7 +7857,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5392 + //line php5/php5.y:5402 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -7865,7 +7873,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5406 + //line php5/php5.y:5416 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -7881,7 +7889,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5420 + //line php5/php5.y:5430 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -7897,7 +7905,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5434 + //line php5/php5.y:5444 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -7911,7 +7919,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5446 + //line php5/php5.y:5456 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -7925,7 +7933,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5458 + //line php5/php5.y:5468 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -7941,7 +7949,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5472 + //line php5/php5.y:5482 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -7957,7 +7965,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5486 + //line php5/php5.y:5496 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -7973,7 +7981,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5500 + //line php5/php5.y:5510 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -7989,7 +7997,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5514 + //line php5/php5.y:5524 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -8005,7 +8013,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5528 + //line php5/php5.y:5538 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -8021,7 +8029,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5542 + //line php5/php5.y:5552 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -8037,7 +8045,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5556 + //line php5/php5.y:5566 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -8053,7 +8061,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5570 + //line php5/php5.y:5580 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -8069,7 +8077,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5584 + //line php5/php5.y:5594 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -8085,7 +8093,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5598 + //line php5/php5.y:5608 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -8101,7 +8109,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5612 + //line php5/php5.y:5622 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -8117,7 +8125,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5626 + //line php5/php5.y:5636 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -8133,7 +8141,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5640 + //line php5/php5.y:5650 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -8149,7 +8157,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5654 + //line php5/php5.y:5664 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -8166,7 +8174,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5669 + //line php5/php5.y:5679 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -8182,7 +8190,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5683 + //line php5/php5.y:5693 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -8198,7 +8206,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5697 + //line php5/php5.y:5707 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -8214,7 +8222,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5711 + //line php5/php5.y:5721 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -8230,7 +8238,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5725 + //line php5/php5.y:5735 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -8247,7 +8255,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:5740 + //line php5/php5.y:5750 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -8264,7 +8272,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5755 + //line php5/php5.y:5765 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -8278,7 +8286,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5767 + //line php5/php5.y:5777 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -8292,7 +8300,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5779 + //line php5/php5.y:5789 { yyVAL.node = yyDollar[2].node @@ -8306,7 +8314,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5794 + //line php5/php5.y:5804 { yyVAL.node = yyDollar[1].node @@ -8314,7 +8322,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5800 + //line php5/php5.y:5810 { name := name.NewName(yyDollar[1].list) yyVAL.node = expr.NewConstFetch(name) @@ -8330,7 +8338,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5814 + //line php5/php5.y:5824 { name := name.NewRelative(yyDollar[3].list) yyVAL.node = expr.NewConstFetch(name) @@ -8345,7 +8353,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5827 + //line php5/php5.y:5837 { name := name.NewFullyQualified(yyDollar[2].list) yyVAL.node = expr.NewConstFetch(name) @@ -8361,7 +8369,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5844 + //line php5/php5.y:5854 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = expr.NewVariable(name) @@ -8378,7 +8386,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5859 + //line php5/php5.y:5869 { yyVAL.node = yyDollar[1].node @@ -8386,7 +8394,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5865 + //line php5/php5.y:5875 { yyVAL.node = yyDollar[1].node @@ -8394,7 +8402,7 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5871 + //line php5/php5.y:5881 { yyVAL.node = yyDollar[1].node @@ -8402,7 +8410,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5877 + //line php5/php5.y:5887 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -8416,7 +8424,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5889 + //line php5/php5.y:5899 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -8430,7 +8438,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5901 + //line php5/php5.y:5911 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -8444,7 +8452,7 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:5916 + //line php5/php5.y:5926 { yyVAL.list = nil @@ -8452,7 +8460,7 @@ yydefault: } case 422: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5922 + //line php5/php5.y:5932 { yyVAL.list = yyDollar[1].list @@ -8465,19 +8473,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:5936 + //line php5/php5.y:5946 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5940 + //line php5/php5.y:5950 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:5947 + //line php5/php5.y:5957 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8495,7 +8503,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5963 + //line php5/php5.y:5973 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8512,7 +8520,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5978 + //line php5/php5.y:5988 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) yyVAL.list = []node.Node{arrayItem} @@ -8529,7 +8537,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5993 + //line php5/php5.y:6003 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node) yyVAL.list = []node.Node{arrayItem} @@ -8543,7 +8551,7 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6008 + //line php5/php5.y:6018 { yyVAL.node = yyDollar[1].node @@ -8551,7 +8559,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6014 + //line php5/php5.y:6024 { yyVAL.node = yyDollar[1].node @@ -8559,7 +8567,7 @@ yydefault: } case 431: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6023 + //line php5/php5.y:6033 { yyVAL.node = yyDollar[2].node @@ -8573,7 +8581,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6035 + //line php5/php5.y:6045 { yyVAL.node = yyDollar[2].node @@ -8587,7 +8595,7 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6051 + //line php5/php5.y:6061 { yyVAL.node = yyDollar[1].node @@ -8595,7 +8603,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6061 + //line php5/php5.y:6071 { yyVAL.node = yyDollar[1].node @@ -8603,7 +8611,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6070 + //line php5/php5.y:6080 { yyVAL.node = yyDollar[1].node @@ -8611,7 +8619,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:6079 + //line php5/php5.y:6089 { yyVAL.node = yyDollar[1].node @@ -8671,7 +8679,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6137 + //line php5/php5.y:6147 { yyVAL.node = yyDollar[1].node @@ -8679,7 +8687,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6146 + //line php5/php5.y:6156 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -8687,7 +8695,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6152 + //line php5/php5.y:6162 { yyVAL.list = []node.Node{} @@ -8695,7 +8703,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6162 + //line php5/php5.y:6172 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*expr.MethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*expr.PropertyFetch).Property @@ -8711,7 +8719,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6179 + //line php5/php5.y:6189 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -8729,7 +8737,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6195 + //line php5/php5.y:6205 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = []node.Node{yyDollar[1].node, fetch} @@ -8747,7 +8755,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6214 + //line php5/php5.y:6224 { yyVAL.node = expr.NewMethodCall(nil, nil, yyDollar[1].node.(*node.ArgumentList)) @@ -8758,7 +8766,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6226 + //line php5/php5.y:6236 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -8766,7 +8774,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6232 + //line php5/php5.y:6242 { yyVAL.list = yyDollar[1].list @@ -8774,7 +8782,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6238 + //line php5/php5.y:6248 { yyVAL.list = nil @@ -8782,7 +8790,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6247 + //line php5/php5.y:6257 { yyVAL.node = yyDollar[1].node @@ -8790,7 +8798,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6253 + //line php5/php5.y:6263 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -8804,7 +8812,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6268 + //line php5/php5.y:6278 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -8820,7 +8828,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6282 + //line php5/php5.y:6292 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -8836,7 +8844,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6299 + //line php5/php5.y:6309 { yyVAL.node = yyDollar[1].node @@ -8844,7 +8852,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6308 + //line php5/php5.y:6318 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8863,7 +8871,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6325 + //line php5/php5.y:6335 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8882,7 +8890,7 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6345 + //line php5/php5.y:6355 { yyVAL.node = yyDollar[1].node @@ -8890,7 +8898,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6351 + //line php5/php5.y:6361 { yyVAL.node = yyDollar[1].node @@ -8898,7 +8906,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6357 + //line php5/php5.y:6367 { yyVAL.node = yyDollar[1].node @@ -8906,7 +8914,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6367 + //line php5/php5.y:6377 { yyVAL.node = yyDollar[1].node @@ -8914,7 +8922,7 @@ yydefault: } case 458: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6373 + //line php5/php5.y:6383 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -8928,7 +8936,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6385 + //line php5/php5.y:6395 { yyVAL.node = yyDollar[1].node @@ -8936,7 +8944,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6394 + //line php5/php5.y:6404 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8955,7 +8963,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6411 + //line php5/php5.y:6421 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8974,7 +8982,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6428 + //line php5/php5.y:6438 { yyVAL.node = yyDollar[1].node @@ -8982,7 +8990,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6438 + //line php5/php5.y:6448 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -8999,7 +9007,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6453 + //line php5/php5.y:6463 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -9018,7 +9026,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6473 + //line php5/php5.y:6483 { yyVAL.node = nil @@ -9026,7 +9034,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6479 + //line php5/php5.y:6489 { yyVAL.node = yyDollar[1].node @@ -9034,7 +9042,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6489 + //line php5/php5.y:6499 { yyVAL.list = yyDollar[1].list @@ -9042,7 +9050,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6495 + //line php5/php5.y:6505 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yyVAL.list = []node.Node{fetch} @@ -9054,7 +9062,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6508 + //line php5/php5.y:6518 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -9072,7 +9080,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6524 + //line php5/php5.y:6534 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -9090,7 +9098,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6540 + //line php5/php5.y:6550 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yyVAL.list = []node.Node{fetch} @@ -9102,7 +9110,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6553 + //line php5/php5.y:6563 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -9116,7 +9124,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6565 + //line php5/php5.y:6575 { yyVAL.node = yyDollar[2].node @@ -9133,7 +9141,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6583 + //line php5/php5.y:6593 { n := expr.NewVariable(nil) yyVAL.simpleIndirectReference = simpleIndirectReference{[]*expr.Variable{n}, n} @@ -9149,7 +9157,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6597 + //line php5/php5.y:6607 { n := expr.NewVariable(nil) @@ -9169,7 +9177,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6618 + //line php5/php5.y:6628 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil)} @@ -9184,7 +9192,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6631 + //line php5/php5.y:6641 { if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { yyVAL.list = []node.Node{} @@ -9196,7 +9204,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6645 + //line php5/php5.y:6655 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) @@ -9209,7 +9217,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6656 + //line php5/php5.y:6666 { item := expr.NewList(yyDollar[3].list) yyVAL.node = expr.NewArrayItem(nil, item) @@ -9227,7 +9235,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6672 + //line php5/php5.y:6682 { yyVAL.node = expr.NewArrayItem(nil, nil) @@ -9235,7 +9243,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6682 + //line php5/php5.y:6692 { yyVAL.list = []node.Node{} @@ -9243,7 +9251,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6688 + //line php5/php5.y:6698 { yyVAL.list = yyDollar[1].list @@ -9260,7 +9268,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:6706 + //line php5/php5.y:6716 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -9278,7 +9286,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6722 + //line php5/php5.y:6732 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -9295,7 +9303,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6737 + //line php5/php5.y:6747 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) yyVAL.list = []node.Node{arrayItem} @@ -9312,7 +9320,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6752 + //line php5/php5.y:6762 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node) yyVAL.list = []node.Node{arrayItem} @@ -9326,7 +9334,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:6764 + //line php5/php5.y:6774 { reference := expr.NewReference(yyDollar[6].node) arrayItem := expr.NewArrayItem(yyDollar[3].node, reference) @@ -9347,7 +9355,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6783 + //line php5/php5.y:6793 { reference := expr.NewReference(yyDollar[4].node) arrayItem := expr.NewArrayItem(nil, reference) @@ -9365,7 +9373,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6799 + //line php5/php5.y:6809 { reference := expr.NewReference(yyDollar[4].node) arrayItem := expr.NewArrayItem(yyDollar[1].node, reference) @@ -9385,7 +9393,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6817 + //line php5/php5.y:6827 { reference := expr.NewReference(yyDollar[2].node) arrayItem := expr.NewArrayItem(nil, reference) @@ -9402,7 +9410,7 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6835 + //line php5/php5.y:6845 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -9410,7 +9418,7 @@ yydefault: } case 492: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6841 + //line php5/php5.y:6851 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -9425,7 +9433,7 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6854 + //line php5/php5.y:6864 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -9433,7 +9441,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6860 + //line php5/php5.y:6870 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -9448,7 +9456,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6876 + //line php5/php5.y:6886 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -9465,7 +9473,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6891 + //line php5/php5.y:6901 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -9487,7 +9495,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6911 + //line php5/php5.y:6921 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -9509,7 +9517,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6931 + //line php5/php5.y:6941 { variable := expr.NewVariable(yyDollar[2].node) @@ -9527,7 +9535,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6947 + //line php5/php5.y:6957 { name := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(name) @@ -9548,7 +9556,7 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:6966 + //line php5/php5.y:6976 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -9572,7 +9580,7 @@ yydefault: } case 501: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6988 + //line php5/php5.y:6998 { yyVAL.node = yyDollar[2].node @@ -9585,7 +9593,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:7002 + //line php5/php5.y:7012 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -9599,7 +9607,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:7014 + //line php5/php5.y:7024 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -9615,7 +9623,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:7028 + //line php5/php5.y:7038 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -9632,7 +9640,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:7046 + //line php5/php5.y:7056 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -9648,7 +9656,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:7060 + //line php5/php5.y:7070 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -9664,7 +9672,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:7074 + //line php5/php5.y:7084 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -9680,7 +9688,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:7088 + //line php5/php5.y:7098 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -9694,7 +9702,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:7100 + //line php5/php5.y:7110 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -9708,7 +9716,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:7112 + //line php5/php5.y:7122 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -9724,7 +9732,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:7126 + //line php5/php5.y:7136 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -9738,7 +9746,7 @@ yydefault: } case 512: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:7138 + //line php5/php5.y:7148 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -9752,7 +9760,7 @@ yydefault: } case 513: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:7153 + //line php5/php5.y:7163 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -9760,7 +9768,7 @@ yydefault: } case 514: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:7159 + //line php5/php5.y:7169 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -9771,7 +9779,7 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:7171 + //line php5/php5.y:7181 { yyVAL.node = yyDollar[1].node @@ -9779,7 +9787,7 @@ yydefault: } case 516: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:7177 + //line php5/php5.y:7187 { yyVAL.node = yyDollar[1].node @@ -9787,7 +9795,7 @@ yydefault: } case 517: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:7186 + //line php5/php5.y:7196 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9806,7 +9814,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:7203 + //line php5/php5.y:7213 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9825,7 +9833,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:7223 + //line php5/php5.y:7233 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9844,7 +9852,7 @@ yydefault: } case 520: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:7243 + //line php5/php5.y:7253 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) diff --git a/php5/php5.y b/php5/php5.y index 6f2c7d7..80316ec 100644 --- a/php5/php5.y +++ b/php5/php5.y @@ -293,6 +293,11 @@ start: top_statement_list: top_statement_list top_statement { + if inlineHtmlNode, ok := $2.(*stmt.InlineHtml); ok && len($1) > 0 { + prevNode := lastNode($1) + yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + } + if $2 != nil { $$ = append($1, $2) } @@ -804,6 +809,11 @@ constant_declaration: inner_statement_list: inner_statement_list inner_statement { + if inlineHtmlNode, ok := $2.(*stmt.InlineHtml); ok && len($1) > 0 { + prevNode := lastNode($1) + yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + } + if $2 != nil { $$ = append($1, $2) } @@ -3117,7 +3127,7 @@ class_variable_declaration: // 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(property.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -3136,7 +3146,7 @@ class_variable_declaration: // 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(property.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $4.Meta.SetTokenName(meta.EqualToken).AppendTo(property.GetMeta()) @@ -3155,7 +3165,7 @@ class_variable_declaration: property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo(property.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -3173,7 +3183,7 @@ class_variable_declaration: property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo(property.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $2.Meta.SetTokenName(meta.EqualToken).AppendTo(property.GetMeta()) diff --git a/php7/parser.go b/php7/parser.go index fe46e28..6ffd6b4 100644 --- a/php7/parser.go +++ b/php7/parser.go @@ -2,6 +2,7 @@ package php7 import ( "io" + "strings" "github.com/z7zmey/php-parser/position" @@ -155,6 +156,73 @@ func (l *Parser) prependMetaToken(n node.Node, t *scanner.Token, tn meta.TokenNa n.GetMeta().Unshift(m) } +func (l *Parser) splitSemicolonTokenAndPhpCloseTag(htmlNode node.Node, prevNode node.Node) { + SemiColonTokenMeta := prevNode.GetMeta().Cut(meta.AndFilter( + meta.TokenNameFilter(meta.SemiColonToken), + meta.TypeFilter(meta.TokenType), + )) + + if len(*SemiColonTokenMeta) < 1 { + return + } + + metaTokenValue := (*SemiColonTokenMeta)[0].Value + + i := strings.Index(metaTokenValue, "?>") + + if i < 0 { + SemiColonTokenMeta.AppendTo(prevNode.GetMeta()) + } else { + if metaTokenValue[0] == ';' { + prevNode.GetMeta().Push(&meta.Data{ + Value: metaTokenValue[0:1], + Type: meta.TokenType, + Position: nil, + TokenName: meta.SemiColonToken, + }) + + htmlNode.GetMeta().Push(&meta.Data{ + Value: metaTokenValue[1:i], + Type: meta.WhiteSpaceType, + Position: nil, + TokenName: meta.NodeStart, + }) + + htmlNode.GetMeta().Push(&meta.Data{ + Value: metaTokenValue[i : i+2], + Type: meta.TokenType, + Position: nil, + TokenName: meta.NodeStart, + }) + + if len(metaTokenValue) > i+2 { + htmlNode.GetMeta().Push(&meta.Data{ + Value: metaTokenValue[i+2:], + Type: meta.WhiteSpaceType, + Position: nil, + TokenName: meta.NodeStart, + }) + } + } else { + htmlNode.GetMeta().Push(&meta.Data{ + Value: metaTokenValue[:2], + Type: meta.TokenType, + Position: nil, + TokenName: meta.NodeStart, + }) + + if len(metaTokenValue) > 2 { + htmlNode.GetMeta().Push(&meta.Data{ + Value: metaTokenValue[2:], + Type: meta.WhiteSpaceType, + Position: nil, + TokenName: meta.NodeStart, + }) + } + } + } +} + func (p *Parser) returnTokenToPool(yyDollar []yySymType, yyVAL *yySymType) { for i := 1; i < len(yyDollar); i++ { if yyDollar[i].token != nil { diff --git a/php7/php7.go b/php7/php7.go index 57b32e7..8826f2a 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:5653 +//line php7/php7.y:5663 //line yacctab:1 var yyExca = [...]int{ @@ -2589,6 +2587,11 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] //line php7/php7.y:345 { + if inlineHtmlNode, ok := yyDollar[2].node.(*stmt.InlineHtml); ok && len(yyDollar[1].list) > 0 { + prevNode := lastNode(yyDollar[1].list) + yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + } + if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } @@ -2597,7 +2600,7 @@ yydefault: } case 79: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:353 + //line php7/php7.y:358 { yyVAL.list = []node.Node{} @@ -2605,7 +2608,7 @@ yydefault: } case 80: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:362 + //line php7/php7.y:367 { namePart := name.NewNamePart(yyDollar[1].token.Value) yyVAL.list = []node.Node{namePart} @@ -2620,7 +2623,7 @@ yydefault: } case 81: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:375 + //line php7/php7.y:380 { namePart := name.NewNamePart(yyDollar[3].token.Value) yyVAL.list = append(yyDollar[1].list, namePart) @@ -2636,7 +2639,7 @@ yydefault: } case 82: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:392 + //line php7/php7.y:397 { yyVAL.node = name.NewName(yyDollar[1].list) @@ -2650,7 +2653,7 @@ yydefault: } case 83: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:404 + //line php7/php7.y:409 { yyVAL.node = name.NewRelative(yyDollar[3].list) @@ -2665,7 +2668,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:417 + //line php7/php7.y:422 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) @@ -2679,7 +2682,7 @@ yydefault: } case 85: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:432 + //line php7/php7.y:437 { // error yyVAL.node = nil @@ -2688,7 +2691,7 @@ yydefault: } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:439 + //line php7/php7.y:444 { yyVAL.node = yyDollar[1].node @@ -2696,7 +2699,7 @@ yydefault: } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:445 + //line php7/php7.y:450 { yyVAL.node = yyDollar[1].node @@ -2704,7 +2707,7 @@ yydefault: } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:451 + //line php7/php7.y:456 { yyVAL.node = yyDollar[1].node @@ -2712,7 +2715,7 @@ yydefault: } case 89: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:457 + //line php7/php7.y:462 { yyVAL.node = yyDollar[1].node @@ -2720,7 +2723,7 @@ yydefault: } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:463 + //line php7/php7.y:468 { yyVAL.node = yyDollar[1].node @@ -2728,7 +2731,7 @@ yydefault: } case 91: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:469 + //line php7/php7.y:474 { yyVAL.node = stmt.NewHaltCompiler() @@ -2748,7 +2751,7 @@ yydefault: } case 92: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:487 + //line php7/php7.y:492 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, nil) @@ -2766,7 +2769,7 @@ yydefault: } case 93: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:503 + //line php7/php7.y:508 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, yyDollar[4].list) @@ -2784,7 +2787,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:519 + //line php7/php7.y:524 { yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) @@ -2800,7 +2803,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:533 + //line php7/php7.y:538 { yyVAL.node = yyDollar[2].node @@ -2816,7 +2819,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:547 + //line php7/php7.y:552 { yyVAL.node = yyDollar[3].node.(*stmt.GroupUse).SetUseType(yyDollar[2].node) @@ -2832,7 +2835,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:561 + //line php7/php7.y:566 { yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) @@ -2848,7 +2851,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:575 + //line php7/php7.y:580 { yyVAL.node = stmt.NewUseList(yyDollar[2].node, yyDollar[3].list) @@ -2864,7 +2867,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:589 + //line php7/php7.y:594 { yyVAL.node = stmt.NewConstList(yyDollar[2].list) @@ -2880,7 +2883,7 @@ yydefault: } case 100: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:606 + //line php7/php7.y:611 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -2894,7 +2897,7 @@ yydefault: } case 101: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:618 + //line php7/php7.y:623 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -2908,7 +2911,7 @@ yydefault: } case 102: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:633 + //line php7/php7.y:638 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) @@ -2932,7 +2935,7 @@ yydefault: } case 103: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:655 + //line php7/php7.y:660 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -2957,7 +2960,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:681 + //line php7/php7.y:686 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) @@ -2981,7 +2984,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:703 + //line php7/php7.y:708 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -3008,19 +3011,19 @@ yydefault: } case 106: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:731 + //line php7/php7.y:736 { yyVAL.token = nil } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:735 + //line php7/php7.y:740 { yyVAL.token = yyDollar[1].token } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:742 + //line php7/php7.y:747 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3031,7 +3034,7 @@ yydefault: } case 109: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:751 + //line php7/php7.y:756 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3039,7 +3042,7 @@ yydefault: } case 110: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:760 + //line php7/php7.y:765 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3050,7 +3053,7 @@ yydefault: } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:769 + //line php7/php7.y:774 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3058,7 +3061,7 @@ yydefault: } case 112: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:778 + //line php7/php7.y:783 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3069,7 +3072,7 @@ yydefault: } case 113: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:787 + //line php7/php7.y:792 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3077,7 +3080,7 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:796 + //line php7/php7.y:801 { yyVAL.node = yyDollar[1].node @@ -3087,7 +3090,7 @@ yydefault: } case 115: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:804 + //line php7/php7.y:809 { yyVAL.node = yyDollar[2].node.(*stmt.Use).SetUseType(yyDollar[1].node) @@ -3097,7 +3100,7 @@ yydefault: } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:815 + //line php7/php7.y:820 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -3112,7 +3115,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:828 + //line php7/php7.y:833 { name := name.NewName(yyDollar[1].list) alias := node.NewIdentifier(yyDollar[3].token.Value) @@ -3133,7 +3136,7 @@ yydefault: } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:850 + //line php7/php7.y:855 { yyVAL.node = yyDollar[1].node @@ -3143,7 +3146,7 @@ yydefault: } case 119: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:858 + //line php7/php7.y:863 { yyVAL.node = yyDollar[2].node @@ -3156,7 +3159,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:872 + //line php7/php7.y:877 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3167,7 +3170,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:881 + //line php7/php7.y:886 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3175,8 +3178,13 @@ yydefault: } case 122: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:890 + //line php7/php7.y:895 { + if inlineHtmlNode, ok := yyDollar[2].node.(*stmt.InlineHtml); ok && len(yyDollar[1].list) > 0 { + prevNode := lastNode(yyDollar[1].list) + yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + } + if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } @@ -3185,7 +3193,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:898 + //line php7/php7.y:908 { yyVAL.list = []node.Node{} @@ -3193,7 +3201,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:907 + //line php7/php7.y:917 { // error yyVAL.node = nil @@ -3202,7 +3210,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:914 + //line php7/php7.y:924 { yyVAL.node = yyDollar[1].node @@ -3210,7 +3218,7 @@ yydefault: } case 126: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:920 + //line php7/php7.y:930 { yyVAL.node = yyDollar[1].node @@ -3218,7 +3226,7 @@ yydefault: } case 127: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:926 + //line php7/php7.y:936 { yyVAL.node = yyDollar[1].node @@ -3226,7 +3234,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:932 + //line php7/php7.y:942 { yyVAL.node = yyDollar[1].node @@ -3234,7 +3242,7 @@ yydefault: } case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:938 + //line php7/php7.y:948 { yyVAL.node = yyDollar[1].node @@ -3242,7 +3250,7 @@ yydefault: } case 130: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:944 + //line php7/php7.y:954 { yyVAL.node = stmt.NewHaltCompiler() @@ -3260,7 +3268,7 @@ yydefault: } case 131: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:962 + //line php7/php7.y:972 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -3275,7 +3283,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:975 + //line php7/php7.y:985 { yyVAL.node = yyDollar[1].node @@ -3283,7 +3291,7 @@ yydefault: } case 133: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:981 + //line php7/php7.y:991 { yyVAL.node = yyDollar[1].node @@ -3291,7 +3299,7 @@ yydefault: } case 134: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:987 + //line php7/php7.y:997 { switch n := yyDollar[5].node.(type) { case *stmt.While: @@ -3314,7 +3322,7 @@ yydefault: } case 135: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1008 + //line php7/php7.y:1018 { yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[5].node) @@ -3333,7 +3341,7 @@ yydefault: } case 136: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1025 + //line php7/php7.y:1035 { switch n := yyDollar[9].node.(type) { case *stmt.For: @@ -3362,7 +3370,7 @@ yydefault: } case 137: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1052 + //line php7/php7.y:1062 { switch n := yyDollar[5].node.(type) { case *stmt.Switch: @@ -3387,7 +3395,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1075 + //line php7/php7.y:1085 { yyVAL.node = stmt.NewBreak(yyDollar[2].node) @@ -3403,7 +3411,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1089 + //line php7/php7.y:1099 { yyVAL.node = stmt.NewContinue(yyDollar[2].node) @@ -3419,7 +3427,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1103 + //line php7/php7.y:1113 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) @@ -3435,7 +3443,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1117 + //line php7/php7.y:1127 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) @@ -3451,7 +3459,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1131 + //line php7/php7.y:1141 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) @@ -3467,7 +3475,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1145 + //line php7/php7.y:1155 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) @@ -3484,7 +3492,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1160 + //line php7/php7.y:1170 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) @@ -3498,7 +3506,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1172 + //line php7/php7.y:1182 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) @@ -3515,7 +3523,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1187 + //line php7/php7.y:1197 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) @@ -3537,7 +3545,7 @@ yydefault: } case 147: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1207 + //line php7/php7.y:1217 { switch n := yyDollar[7].node.(type) { case *stmt.Foreach: @@ -3563,7 +3571,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1231 + //line php7/php7.y:1241 { switch n := yyDollar[9].node.(type) { case *stmt.Foreach: @@ -3592,7 +3600,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1258 + //line php7/php7.y:1268 { yyVAL.node = yyDollar[5].node yyVAL.node.(*stmt.Declare).Consts = yyDollar[3].list @@ -3609,7 +3617,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1273 + //line php7/php7.y:1283 { yyVAL.node = stmt.NewNop() @@ -3624,7 +3632,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1286 + //line php7/php7.y:1296 { if yyDollar[6].node == nil { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3643,7 +3651,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1303 + //line php7/php7.y:1313 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) @@ -3659,7 +3667,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1317 + //line php7/php7.y:1327 { label := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewGoto(label) @@ -3678,7 +3686,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1334 + //line php7/php7.y:1344 { label := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewLabel(label) @@ -3695,7 +3703,7 @@ yydefault: } case 155: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1351 + //line php7/php7.y:1361 { yyVAL.list = []node.Node{} @@ -3703,7 +3711,7 @@ yydefault: } case 156: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1357 + //line php7/php7.y:1367 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[5].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -3728,7 +3736,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1382 + //line php7/php7.y:1392 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3736,7 +3744,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1388 + //line php7/php7.y:1398 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3747,7 +3755,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1400 + //line php7/php7.y:1410 { yyVAL.node = nil @@ -3755,7 +3763,7 @@ yydefault: } case 160: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1406 + //line php7/php7.y:1416 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) @@ -3771,7 +3779,7 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1423 + //line php7/php7.y:1433 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3779,7 +3787,7 @@ yydefault: } case 162: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1429 + //line php7/php7.y:1439 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3790,7 +3798,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1441 + //line php7/php7.y:1451 { yyVAL.node = yyDollar[1].node @@ -3798,7 +3806,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:1450 + //line php7/php7.y:1460 { 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) @@ -3822,31 +3830,31 @@ yydefault: } case 165: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1476 + //line php7/php7.y:1486 { yyVAL.token = nil } case 166: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1480 + //line php7/php7.y:1490 { yyVAL.token = yyDollar[1].token } case 167: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1487 + //line php7/php7.y:1497 { yyVAL.token = nil } case 168: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1491 + //line php7/php7.y:1501 { yyVAL.token = yyDollar[1].token } case 169: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1498 + //line php7/php7.y:1508 { 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) @@ -3867,7 +3875,7 @@ yydefault: } case 170: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:1517 + //line php7/php7.y:1527 { 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) @@ -3886,7 +3894,7 @@ yydefault: } case 171: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1537 + //line php7/php7.y:1547 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3894,7 +3902,7 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1543 + //line php7/php7.y:1553 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3902,7 +3910,7 @@ yydefault: } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1552 + //line php7/php7.y:1562 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3916,7 +3924,7 @@ yydefault: } case 174: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1564 + //line php7/php7.y:1574 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3930,7 +3938,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1579 + //line php7/php7.y:1589 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewTrait(name, yyDollar[5].list, yyDollar[3].str) @@ -3949,7 +3957,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1599 + //line php7/php7.y:1609 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewInterface(name, yyDollar[3].InterfaceExtends, yyDollar[6].list, yyDollar[4].str) @@ -3968,7 +3976,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1619 + //line php7/php7.y:1629 { yyVAL.ClassExtends = nil @@ -3976,7 +3984,7 @@ yydefault: } case 178: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1625 + //line php7/php7.y:1635 { yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) @@ -3990,7 +3998,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1640 + //line php7/php7.y:1650 { yyVAL.InterfaceExtends = nil @@ -3998,7 +4006,7 @@ yydefault: } case 180: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1646 + //line php7/php7.y:1656 { yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) @@ -4012,7 +4020,7 @@ yydefault: } case 181: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1661 + //line php7/php7.y:1671 { yyVAL.ClassImplements = nil @@ -4020,7 +4028,7 @@ yydefault: } case 182: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1667 + //line php7/php7.y:1677 { yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) @@ -4034,7 +4042,7 @@ yydefault: } case 183: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1682 + //line php7/php7.y:1692 { yyVAL.node = yyDollar[1].node @@ -4042,7 +4050,7 @@ yydefault: } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1688 + //line php7/php7.y:1698 { yyVAL.node = expr.NewReference(yyDollar[2].node) @@ -4056,7 +4064,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1700 + //line php7/php7.y:1710 { yyVAL.node = expr.NewList(yyDollar[3].list) @@ -4072,7 +4080,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1714 + //line php7/php7.y:1724 { yyVAL.node = expr.NewShortList(yyDollar[2].list) @@ -4087,7 +4095,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1730 + //line php7/php7.y:1740 { yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) @@ -4098,7 +4106,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1739 + //line php7/php7.y:1749 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) @@ -4117,7 +4125,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1759 + //line php7/php7.y:1769 { yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node) @@ -4128,7 +4136,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1768 + //line php7/php7.y:1778 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList) @@ -4147,7 +4155,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1788 + //line php7/php7.y:1798 { yyVAL.node = stmt.NewDeclare(nil, yyDollar[1].node, false) @@ -4158,7 +4166,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1797 + //line php7/php7.y:1807 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewDeclare(nil, stmtList, true) @@ -4177,7 +4185,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1817 + //line php7/php7.y:1827 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4194,7 +4202,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1832 + //line php7/php7.y:1842 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4213,7 +4221,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1849 + //line php7/php7.y:1859 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -4232,7 +4240,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1866 + //line php7/php7.y:1876 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -4254,7 +4262,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1889 + //line php7/php7.y:1899 { yyVAL.list = []node.Node{} @@ -4262,7 +4270,7 @@ yydefault: } case 198: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1895 + //line php7/php7.y:1905 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yyVAL.list = append(yyDollar[1].list, _case) @@ -4279,7 +4287,7 @@ yydefault: } case 199: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1910 + //line php7/php7.y:1920 { _default := stmt.NewDefault(yyDollar[4].list) yyVAL.list = append(yyDollar[1].list, _default) @@ -4296,19 +4304,19 @@ yydefault: } case 200: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1928 + //line php7/php7.y:1938 { yyVAL.token = yyDollar[1].token } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1932 + //line php7/php7.y:1942 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1939 + //line php7/php7.y:1949 { yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) @@ -4319,7 +4327,7 @@ yydefault: } case 203: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1948 + //line php7/php7.y:1958 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltWhile(nil, stmtList) @@ -4338,7 +4346,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1968 + //line php7/php7.y:1978 { yyVAL.node = stmt.NewIf(yyDollar[3].node, yyDollar[5].node, nil, nil) @@ -4354,7 +4362,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1982 + //line php7/php7.y:1992 { _elseIf := stmt.NewElseIf(yyDollar[4].node, yyDollar[6].node) yyVAL.node = yyDollar[1].node.(*stmt.If).AddElseIf(_elseIf) @@ -4372,7 +4380,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2001 + //line php7/php7.y:2011 { yyVAL.node = yyDollar[1].node @@ -4380,7 +4388,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2007 + //line php7/php7.y:2017 { _else := stmt.NewElse(yyDollar[3].node) yyVAL.node = yyDollar[1].node.(*stmt.If).SetElse(_else) @@ -4396,7 +4404,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2024 + //line php7/php7.y:2034 { stmts := stmt.NewStmtList(yyDollar[6].list) yyVAL.node = stmt.NewAltIf(yyDollar[3].node, stmts, nil, nil) @@ -4415,7 +4423,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:2041 + //line php7/php7.y:2051 { stmts := stmt.NewStmtList(yyDollar[7].list) _elseIf := stmt.NewAltElseIf(yyDollar[4].node, stmts) @@ -4435,7 +4443,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2062 + //line php7/php7.y:2072 { yyVAL.node = yyDollar[1].node @@ -4451,7 +4459,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2076 + //line php7/php7.y:2086 { stmts := stmt.NewStmtList(yyDollar[4].list) _else := stmt.NewAltElse(stmts) @@ -4473,7 +4481,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2099 + //line php7/php7.y:2109 { yyVAL.list = yyDollar[1].list @@ -4481,7 +4489,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2105 + //line php7/php7.y:2115 { yyVAL.list = nil @@ -4489,7 +4497,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2114 + //line php7/php7.y:2124 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4497,7 +4505,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2120 + //line php7/php7.y:2130 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4508,7 +4516,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2132 + //line php7/php7.y:2142 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4548,7 +4556,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2170 + //line php7/php7.y:2180 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4589,7 +4597,7 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2212 + //line php7/php7.y:2222 { yyVAL.node = nil @@ -4597,7 +4605,7 @@ yydefault: } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2218 + //line php7/php7.y:2228 { yyVAL.node = yyDollar[1].node @@ -4605,7 +4613,7 @@ yydefault: } case 220: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2227 + //line php7/php7.y:2237 { yyVAL.node = yyDollar[1].node @@ -4613,7 +4621,7 @@ yydefault: } case 221: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2233 + //line php7/php7.y:2243 { yyVAL.node = node.NewNullable(yyDollar[2].node) @@ -4627,7 +4635,7 @@ yydefault: } case 222: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2248 + //line php7/php7.y:2258 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4641,7 +4649,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2260 + //line php7/php7.y:2270 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4655,7 +4663,7 @@ yydefault: } case 224: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2272 + //line php7/php7.y:2282 { yyVAL.node = yyDollar[1].node @@ -4663,7 +4671,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2281 + //line php7/php7.y:2291 { yyVAL.node = nil @@ -4671,7 +4679,7 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2287 + //line php7/php7.y:2297 { yyVAL.node = yyDollar[2].node @@ -4682,7 +4690,7 @@ yydefault: } case 227: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2299 + //line php7/php7.y:2309 { yyVAL.node = node.NewArgumentList(nil) @@ -4697,7 +4705,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2312 + //line php7/php7.y:2322 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -4716,7 +4724,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2332 + //line php7/php7.y:2342 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4724,7 +4732,7 @@ yydefault: } case 230: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2338 + //line php7/php7.y:2348 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4735,7 +4743,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2350 + //line php7/php7.y:2360 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) @@ -4749,7 +4757,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2362 + //line php7/php7.y:2372 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4763,7 +4771,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2377 + //line php7/php7.y:2387 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4774,7 +4782,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2386 + //line php7/php7.y:2396 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4782,7 +4790,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2395 + //line php7/php7.y:2405 { yyVAL.node = yyDollar[1].node @@ -4790,7 +4798,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2404 + //line php7/php7.y:2414 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4801,7 +4809,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2413 + //line php7/php7.y:2423 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4809,7 +4817,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2422 + //line php7/php7.y:2432 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4828,7 +4836,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2439 + //line php7/php7.y:2449 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4848,7 +4856,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2460 + //line php7/php7.y:2470 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4856,7 +4864,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2466 + //line php7/php7.y:2476 { yyVAL.list = []node.Node{} @@ -4864,7 +4872,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2475 + //line php7/php7.y:2485 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4881,7 +4889,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2490 + //line php7/php7.y:2500 { yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) @@ -4897,7 +4905,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2506 + //line php7/php7.y:2516 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].node) @@ -4911,7 +4919,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-10 : yypt+1] - //line php7/php7.y:2518 + //line php7/php7.y:2528 { 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) @@ -4941,7 +4949,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2549 + //line php7/php7.y:2559 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4949,7 +4957,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2555 + //line php7/php7.y:2565 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4960,7 +4968,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2567 + //line php7/php7.y:2577 { yyVAL.node = stmt.NewNop() @@ -4974,7 +4982,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2580 + //line php7/php7.y:2590 { yyVAL.node = stmt.NewTraitAdaptationList(nil) @@ -4988,7 +4996,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2592 + //line php7/php7.y:2602 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -5002,7 +5010,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2607 + //line php7/php7.y:2617 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5010,25 +5018,13 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2613 + //line php7/php7.y:2623 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 253: - yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2622 - { - yyVAL.node = yyDollar[1].node - - // save comments - yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) - - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) - } - case 254: yyDollar = yyS[yypt-2 : yypt+1] //line php7/php7.y:2632 { @@ -5038,11 +5034,23 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 254: + yyDollar = yyS[yypt-2 : yypt+1] + //line php7/php7.y:2642 + { + yyVAL.node = yyDollar[1].node + + // save comments + yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2645 + //line php7/php7.y:2655 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -5058,7 +5066,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2662 + //line php7/php7.y:2672 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -5077,7 +5085,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2679 + //line php7/php7.y:2689 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -5096,7 +5104,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2696 + //line php7/php7.y:2706 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -5115,7 +5123,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2713 + //line php7/php7.y:2723 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -5131,7 +5139,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2730 + //line php7/php7.y:2740 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -5147,7 +5155,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2744 + //line php7/php7.y:2754 { yyVAL.node = yyDollar[1].node @@ -5155,7 +5163,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2753 + //line php7/php7.y:2763 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -5174,7 +5182,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2773 + //line php7/php7.y:2783 { yyVAL.node = stmt.NewNop() @@ -5189,7 +5197,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2786 + //line php7/php7.y:2796 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -5204,7 +5212,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2802 + //line php7/php7.y:2812 { yyVAL.list = yyDollar[1].list @@ -5212,7 +5220,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2808 + //line php7/php7.y:2818 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -5227,7 +5235,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2824 + //line php7/php7.y:2834 { yyVAL.list = nil @@ -5235,7 +5243,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2830 + //line php7/php7.y:2840 { yyVAL.list = yyDollar[1].list @@ -5243,7 +5251,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2839 + //line php7/php7.y:2849 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5251,7 +5259,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2845 + //line php7/php7.y:2855 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5259,7 +5267,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2854 + //line php7/php7.y:2864 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5273,7 +5281,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2866 + //line php7/php7.y:2876 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5287,7 +5295,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2878 + //line php7/php7.y:2888 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5301,7 +5309,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2890 + //line php7/php7.y:2900 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5315,7 +5323,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2902 + //line php7/php7.y:2912 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5329,7 +5337,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2914 + //line php7/php7.y:2924 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5343,7 +5351,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2929 + //line php7/php7.y:2939 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5354,7 +5362,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2938 + //line php7/php7.y:2948 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5362,7 +5370,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2947 + //line php7/php7.y:2957 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5381,7 +5389,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2964 + //line php7/php7.y:2974 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5401,7 +5409,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2985 + //line php7/php7.y:2995 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5412,7 +5420,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2994 + //line php7/php7.y:3004 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5420,7 +5428,7 @@ yydefault: } case 283: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3003 + //line php7/php7.y:3013 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -5437,7 +5445,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3021 + //line php7/php7.y:3031 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -5454,7 +5462,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3039 + //line php7/php7.y:3049 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5465,7 +5473,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3048 + //line php7/php7.y:3058 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5473,7 +5481,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3057 + //line php7/php7.y:3067 { yyVAL.node = yyDollar[1].node @@ -5481,7 +5489,7 @@ yydefault: } case 288: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3066 + //line php7/php7.y:3076 { yyVAL.list = nil @@ -5489,7 +5497,7 @@ yydefault: } case 289: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3072 + //line php7/php7.y:3082 { yyVAL.list = yyDollar[1].list @@ -5497,7 +5505,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3081 + //line php7/php7.y:3091 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5508,7 +5516,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3090 + //line php7/php7.y:3100 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5516,7 +5524,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:3099 + //line php7/php7.y:3109 { 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) @@ -5536,7 +5544,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3120 + //line php7/php7.y:3130 { if yyDollar[3].node != nil { yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].node.(*node.ArgumentList)) @@ -5553,7 +5561,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3135 + //line php7/php7.y:3145 { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) @@ -5567,7 +5575,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:3150 + //line php7/php7.y:3160 { list := expr.NewList(yyDollar[3].list) yyVAL.node = assign.NewAssign(list, yyDollar[6].node) @@ -5586,7 +5594,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3167 + //line php7/php7.y:3177 { shortList := expr.NewShortList(yyDollar[2].list) yyVAL.node = assign.NewAssign(shortList, yyDollar[5].node) @@ -5604,7 +5612,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3183 + //line php7/php7.y:3193 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -5620,7 +5628,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3197 + //line php7/php7.y:3207 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) @@ -5637,7 +5645,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3212 + //line php7/php7.y:3222 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5651,7 +5659,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3224 + //line php7/php7.y:3234 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5667,7 +5675,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3238 + //line php7/php7.y:3248 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5683,7 +5691,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3252 + //line php7/php7.y:3262 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5699,7 +5707,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3266 + //line php7/php7.y:3276 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5715,7 +5723,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3280 + //line php7/php7.y:3290 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5731,7 +5739,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3294 + //line php7/php7.y:3304 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5747,7 +5755,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3308 + //line php7/php7.y:3318 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5763,7 +5771,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3322 + //line php7/php7.y:3332 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5779,7 +5787,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3336 + //line php7/php7.y:3346 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5795,7 +5803,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3350 + //line php7/php7.y:3360 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5811,7 +5819,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3364 + //line php7/php7.y:3374 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5827,7 +5835,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3378 + //line php7/php7.y:3388 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5843,7 +5851,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3392 + //line php7/php7.y:3402 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5859,7 +5867,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3406 + //line php7/php7.y:3416 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5873,7 +5881,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3418 + //line php7/php7.y:3428 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5889,7 +5897,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3432 + //line php7/php7.y:3442 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5903,7 +5911,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3444 + //line php7/php7.y:3454 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5919,7 +5927,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3458 + //line php7/php7.y:3468 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5935,7 +5943,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3472 + //line php7/php7.y:3482 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -5951,7 +5959,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3486 + //line php7/php7.y:3496 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -5967,7 +5975,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3500 + //line php7/php7.y:3510 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -5983,7 +5991,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3514 + //line php7/php7.y:3524 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5999,7 +6007,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3528 + //line php7/php7.y:3538 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -6015,7 +6023,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3542 + //line php7/php7.y:3552 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -6031,7 +6039,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3556 + //line php7/php7.y:3566 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -6047,7 +6055,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3570 + //line php7/php7.y:3580 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -6063,7 +6071,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3584 + //line php7/php7.y:3594 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -6079,7 +6087,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3598 + //line php7/php7.y:3608 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -6095,7 +6103,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3612 + //line php7/php7.y:3622 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -6111,7 +6119,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3626 + //line php7/php7.y:3636 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -6127,7 +6135,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3640 + //line php7/php7.y:3650 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -6143,7 +6151,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3654 + //line php7/php7.y:3664 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -6159,7 +6167,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3668 + //line php7/php7.y:3678 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -6175,7 +6183,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3682 + //line php7/php7.y:3692 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -6189,7 +6197,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3694 + //line php7/php7.y:3704 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -6203,7 +6211,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3706 + //line php7/php7.y:3716 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -6217,7 +6225,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3718 + //line php7/php7.y:3728 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -6231,7 +6239,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3730 + //line php7/php7.y:3740 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6247,7 +6255,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3744 + //line php7/php7.y:3754 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6263,7 +6271,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3758 + //line php7/php7.y:3768 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -6279,7 +6287,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3772 + //line php7/php7.y:3782 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -6296,7 +6304,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3787 + //line php7/php7.y:3797 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -6312,7 +6320,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3801 + //line php7/php7.y:3811 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6328,7 +6336,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3815 + //line php7/php7.y:3825 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -6344,7 +6352,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3829 + //line php7/php7.y:3839 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6360,7 +6368,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3843 + //line php7/php7.y:3853 { yyVAL.node = binary.NewSpaceship(yyDollar[1].node, yyDollar[3].node) @@ -6376,7 +6384,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3857 + //line php7/php7.y:3867 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -6392,7 +6400,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3871 + //line php7/php7.y:3881 { yyVAL.node = yyDollar[2].node @@ -6406,7 +6414,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3883 + //line php7/php7.y:3893 { yyVAL.node = yyDollar[1].node @@ -6414,7 +6422,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3889 + //line php7/php7.y:3899 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -6431,7 +6439,7 @@ yydefault: } case 350: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3904 + //line php7/php7.y:3914 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -6448,7 +6456,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3919 + //line php7/php7.y:3929 { yyVAL.node = binary.NewCoalesce(yyDollar[1].node, yyDollar[3].node) @@ -6464,7 +6472,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3933 + //line php7/php7.y:3943 { yyVAL.node = yyDollar[1].node @@ -6472,7 +6480,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3939 + //line php7/php7.y:3949 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -6487,7 +6495,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3952 + //line php7/php7.y:3962 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -6502,7 +6510,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3965 + //line php7/php7.y:3975 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -6517,7 +6525,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3978 + //line php7/php7.y:3988 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -6532,7 +6540,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3991 + //line php7/php7.y:4001 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -6547,7 +6555,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4004 + //line php7/php7.y:4014 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -6562,7 +6570,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4017 + //line php7/php7.y:4027 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -6577,7 +6585,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4030 + //line php7/php7.y:4040 { var e *expr.Exit if yyDollar[2].node != nil { @@ -6606,7 +6614,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4057 + //line php7/php7.y:4067 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -6620,7 +6628,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4069 + //line php7/php7.y:4079 { yyVAL.node = yyDollar[1].node @@ -6628,7 +6636,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4075 + //line php7/php7.y:4085 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -6642,7 +6650,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4087 + //line php7/php7.y:4097 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -6656,7 +6664,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4099 + //line php7/php7.y:4109 { yyVAL.node = expr.NewYield(nil, nil) @@ -6670,7 +6678,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4111 + //line php7/php7.y:4121 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6684,7 +6692,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4123 + //line php7/php7.y:4133 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6699,7 +6707,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4136 + //line php7/php7.y:4146 { yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) @@ -6713,7 +6721,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:4148 + //line php7/php7.y:4158 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].token != nil, yyDollar[3].str) @@ -6734,7 +6742,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-12 : yypt+1] - //line php7/php7.y:4167 + //line php7/php7.y:4177 { yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].ClosureUse, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].token != nil, yyDollar[4].str) @@ -6756,7 +6764,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4190 + //line php7/php7.y:4200 { yyVAL.str = yylex.(*Parser).PhpDocComment yylex.(*Parser).PhpDocComment = "" @@ -6765,19 +6773,19 @@ yydefault: } case 372: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4200 + //line php7/php7.y:4210 { yyVAL.token = nil } case 373: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4204 + //line php7/php7.y:4214 { yyVAL.token = yyDollar[1].token } case 374: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4211 + //line php7/php7.y:4221 { yyVAL.ClosureUse = nil @@ -6785,7 +6793,7 @@ yydefault: } case 375: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4217 + //line php7/php7.y:4227 { yyVAL.ClosureUse = expr.NewClosureUse(yyDollar[3].list) @@ -6801,7 +6809,7 @@ yydefault: } case 376: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4234 + //line php7/php7.y:4244 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6812,7 +6820,7 @@ yydefault: } case 377: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4243 + //line php7/php7.y:4253 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -6820,7 +6828,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4252 + //line php7/php7.y:4262 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -6837,7 +6845,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4267 + //line php7/php7.y:4277 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[2].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6857,7 +6865,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4288 + //line php7/php7.y:4298 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6871,7 +6879,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4300 + //line php7/php7.y:4310 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6886,7 +6894,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4313 + //line php7/php7.y:4323 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6901,7 +6909,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4326 + //line php7/php7.y:4336 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6913,7 +6921,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4339 + //line php7/php7.y:4349 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6927,7 +6935,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4351 + //line php7/php7.y:4361 { yyVAL.node = yyDollar[1].node @@ -6935,7 +6943,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4360 + //line php7/php7.y:4370 { yyVAL.node = yyDollar[1].node @@ -6943,7 +6951,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4366 + //line php7/php7.y:4376 { yyVAL.node = yyDollar[1].node @@ -6951,7 +6959,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4375 + //line php7/php7.y:4385 { yyVAL.node = nil @@ -6959,7 +6967,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4381 + //line php7/php7.y:4391 { yyVAL.node = expr.NewExit(yyDollar[2].node) @@ -6976,7 +6984,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4399 + //line php7/php7.y:4409 { yyVAL.list = []node.Node{} @@ -6984,7 +6992,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4405 + //line php7/php7.y:4415 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} @@ -6992,7 +7000,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4411 + //line php7/php7.y:4421 { yyVAL.list = yyDollar[1].list @@ -7000,7 +7008,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4420 + //line php7/php7.y:4430 { yyVAL.node = nil @@ -7008,7 +7016,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4426 + //line php7/php7.y:4436 { yyVAL.node = yyDollar[1].node @@ -7016,7 +7024,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4435 + //line php7/php7.y:4445 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -7032,7 +7040,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4449 + //line php7/php7.y:4459 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -7047,7 +7055,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4462 + //line php7/php7.y:4472 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -7061,7 +7069,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4477 + //line php7/php7.y:4487 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -7075,7 +7083,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4489 + //line php7/php7.y:4499 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -7089,7 +7097,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4501 + //line php7/php7.y:4511 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7103,7 +7111,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4513 + //line php7/php7.y:4523 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7117,7 +7125,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4525 + //line php7/php7.y:4535 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7131,7 +7139,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4537 + //line php7/php7.y:4547 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7145,7 +7153,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4549 + //line php7/php7.y:4559 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7159,7 +7167,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4561 + //line php7/php7.y:4571 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7173,7 +7181,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4573 + //line php7/php7.y:4583 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7187,7 +7195,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4585 + //line php7/php7.y:4595 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7201,7 +7209,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4597 + //line php7/php7.y:4607 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -7217,7 +7225,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4611 + //line php7/php7.y:4621 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -7231,7 +7239,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4623 + //line php7/php7.y:4633 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -7245,7 +7253,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4635 + //line php7/php7.y:4645 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -7259,7 +7267,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4647 + //line php7/php7.y:4657 { yyVAL.node = yyDollar[1].node @@ -7267,7 +7275,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4653 + //line php7/php7.y:4663 { yyVAL.node = yyDollar[1].node @@ -7275,7 +7283,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4662 + //line php7/php7.y:4672 { yyVAL.node = expr.NewConstFetch(yyDollar[1].node) @@ -7289,7 +7297,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4674 + //line php7/php7.y:4684 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7308,7 +7316,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4691 + //line php7/php7.y:4701 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7327,7 +7335,7 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4711 + //line php7/php7.y:4721 { yyVAL.node = yyDollar[1].node @@ -7335,7 +7343,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4717 + //line php7/php7.y:4727 { yyVAL.node = yyDollar[1].node @@ -7343,7 +7351,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:4726 + //line php7/php7.y:4736 { yyVAL.node = nil @@ -7351,7 +7359,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4732 + //line php7/php7.y:4742 { yyVAL.node = yyDollar[1].node @@ -7359,7 +7367,7 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4741 + //line php7/php7.y:4751 { yyVAL.node = yyDollar[1].node @@ -7367,7 +7375,7 @@ yydefault: } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4750 + //line php7/php7.y:4760 { yyVAL.node = yyDollar[1].node @@ -7375,7 +7383,7 @@ yydefault: } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4756 + //line php7/php7.y:4766 { yyVAL.node = yyDollar[2].node @@ -7389,7 +7397,7 @@ yydefault: } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4768 + //line php7/php7.y:4778 { yyVAL.node = yyDollar[1].node @@ -7397,7 +7405,7 @@ yydefault: } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4777 + //line php7/php7.y:4787 { yyVAL.node = yyDollar[1].node @@ -7405,7 +7413,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4783 + //line php7/php7.y:4793 { yyVAL.node = yyDollar[2].node @@ -7419,7 +7427,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4795 + //line php7/php7.y:4805 { yyVAL.node = yyDollar[1].node @@ -7427,7 +7435,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4804 + //line php7/php7.y:4814 { yyVAL.node = yyDollar[1].node @@ -7435,7 +7443,7 @@ yydefault: } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4810 + //line php7/php7.y:4820 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7454,7 +7462,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4827 + //line php7/php7.y:4837 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7473,7 +7481,7 @@ yydefault: } case 431: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4844 + //line php7/php7.y:4854 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7492,7 +7500,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4861 + //line php7/php7.y:4871 { yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7508,7 +7516,7 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4875 + //line php7/php7.y:4885 { yyVAL.node = yyDollar[1].node @@ -7516,7 +7524,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4884 + //line php7/php7.y:4894 { yyVAL.node = yyDollar[1].node @@ -7524,7 +7532,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4890 + //line php7/php7.y:4900 { yyVAL.node = yyDollar[1].node @@ -7532,7 +7540,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4896 + //line php7/php7.y:4906 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7548,7 +7556,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4913 + //line php7/php7.y:4923 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -7565,7 +7573,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4928 + //line php7/php7.y:4938 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -7584,7 +7592,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4945 + //line php7/php7.y:4955 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -7599,7 +7607,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4961 + //line php7/php7.y:4971 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7615,7 +7623,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4975 + //line php7/php7.y:4985 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7631,7 +7639,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4992 + //line php7/php7.y:5002 { yyVAL.node = yyDollar[1].node @@ -7639,7 +7647,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4998 + //line php7/php7.y:5008 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7658,7 +7666,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5015 + //line php7/php7.y:5025 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7677,7 +7685,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5032 + //line php7/php7.y:5042 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7693,7 +7701,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5046 + //line php7/php7.y:5056 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7709,7 +7717,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5060 + //line php7/php7.y:5070 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -7725,7 +7733,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5077 + //line php7/php7.y:5087 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7739,7 +7747,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5089 + //line php7/php7.y:5099 { yyVAL.node = yyDollar[2].node @@ -7753,7 +7761,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5101 + //line php7/php7.y:5111 { yyVAL.node = yyDollar[1].node @@ -7761,7 +7769,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5110 + //line php7/php7.y:5120 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7775,7 +7783,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5122 + //line php7/php7.y:5132 { yyVAL.node = yyDollar[2].node @@ -7789,7 +7797,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5134 + //line php7/php7.y:5144 { yyVAL.node = yyDollar[1].node @@ -7797,7 +7805,7 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5143 + //line php7/php7.y:5153 { yyVAL.list = yyDollar[1].list @@ -7805,7 +7813,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:5152 + //line php7/php7.y:5162 { yyVAL.node = expr.NewArrayItem(nil, nil) @@ -7813,7 +7821,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5158 + //line php7/php7.y:5168 { yyVAL.node = yyDollar[1].node @@ -7821,7 +7829,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5167 + //line php7/php7.y:5177 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil)} @@ -7836,7 +7844,7 @@ yydefault: } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5180 + //line php7/php7.y:5190 { if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { yyVAL.list = []node.Node{} @@ -7848,7 +7856,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5193 + //line php7/php7.y:5203 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) @@ -7864,7 +7872,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5207 + //line php7/php7.y:5217 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) @@ -7877,7 +7885,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5218 + //line php7/php7.y:5228 { reference := expr.NewReference(yyDollar[4].node) yyVAL.node = expr.NewArrayItem(yyDollar[1].node, reference) @@ -7896,7 +7904,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5235 + //line php7/php7.y:5245 { reference := expr.NewReference(yyDollar[2].node) yyVAL.node = expr.NewArrayItem(nil, reference) @@ -7912,7 +7920,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5249 + //line php7/php7.y:5259 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[5].list) @@ -7934,7 +7942,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5269 + //line php7/php7.y:5279 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[3].list) @@ -7953,7 +7961,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5289 + //line php7/php7.y:5299 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -7961,7 +7969,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5295 + //line php7/php7.y:5305 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -7976,7 +7984,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5308 + //line php7/php7.y:5318 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -7984,7 +7992,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5314 + //line php7/php7.y:5324 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -7999,7 +8007,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5330 + //line php7/php7.y:5340 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -8016,7 +8024,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5345 + //line php7/php7.y:5355 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -8038,7 +8046,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5365 + //line php7/php7.y:5375 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -8060,7 +8068,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5385 + //line php7/php7.y:5395 { variable := expr.NewVariable(yyDollar[2].node) @@ -8078,7 +8086,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5401 + //line php7/php7.y:5411 { name := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(name) @@ -8099,7 +8107,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:5420 + //line php7/php7.y:5430 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -8123,7 +8131,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5442 + //line php7/php7.y:5452 { yyVAL.node = yyDollar[2].node @@ -8136,7 +8144,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5456 + //line php7/php7.y:5466 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -8150,7 +8158,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5468 + //line php7/php7.y:5478 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -8169,7 +8177,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5485 + //line php7/php7.y:5495 { var lnumber *scalar.Lnumber // TODO: add option to handle 64 bit integer @@ -8197,7 +8205,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5511 + //line php7/php7.y:5521 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -8214,7 +8222,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:5529 + //line php7/php7.y:5539 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -8234,7 +8242,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5547 + //line php7/php7.y:5557 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -8250,7 +8258,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5561 + //line php7/php7.y:5571 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -8264,7 +8272,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5573 + //line php7/php7.y:5583 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -8278,7 +8286,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:5585 + //line php7/php7.y:5595 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -8294,7 +8302,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5599 + //line php7/php7.y:5609 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -8308,7 +8316,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:5611 + //line php7/php7.y:5621 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -8322,7 +8330,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5626 + //line php7/php7.y:5636 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -8330,7 +8338,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:5632 + //line php7/php7.y:5642 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -8341,7 +8349,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:5644 + //line php7/php7.y:5654 { yyVAL.node = yyDollar[1].node diff --git a/php7/php7.y b/php7/php7.y index f1ecbed..a87a408 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -343,6 +343,11 @@ identifier: top_statement_list: top_statement_list top_statement { + if inlineHtmlNode, ok := $2.(*stmt.InlineHtml); ok && len($1) > 0 { + prevNode := lastNode($1) + yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + } + if $2 != nil { $$ = append($1, $2) } @@ -888,6 +893,11 @@ const_list: inner_statement_list: inner_statement_list inner_statement { + if inlineHtmlNode, ok := $2.(*stmt.InlineHtml); ok && len($1) > 0 { + prevNode := lastNode($1) + yylex.(*Parser).splitSemicolonTokenAndPhpCloseTag(inlineHtmlNode, prevNode) + } + if $2 != nil { $$ = append($1, $2) } diff --git a/printer/printer.go b/printer/printer.go index e6d701f..e90a3b4 100644 --- a/printer/printer.go +++ b/printer/printer.go @@ -17,8 +17,16 @@ import ( "github.com/z7zmey/php-parser/node/scalar" ) +type printerState int + +const ( + PhpState printerState = iota + HtmlState +) + type Printer struct { w io.Writer + s printerState } // NewPrinter - Constructor for Printer @@ -28,7 +36,25 @@ func NewPrinter(w io.Writer) *Printer { } } +func (p *Printer) SetState(s printerState) { + p.s = s +} + func (p *Printer) Print(n node.Node) { + _, isRoot := n.(*node.Root) + _, isInlineHtml := n.(*stmt.InlineHtml) + _, isEcho := n.(*stmt.Echo) + if p.s == HtmlState && !isInlineHtml && !isRoot && !isEcho { + if len((*n.GetMeta())) == 0 { + io.WriteString(p.w, "") + } else { + if len((*nn.Value.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } } p.Print(nn.Value) @@ -1747,6 +1927,9 @@ func (p *Printer) printStmtAltFor(n node.Node) { p.printMeta(nn, meta.EndforToken) io.WriteString(p.w, "endfor") p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -1759,13 +1942,23 @@ func (p *Printer) printStmtAltForeach(n node.Node) { p.printMeta(nn, meta.OpenParenthesisToken) io.WriteString(p.w, "(") p.Print(nn.Expr) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.printMeta(nn, meta.AsToken) io.WriteString(p.w, "as") if nn.Key != nil { + if len((*nn.Key.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.Key) p.printMeta(nn, meta.DoubleArrowToken) io.WriteString(p.w, "=>") + } else { + if len((*nn.Variable.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } } p.Print(nn.Variable) @@ -1781,6 +1974,9 @@ func (p *Printer) printStmtAltForeach(n node.Node) { p.printMeta(nn, meta.EndforeachToken) io.WriteString(p.w, "endforeach") p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -1812,6 +2008,9 @@ func (p *Printer) printStmtAltIf(n node.Node) { p.printMeta(nn, meta.EndifToken) io.WriteString(p.w, "endif") p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -1836,6 +2035,9 @@ func (p *Printer) printStmtAltSwitch(n node.Node) { p.printMeta(nn, meta.EndswitchToken) io.WriteString(p.w, "endswitch") p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -1859,6 +2061,9 @@ func (p *Printer) printStmtAltWhile(n node.Node) { p.printMeta(nn, meta.EndwhileToken) io.WriteString(p.w, "endwhile") p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -1869,10 +2074,16 @@ func (p *Printer) printStmtBreak(n node.Node) { io.WriteString(p.w, "break") if nn.Expr != nil { + if len((*nn.Expr.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.Expr) } p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -1882,6 +2093,9 @@ func (p *Printer) printStmtCase(n node.Node) { p.printMeta(nn, meta.NodeStart) io.WriteString(p.w, "case") + if len((*nn.Cond.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.Cond) r := p.printMeta(nn, meta.CaseSeparatorToken) if !r { @@ -1920,14 +2134,30 @@ func (p *Printer) printStmtClassMethod(n node.Node) { p.printMeta(nn, meta.NodeStart) if nn.Modifiers != nil { - p.joinPrint("", nn.Modifiers) + for k, m := range nn.Modifiers { + if k > 0 && len(m.GetMeta().FindBy(meta.AndFilter(meta.TokenNameFilter(meta.NodeStart), meta.TypeFilter(meta.WhiteSpaceType)))) == 0 { + io.WriteString(p.w, " ") + } + p.Print(m) + } + + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } } p.printMeta(nn, meta.FunctionToken) io.WriteString(p.w, "function") if nn.ReturnsRef { + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.printMeta(nn, meta.AmpersandToken) io.WriteString(p.w, "&") + } else { + if len((*nn.MethodName.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } } p.Print(nn.MethodName) @@ -1953,12 +2183,24 @@ func (p *Printer) printStmtClass(n node.Node) { p.printMeta(nn, meta.NodeStart) if nn.Modifiers != nil { - p.joinPrint("", nn.Modifiers) + for k, m := range nn.Modifiers { + if k > 0 && len(m.GetMeta().FindBy(meta.AndFilter(meta.TokenNameFilter(meta.NodeStart), meta.TypeFilter(meta.WhiteSpaceType)))) == 0 { + io.WriteString(p.w, " ") + } + p.Print(m) + } + + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } } p.printMeta(nn, meta.ClassToken) io.WriteString(p.w, "class") if nn.ClassName != nil { + if len((*nn.ClassName.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.ClassName) } @@ -1973,15 +2215,27 @@ func (p *Printer) printStmtClass(n node.Node) { if nn.Extends != nil { p.printMeta(nn.Extends, meta.NodeStart) + if len((*nn.Extends.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.printMeta(nn.Extends, meta.ExtendsToken) io.WriteString(p.w, "extends") + if len((*nn.Extends.ClassName.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.Extends.ClassName) } if nn.Implements != nil { p.printMeta(nn.Implements, meta.NodeStart) + if len((*nn.Implements.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.printMeta(nn.Implements, meta.ImplementsToken) io.WriteString(p.w, "implements") + if len((*nn.Implements.InterfaceNames[0].GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.joinPrint(",", nn.Implements.InterfaceNames) } @@ -1999,14 +2253,29 @@ func (p *Printer) printStmtClassConstList(n node.Node) { p.printMeta(nn, meta.NodeStart) if nn.Modifiers != nil { - p.joinPrint("", nn.Modifiers) + for k, m := range nn.Modifiers { + if k > 0 && len(m.GetMeta().FindBy(meta.AndFilter(meta.TokenNameFilter(meta.NodeStart), meta.TypeFilter(meta.WhiteSpaceType)))) == 0 { + io.WriteString(p.w, " ") + } + p.Print(m) + } + + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } } p.printMeta(nn, meta.ConstToken) io.WriteString(p.w, "const") + if len((*nn.Consts[0].GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.joinPrint(",", nn.Consts) p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2017,9 +2286,15 @@ func (p *Printer) printStmtConstList(n node.Node) { io.WriteString(p.w, "const") + if len((*nn.Consts[0].GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.joinPrint(",", nn.Consts) p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2043,10 +2318,16 @@ func (p *Printer) printStmtContinue(n node.Node) { io.WriteString(p.w, "continue") if nn.Expr != nil { + if len((*nn.Expr.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.Expr) } p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2072,6 +2353,9 @@ func (p *Printer) printStmtDeclare(n node.Node) { p.printMeta(nn, meta.EnddeclareToken) io.WriteString(p.w, "enddeclare") p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } } else { p.Print(nn.Stmt) @@ -2103,6 +2387,12 @@ func (p *Printer) printStmtDo(n node.Node) { io.WriteString(p.w, "do") + if _, ok := nn.Stmt.(*stmt.StmtList); !ok { + if len((*nn.Stmt.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } + } + p.Print(nn.Stmt) p.printMeta(nn, meta.WhileToken) @@ -2113,16 +2403,38 @@ func (p *Printer) printStmtDo(n node.Node) { p.printMeta(nn, meta.CloseParenthesisToken) io.WriteString(p.w, ")") p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } func (p *Printer) printStmtEcho(n node.Node) { nn := n.(*stmt.Echo) + + if p.s == HtmlState { + if len((*n.GetMeta())) == 0 { + io.WriteString(p.w, "") + } else { + if len((*nn.Variable.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } } p.Print(nn.Variable) @@ -2234,8 +2565,15 @@ func (p *Printer) printStmtFunction(n node.Node) { io.WriteString(p.w, "function") if nn.ReturnsRef { + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.printMeta(nn, meta.AmpersandToken) io.WriteString(p.w, "&") + } else { + if len((*nn.FunctionName.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } } p.Print(nn.FunctionName) @@ -2268,6 +2606,9 @@ func (p *Printer) printStmtGlobal(n node.Node) { io.WriteString(p.w, "global") p.joinPrint(",", nn.Vars) p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2277,8 +2618,14 @@ func (p *Printer) printStmtGoto(n node.Node) { p.printMeta(nn, meta.NodeStart) io.WriteString(p.w, "goto") + if len((*nn.Label.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.Label) p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2290,9 +2637,15 @@ func (p *Printer) printStmtGroupUse(n node.Node) { io.WriteString(p.w, "use") if nn.UseType != nil { + if len((*nn.UseType.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.UseType) } + if len((*nn.Prefix.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.Prefix) p.printMeta(nn, meta.NsSeparatorToken) io.WriteString(p.w, "\\") @@ -2303,6 +2656,9 @@ func (p *Printer) printStmtGroupUse(n node.Node) { p.printMeta(nn, meta.CloseCurlyBracesToken) io.WriteString(p.w, "}") p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2316,7 +2672,10 @@ func (p *Printer) printStmtHaltCompiler(n node.Node) { io.WriteString(p.w, "(") p.printMeta(n, meta.CloseParenthesisToken) io.WriteString(p.w, ")") - p.printMeta(n, meta.SemiColonToken) + p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2349,6 +2708,11 @@ func (p *Printer) printStmtInlineHTML(n node.Node) { nn := n.(*stmt.InlineHtml) p.printMeta(nn, meta.NodeStart) + if p.s == PhpState && len(n.GetMeta().FindBy(meta.ValueFilter("?>"))) == 0 { + io.WriteString(p.w, "?>") + } + p.SetState(HtmlState) + io.WriteString(p.w, nn.Value) p.printMeta(nn, meta.NodeEnd) @@ -2360,14 +2724,22 @@ func (p *Printer) printStmtInterface(n node.Node) { io.WriteString(p.w, "interface") - if nn.InterfaceName != nil { - p.Print(nn.InterfaceName) + if len((*nn.InterfaceName.GetMeta())) == 0 { + io.WriteString(p.w, " ") } + p.Print(nn.InterfaceName) + if nn.Extends != nil { p.printMeta(nn.Extends, meta.NodeStart) + if len((*nn.Extends.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.printMeta(nn.Extends, meta.ExtendsToken) io.WriteString(p.w, "extends") + if len((*nn.Extends.InterfaceNames[0].GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.joinPrint(",", nn.Extends.InterfaceNames) } @@ -2397,6 +2769,9 @@ func (p *Printer) printStmtNamespace(n node.Node) { io.WriteString(p.w, "namespace") if nn.NamespaceName != nil { + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.NamespaceName) } @@ -2407,7 +2782,10 @@ func (p *Printer) printStmtNamespace(n node.Node) { p.printMeta(n, meta.CloseCurlyBracesToken) io.WriteString(p.w, "}") } else { - p.printMeta(n, meta.SemiColonToken) + p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } } p.printMeta(nn, meta.NodeEnd) @@ -2415,6 +2793,9 @@ func (p *Printer) printStmtNamespace(n node.Node) { func (p *Printer) printStmtNop(n node.Node) { p.printMeta(n, meta.NodeStart) + if len((*n.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(n, meta.NodeEnd) } @@ -2422,9 +2803,22 @@ func (p *Printer) printStmtPropertyList(n node.Node) { nn := n.(*stmt.PropertyList) p.printMeta(nn, meta.NodeStart) - p.joinPrint("", nn.Modifiers) + for k, m := range nn.Modifiers { + if k > 0 && len(m.GetMeta().FindBy(meta.AndFilter(meta.TokenNameFilter(meta.NodeStart), meta.TypeFilter(meta.WhiteSpaceType)))) == 0 { + io.WriteString(p.w, " ") + } + p.Print(m) + } + + if len((*nn.Properties[0].GetMeta())) == 0 { + io.WriteString(p.w, " ") + } + p.joinPrint(",", nn.Properties) - p.printMeta(n, meta.SemiColonToken) + p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2449,8 +2843,14 @@ func (p *Printer) printStmtReturn(n node.Node) { p.printMeta(nn, meta.NodeStart) io.WriteString(p.w, "return") + if len((*nn.Expr.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.Expr) p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2476,6 +2876,9 @@ func (p *Printer) printStmtStatic(n node.Node) { io.WriteString(p.w, "static") p.joinPrint(",", nn.Vars) p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2517,8 +2920,14 @@ func (p *Printer) printStmtThrow(n node.Node) { p.printMeta(nn, meta.NodeStart) io.WriteString(p.w, "throw") + if len((*nn.Expr.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.Expr) p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2555,17 +2964,29 @@ func (p *Printer) printStmtTraitUseAlias(n node.Node) { p.Print(nn.Ref) p.printMeta(nn, meta.AsToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } io.WriteString(p.w, "as") if nn.Modifier != nil { + if len((*nn.Modifier.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.Modifier) } if nn.Alias != nil { + if len((*nn.Alias.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.Alias) } p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2575,11 +2996,20 @@ func (p *Printer) printStmtTraitUsePrecedence(n node.Node) { p.printMeta(nn, meta.NodeStart) p.Print(nn.Ref) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.printMeta(nn, meta.InsteadofToken) io.WriteString(p.w, "insteadof") + if len((*nn.Insteadof[0].GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.joinPrint(",", nn.Insteadof) p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2589,6 +3019,9 @@ func (p *Printer) printStmtTraitUse(n node.Node) { p.printMeta(nn, meta.NodeStart) io.WriteString(p.w, "use") + if len((*nn.Traits[0].GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.joinPrint(",", nn.Traits) p.Print(nn.TraitAdaptationList) @@ -2601,6 +3034,9 @@ func (p *Printer) printStmtTrait(n node.Node) { p.printMeta(nn, meta.NodeStart) io.WriteString(p.w, "trait") + if len((*nn.TraitName.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.TraitName) p.printMeta(nn, meta.OpenCurlyBracesToken) @@ -2646,6 +3082,9 @@ func (p *Printer) printStmtUnset(n node.Node) { p.printMeta(nn, meta.CloseParenthesisToken) io.WriteString(p.w, ")") p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2657,11 +3096,20 @@ func (p *Printer) printStmtUseList(n node.Node) { io.WriteString(p.w, "use") if nn.UseType != nil { + if len((*nn.UseType.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.UseType) } + if len((*nn.Uses[0].GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.joinPrint(",", nn.Uses) p.printMeta(nn, meta.SemiColonToken) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, ";") + } p.printMeta(nn, meta.NodeEnd) } @@ -2672,13 +3120,22 @@ func (p *Printer) printStmtUse(n node.Node) { if nn.UseType != nil { p.Print(nn.UseType) + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } } p.Print(nn.Use) if nn.Alias != nil { + if len((*nn.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.printMeta(nn, meta.AsToken) io.WriteString(p.w, "as") + if len((*nn.Alias.GetMeta())) == 0 { + io.WriteString(p.w, " ") + } p.Print(nn.Alias) } diff --git a/printer/printer_parsed_php7_test.go b/printer/printer_parsed_php7_test.go index 84a3e72..0d8f38c 100644 --- a/printer/printer_parsed_php7_test.go +++ b/printer/printer_parsed_php7_test.go @@ -1491,6 +1491,7 @@ func TestParseAndPrintComplexString3(t *testing.T) { src := `HTML"}, &stmt.Expression{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "HTML"}, + &stmt.Expression{ Expr: &expr.Variable{ Meta: meta.Collection{ &meta.Data{ @@ -107,7 +110,7 @@ func TestPrinterPrintFileInlineHtml(t *testing.T) { }, }) - expected := `
HTML
HTML
HTML
>=$b` + expected := `$a>>=$b` actual := o.String() if expected != actual { @@ -1348,36 +781,15 @@ func TestPrinterPrintBinaryBitwiseAnd(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.BitwiseAnd{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.AmpersandToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a &$b` + expected := `$a&$b` actual := o.String() if expected != actual { @@ -1390,36 +802,15 @@ func TestPrinterPrintBinaryBitwiseOr(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.BitwiseOr{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.VerticalBarToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a |$b` + expected := `$a|$b` actual := o.String() if expected != actual { @@ -1432,36 +823,15 @@ func TestPrinterPrintBinaryBitwiseXor(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.BitwiseXor{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CaretToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a ^$b` + expected := `$a^$b` actual := o.String() if expected != actual { @@ -1474,36 +844,15 @@ func TestPrinterPrintBinaryBooleanAnd(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.BooleanAnd{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.BooleanAndToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a &&$b` + expected := `$a&&$b` actual := o.String() if expected != actual { @@ -1516,36 +865,15 @@ func TestPrinterPrintBinaryBooleanOr(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.BooleanOr{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.BooleanOrToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a ||$b` + expected := `$a||$b` actual := o.String() if expected != actual { @@ -1558,36 +886,15 @@ func TestPrinterPrintBinaryCoalesce(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.Coalesce{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CoalesceToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a ??$b` + expected := `$a??$b` actual := o.String() if expected != actual { @@ -1600,36 +907,15 @@ func TestPrinterPrintBinaryConcat(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.Concat{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.DotToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a .$b` + expected := `$a.$b` actual := o.String() if expected != actual { @@ -1642,36 +928,15 @@ func TestPrinterPrintBinaryDiv(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.Div{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SlashToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a /$b` + expected := `$a/$b` actual := o.String() if expected != actual { @@ -1684,36 +949,15 @@ func TestPrinterPrintBinaryEqual(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.Equal{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.IsEqualToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a ==$b` + expected := `$a==$b` actual := o.String() if expected != actual { @@ -1726,36 +970,15 @@ func TestPrinterPrintBinaryGreaterOrEqual(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.GreaterOrEqual{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.IsGreaterOrEqualToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a >=$b` + expected := `$a>=$b` actual := o.String() if expected != actual { @@ -1768,36 +991,15 @@ func TestPrinterPrintBinaryGreater(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.Greater{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.GreaterToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a >$b` + expected := `$a>$b` actual := o.String() if expected != actual { @@ -1810,36 +1012,15 @@ func TestPrinterPrintBinaryIdentical(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.Identical{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.IsIdenticalToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a ===$b` + expected := `$a===$b` actual := o.String() if expected != actual { @@ -1852,36 +1033,15 @@ func TestPrinterPrintBinaryLogicalAnd(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.LogicalAnd{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.LogicalAndToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a and$b` + expected := `$a and $b` actual := o.String() if expected != actual { @@ -1894,36 +1054,15 @@ func TestPrinterPrintBinaryLogicalOr(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.LogicalOr{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.LogicalOrToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a or$b` + expected := `$a or $b` actual := o.String() if expected != actual { @@ -1936,36 +1075,15 @@ func TestPrinterPrintBinaryLogicalXor(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.LogicalXor{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.LogicalXorToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a xor$b` + expected := `$a xor $b` actual := o.String() if expected != actual { @@ -1978,36 +1096,15 @@ func TestPrinterPrintBinaryMinus(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.Minus{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.MinusToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a -$b` + expected := `$a-$b` actual := o.String() if expected != actual { @@ -2020,36 +1117,15 @@ func TestPrinterPrintBinaryMod(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.Mod{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.PercentToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a %$b` + expected := `$a%$b` actual := o.String() if expected != actual { @@ -2062,36 +1138,15 @@ func TestPrinterPrintBinaryMul(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.Mul{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.AsteriskToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a *$b` + expected := `$a*$b` actual := o.String() if expected != actual { @@ -2104,41 +1159,15 @@ func TestPrinterPrintBinaryNotEqual(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.NotEqual{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.IsNotEqualToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "!=", - TokenName: meta.IsNotEqualToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a !=$b` + expected := `$a!=$b` actual := o.String() if expected != actual { @@ -2151,36 +1180,15 @@ func TestPrinterPrintBinaryNotIdentical(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.NotIdentical{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.IsNotIdenticalToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a !==$b` + expected := `$a!==$b` actual := o.String() if expected != actual { @@ -2193,36 +1201,15 @@ func TestPrinterPrintBinaryPlus(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.Plus{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.PlusToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a +$b` + expected := `$a+$b` actual := o.String() if expected != actual { @@ -2235,36 +1222,15 @@ func TestPrinterPrintBinaryPow(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.Pow{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.PowToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a **$b` + expected := `$a**$b` actual := o.String() if expected != actual { @@ -2277,36 +1243,15 @@ func TestPrinterPrintBinaryShiftLeft(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.ShiftLeft{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SlToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a <<$b` + expected := `$a<<$b` actual := o.String() if expected != actual { @@ -2319,36 +1264,15 @@ func TestPrinterPrintBinaryShiftRight(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.ShiftRight{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SrToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a >>$b` + expected := `$a>>$b` actual := o.String() if expected != actual { @@ -2361,36 +1285,15 @@ func TestPrinterPrintBinarySmallerOrEqual(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.SmallerOrEqual{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.IsSmallerOrEqualToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a <=$b` + expected := `$a<=$b` actual := o.String() if expected != actual { @@ -2403,36 +1306,15 @@ func TestPrinterPrintBinarySmaller(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.Smaller{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.LessToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a <$b` + expected := `$a<$b` actual := o.String() if expected != actual { @@ -2445,36 +1327,15 @@ func TestPrinterPrintBinarySpaceship(t *testing.T) { p := printer.NewPrinter(o) p.Print(&binary.Spaceship{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SpaceshipToken, - }, - }, Left: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Right: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a <=>$b` + expected := `$a<=>$b` actual := o.String() if expected != actual { @@ -2489,31 +1350,12 @@ func TestPrinterPrintArray(t *testing.T) { p := printer.NewPrinter(o) p.Print(&cast.Array{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "(array)", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` (array)$var` + expected := `(array)$var` actual := o.String() if expected != actual { @@ -2526,31 +1368,12 @@ func TestPrinterPrintBool(t *testing.T) { p := printer.NewPrinter(o) p.Print(&cast.Bool{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "(bool)", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` (bool)$var` + expected := `(boolean)$var` actual := o.String() if expected != actual { @@ -2563,31 +1386,12 @@ func TestPrinterPrintDouble(t *testing.T) { p := printer.NewPrinter(o) p.Print(&cast.Double{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "(float)", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` (float)$var` + expected := `(float)$var` actual := o.String() if expected != actual { @@ -2600,31 +1404,12 @@ func TestPrinterPrintInt(t *testing.T) { p := printer.NewPrinter(o) p.Print(&cast.Int{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "(int)", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` (int)$var` + expected := `(integer)$var` actual := o.String() if expected != actual { @@ -2637,31 +1422,12 @@ func TestPrinterPrintObject(t *testing.T) { p := printer.NewPrinter(o) p.Print(&cast.Object{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "(object)", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` (object)$var` + expected := `(object)$var` actual := o.String() if expected != actual { @@ -2674,31 +1440,12 @@ func TestPrinterPrintString(t *testing.T) { p := printer.NewPrinter(o) p.Print(&cast.String{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "(string)", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` (string)$var` + expected := `(string)$var` actual := o.String() if expected != actual { @@ -2711,31 +1458,12 @@ func TestPrinterPrintUnset(t *testing.T) { p := printer.NewPrinter(o) p.Print(&cast.Unset{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "(unset)", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` (unset)$var` + expected := `(unset)$var` actual := o.String() if expected != actual { @@ -2750,42 +1478,13 @@ func TestPrinterPrintExprArrayDimFetch(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.ArrayDimFetch{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenSquareBracket, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "[", - TokenName: meta.OpenSquareBracket, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseSquareBracket, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "]", - TokenName: meta.CloseSquareBracket, - }, - }, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, Dim: &scalar.Lnumber{Value: "1"}, }) - expected := `$var [1 ]` + expected := `$var[1]` actual := o.String() if expected != actual { @@ -2798,32 +1497,13 @@ func TestPrinterPrintExprArrayItemWithKey(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.ArrayItem{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.DoubleArrowToken, - }, - }, Key: &scalar.String{Value: "'Hello'"}, Val: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "world"}, }, }) - expected := `'Hello' => $world` + expected := `'Hello'=>$world` actual := o.String() if expected != actual { @@ -2837,13 +1517,6 @@ func TestPrinterPrintExprArrayItem(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.ArrayItem{ Val: &expr.Reference{Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "world"}, }}, }) @@ -2861,66 +1534,28 @@ func TestPrinterPrintExprArray(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Array{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Items: []node.Node{ &expr.ArrayItem{ Key: &scalar.String{Value: "'Hello'"}, Val: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "world"}, }, }, &expr.ArrayItem{ Key: &scalar.Lnumber{Value: "2"}, Val: &expr.Reference{Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }}, }, &expr.ArrayItem{ Val: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }, }, }) - expected := ` array ('Hello'=>$world,2=>&$var,$var )` + expected := `array('Hello'=>$world,2=>&$var,$var)` actual := o.String() if expected != actual { @@ -2933,26 +1568,12 @@ func TestPrinterPrintExprBitwiseNot(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.BitwiseNot{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` ~$var` + expected := `~$var` actual := o.String() if expected != actual { @@ -2965,26 +1586,12 @@ func TestPrinterPrintExprBooleanNot(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.BooleanNot{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` !$var` + expected := `!$var` actual := o.String() if expected != actual { @@ -2997,36 +1604,15 @@ func TestPrinterPrintExprClassConstFetch(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.ClassConstFetch{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.PaamayimNekudotayimToken, - }, - }, Class: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, ConstantName: &node.Identifier{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Value: "CONST", }, }) - expected := `$var :: CONST` + expected := `$var::CONST` actual := o.String() if expected != actual { @@ -3039,26 +1625,12 @@ func TestPrinterPrintExprClone(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Clone{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` clone$var` + expected := `clone $var` actual := o.String() if expected != actual { @@ -3071,48 +1643,17 @@ func TestPrinterPrintExprClosureUse(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.ClosureUse{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Uses: []node.Node{ &expr.Reference{Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "foo"}, }}, &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "bar"}, }, }, }) - expected := ` use (&$foo,$bar )` + expected := `use(&$foo,$bar)` actual := o.String() if expected != actual { @@ -3125,43 +1666,6 @@ func TestPrinterPrintExprClosure(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Closure{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.FunctionToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.AmpersandToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenCurlyBracesToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, Static: true, ReturnsRef: true, Params: []node.Node{ @@ -3169,13 +1673,6 @@ func TestPrinterPrintExprClosure(t *testing.T) { ByRef: true, Variadic: false, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }, @@ -3183,52 +1680,24 @@ func TestPrinterPrintExprClosure(t *testing.T) { ClosureUse: &expr.ClosureUse{ Uses: []node.Node{ &expr.Reference{Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, }, ReturnType: &name.FullyQualified{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - }, Parts: []node.Node{&name.NamePart{Value: "Foo"}}, }, Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, }, }) - expected := ` static function & (&$var )use(&$a,$b) :\Foo {$a }` + expected := `static function&(&$var)use(&$a,$b):\Foo{$a;}` actual := o.String() if expected != actual { @@ -3257,36 +1726,12 @@ func TestPrinterPrintEmpty(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Empty{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` empty ($var )` + expected := `empty($var)` actual := o.String() if expected != actual { @@ -3299,26 +1744,12 @@ func TestPrinterPrettyPrinterrorSuppress(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.ErrorSuppress{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` @$var` + expected := `@$var` actual := o.String() if expected != actual { @@ -3331,36 +1762,12 @@ func TestPrinterPrintEval(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Eval{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` eval ($var )` + expected := `eval($var)` actual := o.String() if expected != actual { @@ -3373,37 +1780,13 @@ func TestPrinterPrintExit(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Exit{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Die: false, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` exit $var ` + expected := `exit $var` actual := o.String() if expected != actual { @@ -3417,36 +1800,12 @@ func TestPrinterPrintDie(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Exit{ Die: true, - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` die $var ` + expected := `die $var` actual := o.String() if expected != actual { @@ -3460,64 +1819,24 @@ func TestPrinterPrintFunctionCall(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.FunctionCall{ Function: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, ArgumentList: &node.ArgumentList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Arguments: []node.Node{ &node.Argument{ IsReference: true, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, }, &node.Argument{ Variadic: true, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, &node.Argument{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "c"}, }, }, @@ -3525,7 +1844,7 @@ func TestPrinterPrintFunctionCall(t *testing.T) { }, }) - expected := `$var (&$a,...$b,$c )` + expected := `$var(&$a,...$b,$c)` actual := o.String() if expected != actual { @@ -3538,17 +1857,10 @@ func TestPrinterPrintInclude(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Include{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Expr: &scalar.String{Value: "'path'"}, }) - expected := ` include'path'` + expected := `include 'path'` actual := o.String() if expected != actual { @@ -3561,16 +1873,10 @@ func TestPrinterPrintIncludeOnce(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.IncludeOnce{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Expr: &scalar.String{Value: "'path'"}, + Expr: &scalar.String{Value: "'path'"}, }) - expected := ` include_once'path'` + expected := `include_once 'path'` actual := o.String() if expected != actual { @@ -3583,27 +1889,13 @@ func TestPrinterPrintInstanceOf(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.InstanceOf{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.InstanceofToken, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, }) - expected := `$var instanceofFoo` + expected := `$var instanceof Foo` actual := o.String() if expected != actual { @@ -3616,48 +1908,17 @@ func TestPrinterPrintIsset(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Isset{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Variables: []node.Node{ &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, }) - expected := ` isset ($a,$b )` + expected := `isset($a,$b)` actual := o.String() if expected != actual { @@ -3670,33 +1931,9 @@ func TestPrinterPrintList(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.List{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Items: []node.Node{ &expr.ArrayItem{ Val: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, }, @@ -3705,25 +1942,11 @@ func TestPrinterPrintList(t *testing.T) { Items: []node.Node{ &expr.ArrayItem{ Val: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, &expr.ArrayItem{ Val: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "c"}, }, }, @@ -3733,7 +1956,7 @@ func TestPrinterPrintList(t *testing.T) { }, }) - expected := ` list ($a,list($b,$c) )` + expected := `list($a,list($b,$c))` actual := o.String() if expected != actual { @@ -3746,59 +1969,19 @@ func TestPrinterPrintMethodCall(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.MethodCall{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ObjectOperatorToken, - }, - }, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "foo"}, }, Method: &node.Identifier{Value: "bar"}, ArgumentList: &node.ArgumentList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Arguments: []node.Node{ &node.Argument{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, }, &node.Argument{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, @@ -3806,7 +1989,7 @@ func TestPrinterPrintMethodCall(t *testing.T) { }, }) - expected := `$foo ->bar ($a,$b )` + expected := `$foo->bar($a,$b)` actual := o.String() if expected != actual { @@ -3819,62 +2002,22 @@ func TestPrinterPrintNew(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.New{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Class: &name.Name{ Parts: []node.Node{ &name.NamePart{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Value: "Foo", }, }, }, ArgumentList: &node.ArgumentList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Arguments: []node.Node{ &node.Argument{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, }, &node.Argument{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, @@ -3882,7 +2025,7 @@ func TestPrinterPrintNew(t *testing.T) { }, }) - expected := ` new Foo ($a,$b )` + expected := `new Foo($a,$b)` actual := o.String() if expected != actual { @@ -3895,26 +2038,12 @@ func TestPrinterPrintPostDec(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.PostDec{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.DecToken, - }, - }, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := `$var --` + expected := `$var--` actual := o.String() if expected != actual { @@ -3927,26 +2056,12 @@ func TestPrinterPrintPostInc(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.PostInc{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.IncToken, - }, - }, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := `$var ++` + expected := `$var++` actual := o.String() if expected != actual { @@ -3959,26 +2074,12 @@ func TestPrinterPrintPreDec(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.PreDec{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` --$var` + expected := `--$var` actual := o.String() if expected != actual { @@ -3991,26 +2092,12 @@ func TestPrinterPrintPreInc(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.PreInc{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` ++$var` + expected := `++$var` actual := o.String() if expected != actual { @@ -4023,31 +2110,12 @@ func TestPrinterPrintPrint(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Print{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` print $var` + expected := `print $var` actual := o.String() if expected != actual { @@ -4060,27 +2128,13 @@ func TestPrinterPrintPropertyFetch(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.PropertyFetch{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ObjectOperatorToken, - }, - }, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "foo"}, }, Property: &node.Identifier{Value: "bar"}, }) - expected := `$foo ->bar` + expected := `$foo->bar` actual := o.String() if expected != actual { @@ -4093,26 +2147,12 @@ func TestPrinterPrintExprReference(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Reference{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "foo"}, }, }) - expected := ` &$foo` + expected := `&$foo` actual := o.String() if expected != actual { @@ -4125,17 +2165,10 @@ func TestPrinterPrintRequire(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Require{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Expr: &scalar.String{Value: "'path'"}, }) - expected := ` require'path'` + expected := `require 'path'` actual := o.String() if expected != actual { @@ -4148,17 +2181,10 @@ func TestPrinterPrintRequireOnce(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.RequireOnce{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Expr: &scalar.String{Value: "'path'"}, }) - expected := ` require_once'path'` + expected := `require_once 'path'` actual := o.String() if expected != actual { @@ -4171,30 +2197,16 @@ func TestPrinterPrintShellExec(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.ShellExec{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Parts: []node.Node{ &scalar.EncapsedStringPart{Value: "hello "}, &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "world"}, }, &scalar.EncapsedStringPart{Value: "!"}, }, }) - expected := " `hello $world!`" + expected := "`hello $world!`" actual := o.String() if expected != actual { @@ -4207,61 +2219,28 @@ func TestPrinterPrintExprShortArray(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.ShortArray{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseSquareBracket, - }, - }, Items: []node.Node{ &expr.ArrayItem{ Key: &scalar.String{Value: "'Hello'"}, Val: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "world"}, }, }, &expr.ArrayItem{ Key: &scalar.Lnumber{Value: "2"}, Val: &expr.Reference{Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }}, }, &expr.ArrayItem{ Val: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }, }, }) - expected := ` ['Hello'=>$world,2=>&$var,$var ]` + expected := `['Hello'=>$world,2=>&$var,$var]` actual := o.String() if expected != actual { @@ -4274,28 +2253,9 @@ func TestPrinterPrintShortList(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.ShortList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseSquareBracket, - }, - }, Items: []node.Node{ &expr.ArrayItem{ Val: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, }, @@ -4304,25 +2264,11 @@ func TestPrinterPrintShortList(t *testing.T) { Items: []node.Node{ &expr.ArrayItem{ Val: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, &expr.ArrayItem{ Val: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "c"}, }, }, @@ -4332,7 +2278,7 @@ func TestPrinterPrintShortList(t *testing.T) { }, }) - expected := ` [$a,list($b,$c) ]` + expected := `[$a,list($b,$c)]` actual := o.String() if expected != actual { @@ -4345,50 +2291,17 @@ func TestPrinterPrintStaticCall(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.StaticCall{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.PaamayimNekudotayimToken, - }, - }, Class: &node.Identifier{Value: "Foo"}, Call: &node.Identifier{Value: "bar"}, ArgumentList: &node.ArgumentList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Arguments: []node.Node{ &node.Argument{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, }, &node.Argument{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, @@ -4396,7 +2309,7 @@ func TestPrinterPrintStaticCall(t *testing.T) { }, }) - expected := `Foo ::bar ($a,$b )` + expected := `Foo::bar($a,$b)` actual := o.String() if expected != actual { @@ -4409,27 +2322,13 @@ func TestPrinterPrintStaticPropertyFetch(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.StaticPropertyFetch{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.PaamayimNekudotayimToken, - }, - }, Class: &node.Identifier{Value: "Foo"}, Property: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "bar"}, }, }) - expected := `Foo ::$bar` + expected := `Foo::$bar` actual := o.String() if expected != actual { @@ -4442,41 +2341,15 @@ func TestPrinterPrintTernary(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Ternary{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.QuestionMarkToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - }, Condition: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, IfFalse: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }) - expected := `$a ? :$b` + expected := `$a?:$b` actual := o.String() if expected != actual { @@ -4489,51 +2362,18 @@ func TestPrinterPrintTernaryFull(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Ternary{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.QuestionMarkToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - }, Condition: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, IfTrue: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, IfFalse: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "c"}, }, }) - expected := `$a ?$b :$c` + expected := `$a?$b:$c` actual := o.String() if expected != actual { @@ -4546,26 +2386,12 @@ func TestPrinterPrintUnaryMinus(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.UnaryMinus{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` -$var` + expected := `-$var` actual := o.String() if expected != actual { @@ -4578,26 +2404,12 @@ func TestPrinterPrintUnaryPlus(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.UnaryPlus{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` +$var` + expected := `+$var` actual := o.String() if expected != actual { @@ -4610,31 +2422,12 @@ func TestPrinterPrintVariable(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` $$var` + expected := `$$var` actual := o.String() if expected != actual { @@ -4647,26 +2440,12 @@ func TestPrinterPrintYieldFrom(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.YieldFrom{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` yield from$var` + expected := `yield from $var` actual := o.String() if expected != actual { @@ -4679,26 +2458,12 @@ func TestPrinterPrintYield(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Yield{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Value: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` yield$var` + expected := `yield $var` actual := o.String() if expected != actual { @@ -4711,41 +2476,15 @@ func TestPrinterPrintYieldFull(t *testing.T) { p := printer.NewPrinter(o) p.Print(&expr.Yield{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.DoubleArrowToken, - }, - }, Key: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "k"}, }, Value: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` yield$k =>$var` + expected := `yield $k=>$var` actual := o.String() if expected != actual { @@ -4760,55 +2499,19 @@ func TestPrinterPrintAltElseIf(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.AltElseIf{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - }, Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Stmt: &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }}, }, }, }) - expected := ` elseif ($a ) :$b` + expected := `elseif($a):$b;` actual := o.String() if expected != actual { @@ -4821,42 +2524,13 @@ func TestPrinterPrintAltElseIfEmpty(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.AltElseIf{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - }, Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Stmt: &stmt.StmtList{}, }) - expected := ` elseif ($a ) :` + expected := `elseif($a):` actual := o.String() if expected != actual { @@ -4869,35 +2543,16 @@ func TestPrinterPrintAltElse(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.AltElse{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - }, Stmt: &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }}, }, }, }) - expected := ` else :$b` + expected := `else:$b;` actual := o.String() if expected != actual { @@ -4910,22 +2565,10 @@ func TestPrinterPrintAltElseEmpty(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.AltElse{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - }, Stmt: &stmt.StmtList{}, }) - expected := ` else :` + expected := `else:` actual := o.String() if expected != actual { @@ -4938,106 +2581,31 @@ func TestPrinterPrintAltFor(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.AltFor{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ForInitSemicolonToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ForCondSemicolonToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.EndforToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Init: []node.Node{ &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, }, Cond: []node.Node{ &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, Loop: []node.Node{ &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "c"}, }, }, Stmt: &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "d"}, }}, }, }, }) - expected := ` for ($a ;$b ;$c ) :$d endfor ` + expected := `for($a;$b;$c):$d;endfor;` actual := o.String() if expected != actual { @@ -5050,100 +2618,25 @@ func TestPrinterPrintAltForeach(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.AltForeach{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.AsToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.DoubleArrowToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.EndforeachToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, Key: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "key"}, }, Variable: &expr.Reference{Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "val"}, }}, Stmt: &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "d"}, }}, }, }, }) - expected := ` foreach ($var as$key =>&$val ) :$d endforeach ` + expected := `foreach($var as $key=>&$val):$d;endforeach;` actual := o.String() if expected != actual { @@ -5156,63 +2649,12 @@ func TestPrinterPrintAltIf(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.AltIf{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.EndifToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Stmt: &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "d"}, }}, }, @@ -5220,25 +2662,11 @@ func TestPrinterPrintAltIf(t *testing.T) { ElseIf: []node.Node{ &stmt.AltElseIf{ Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, Stmt: &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }}, }, @@ -5246,13 +2674,6 @@ func TestPrinterPrintAltIf(t *testing.T) { }, &stmt.AltElseIf{ Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "c"}, }, Stmt: &stmt.StmtList{}, @@ -5262,13 +2683,6 @@ func TestPrinterPrintAltIf(t *testing.T) { Stmt: &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }}, }, @@ -5276,7 +2690,7 @@ func TestPrinterPrintAltIf(t *testing.T) { }, }) - expected := ` if ($a ) :$delseif($b):$belseif($c):else:$b endif ` + expected := `if($a):$d;elseif($b):$b;elseif($c):else:$b;endif;` actual := o.String() if expected != actual { @@ -5289,51 +2703,7 @@ func TestPrinterPrintStmtAltSwitch(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.AltSwitch{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.EndswitchToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, CaseList: &stmt.CaseList{ @@ -5342,13 +2712,6 @@ func TestPrinterPrintStmtAltSwitch(t *testing.T) { Cond: &scalar.String{Value: "'a'"}, Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, }, @@ -5357,13 +2720,6 @@ func TestPrinterPrintStmtAltSwitch(t *testing.T) { Cond: &scalar.String{Value: "'b'"}, Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }}, }, @@ -5372,7 +2728,7 @@ func TestPrinterPrintStmtAltSwitch(t *testing.T) { }, }) - expected := ` switch ($var ) :case'a':$acase'b':$b endswitch ` + expected := `switch($var):case 'a':$a;case 'b':$b;endswitch;` actual := o.String() if expected != actual { @@ -5385,70 +2741,19 @@ func TestPrinterPrintAltWhile(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.AltWhile{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.EndwhileToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Stmt: &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }}, }, }, }) - expected := ` while ($a ) :$b endwhile ` + expected := `while($a):$b;endwhile;` actual := o.String() if expected != actual { @@ -5461,36 +2766,12 @@ func TestPrinterPrintStmtBreak(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Break{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Expr: &scalar.Lnumber{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Value: "1", }, }) - expected := " break 1 " + expected := "break 1;" actual := o.String() if expected != actual { @@ -5503,38 +2784,17 @@ func TestPrinterPrintStmtCase(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Case{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, }, }) - expected := ` case$a:$a` + expected := `case $a:$a;` actual := o.String() if expected != actual { @@ -5547,27 +2807,13 @@ func TestPrinterPrintStmtCaseEmpty(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Case{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Stmts: []node.Node{}, }) - expected := " case$a:" + expected := "case $a:" actual := o.String() if expected != actual { @@ -5580,62 +2826,21 @@ func TestPrinterPrintStmtCatch(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Catch{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenCurlyBracesToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, Types: []node.Node{ &name.Name{Parts: []node.Node{&name.NamePart{Value: "Exception"}}}, &name.FullyQualified{Parts: []node.Node{&name.NamePart{Value: "RuntimeException"}}}, }, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "e"}, }, Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, }, }) - expected := ` catch (Exception|\RuntimeException$e ) {$a }` + expected := `catch(Exception|\RuntimeException$e){$a;}` actual := o.String() if expected != actual { @@ -5648,28 +2853,6 @@ func TestPrinterPrintStmtClassMethod(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.ClassMethod{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.FunctionToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.AmpersandToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Modifiers: []node.Node{&node.Identifier{Value: "public"}}, ReturnsRef: true, MethodName: &node.Identifier{Value: "foo"}, @@ -5678,13 +2861,6 @@ func TestPrinterPrintStmtClassMethod(t *testing.T) { ByRef: true, VariableType: &node.Nullable{Expr: &name.Name{Parts: []node.Node{&name.NamePart{Value: "int"}}}}, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, DefaultValue: &expr.ConstFetch{Constant: &name.Name{Parts: []node.Node{&name.NamePart{Value: "null"}}}}, @@ -5692,56 +2868,23 @@ func TestPrinterPrintStmtClassMethod(t *testing.T) { &node.Parameter{ Variadic: true, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, }, ReturnType: &name.Name{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - }, Parts: []node.Node{&name.NamePart{Value: "void"}}, }, Stmt: &stmt.StmtList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, }, }, }) - expected := `public function &foo (?int&$a=null,...$b ) :void {$a }` + expected := `public function &foo(?int&$a=null,...$b):void{$a;}` actual := o.String() if expected != actual { @@ -5754,29 +2897,10 @@ func TestPrinterPrintStmtAbstractClassMethod(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.ClassMethod{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.FunctionToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.AmpersandToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, + Modifiers: []node.Node{ + &node.Identifier{Value: "public"}, + &node.Identifier{Value: "static"}, }, - Modifiers: []node.Node{&node.Identifier{Value: "public"}}, ReturnsRef: true, MethodName: &node.Identifier{Value: "foo"}, Params: []node.Node{ @@ -5784,13 +2908,6 @@ func TestPrinterPrintStmtAbstractClassMethod(t *testing.T) { ByRef: true, VariableType: &node.Nullable{Expr: &name.Name{Parts: []node.Node{&name.NamePart{Value: "int"}}}}, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, DefaultValue: &expr.ConstFetch{Constant: &name.Name{Parts: []node.Node{&name.NamePart{Value: "null"}}}}, @@ -5798,31 +2915,17 @@ func TestPrinterPrintStmtAbstractClassMethod(t *testing.T) { &node.Parameter{ Variadic: true, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, }, ReturnType: &name.Name{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - }, Parts: []node.Node{&name.NamePart{Value: "void"}}, }, Stmt: &stmt.Nop{}, }) - expected := `public function &foo (?int&$a=null,...$b ) :void` + expected := `public static function &foo(?int&$a=null,...$b):void;` actual := o.String() if expected != actual { @@ -5835,43 +2938,12 @@ func TestPrinterPrintStmtClass(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Class{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ClassToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenCurlyBracesToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, Modifiers: []node.Node{&node.Identifier{Value: "abstract"}}, ClassName: &node.Identifier{Value: "Foo"}, Extends: &stmt.ClassExtends{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ExtendsToken, - }, - }, ClassName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}}, }, Implements: &stmt.ClassImplements{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ImplementsToken, - }, - }, InterfaceNames: []node.Node{ &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}}, &name.Name{Parts: []node.Node{&name.NamePart{Value: "Quuz"}}}, @@ -5879,7 +2951,10 @@ func TestPrinterPrintStmtClass(t *testing.T) { }, Stmts: []node.Node{ &stmt.ClassConstList{ - Modifiers: []node.Node{&node.Identifier{Value: "public"}}, + Modifiers: []node.Node{ + &node.Identifier{Value: "public"}, + &node.Identifier{Value: "static"}, + }, Consts: []node.Node{ &stmt.Constant{ ConstantName: &node.Identifier{Value: "FOO"}, @@ -5890,7 +2965,7 @@ func TestPrinterPrintStmtClass(t *testing.T) { }, }) - expected := `abstract classFoo extendsBar implementsBaz,Quuz {publicconstFOO='bar' }` + expected := `abstract class Foo extends Bar implements Baz,Quuz{public static const FOO='bar';}` actual := o.String() if expected != actual { @@ -5903,82 +2978,25 @@ func TestPrinterPrintStmtAnonymousClass(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Class{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ClassToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenCurlyBracesToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, Modifiers: []node.Node{&node.Identifier{Value: "abstract"}}, ArgumentList: &node.ArgumentList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Arguments: []node.Node{ &node.Argument{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, }, &node.Argument{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, }, }, Extends: &stmt.ClassExtends{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ExtendsToken, - }, - }, ClassName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}}, }, Implements: &stmt.ClassImplements{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ImplementsToken, - }, - }, InterfaceNames: []node.Node{ &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}}, &name.Name{Parts: []node.Node{&name.NamePart{Value: "Quuz"}}}, @@ -5997,7 +3015,7 @@ func TestPrinterPrintStmtAnonymousClass(t *testing.T) { }, }) - expected := `abstract class ($a,$b ) extendsBar implementsBaz,Quuz {publicconstFOO='bar' }` + expected := `abstract class($a,$b) extends Bar implements Baz,Quuz{public const FOO='bar';}` actual := o.String() if expected != actual { @@ -6010,23 +3028,6 @@ func TestPrinterPrintStmtClassConstList(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.ClassConstList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ConstToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Modifiers: []node.Node{&node.Identifier{Value: "public"}}, Consts: []node.Node{ &stmt.Constant{ @@ -6040,7 +3041,7 @@ func TestPrinterPrintStmtClassConstList(t *testing.T) { }, }) - expected := `public constFOO='a',BAR='b' ` + expected := `public const FOO='a',BAR='b';` actual := o.String() if expected != actual { @@ -6053,23 +3054,6 @@ func TestPrinterPrintStmtConstList(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.ConstList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Consts: []node.Node{ &stmt.Constant{ ConstantName: &node.Identifier{Value: "FOO"}, @@ -6082,7 +3066,7 @@ func TestPrinterPrintStmtConstList(t *testing.T) { }, }) - expected := ` constFOO='a',BAR='b' ` + expected := `const FOO='a',BAR='b';` actual := o.String() if expected != actual { @@ -6095,18 +3079,11 @@ func TestPrinterPrintStmtConstant(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Constant{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.EqualToken, - }, - }, ConstantName: &node.Identifier{Value: "FOO"}, Expr: &scalar.String{Value: "'BAR'"}, }) - expected := "FOO ='BAR'" + expected := "FOO='BAR'" actual := o.String() if expected != actual { @@ -6119,36 +3096,12 @@ func TestPrinterPrintStmtContinue(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Continue{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Expr: &scalar.Lnumber{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Value: "1", }, }) - expected := ` continue 1 ` + expected := `continue 1;` actual := o.String() if expected != actual { @@ -6161,23 +3114,6 @@ func TestPrinterPrintStmtDeclareStmts(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Declare{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Consts: []node.Node{ &stmt.Constant{ ConstantName: &node.Identifier{Value: "FOO"}, @@ -6191,7 +3127,7 @@ func TestPrinterPrintStmtDeclareStmts(t *testing.T) { }, }) - expected := ` declare (FOO='bar' ){}` + expected := `declare(FOO='bar'){;}` actual := o.String() if expected != actual { @@ -6204,23 +3140,6 @@ func TestPrinterPrintStmtDeclareExpr(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Declare{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Consts: []node.Node{ &stmt.Constant{ ConstantName: &node.Identifier{Value: "FOO"}, @@ -6230,7 +3149,7 @@ func TestPrinterPrintStmtDeclareExpr(t *testing.T) { Stmt: &stmt.Expression{Expr: &scalar.String{Value: "'bar'"}}, }) - expected := ` declare (FOO='bar' )'bar'` + expected := `declare(FOO='bar')'bar';` actual := o.String() if expected != actual { @@ -6252,7 +3171,7 @@ func TestPrinterPrintStmtDeclareNop(t *testing.T) { Stmt: &stmt.Nop{}, }) - expected := `declare(FOO='bar')` + expected := `declare(FOO='bar');` actual := o.String() if expected != actual { @@ -6265,28 +3184,14 @@ func TestPrinterPrintStmtDefalut(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Default{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, }, }) - expected := ` default:$a` + expected := `default:$a;` actual := o.String() if expected != actual { @@ -6299,17 +3204,10 @@ func TestPrinterPrintStmtDefalutEmpty(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Default{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Stmts: []node.Node{}, }) - expected := ` default:` + expected := `default:` actual := o.String() if expected != actual { @@ -6322,54 +3220,15 @@ func TestPrinterPrintStmtDo_Expression(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Do{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.WhileToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Cond: &scalar.Lnumber{Value: "1"}, Stmt: &stmt.Expression{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, }, }) - expected := ` do$a while (1 ) ` + expected := `do $a;while(1);` actual := o.String() if expected != actual { @@ -6382,56 +3241,17 @@ func TestPrinterPrintStmtDo_StmtList(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Do{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.WhileToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Cond: &scalar.Lnumber{Value: "1"}, Stmt: &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, }, }, }) - expected := ` do{$a} while (1 ) ` + expected := `do{$a;}while(1);` actual := o.String() if expected != actual { @@ -6439,58 +3259,49 @@ func TestPrinterPrintStmtDo_StmtList(t *testing.T) { } } -func TestPrinterPrintStmtEcho(t *testing.T) { +func TestPrinterPrintStmtEchoHtmlState(t *testing.T) { + o := bytes.NewBufferString("") + + p := printer.NewPrinter(o) + p.Print(&node.Root{ + Stmts: []node.Node{ + &stmt.Echo{ + Exprs: []node.Node{ + &expr.Variable{ + VarName: &node.Identifier{Value: "a"}, + }, + &expr.Variable{ + VarName: &node.Identifier{Value: "b"}, + }, + }, + }, + }, + }) + + expected := `$v ){}` + expected := `foreach($a as $k=>$v){;}` actual := o.String() if expected != actual { @@ -6947,38 +3536,6 @@ func TestPrinterPrintStmtFunction(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Function{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.AmpersandToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenCurlyBracesToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, ReturnsRef: true, FunctionName: &node.Identifier{Value: "foo"}, Params: []node.Node{ @@ -6986,25 +3543,11 @@ func TestPrinterPrintStmtFunction(t *testing.T) { ByRef: true, Variadic: false, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }, }, ReturnType: &name.FullyQualified{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - }, Parts: []node.Node{&name.NamePart{Value: "Foo"}}, }, Stmts: []node.Node{ @@ -7012,7 +3555,7 @@ func TestPrinterPrintStmtFunction(t *testing.T) { }, }) - expected := ` function &foo (&$var ) :\Foo { }` + expected := `function &foo(&$var):\Foo{;}` actual := o.String() if expected != actual { @@ -7025,48 +3568,17 @@ func TestPrinterPrintStmtGlobal(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Global{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Vars: []node.Node{ &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, }) - expected := ` global$a,$b ` + expected := `global$a,$b;` actual := o.String() if expected != actual { @@ -7079,27 +3591,10 @@ func TestPrinterPrintStmtGoto(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Goto{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Label: &node.Identifier{Value: "FOO"}, }) - expected := ` gotoFOO ` + expected := `goto FOO;` actual := o.String() if expected != actual { @@ -7112,38 +3607,6 @@ func TestPrinterPrintStmtGroupUse(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.GroupUse{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NsSeparatorToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenCurlyBracesToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, UseType: &node.Identifier{Value: "function"}, Prefix: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, UseList: []node.Node{ @@ -7157,7 +3620,7 @@ func TestPrinterPrintStmtGroupUse(t *testing.T) { }, }) - expected := ` usefunctionFoo \ {BarasBaz,Quuz } ` + expected := `use function Foo\{Bar as Baz,Quuz};` actual := o.String() if expected != actual { @@ -7169,37 +3632,9 @@ func TestPrinterPrintHaltCompiler(t *testing.T) { o := bytes.NewBufferString("") p := printer.NewPrinter(o) - p.Print(&stmt.HaltCompiler{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, - }) + p.Print(&stmt.HaltCompiler{}) - expected := ` __halt_compiler ( ) ` + expected := `__halt_compiler();` actual := o.String() if expected != actual { @@ -7212,68 +3647,23 @@ func TestPrinterPrintIfExpression(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.If{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Stmt: &stmt.Expression{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, ElseIf: []node.Node{ &stmt.ElseIf{ Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "c"}, }, Stmt: &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "d"}, }, }, @@ -7282,13 +3672,6 @@ func TestPrinterPrintIfExpression(t *testing.T) { }, &stmt.ElseIf{ Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "e"}, }, Stmt: &stmt.Nop{}, @@ -7297,20 +3680,13 @@ func TestPrinterPrintIfExpression(t *testing.T) { Else: &stmt.Else{ Stmt: &stmt.Expression{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "f"}, }, }, }, }) - expected := ` if ($a )$belseif($c){$d}elseif($e)else$f` + expected := `if($a)$b;elseif($c){$d;}elseif($e);else $f;` actual := o.String() if expected != actual { @@ -7323,44 +3699,13 @@ func TestPrinterPrintIfStmtList(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.If{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Stmt: &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{ Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, @@ -7368,7 +3713,7 @@ func TestPrinterPrintIfStmtList(t *testing.T) { }, }) - expected := ` if ($a ){$b}` + expected := `if($a){$b;}` actual := o.String() if expected != actual { @@ -7382,19 +3727,12 @@ func TestPrinterPrintIfNop(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.If{ Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Stmt: &stmt.Nop{}, }) - expected := `if($a)` + expected := `if($a);` actual := o.String() if expected != actual { @@ -7406,18 +3744,15 @@ func TestPrinterPrintInlineHtml(t *testing.T) { o := bytes.NewBufferString("") p := printer.NewPrinter(o) - p.Print(&stmt.InlineHtml{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, + p.Print(&node.Root{ + Stmts: []node.Node{ + &stmt.InlineHtml{ + Value: "test", }, }, - Value: "test", }) - expected := ` test` + expected := `test` actual := o.String() if expected != actual { @@ -7430,32 +3765,8 @@ func TestPrinterPrintInterface(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Interface{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenCurlyBracesToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, InterfaceName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, Extends: &stmt.InterfaceExtends{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ExtendsToken, - }, - }, InterfaceNames: []node.Node{ &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}}, &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}}, @@ -7469,13 +3780,6 @@ func TestPrinterPrintInterface(t *testing.T) { Stmt: &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, }, @@ -7484,7 +3788,7 @@ func TestPrinterPrintInterface(t *testing.T) { }, }) - expected := ` interfaceFoo extendsBar,Baz {publicfunctionfoo(){$a} }` + expected := `interface Foo extends Bar,Baz{public function foo(){$a;}}` actual := o.String() if expected != actual { @@ -7497,17 +3801,10 @@ func TestPrinterPrintLabel(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Label{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.ColonToken, - }, - }, LabelName: &node.Identifier{Value: "FOO"}, }) - expected := `FOO :` + expected := `FOO:` actual := o.String() if expected != actual { @@ -7520,27 +3817,10 @@ func TestPrinterPrintNamespace(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Namespace{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, NamespaceName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, }) - expected := ` namespaceFoo ` + expected := `namespace Foo;` actual := o.String() if expected != actual { @@ -7553,39 +3833,15 @@ func TestPrinterPrintNamespaceWithStmts(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Namespace{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenCurlyBracesToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, NamespaceName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, }, }) - expected := ` namespaceFoo {$a }` + expected := `namespace Foo{$a;}` actual := o.String() if expected != actual { @@ -7597,22 +3853,9 @@ func TestPrinterPrintNop(t *testing.T) { o := bytes.NewBufferString("") p := printer.NewPrinter(o) - p.Print(&stmt.Nop{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.TokenType, - Value: ";", - TokenName: meta.NodeStart, - }, - }, - }) + p.Print(&stmt.Nop{}) - expected := ` ;` + expected := `;` actual := o.String() if expected != actual { @@ -7625,18 +3868,6 @@ func TestPrinterPrintPropertyList(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.PropertyList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Modifiers: []node.Node{ &node.Identifier{Value: "public"}, &node.Identifier{Value: "static"}, @@ -7644,32 +3875,19 @@ func TestPrinterPrintPropertyList(t *testing.T) { Properties: []node.Node{ &stmt.Property{ Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, + Expr: &scalar.String{Value: "'a'"}, }, &stmt.Property{ Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, }, }) - expected := `publicstatic$a,$b ` + expected := `public static $a='a',$b;` actual := o.String() if expected != actual { @@ -7682,13 +3900,6 @@ func TestPrinterPrintProperty(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Property{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.EqualToken, - }, - }, Variable: &expr.Variable{ Meta: meta.Collection{ &meta.Data{ @@ -7702,7 +3913,7 @@ func TestPrinterPrintProperty(t *testing.T) { Expr: &scalar.Lnumber{Value: "1"}, }) - expected := `$a =1` + expected := `$a=1` actual := o.String() if expected != actual { @@ -7715,27 +3926,10 @@ func TestPrinterPrintReturn(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Return{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Expr: &scalar.Lnumber{Value: "1"}, }) - expected := ` return1 ` + expected := `return 1;` actual := o.String() if expected != actual { @@ -7748,27 +3942,13 @@ func TestPrinterPrintStaticVar(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.StaticVar{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.EqualToken, - }, - }, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Expr: &scalar.Lnumber{Value: "1"}, }) - expected := `$a =1` + expected := `$a=1` actual := o.String() if expected != actual { @@ -7781,52 +3961,21 @@ func TestPrinterPrintStatic(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Static{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Vars: []node.Node{ &stmt.StaticVar{ Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, }, &stmt.StaticVar{ Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, }, }) - expected := ` static$a,$b ` + expected := `static$a,$b;` actual := o.String() if expected != actual { @@ -7839,43 +3988,17 @@ func TestPrinterPrintStmtList(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.StmtList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }}, }, }) - expected := ` {$a$b }` + expected := `{$a;$b;}` actual := o.String() if expected != actual { @@ -7888,51 +4011,18 @@ func TestPrinterPrintStmtListNested(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.StmtList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }}, &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "c"}, }}, }, @@ -7942,7 +4032,7 @@ func TestPrinterPrintStmtListNested(t *testing.T) { }, }) - expected := ` {$a{$b{$c}} }` + expected := `{$a;{$b;{$c;}}}` actual := o.String() if expected != actual { @@ -7955,58 +4045,15 @@ func TestPrinterPrintStmtSwitch(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Switch{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, CaseList: &stmt.CaseList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenCurlyBracesToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, Cases: []node.Node{ &stmt.Case{ Cond: &scalar.String{Value: "'a'"}, Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, }, @@ -8015,13 +4062,6 @@ func TestPrinterPrintStmtSwitch(t *testing.T) { Cond: &scalar.String{Value: "'b'"}, Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }}, }, @@ -8030,7 +4070,7 @@ func TestPrinterPrintStmtSwitch(t *testing.T) { }, }) - expected := ` switch ($var ) {case'a':$acase'b':$b }` + expected := `switch($var){case 'a':$a;case 'b':$b;}` actual := o.String() if expected != actual { @@ -8043,36 +4083,12 @@ func TestPrinterPrintStmtThrow(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Throw{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "var"}, }, }) - expected := ` throw$var ` + expected := `throw $var;` actual := o.String() if expected != actual { @@ -8085,18 +4101,6 @@ func TestPrinterPrintStmtTraitAdaptationList(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.TraitAdaptationList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, Adaptations: []node.Node{ &stmt.TraitUseAlias{ Ref: &stmt.TraitMethodRef{ @@ -8108,7 +4112,7 @@ func TestPrinterPrintStmtTraitAdaptationList(t *testing.T) { }, }) - expected := ` {Foo::aasb }` + expected := `{Foo::a as b;}` actual := o.String() if expected != actual { @@ -8137,18 +4141,11 @@ func TestPrinterPrintStmtTraitMethodRefFull(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.TraitMethodRef{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.PaamayimNekudotayimToken, - }, - }, Trait: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, Method: &node.Identifier{Value: "a"}, }) - expected := `Foo ::a` + expected := `Foo::a` actual := o.String() if expected != actual { @@ -8161,23 +4158,6 @@ func TestPrinterPrintStmtTraitUseAlias(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.TraitUseAlias{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.AsToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Ref: &stmt.TraitMethodRef{ Trait: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, Method: &node.Identifier{Value: "a"}, @@ -8186,7 +4166,7 @@ func TestPrinterPrintStmtTraitUseAlias(t *testing.T) { Alias: &node.Identifier{Value: "b"}, }) - expected := `Foo::a aspublicb ` + expected := `Foo::a as public b;` actual := o.String() if expected != actual { @@ -8199,23 +4179,6 @@ func TestPrinterPrintStmtTraitUsePrecedence(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.TraitUsePrecedence{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.InsteadofToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Ref: &stmt.TraitMethodRef{ Trait: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, Method: &node.Identifier{Value: "a"}, @@ -8226,7 +4189,7 @@ func TestPrinterPrintStmtTraitUsePrecedence(t *testing.T) { }, }) - expected := `Foo::a insteadofBar,Baz ` + expected := `Foo::a insteadof Bar,Baz;` actual := o.String() if expected != actual { @@ -8239,34 +4202,14 @@ func TestPrinterPrintStmtTraitUse(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.TraitUse{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Traits: []node.Node{ &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}}, }, - TraitAdaptationList: &stmt.Nop{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.NodeStart, - }, - }, - }, + TraitAdaptationList: &stmt.Nop{}, }) - expected := ` useFoo,Bar ` + expected := `use Foo,Bar;` actual := o.String() if expected != actual { @@ -8279,30 +4222,11 @@ func TestPrinterPrintStmtTraitAdaptations(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.TraitUse{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - }, Traits: []node.Node{ &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}}, }, TraitAdaptationList: &stmt.TraitAdaptationList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, Adaptations: []node.Node{ &stmt.TraitUseAlias{ Ref: &stmt.TraitMethodRef{ @@ -8315,7 +4239,7 @@ func TestPrinterPrintStmtTraitAdaptations(t *testing.T) { }, }) - expected := ` useFoo,Bar {Foo::aasb }` + expected := `use Foo,Bar{Foo::a as b;}` actual := o.String() if expected != actual { @@ -8328,23 +4252,6 @@ func TestPrinterPrintTrait(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Trait{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenCurlyBracesToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, TraitName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, Stmts: []node.Node{ &stmt.ClassMethod{ @@ -8354,13 +4261,6 @@ func TestPrinterPrintTrait(t *testing.T) { Stmt: &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, }, @@ -8369,7 +4269,7 @@ func TestPrinterPrintTrait(t *testing.T) { }, }) - expected := ` traitFoo {publicfunctionfoo(){$a} }` + expected := `trait Foo{public function foo(){$a;}}` actual := o.String() if expected != actual { @@ -8382,32 +4282,8 @@ func TestPrinterPrintStmtTry(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Try{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenCurlyBracesToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseCurlyBracesToken, - }, - }, Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, }, @@ -8418,24 +4294,10 @@ func TestPrinterPrintStmtTry(t *testing.T) { &name.FullyQualified{Parts: []node.Node{&name.NamePart{Value: "RuntimeException"}}}, }, Variable: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "e"}, }, Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }}, }, @@ -8448,7 +4310,7 @@ func TestPrinterPrintStmtTry(t *testing.T) { }, }) - expected := ` try {$a }catch(Exception|\RuntimeException$e){$b}finally{}` + expected := `try{$a;}catch(Exception|\RuntimeException$e){$b;}finally{;}` actual := o.String() if expected != actual { @@ -8461,58 +4323,17 @@ func TestPrinterPrintStmtUnset(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Unset{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, Vars: []node.Node{ &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "b"}, }, }, }) - expected := ` unset ($a,$b ) ` + expected := `unset($a,$b);` actual := o.String() if expected != actual { @@ -8525,23 +4346,6 @@ func TestPrinterPrintStmtUseList(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.UseList{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.SemiColonToken, - }, - &meta.Data{ - Type: meta.TokenType, - Value: "", - TokenName: meta.SemiColonToken, - }, - }, UseType: &node.Identifier{Value: "function"}, Uses: []node.Node{ &stmt.Use{ @@ -8554,7 +4358,7 @@ func TestPrinterPrintStmtUseList(t *testing.T) { }, }) - expected := ` usefunctionFooasBar,Baz ` + expected := `use function Foo as Bar,Baz;` actual := o.String() if expected != actual { @@ -8567,19 +4371,12 @@ func TestPrinterPrintUse(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.Use{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.AsToken, - }, - }, UseType: &node.Identifier{Value: "function"}, Use: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, Alias: &node.Identifier{Value: "Bar"}, }) - expected := `functionFoo asBar` + expected := `function Foo as Bar` actual := o.String() if expected != actual { @@ -8592,50 +4389,19 @@ func TestPrinterPrintWhileStmtList(t *testing.T) { p := printer.NewPrinter(o) p.Print(&stmt.While{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.NodeStart, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.OpenParenthesisToken, - }, - &meta.Data{ - Type: meta.WhiteSpaceType, - Value: " ", - TokenName: meta.CloseParenthesisToken, - }, - }, Cond: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }, Stmt: &stmt.StmtList{ Stmts: []node.Node{ &stmt.Expression{Expr: &expr.Variable{ - Meta: meta.Collection{ - &meta.Data{ - Type: meta.TokenType, - Value: "$", - TokenName: meta.NodeStart, - }, - }, VarName: &node.Identifier{Value: "a"}, }}, }, }, }) - expected := ` while ($a ){$a}` + expected := `while($a){$a;}` actual := o.String() if expected != actual {