diff --git a/php5/php5.go b/php5/php5.go index 04a27a6..822ab09 100644 --- a/php5/php5.go +++ b/php5/php5.go @@ -1,3 +1,5 @@ +// Code generated by goyacc -o php5/php5.go php5/php5.y. DO NOT EDIT. + //line php5/php5.y:2 package php5 @@ -346,7 +348,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php5/php5.y:7007 +//line php5/php5.y:7259 type simpleIndirectReference struct { all []*expr.Variable @@ -2864,7 +2866,7 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastConst.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2885,7 +2887,7 @@ yydefault: // save comments yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2979,7 +2981,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(label.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -3264,11 +3266,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 62: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1145 + //line php5/php5.y:1147 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) @@ -3284,7 +3288,7 @@ yydefault: } case 63: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1159 + //line php5/php5.y:1161 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) @@ -3300,7 +3304,7 @@ yydefault: } case 64: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1173 + //line php5/php5.y:1175 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) @@ -3317,7 +3321,7 @@ yydefault: } case 65: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1188 + //line php5/php5.y:1190 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) @@ -3331,7 +3335,7 @@ yydefault: } case 66: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1200 + //line php5/php5.y:1202 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) @@ -3342,11 +3346,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.SemiColonToken) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 67: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1213 + //line php5/php5.y:1217 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) @@ -3364,7 +3370,7 @@ yydefault: } case 68: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1229 + //line php5/php5.y:1233 { if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { @@ -3406,7 +3412,7 @@ yydefault: } case 69: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1269 + //line php5/php5.y:1273 { if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { @@ -3448,7 +3454,7 @@ yydefault: } case 70: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1309 + //line php5/php5.y:1313 { yyVAL.node = yyDollar[5].node yyVAL.node.(*stmt.Declare).Consts = yyDollar[3].list @@ -3465,7 +3471,7 @@ yydefault: } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1324 + //line php5/php5.y:1328 { yyVAL.node = stmt.NewNop() @@ -3480,7 +3486,7 @@ yydefault: } case 72: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1337 + //line php5/php5.y:1341 { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3500,7 +3506,7 @@ yydefault: } case 73: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1355 + //line php5/php5.y:1359 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) @@ -3516,7 +3522,7 @@ yydefault: } case 74: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1369 + //line php5/php5.y:1373 { label := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewGoto(label) @@ -3535,7 +3541,7 @@ yydefault: } case 75: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1389 + //line php5/php5.y:1393 { yyVAL.list = []node.Node{} @@ -3543,7 +3549,7 @@ yydefault: } case 76: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:1395 + //line php5/php5.y:1399 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -3568,7 +3574,7 @@ yydefault: } case 77: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1421 + //line php5/php5.y:1425 { yyVAL.node = nil @@ -3576,7 +3582,7 @@ yydefault: } case 78: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1427 + //line php5/php5.y:1431 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) @@ -3592,7 +3598,7 @@ yydefault: } case 79: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1444 + //line php5/php5.y:1448 { yyVAL.list = yyDollar[1].list @@ -3600,7 +3606,7 @@ yydefault: } case 80: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1450 + //line php5/php5.y:1454 { yyVAL.list = []node.Node{} @@ -3608,7 +3614,7 @@ yydefault: } case 81: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1459 + //line php5/php5.y:1463 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3616,7 +3622,7 @@ yydefault: } case 82: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1465 + //line php5/php5.y:1469 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3624,7 +3630,7 @@ yydefault: } case 83: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1474 + //line php5/php5.y:1478 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -3648,7 +3654,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1499 + //line php5/php5.y:1503 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3656,7 +3662,7 @@ yydefault: } case 85: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1505 + //line php5/php5.y:1509 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3667,7 +3673,7 @@ yydefault: } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1517 + //line php5/php5.y:1521 { yyVAL.node = yyDollar[1].node @@ -3675,7 +3681,7 @@ yydefault: } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1526 + //line php5/php5.y:1530 { yyVAL.node = yyDollar[1].node @@ -3683,7 +3689,7 @@ yydefault: } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1535 + //line php5/php5.y:1539 { yyVAL.node = yyDollar[1].node @@ -3691,31 +3697,31 @@ yydefault: } case 89: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1544 + //line php5/php5.y:1548 { yyVAL.token = nil } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1548 + //line php5/php5.y:1552 { yyVAL.token = yyDollar[1].token } case 91: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1555 + //line php5/php5.y:1559 { yyVAL.token = nil } case 92: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1559 + //line php5/php5.y:1563 { yyVAL.token = yyDollar[1].token } case 93: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:1566 + //line php5/php5.y:1570 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewFunction(name, yyDollar[2].token != nil, yyDollar[5].list, nil, yyDollar[8].list, "") @@ -3739,7 +3745,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-7 : yypt+1] - //line php5/php5.y:1591 + //line php5/php5.y:1595 { name := node.NewIdentifier(yyDollar[2].token.Value) switch n := yyDollar[1].node.(type) { @@ -3769,7 +3775,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1619 + //line php5/php5.y:1623 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewInterface(name, yyDollar[3].InterfaceExtends, yyDollar[5].list, "") @@ -3788,7 +3794,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1640 + //line php5/php5.y:1644 { yyVAL.node = stmt.NewClass(nil, nil, nil, nil, nil, nil, "") @@ -3796,13 +3802,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.ClassToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 97: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1652 + //line php5/php5.y:1656 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewClass(nil, []node.Node{classModifier}, nil, nil, nil, nil, "") @@ -3812,14 +3818,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(classModifier.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.ClassToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 98: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1667 + //line php5/php5.y:1671 { yyVAL.node = stmt.NewTrait(nil, nil, "") @@ -3833,7 +3839,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1679 + //line php5/php5.y:1683 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewClass(nil, []node.Node{classModifier}, nil, nil, nil, nil, "") @@ -3843,14 +3849,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(classModifier.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.ClassToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 100: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1697 + //line php5/php5.y:1701 { yyVAL.ClassExtends = nil @@ -3858,7 +3864,7 @@ yydefault: } case 101: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1703 + //line php5/php5.y:1707 { yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) @@ -3872,13 +3878,13 @@ yydefault: } case 102: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1718 + //line php5/php5.y:1722 { yyVAL.token = yyDollar[1].token } case 103: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1725 + //line php5/php5.y:1729 { yyVAL.InterfaceExtends = nil @@ -3886,7 +3892,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1731 + //line php5/php5.y:1735 { yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) @@ -3900,7 +3906,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1746 + //line php5/php5.y:1750 { yyVAL.ClassImplements = nil @@ -3908,7 +3914,7 @@ yydefault: } case 106: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1752 + //line php5/php5.y:1756 { yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) @@ -3922,7 +3928,7 @@ yydefault: } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1767 + //line php5/php5.y:1771 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -3930,7 +3936,7 @@ yydefault: } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1773 + //line php5/php5.y:1777 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3941,7 +3947,7 @@ yydefault: } case 109: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1785 + //line php5/php5.y:1789 { yyVAL.node = nil @@ -3949,7 +3955,7 @@ yydefault: } case 110: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1791 + //line php5/php5.y:1795 { yyVAL.node = yyDollar[2].node @@ -3960,7 +3966,7 @@ yydefault: } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1803 + //line php5/php5.y:1807 { yyVAL.node = yyDollar[1].node @@ -3968,7 +3974,7 @@ yydefault: } case 112: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1809 + //line php5/php5.y:1813 { yyVAL.node = expr.NewReference(yyDollar[2].node) @@ -3982,7 +3988,7 @@ yydefault: } case 113: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1821 + //line php5/php5.y:1825 { yyVAL.node = expr.NewList(yyDollar[3].list) @@ -3998,7 +4004,7 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1838 + //line php5/php5.y:1842 { yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) @@ -4009,7 +4015,7 @@ yydefault: } case 115: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1847 + //line php5/php5.y:1851 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) @@ -4028,7 +4034,7 @@ yydefault: } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1867 + //line php5/php5.y:1871 { yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node) @@ -4039,7 +4045,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1876 + //line php5/php5.y:1880 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList) @@ -4058,7 +4064,7 @@ yydefault: } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1897 + //line php5/php5.y:1901 { yyVAL.node = stmt.NewDeclare(nil, yyDollar[1].node, false) @@ -4069,7 +4075,7 @@ yydefault: } case 119: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1906 + //line php5/php5.y:1910 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewDeclare(nil, stmtList, true) @@ -4088,7 +4094,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1927 + //line php5/php5.y:1931 { name := node.NewIdentifier(yyDollar[1].token.Value) constant := stmt.NewConstant(name, yyDollar[3].node, "") @@ -4099,14 +4105,14 @@ yydefault: constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 121: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1943 + //line php5/php5.y:1947 { name := node.NewIdentifier(yyDollar[3].token.Value) constant := stmt.NewConstant(name, yyDollar[5].node, "") @@ -4118,14 +4124,14 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 122: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1964 + //line php5/php5.y:1968 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4142,7 +4148,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1979 + //line php5/php5.y:1983 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -4161,7 +4167,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1996 + //line php5/php5.y:2000 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -4180,7 +4186,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2013 + //line php5/php5.y:2017 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -4202,7 +4208,7 @@ yydefault: } case 126: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2037 + //line php5/php5.y:2041 { yyVAL.list = []node.Node{} @@ -4210,7 +4216,7 @@ yydefault: } case 127: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2043 + //line php5/php5.y:2047 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yyVAL.list = append(yyDollar[1].list, _case) @@ -4227,7 +4233,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2058 + //line php5/php5.y:2062 { _default := stmt.NewDefault(yyDollar[4].list) yyVAL.list = append(yyDollar[1].list, _default) @@ -4244,19 +4250,19 @@ yydefault: } case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2077 + //line php5/php5.y:2081 { yyVAL.token = yyDollar[1].token } case 130: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2081 + //line php5/php5.y:2085 { yyVAL.token = yyDollar[1].token } case 131: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2089 + //line php5/php5.y:2093 { yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) @@ -4267,7 +4273,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2098 + //line php5/php5.y:2102 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltWhile(nil, stmtList) @@ -4286,7 +4292,7 @@ yydefault: } case 133: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2120 + //line php5/php5.y:2124 { yyVAL.list = nil @@ -4294,7 +4300,7 @@ yydefault: } case 134: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2126 + //line php5/php5.y:2130 { _elseIf := stmt.NewElseIf(yyDollar[3].node, yyDollar[4].node) yyVAL.list = append(yyDollar[1].list, _elseIf) @@ -4311,7 +4317,7 @@ yydefault: } case 135: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2145 + //line php5/php5.y:2149 { yyVAL.list = nil @@ -4319,7 +4325,7 @@ yydefault: } case 136: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2151 + //line php5/php5.y:2155 { stmts := stmt.NewStmtList(yyDollar[5].list) _elseIf := stmt.NewAltElseIf(yyDollar[3].node, stmts) @@ -4339,7 +4345,7 @@ yydefault: } case 137: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2173 + //line php5/php5.y:2177 { yyVAL.node = nil @@ -4347,7 +4353,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2179 + //line php5/php5.y:2183 { yyVAL.node = stmt.NewElse(yyDollar[2].node) @@ -4361,7 +4367,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2195 + //line php5/php5.y:2199 { yyVAL.node = nil @@ -4369,7 +4375,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2201 + //line php5/php5.y:2205 { stmts := stmt.NewStmtList(yyDollar[3].list) yyVAL.node = stmt.NewAltElse(stmts) @@ -4386,7 +4392,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2220 + //line php5/php5.y:2224 { yyVAL.list = yyDollar[1].list @@ -4394,7 +4400,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2226 + //line php5/php5.y:2230 { yyVAL.list = nil @@ -4402,7 +4408,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2235 + //line php5/php5.y:2239 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4410,7 +4416,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2241 + //line php5/php5.y:2245 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4421,7 +4427,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2253 + //line php5/php5.y:2257 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4441,20 +4447,27 @@ yydefault: } // save comments + if yyDollar[1].node != nil { + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + } if yyDollar[2].token != nil { yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) } if yyDollar[3].token != nil { yyDollar[3].token.Meta.SetTokenName(meta.EllipsisToken).AppendTo(yyVAL.node.GetMeta()) } - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + if yyDollar[1].node == nil && yyDollar[2].token == nil && yyDollar[3].token == nil { + yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + } else { + yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + } yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:2284 + //line php5/php5.y:2295 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4474,13 +4487,20 @@ yydefault: } // save comments + if yyDollar[1].node != nil { + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + } if yyDollar[2].token != nil { yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) } if yyDollar[3].token != nil { yyDollar[3].token.Meta.SetTokenName(meta.EllipsisToken).AppendTo(yyVAL.node.GetMeta()) } - yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + if yyDollar[1].node == nil && yyDollar[2].token == nil && yyDollar[3].token == nil { + yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) + } else { + yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + } yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[5].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) @@ -4488,7 +4508,7 @@ yydefault: } case 147: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2320 + //line php5/php5.y:2338 { yyVAL.node = nil @@ -4496,7 +4516,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2326 + //line php5/php5.y:2344 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4510,7 +4530,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2338 + //line php5/php5.y:2356 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4524,7 +4544,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2350 + //line php5/php5.y:2368 { yyVAL.node = yyDollar[1].node @@ -4532,7 +4552,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2360 + //line php5/php5.y:2378 { yyVAL.node = node.NewArgumentList(nil) @@ -4547,7 +4567,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2373 + //line php5/php5.y:2391 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -4562,7 +4582,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2386 + //line php5/php5.y:2404 { arg := node.NewArgument(yyDollar[2].node, false, false) yyVAL.node = node.NewArgumentList([]node.Node{arg}) @@ -4579,7 +4599,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2405 + //line php5/php5.y:2423 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4587,7 +4607,7 @@ yydefault: } case 155: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2411 + //line php5/php5.y:2429 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4598,29 +4618,35 @@ yydefault: } case 156: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2423 + //line php5/php5.y:2441 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + // save comments + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2432 + //line php5/php5.y:2453 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + // save comments + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 158: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2441 + //line php5/php5.y:2465 { yyVAL.node = node.NewArgument(yyDollar[2].node, false, true) @@ -4634,7 +4660,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2453 + //line php5/php5.y:2477 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4648,7 +4674,7 @@ yydefault: } case 160: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2468 + //line php5/php5.y:2492 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4659,7 +4685,7 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2477 + //line php5/php5.y:2501 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4667,7 +4693,7 @@ yydefault: } case 162: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2487 + //line php5/php5.y:2511 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -4684,7 +4710,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2502 + //line php5/php5.y:2526 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -4700,7 +4726,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2516 + //line php5/php5.y:2540 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -4719,7 +4745,7 @@ yydefault: } case 165: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2537 + //line php5/php5.y:2561 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4733,14 +4759,14 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 166: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2556 + //line php5/php5.y:2580 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4754,7 +4780,7 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(staticVar.GetMeta()) @@ -4762,7 +4788,7 @@ yydefault: } case 167: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2576 + //line php5/php5.y:2600 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4775,14 +4801,14 @@ yydefault: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 168: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2594 + //line php5/php5.y:2618 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -4795,7 +4821,7 @@ yydefault: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(staticVar.GetMeta()) @@ -4803,7 +4829,7 @@ yydefault: } case 169: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2617 + //line php5/php5.y:2641 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4811,7 +4837,7 @@ yydefault: } case 170: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2623 + //line php5/php5.y:2647 { yyVAL.list = []node.Node{} @@ -4819,7 +4845,7 @@ yydefault: } case 171: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2633 + //line php5/php5.y:2657 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4830,11 +4856,13 @@ yydefault: yyDollar[3].token.Meta.SetTokenName(meta.SemiColonToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.SemiColonToken) + yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2646 + //line php5/php5.y:2672 { yyVAL.node = yyDollar[1].node @@ -4849,7 +4877,7 @@ yydefault: } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2659 + //line php5/php5.y:2685 { yyVAL.node = yyDollar[1].node @@ -4857,7 +4885,7 @@ yydefault: } case 174: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:2665 + //line php5/php5.y:2691 { name := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewClassMethod(name, yyDollar[1].list, yyDollar[3].token != nil, yyDollar[6].list, nil, yyDollar[8].node, "") @@ -4883,7 +4911,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2692 + //line php5/php5.y:2718 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].node) @@ -4897,7 +4925,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2707 + //line php5/php5.y:2733 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4905,7 +4933,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2713 + //line php5/php5.y:2739 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4916,7 +4944,7 @@ yydefault: } case 178: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2725 + //line php5/php5.y:2751 { yyVAL.node = stmt.NewNop() @@ -4930,7 +4958,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2738 + //line php5/php5.y:2764 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -4944,7 +4972,7 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2753 + //line php5/php5.y:2779 { yyVAL.list = nil @@ -4952,7 +4980,7 @@ yydefault: } case 181: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2759 + //line php5/php5.y:2785 { yyVAL.list = yyDollar[1].list @@ -4960,7 +4988,7 @@ yydefault: } case 182: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2768 + //line php5/php5.y:2794 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -4968,7 +4996,7 @@ yydefault: } case 183: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2774 + //line php5/php5.y:2800 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4976,7 +5004,7 @@ yydefault: } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2783 + //line php5/php5.y:2809 { yyVAL.node = yyDollar[1].node @@ -4988,7 +5016,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2793 + //line php5/php5.y:2819 { yyVAL.node = yyDollar[1].node @@ -5000,7 +5028,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2806 + //line php5/php5.y:2832 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -5014,7 +5042,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2821 + //line php5/php5.y:2847 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5022,7 +5050,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2827 + //line php5/php5.y:2853 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5033,7 +5061,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2839 + //line php5/php5.y:2865 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -5049,7 +5077,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2853 + //line php5/php5.y:2879 { yyVAL.node = yyDollar[1].node @@ -5057,7 +5085,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2862 + //line php5/php5.y:2888 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -5074,7 +5102,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2880 + //line php5/php5.y:2906 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -5091,7 +5119,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2895 + //line php5/php5.y:2921 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -5105,7 +5133,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2910 + //line php5/php5.y:2936 { yyVAL.node = nil @@ -5113,7 +5141,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2916 + //line php5/php5.y:2942 { yyVAL.node = yyDollar[1].node @@ -5121,7 +5149,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2925 + //line php5/php5.y:2951 { yyVAL.node = stmt.NewNop() @@ -5136,7 +5164,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2938 + //line php5/php5.y:2964 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -5151,7 +5179,7 @@ yydefault: } case 198: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2954 + //line php5/php5.y:2980 { yyVAL.list = yyDollar[1].list @@ -5159,7 +5187,7 @@ yydefault: } case 199: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2960 + //line php5/php5.y:2986 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -5174,7 +5202,7 @@ yydefault: } case 200: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2976 + //line php5/php5.y:3002 { yyVAL.list = nil @@ -5182,7 +5210,7 @@ yydefault: } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2982 + //line php5/php5.y:3008 { yyVAL.list = yyDollar[1].list @@ -5190,7 +5218,7 @@ yydefault: } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2991 + //line php5/php5.y:3017 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5198,7 +5226,7 @@ yydefault: } case 203: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2997 + //line php5/php5.y:3023 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5206,7 +5234,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3006 + //line php5/php5.y:3032 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5220,7 +5248,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3018 + //line php5/php5.y:3044 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5234,7 +5262,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3030 + //line php5/php5.y:3056 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5248,7 +5276,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3042 + //line php5/php5.y:3068 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5262,7 +5290,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3054 + //line php5/php5.y:3080 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5276,7 +5304,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3066 + //line php5/php5.y:3092 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5290,7 +5318,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3081 + //line php5/php5.y:3107 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5311,7 +5339,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3100 + //line php5/php5.y:3126 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5333,7 +5361,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3120 + //line php5/php5.y:3146 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5353,7 +5381,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3138 + //line php5/php5.y:3164 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -5374,7 +5402,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3160 + //line php5/php5.y:3186 { name := node.NewIdentifier(yyDollar[3].token.Value) constant := stmt.NewConstant(name, yyDollar[5].node, "") @@ -5390,14 +5418,14 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastConst.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 215: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3181 + //line php5/php5.y:3207 { name := node.NewIdentifier(yyDollar[2].token.Value) constant := stmt.NewConstant(name, yyDollar[4].node, "") @@ -5410,14 +5438,14 @@ yydefault: // save comments yyDollar[1].token.Meta.SetTokenName(meta.ConstToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 216: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3202 + //line php5/php5.y:3228 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5428,7 +5456,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3211 + //line php5/php5.y:3237 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5436,7 +5464,7 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3221 + //line php5/php5.y:3247 { yyVAL.list = nil @@ -5444,7 +5472,7 @@ yydefault: } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3227 + //line php5/php5.y:3253 { yyVAL.list = yyDollar[1].list @@ -5452,7 +5480,7 @@ yydefault: } case 220: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3236 + //line php5/php5.y:3262 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5463,7 +5491,7 @@ yydefault: } case 221: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3245 + //line php5/php5.y:3271 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -5471,7 +5499,7 @@ yydefault: } case 222: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3254 + //line php5/php5.y:3280 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -5479,7 +5507,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3260 + //line php5/php5.y:3286 { yyVAL.list = yyDollar[1].list @@ -5487,7 +5515,7 @@ yydefault: } case 224: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3269 + //line php5/php5.y:3295 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -5505,7 +5533,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3285 + //line php5/php5.y:3311 { fetch := expr.NewArrayDimFetch(nil, yyDollar[2].node) yyVAL.list = []node.Node{fetch} @@ -5523,7 +5551,7 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3304 + //line php5/php5.y:3330 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -5531,7 +5559,7 @@ yydefault: } case 227: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3310 + //line php5/php5.y:3336 { yyVAL.list = yyDollar[1].list @@ -5539,7 +5567,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3316 + //line php5/php5.y:3342 { yyVAL.list = yyDollar[1].list @@ -5547,7 +5575,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3325 + //line php5/php5.y:3351 { yyVAL.list = nil @@ -5555,7 +5583,7 @@ yydefault: } case 230: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3331 + //line php5/php5.y:3357 { yyVAL.list = yyDollar[1].list @@ -5563,7 +5591,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3340 + //line php5/php5.y:3366 { if yyDollar[3].node != nil { @@ -5581,7 +5609,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3359 + //line php5/php5.y:3385 { list := expr.NewList(yyDollar[3].list) yyVAL.node = assign.NewAssign(list, yyDollar[6].node) @@ -5591,7 +5619,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(list.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) yyDollar[5].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) @@ -5600,7 +5628,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3376 + //line php5/php5.y:3402 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -5614,13 +5642,15 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3388 + //line php5/php5.y:3414 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + // save comments yyDollar[2].token.Meta.SetTokenName(meta.EqualToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) @@ -5629,7 +5659,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3401 + //line php5/php5.y:3429 { var _new *expr.New @@ -5653,11 +5683,13 @@ yydefault: yyDollar[3].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.NodeStart).AppendTo(_new.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 236: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3427 + //line php5/php5.y:3457 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5671,7 +5703,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3439 + //line php5/php5.y:3469 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5681,11 +5713,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PlusEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 238: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3451 + //line php5/php5.y:3483 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5695,11 +5729,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.MinusEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3463 + //line php5/php5.y:3497 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5709,11 +5745,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.MulEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 240: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3475 + //line php5/php5.y:3511 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5723,11 +5761,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PowEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 241: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3487 + //line php5/php5.y:3525 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5737,11 +5777,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DivEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3499 + //line php5/php5.y:3539 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5751,11 +5793,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.ConcatEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 243: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3511 + //line php5/php5.y:3553 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5765,11 +5809,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.ModEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3523 + //line php5/php5.y:3567 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5779,11 +5825,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AndEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 245: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3535 + //line php5/php5.y:3581 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5793,11 +5841,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.OrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 246: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3547 + //line php5/php5.y:3595 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5807,11 +5857,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.XorEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3559 + //line php5/php5.y:3609 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5821,11 +5873,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SlEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 248: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3571 + //line php5/php5.y:3623 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5835,11 +5889,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3583 + //line php5/php5.y:3637 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5849,11 +5905,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IncToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 250: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3595 + //line php5/php5.y:3651 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5867,7 +5925,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3607 + //line php5/php5.y:3663 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5877,11 +5935,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DecToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3619 + //line php5/php5.y:3677 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5895,7 +5955,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3631 + //line php5/php5.y:3689 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5905,11 +5965,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.BooleanOrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 254: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3643 + //line php5/php5.y:3703 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5919,11 +5981,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.BooleanAndToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3655 + //line php5/php5.y:3717 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -5933,11 +5997,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalOrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3667 + //line php5/php5.y:3731 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -5947,11 +6013,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalAndToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3679 + //line php5/php5.y:3745 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -5961,11 +6029,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalXorToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 258: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3691 + //line php5/php5.y:3759 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5975,11 +6045,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.VerticalBarToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3703 + //line php5/php5.y:3773 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5989,11 +6061,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 260: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3715 + //line php5/php5.y:3787 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -6003,11 +6077,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.CaretToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 261: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3727 + //line php5/php5.y:3801 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -6017,11 +6093,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DotToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3739 + //line php5/php5.y:3815 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -6031,11 +6109,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PlusToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 263: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3751 + //line php5/php5.y:3829 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -6045,11 +6125,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.MinusToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3763 + //line php5/php5.y:3843 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -6059,11 +6141,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AsteriskToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 265: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3775 + //line php5/php5.y:3857 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -6073,11 +6157,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PowToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 266: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3787 + //line php5/php5.y:3871 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -6087,11 +6173,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SlashToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 267: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3799 + //line php5/php5.y:3885 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -6101,11 +6189,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PercentToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 268: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3811 + //line php5/php5.y:3899 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -6115,11 +6205,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SlToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 269: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3823 + //line php5/php5.y:3913 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -6129,11 +6221,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3835 + //line php5/php5.y:3927 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -6147,7 +6241,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3847 + //line php5/php5.y:3939 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -6161,7 +6255,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3859 + //line php5/php5.y:3951 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -6175,7 +6269,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3871 + //line php5/php5.y:3963 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -6189,7 +6283,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3883 + //line php5/php5.y:3975 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6199,11 +6293,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 275: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3895 + //line php5/php5.y:3989 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -6213,11 +6309,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 276: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3907 + //line php5/php5.y:4003 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -6227,11 +6325,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3919 + //line php5/php5.y:4017 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -6242,11 +6342,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.IsNotEqualToken) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 278: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3932 + //line php5/php5.y:4032 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -6256,11 +6358,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LessToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 279: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3944 + //line php5/php5.y:4046 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6270,11 +6374,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 280: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3956 + //line php5/php5.y:4060 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -6284,11 +6390,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.GreaterToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3968 + //line php5/php5.y:4074 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -6298,11 +6406,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 282: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3980 + //line php5/php5.y:4088 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -6312,11 +6422,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.InstanceofToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 283: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3992 + //line php5/php5.y:4102 { yyVAL.node = yyDollar[1].node @@ -6327,7 +6439,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4001 + //line php5/php5.y:4111 { yyVAL.node = yyDollar[1].node @@ -6335,38 +6447,43 @@ yydefault: } case 285: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4007 + //line php5/php5.y:4117 { yyVAL.node = yyDollar[2].node + // save comments + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) + for _, n := range yyDollar[4].list { switch nn := n.(type) { case *expr.ArrayDimFetch: nn.Variable = yyVAL.node yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.PropertyFetch: nn.Variable = yyVAL.node yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.MethodCall: nn.Variable = yyVAL.node yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) } // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, n)) } - // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 286: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:4036 + //line php5/php5.y:4151 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -6377,11 +6494,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 287: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4049 + //line php5/php5.y:4166 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -6392,11 +6511,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 288: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4062 + //line php5/php5.y:4181 { yyVAL.node = yyDollar[1].node @@ -6404,7 +6525,7 @@ yydefault: } case 289: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4068 + //line php5/php5.y:4187 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -6419,7 +6540,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4081 + //line php5/php5.y:4200 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -6434,7 +6555,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4094 + //line php5/php5.y:4213 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -6449,7 +6570,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4107 + //line php5/php5.y:4226 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -6464,7 +6585,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4120 + //line php5/php5.y:4239 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -6479,7 +6600,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4133 + //line php5/php5.y:4252 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -6494,7 +6615,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4146 + //line php5/php5.y:4265 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -6509,7 +6630,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4159 + //line php5/php5.y:4278 { var e *expr.Exit if yyDollar[2].node != nil { @@ -6538,7 +6659,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4186 + //line php5/php5.y:4305 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -6552,7 +6673,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4198 + //line php5/php5.y:4317 { yyVAL.node = yyDollar[1].node @@ -6560,7 +6681,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4204 + //line php5/php5.y:4323 { yyVAL.node = yyDollar[1].node @@ -6568,7 +6689,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4210 + //line php5/php5.y:4329 { yyVAL.node = yyDollar[1].node @@ -6576,7 +6697,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4216 + //line php5/php5.y:4335 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -6590,7 +6711,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4228 + //line php5/php5.y:4347 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -6604,7 +6725,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4240 + //line php5/php5.y:4359 { yyVAL.node = expr.NewYield(nil, nil) @@ -6618,7 +6739,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:4252 + //line php5/php5.y:4371 { yyVAL.node = expr.NewClosure(yyDollar[4].list, yyDollar[6].ClosureUse, nil, yyDollar[8].list, false, yyDollar[2].token != nil, "") @@ -6639,7 +6760,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] - //line php5/php5.y:4271 + //line php5/php5.y:4390 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].ClosureUse, nil, yyDollar[9].list, true, yyDollar[3].token != nil, "") @@ -6661,7 +6782,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4294 + //line php5/php5.y:4413 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6675,7 +6796,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4306 + //line php5/php5.y:4425 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -6689,7 +6810,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4318 + //line php5/php5.y:4437 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6704,7 +6825,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4331 + //line php5/php5.y:4450 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -6719,7 +6840,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4347 + //line php5/php5.y:4466 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6732,11 +6853,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 311: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4362 + //line php5/php5.y:4483 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6749,11 +6872,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 312: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4377 + //line php5/php5.y:4500 { str := scalar.NewString(yyDollar[1].token.Value) yyVAL.node = expr.NewArrayDimFetch(str, yyDollar[3].node) @@ -6763,6 +6888,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(str, yyDollar[4].token)) // save comments + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) @@ -6772,7 +6898,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4394 + //line php5/php5.y:4518 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6785,11 +6911,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 314: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4412 + //line php5/php5.y:4538 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -6805,7 +6933,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4426 + //line php5/php5.y:4552 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -6820,13 +6948,13 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4442 + //line php5/php5.y:4568 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4449 + //line php5/php5.y:4575 { yyVAL.ClosureUse = nil @@ -6834,7 +6962,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4455 + //line php5/php5.y:4581 { yyVAL.ClosureUse = expr.NewClosureUse(yyDollar[3].list) @@ -6850,7 +6978,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4472 + //line php5/php5.y:4598 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6869,7 +6997,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4489 + //line php5/php5.y:4615 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6891,7 +7019,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4509 + //line php5/php5.y:4635 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6909,7 +7037,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4525 + //line php5/php5.y:4651 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[2].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -6930,7 +7058,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4547 + //line php5/php5.y:4673 { name := name.NewName(yyDollar[1].list) yyVAL.node = expr.NewFunctionCall(name, yyDollar[2].node.(*node.ArgumentList)) @@ -6939,11 +7067,14 @@ yydefault: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(name, yyDollar[2].node)) + // save comments + yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 324: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4558 + //line php5/php5.y:4687 { funcName := name.NewRelative(yyDollar[3].list) yyVAL.node = expr.NewFunctionCall(funcName, yyDollar[4].node.(*node.ArgumentList)) @@ -6953,14 +7084,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, yyDollar[4].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(funcName.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(funcName.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4573 + //line php5/php5.y:4702 { funcName := name.NewFullyQualified(yyDollar[2].list) yyVAL.node = expr.NewFunctionCall(funcName, yyDollar[3].node.(*node.ArgumentList)) @@ -6970,13 +7101,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, yyDollar[3].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(funcName.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 326: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4587 + //line php5/php5.y:4716 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6985,12 +7116,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 327: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4599 + //line php5/php5.y:4729 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6999,12 +7131,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 328: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4611 + //line php5/php5.y:4742 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7013,12 +7146,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 329: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4623 + //line php5/php5.y:4755 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -7027,23 +7161,25 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 330: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4635 + //line php5/php5.y:4768 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node)) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 331: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4647 + //line php5/php5.y:4781 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -7057,18 +7193,21 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4659 + //line php5/php5.y:4793 { yyVAL.node = name.NewName(yyDollar[1].list) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + // save comments + yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 333: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4668 + //line php5/php5.y:4805 { yyVAL.node = name.NewRelative(yyDollar[3].list) @@ -7083,7 +7222,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4681 + //line php5/php5.y:4818 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) @@ -7097,18 +7236,21 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4696 + //line php5/php5.y:4833 { yyVAL.node = name.NewName(yyDollar[1].list) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + // save comments + yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 336: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:4705 + //line php5/php5.y:4845 { yyVAL.node = name.NewRelative(yyDollar[3].list) @@ -7123,7 +7265,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4718 + //line php5/php5.y:4858 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) @@ -7137,7 +7279,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4733 + //line php5/php5.y:4873 { yyVAL.node = yyDollar[1].node @@ -7145,7 +7287,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4739 + //line php5/php5.y:4879 { yyVAL.node = yyDollar[1].node @@ -7153,7 +7295,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:4748 + //line php5/php5.y:4888 { yyVAL.node = yyDollar[1].node @@ -7166,11 +7308,13 @@ yydefault: nn.Variable = yyVAL.node yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.PropertyFetch: nn.Variable = yyVAL.node yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) } } @@ -7180,11 +7324,13 @@ yydefault: nn.Variable = yyVAL.node yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.PropertyFetch: nn.Variable = yyVAL.node yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) } } @@ -7192,7 +7338,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4785 + //line php5/php5.y:4929 { yyVAL.node = yyDollar[1].node @@ -7200,7 +7346,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4795 + //line php5/php5.y:4939 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -7208,7 +7354,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4801 + //line php5/php5.y:4945 { yyVAL.list = []node.Node{} @@ -7216,7 +7362,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4811 + //line php5/php5.y:4955 { yyVAL.list = yyDollar[2].list @@ -7227,7 +7373,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4823 + //line php5/php5.y:4967 { yyVAL.node = nil @@ -7235,7 +7381,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:4829 + //line php5/php5.y:4973 { yyVAL.node = expr.NewExit(nil) @@ -7252,7 +7398,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4844 + //line php5/php5.y:4988 { yyVAL.node = expr.NewExit(yyDollar[1].node) @@ -7271,7 +7417,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4864 + //line php5/php5.y:5008 { yyVAL.list = []node.Node{} @@ -7279,7 +7425,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4870 + //line php5/php5.y:5014 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} @@ -7287,7 +7433,7 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4876 + //line php5/php5.y:5020 { yyVAL.list = yyDollar[1].list @@ -7295,7 +7441,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:4885 + //line php5/php5.y:5029 { yyVAL.node = nil @@ -7303,7 +7449,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4891 + //line php5/php5.y:5035 { yyVAL.node = yyDollar[1].node @@ -7311,7 +7457,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4900 + //line php5/php5.y:5044 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -7325,7 +7471,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4912 + //line php5/php5.y:5056 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -7339,7 +7485,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4924 + //line php5/php5.y:5068 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -7353,7 +7499,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4936 + //line php5/php5.y:5080 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7367,7 +7513,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4948 + //line php5/php5.y:5092 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7381,7 +7527,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4960 + //line php5/php5.y:5104 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7395,7 +7541,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4972 + //line php5/php5.y:5116 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7409,7 +7555,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4984 + //line php5/php5.y:5128 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7423,7 +7569,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:4996 + //line php5/php5.y:5140 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7437,7 +7583,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5008 + //line php5/php5.y:5152 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7451,7 +7597,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5020 + //line php5/php5.y:5164 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -7467,7 +7613,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5034 + //line php5/php5.y:5178 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -7481,7 +7627,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5049 + //line php5/php5.y:5193 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -7494,11 +7640,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 366: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5067 + //line php5/php5.y:5213 { yyVAL.node = yyDollar[1].node @@ -7506,7 +7654,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5076 + //line php5/php5.y:5222 { yyVAL.node = yyDollar[1].node @@ -7514,7 +7662,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5082 + //line php5/php5.y:5228 { yyVAL.node = yyDollar[1].node @@ -7522,7 +7670,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5088 + //line php5/php5.y:5234 { name := name.NewName(yyDollar[1].list) yyVAL.node = expr.NewConstFetch(name) @@ -7531,11 +7679,14 @@ yydefault: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + // save comments + yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 370: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5099 + //line php5/php5.y:5248 { name := name.NewRelative(yyDollar[3].list) yyVAL.node = expr.NewConstFetch(name) @@ -7545,14 +7696,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 371: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5114 + //line php5/php5.y:5263 { name := name.NewFullyQualified(yyDollar[2].list) yyVAL.node = expr.NewConstFetch(name) @@ -7562,13 +7713,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 372: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5128 + //line php5/php5.y:5277 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -7584,7 +7735,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5142 + //line php5/php5.y:5291 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -7599,7 +7750,7 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5155 + //line php5/php5.y:5304 { yyVAL.node = yyDollar[1].node @@ -7607,7 +7758,7 @@ yydefault: } case 375: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5161 + //line php5/php5.y:5310 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -7621,7 +7772,7 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5173 + //line php5/php5.y:5322 { yyVAL.node = yyDollar[1].node @@ -7629,7 +7780,7 @@ yydefault: } case 377: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5182 + //line php5/php5.y:5331 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -7642,11 +7793,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 378: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5197 + //line php5/php5.y:5348 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -7656,11 +7809,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PlusToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 379: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5209 + //line php5/php5.y:5362 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -7670,11 +7825,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.MinusToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 380: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5221 + //line php5/php5.y:5376 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -7684,11 +7841,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AsteriskToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 381: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5233 + //line php5/php5.y:5390 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -7698,11 +7857,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PowToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 382: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5245 + //line php5/php5.y:5404 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -7712,11 +7873,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SlashToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 383: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5257 + //line php5/php5.y:5418 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -7726,11 +7889,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PercentToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 384: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5269 + //line php5/php5.y:5432 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -7744,7 +7909,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5281 + //line php5/php5.y:5444 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -7758,7 +7923,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5293 + //line php5/php5.y:5456 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -7768,11 +7933,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.VerticalBarToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 387: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5305 + //line php5/php5.y:5470 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -7782,11 +7949,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.AmpersandToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 388: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5317 + //line php5/php5.y:5484 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -7796,11 +7965,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.CaretToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5329 + //line php5/php5.y:5498 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -7810,11 +7981,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SlToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 390: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5341 + //line php5/php5.y:5512 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -7824,11 +7997,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.SrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 391: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5353 + //line php5/php5.y:5526 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -7838,11 +8013,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DotToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 392: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5365 + //line php5/php5.y:5540 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -7852,11 +8029,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalXorToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 393: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5377 + //line php5/php5.y:5554 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -7866,11 +8045,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalAndToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 394: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5389 + //line php5/php5.y:5568 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -7880,11 +8061,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LogicalOrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 395: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5401 + //line php5/php5.y:5582 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -7894,11 +8077,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.BooleanAndToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5413 + //line php5/php5.y:5596 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -7908,11 +8093,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.BooleanOrToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 397: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5425 + //line php5/php5.y:5610 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -7922,11 +8109,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 398: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5437 + //line php5/php5.y:5624 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -7936,11 +8125,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 399: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5449 + //line php5/php5.y:5638 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -7950,11 +8141,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 400: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5461 + //line php5/php5.y:5652 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -7965,11 +8158,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.IsNotEqualToken) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 401: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5474 + //line php5/php5.y:5667 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -7979,11 +8174,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.LessToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 402: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5486 + //line php5/php5.y:5681 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -7993,11 +8190,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.GreaterToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 403: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5498 + //line php5/php5.y:5695 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -8007,11 +8206,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 404: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5510 + //line php5/php5.y:5709 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -8021,11 +8222,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 405: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5522 + //line php5/php5.y:5723 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -8036,11 +8239,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 406: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:5535 + //line php5/php5.y:5738 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -8051,11 +8256,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.ColonToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 407: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5548 + //line php5/php5.y:5753 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -8069,7 +8276,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5560 + //line php5/php5.y:5765 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -8083,19 +8290,21 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5572 + //line php5/php5.y:5777 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) + yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 410: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5585 + //line php5/php5.y:5792 { yyVAL.node = yyDollar[1].node @@ -8103,7 +8312,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5591 + //line php5/php5.y:5798 { name := name.NewName(yyDollar[1].list) yyVAL.node = expr.NewConstFetch(name) @@ -8112,11 +8321,14 @@ yydefault: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + // save comments + yyDollar[1].list[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 412: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5602 + //line php5/php5.y:5812 { name := name.NewRelative(yyDollar[3].list) yyVAL.node = expr.NewConstFetch(name) @@ -8124,14 +8336,14 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 413: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5615 + //line php5/php5.y:5825 { name := name.NewFullyQualified(yyDollar[2].list) yyVAL.node = expr.NewConstFetch(name) @@ -8141,13 +8353,13 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5632 + //line php5/php5.y:5842 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = expr.NewVariable(name) @@ -8164,7 +8376,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5647 + //line php5/php5.y:5857 { yyVAL.node = yyDollar[1].node @@ -8172,7 +8384,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5653 + //line php5/php5.y:5863 { yyVAL.node = yyDollar[1].node @@ -8180,7 +8392,7 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5659 + //line php5/php5.y:5869 { yyVAL.node = yyDollar[1].node @@ -8188,7 +8400,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5665 + //line php5/php5.y:5875 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -8202,7 +8414,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5677 + //line php5/php5.y:5887 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -8216,7 +8428,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5689 + //line php5/php5.y:5899 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -8230,7 +8442,7 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:5704 + //line php5/php5.y:5914 { yyVAL.list = nil @@ -8238,7 +8450,7 @@ yydefault: } case 422: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5710 + //line php5/php5.y:5920 { yyVAL.list = yyDollar[1].list @@ -8251,19 +8463,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:5724 + //line php5/php5.y:5934 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5728 + //line php5/php5.y:5938 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:5735 + //line php5/php5.y:5945 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8275,11 +8487,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5749 + //line php5/php5.y:5961 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8290,11 +8504,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 427: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5762 + //line php5/php5.y:5976 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) yyVAL.list = []node.Node{arrayItem} @@ -8305,11 +8521,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5775 + //line php5/php5.y:5991 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node) yyVAL.list = []node.Node{arrayItem} @@ -8317,11 +8535,13 @@ yydefault: // save position arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 429: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5788 + //line php5/php5.y:6006 { yyVAL.node = yyDollar[1].node @@ -8329,7 +8549,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5794 + //line php5/php5.y:6012 { yyVAL.node = yyDollar[1].node @@ -8337,13 +8557,13 @@ yydefault: } case 431: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5803 + //line php5/php5.y:6021 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.OpenParenthesisToken) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.OpenParenthesisToken) + yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.CloseParenthesisToken) @@ -8351,13 +8571,13 @@ yydefault: } case 432: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5815 + //line php5/php5.y:6033 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.OpenParenthesisToken) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.OpenParenthesisToken) + yyDollar[1].token.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.CloseParenthesisToken) @@ -8365,7 +8585,7 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5831 + //line php5/php5.y:6049 { yyVAL.node = yyDollar[1].node @@ -8373,7 +8593,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5841 + //line php5/php5.y:6059 { yyVAL.node = yyDollar[1].node @@ -8381,7 +8601,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5850 + //line php5/php5.y:6068 { yyVAL.node = yyDollar[1].node @@ -8389,7 +8609,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:5859 + //line php5/php5.y:6077 { yyVAL.node = yyDollar[1].node @@ -8407,16 +8627,19 @@ yydefault: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.PropertyFetch: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.MethodCall: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) } } @@ -8426,16 +8649,19 @@ yydefault: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.PropertyFetch: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) case *expr.MethodCall: nn.Variable = yyVAL.node nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) yyVAL.node = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) } } @@ -8443,7 +8669,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5911 + //line php5/php5.y:6135 { yyVAL.node = yyDollar[1].node @@ -8451,7 +8677,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:5920 + //line php5/php5.y:6144 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -8459,7 +8685,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:5926 + //line php5/php5.y:6150 { yyVAL.list = []node.Node{} @@ -8467,7 +8693,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:5936 + //line php5/php5.y:6160 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*expr.MethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*expr.PropertyFetch).Property @@ -8483,7 +8709,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5953 + //line php5/php5.y:6177 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -8501,7 +8727,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:5969 + //line php5/php5.y:6193 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = []node.Node{yyDollar[1].node, fetch} @@ -8519,7 +8745,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:5988 + //line php5/php5.y:6212 { yyVAL.node = expr.NewMethodCall(nil, nil, yyDollar[1].node.(*node.ArgumentList)) @@ -8530,7 +8756,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6000 + //line php5/php5.y:6224 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -8538,7 +8764,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6006 + //line php5/php5.y:6230 { yyVAL.list = yyDollar[1].list @@ -8546,7 +8772,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6012 + //line php5/php5.y:6236 { yyVAL.list = nil @@ -8554,7 +8780,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6021 + //line php5/php5.y:6245 { yyVAL.node = yyDollar[1].node @@ -8562,7 +8788,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6027 + //line php5/php5.y:6251 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -8576,7 +8802,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6042 + //line php5/php5.y:6266 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -8586,11 +8812,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 450: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6054 + //line php5/php5.y:6280 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -8600,11 +8828,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6069 + //line php5/php5.y:6297 { yyVAL.node = yyDollar[1].node @@ -8612,7 +8842,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6078 + //line php5/php5.y:6306 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8625,11 +8855,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 453: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6093 + //line php5/php5.y:6323 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8642,11 +8874,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6111 + //line php5/php5.y:6343 { yyVAL.node = yyDollar[1].node @@ -8654,7 +8888,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6117 + //line php5/php5.y:6349 { yyVAL.node = yyDollar[1].node @@ -8662,7 +8896,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6123 + //line php5/php5.y:6355 { yyVAL.node = yyDollar[1].node @@ -8670,7 +8904,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6133 + //line php5/php5.y:6365 { yyVAL.node = yyDollar[1].node @@ -8678,7 +8912,7 @@ yydefault: } case 458: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6139 + //line php5/php5.y:6371 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -8692,7 +8926,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6151 + //line php5/php5.y:6383 { yyVAL.node = yyDollar[1].node @@ -8700,7 +8934,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6160 + //line php5/php5.y:6392 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8713,11 +8947,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseSquareBracket) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6175 + //line php5/php5.y:6409 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -8730,11 +8966,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[4].token, meta.CloseCurlyBracesToken) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 462: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6190 + //line php5/php5.y:6426 { yyVAL.node = yyDollar[1].node @@ -8742,7 +8980,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6200 + //line php5/php5.y:6436 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -8759,7 +8997,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6215 + //line php5/php5.y:6451 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -8778,7 +9016,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6235 + //line php5/php5.y:6471 { yyVAL.node = nil @@ -8786,7 +9024,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6241 + //line php5/php5.y:6477 { yyVAL.node = yyDollar[1].node @@ -8794,7 +9032,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6251 + //line php5/php5.y:6487 { yyVAL.list = yyDollar[1].list @@ -8802,7 +9040,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6257 + //line php5/php5.y:6493 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yyVAL.list = []node.Node{fetch} @@ -8814,7 +9052,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6270 + //line php5/php5.y:6506 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -8832,7 +9070,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6286 + //line php5/php5.y:6522 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, fetch) @@ -8850,7 +9088,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6302 + //line php5/php5.y:6538 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yyVAL.list = []node.Node{fetch} @@ -8862,7 +9100,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6315 + //line php5/php5.y:6551 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -8876,7 +9114,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6327 + //line php5/php5.y:6563 { yyVAL.node = yyDollar[2].node @@ -8884,8 +9122,8 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) - yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) @@ -8893,7 +9131,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6345 + //line php5/php5.y:6581 { n := expr.NewVariable(nil) yyVAL.simpleIndirectReference = simpleIndirectReference{[]*expr.Variable{n}, n} @@ -8909,7 +9147,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6359 + //line php5/php5.y:6595 { n := expr.NewVariable(nil) @@ -8929,7 +9167,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6380 + //line php5/php5.y:6616 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil)} @@ -8944,7 +9182,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6393 + //line php5/php5.y:6629 { if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { yyVAL.list = []node.Node{} @@ -8956,18 +9194,20 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6407 + //line php5/php5.y:6643 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) // save position yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 479: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6416 + //line php5/php5.y:6654 { item := expr.NewList(yyDollar[3].list) yyVAL.node = expr.NewArrayItem(nil, item) @@ -8977,7 +9217,7 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(item)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(item.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yyDollar[2].token.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(item.GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(item.GetMeta()) @@ -8985,7 +9225,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6432 + //line php5/php5.y:6670 { yyVAL.node = expr.NewArrayItem(nil, nil) @@ -8993,7 +9233,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:6442 + //line php5/php5.y:6680 { yyVAL.list = []node.Node{} @@ -9001,7 +9241,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6448 + //line php5/php5.y:6686 { yyVAL.list = yyDollar[1].list @@ -9018,7 +9258,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:6466 + //line php5/php5.y:6704 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -9030,11 +9270,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) yyDollar[4].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 484: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6480 + //line php5/php5.y:6720 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node) yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -9045,11 +9287,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) + yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 485: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6493 + //line php5/php5.y:6735 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) yyVAL.list = []node.Node{arrayItem} @@ -9060,11 +9304,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 486: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6506 + //line php5/php5.y:6750 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node) yyVAL.list = []node.Node{arrayItem} @@ -9072,11 +9318,13 @@ yydefault: // save position arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 487: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:6516 + //line php5/php5.y:6762 { reference := expr.NewReference(yyDollar[6].node) arrayItem := expr.NewArrayItem(yyDollar[3].node, reference) @@ -9091,11 +9339,13 @@ yydefault: yyDollar[4].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) yyDollar[5].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + yyDollar[3].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 488: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6533 + //line php5/php5.y:6781 { reference := expr.NewReference(yyDollar[4].node) arrayItem := expr.NewArrayItem(nil, reference) @@ -9107,13 +9357,13 @@ yydefault: // save comments yyDollar[2].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode(yyDollar[1].list).GetMeta()) - yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(arrayItem.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 489: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6549 + //line php5/php5.y:6797 { reference := expr.NewReference(yyDollar[4].node) arrayItem := expr.NewArrayItem(yyDollar[1].node, reference) @@ -9127,11 +9377,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 490: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6565 + //line php5/php5.y:6815 { reference := expr.NewReference(yyDollar[2].node) arrayItem := expr.NewArrayItem(nil, reference) @@ -9142,13 +9394,13 @@ yydefault: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(arrayItem.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 491: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6583 + //line php5/php5.y:6833 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -9156,7 +9408,7 @@ yydefault: } case 492: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6589 + //line php5/php5.y:6839 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -9171,7 +9423,7 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6602 + //line php5/php5.y:6852 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -9179,7 +9431,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6608 + //line php5/php5.y:6858 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -9194,7 +9446,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6624 + //line php5/php5.y:6874 { name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(name) @@ -9211,7 +9463,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6639 + //line php5/php5.y:6889 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -9223,7 +9475,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[2].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[2].token, meta.OpenSquareBracket) @@ -9234,7 +9485,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6660 + //line php5/php5.y:6909 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) variable := expr.NewVariable(identifier) @@ -9248,7 +9499,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yyDollar[2].token.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(fetch.GetMeta()) @@ -9257,7 +9507,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6681 + //line php5/php5.y:6929 { variable := expr.NewVariable(yyDollar[2].node) @@ -9267,7 +9517,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) @@ -9276,7 +9525,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6698 + //line php5/php5.y:6945 { name := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(name) @@ -9288,7 +9537,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) yyDollar[2].token.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) @@ -9298,7 +9546,7 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:6718 + //line php5/php5.y:6964 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -9310,7 +9558,6 @@ yydefault: yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) yyDollar[3].token.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.OpenSquareBracket) @@ -9323,12 +9570,11 @@ yydefault: } case 501: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6741 + //line php5/php5.y:6986 { yyVAL.node = yyDollar[2].node // save comments - yyDollar[1].token.Meta.SetTokenName(meta.NodeStart).PrependTo(yyVAL.node.GetMeta()) yylex.(*Parser).prependMetaToken(yyVAL.node, yyDollar[1].token, meta.NodeStart) yyDollar[3].token.Meta.SetTokenName(meta.NodeEnd).AppendTo(yyVAL.node.GetMeta()) yylex.(*Parser).appendMetaToken(yyVAL.node, yyDollar[3].token, meta.NodeEnd) @@ -9337,7 +9583,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6756 + //line php5/php5.y:7000 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -9351,7 +9597,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6768 + //line php5/php5.y:7012 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -9367,7 +9613,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6782 + //line php5/php5.y:7026 { identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) yyVAL.node = expr.NewVariable(identifier) @@ -9384,7 +9630,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6800 + //line php5/php5.y:7044 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -9400,7 +9646,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6814 + //line php5/php5.y:7058 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -9416,7 +9662,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6828 + //line php5/php5.y:7072 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -9432,7 +9678,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6842 + //line php5/php5.y:7086 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -9446,7 +9692,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6854 + //line php5/php5.y:7098 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -9460,7 +9706,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:6866 + //line php5/php5.y:7110 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -9476,7 +9722,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6880 + //line php5/php5.y:7124 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -9490,7 +9736,7 @@ yydefault: } case 512: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:6892 + //line php5/php5.y:7136 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -9504,7 +9750,7 @@ yydefault: } case 513: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6907 + //line php5/php5.y:7151 { yyVAL.list = []node.Node{yyDollar[1].node} @@ -9512,7 +9758,7 @@ yydefault: } case 514: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6913 + //line php5/php5.y:7157 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -9523,7 +9769,7 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6925 + //line php5/php5.y:7169 { yyVAL.node = yyDollar[1].node @@ -9531,7 +9777,7 @@ yydefault: } case 516: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:6931 + //line php5/php5.y:7175 { yyVAL.node = yyDollar[1].node @@ -9539,7 +9785,7 @@ yydefault: } case 517: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6940 + //line php5/php5.y:7184 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9552,11 +9798,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 518: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6955 + //line php5/php5.y:7201 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9569,11 +9817,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 519: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6973 + //line php5/php5.y:7221 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9586,11 +9836,13 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 520: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:6991 + //line php5/php5.y:7241 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -9603,6 +9855,8 @@ yydefault: yyDollar[2].token.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo(yyVAL.node.GetMeta()) yyDollar[3].token.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + yyDollar[1].node.GetMeta().Cut(newInheritMetaFilter()).PrependTo(yyVAL.node.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } } diff --git a/php5/php5.y b/php5/php5.y index 543e801..5c6de94 100644 --- a/php5/php5.y +++ b/php5/php5.y @@ -775,7 +775,7 @@ constant_declaration: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastConst.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $3.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) $4.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -794,7 +794,7 @@ constant_declaration: // save comments $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $2.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) $3.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -881,7 +881,7 @@ statement: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(label.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -1139,6 +1139,8 @@ unticked_statement: $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_GLOBAL global_var_list ';' @@ -1207,6 +1209,8 @@ unticked_statement: $2.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.SemiColonToken) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_UNSET '(' unset_variables ')' ';' @@ -1644,7 +1648,7 @@ class_entry_type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.ClassToken).AppendTo($$.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1658,7 +1662,7 @@ class_entry_type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(classModifier.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.ClassToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -1685,7 +1689,7 @@ class_entry_type: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(classModifier.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.ClassToken).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -1934,7 +1938,7 @@ declare_list: constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) $2.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -1951,7 +1955,7 @@ declare_list: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $3.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) $4.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2269,13 +2273,20 @@ parameter: } // save comments + if $1 != nil { + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + } if $2 != nil { $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) } if $3 != nil { $3.Meta.SetTokenName(meta.EllipsisToken).AppendTo($$.GetMeta()) } - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + if $1 == nil && $2 == nil && $3 == nil { + $4.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + } else { + $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + } yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2300,13 +2311,20 @@ parameter: } // save comments + if $1 != nil { + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + } if $2 != nil { $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) } if $3 != nil { $3.Meta.SetTokenName(meta.EllipsisToken).AppendTo($$.GetMeta()) } - $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + if $1 == nil && $2 == nil && $3 == nil { + $4.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) + } else { + $4.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + } yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $5.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) @@ -2426,6 +2444,9 @@ function_call_parameter: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + // save comments + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable @@ -2435,6 +2456,9 @@ function_call_parameter: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + // save comments + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '&' w_variable @@ -2547,7 +2571,7 @@ static_var_list: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + $3.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2566,7 +2590,7 @@ static_var_list: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + $3.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $4.Meta.SetTokenName(meta.EqualToken).AppendTo(staticVar.GetMeta()) @@ -2585,7 +2609,7 @@ static_var_list: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -2603,7 +2627,7 @@ static_var_list: staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo(staticVar.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $2.Meta.SetTokenName(meta.EqualToken).AppendTo(staticVar.GetMeta()) @@ -2640,6 +2664,8 @@ class_statement: $3.Meta.SetTokenName(meta.SemiColonToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.SemiColonToken) + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | class_constant_declaration ';' @@ -3172,7 +3198,7 @@ class_constant_declaration: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastConst.GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $3.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) $4.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -3190,7 +3216,7 @@ class_constant_declaration: // save comments $1.Meta.SetTokenName(meta.ConstToken).AppendTo($$.GetMeta()) - $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $2.Meta.SetTokenName(meta.NodeStart).AppendTo(constant.GetMeta()) $3.Meta.SetTokenName(meta.EqualToken).AppendTo(constant.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -3365,7 +3391,7 @@ expr_without_variable: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(list.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(list.GetMeta()) $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(list.GetMeta()) $5.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) @@ -3391,6 +3417,8 @@ expr_without_variable: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + // save comments $2.Meta.SetTokenName(meta.EqualToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) @@ -3421,6 +3449,8 @@ expr_without_variable: $3.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) $4.Meta.SetTokenName(meta.NodeStart).AppendTo(_new.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CLONE expr @@ -3445,6 +3475,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PlusEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_MINUS_EQUAL expr @@ -3457,6 +3489,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.MinusEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_MUL_EQUAL expr @@ -3469,6 +3503,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.MulEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_POW_EQUAL expr @@ -3481,6 +3517,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PowEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_DIV_EQUAL expr @@ -3493,6 +3531,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.DivEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_CONCAT_EQUAL expr @@ -3505,6 +3545,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.ConcatEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_MOD_EQUAL expr @@ -3517,6 +3559,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.ModEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_AND_EQUAL expr @@ -3529,6 +3573,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.AndEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_OR_EQUAL expr @@ -3541,6 +3587,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.OrEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_XOR_EQUAL expr @@ -3553,6 +3601,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.XorEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_SL_EQUAL expr @@ -3565,6 +3615,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SlEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable T_SR_EQUAL expr @@ -3577,6 +3629,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SrEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | rw_variable T_INC @@ -3589,6 +3643,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IncToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_INC rw_variable @@ -3613,6 +3669,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.DecToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_DEC rw_variable @@ -3637,6 +3695,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.BooleanOrToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_BOOLEAN_AND expr @@ -3649,6 +3709,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.BooleanAndToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_LOGICAL_OR expr @@ -3661,6 +3723,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.LogicalOrToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_LOGICAL_AND expr @@ -3673,6 +3737,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.LogicalAndToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_LOGICAL_XOR expr @@ -3685,6 +3751,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.LogicalXorToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '|' expr @@ -3697,6 +3765,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.VerticalBarToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '&' expr @@ -3709,6 +3779,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '^' expr @@ -3721,6 +3793,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.CaretToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '.' expr @@ -3733,6 +3807,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.DotToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '+' expr @@ -3745,6 +3821,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PlusToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '-' expr @@ -3757,6 +3835,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.MinusToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '*' expr @@ -3769,6 +3849,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.AsteriskToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_POW expr @@ -3781,6 +3863,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PowToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '/' expr @@ -3793,6 +3877,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SlashToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '%' expr @@ -3805,6 +3891,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.PercentToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_SL expr @@ -3817,6 +3905,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SlToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_SR expr @@ -3829,6 +3919,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.SrToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '+' expr %prec T_INC @@ -3889,6 +3981,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_NOT_IDENTICAL expr @@ -3901,6 +3995,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_EQUAL expr @@ -3913,6 +4009,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_NOT_EQUAL expr @@ -3926,6 +4024,8 @@ expr_without_variable: $2.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.IsNotEqualToken) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '<' expr @@ -3938,6 +4038,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.LessToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_SMALLER_OR_EQUAL expr @@ -3950,6 +4052,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '>' expr @@ -3962,6 +4066,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.GreaterToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_IS_GREATER_OR_EQUAL expr @@ -3974,6 +4080,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_INSTANCEOF class_name_reference @@ -3986,6 +4094,8 @@ expr_without_variable: // save comments $2.Meta.SetTokenName(meta.InstanceofToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | parenthesis_expr @@ -4007,29 +4117,34 @@ expr_without_variable: { $$ = $2 + // save comments + yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) + $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) + $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) + yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) + for _, n := range($4) { switch nn := n.(type) { case *expr.ArrayDimFetch: nn.Variable = $$ $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.PropertyFetch: nn.Variable = $$ $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.MethodCall: nn.Variable = $$ $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) } // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, n)) } - // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '?' expr ':' expr @@ -4043,6 +4158,8 @@ expr_without_variable: $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) $4.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr '?' ':' expr @@ -4056,6 +4173,8 @@ expr_without_variable: $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | internal_functions_in_yacc @@ -4356,6 +4475,8 @@ combined_scalar_offset: $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | combined_scalar_offset '[' dim_offset ']' @@ -4371,6 +4492,8 @@ combined_scalar_offset: $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']' @@ -4383,6 +4506,7 @@ combined_scalar_offset: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(str, $4)) // save comments + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) @@ -4403,6 +4527,8 @@ combined_scalar_offset: $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -4552,6 +4678,9 @@ function_call: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(name, $2)) + // save comments + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NAMESPACE T_NS_SEPARATOR namespace_name function_call_parameter_list @@ -4564,7 +4693,7 @@ function_call: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(funcName.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(funcName.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -4579,7 +4708,7 @@ function_call: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(funcName.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4592,6 +4721,7 @@ function_call: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4604,6 +4734,7 @@ function_call: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4616,6 +4747,7 @@ function_call: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4628,6 +4760,7 @@ function_call: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4637,6 +4770,7 @@ function_call: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2)) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4661,6 +4795,9 @@ class_name: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + + // save comments + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4698,6 +4835,9 @@ fully_qualified_class_name: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + + // save comments + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4757,11 +4897,13 @@ dynamic_class_name_reference: nn.Variable = $$ $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.PropertyFetch: nn.Variable = $$ $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) } } @@ -4771,11 +4913,13 @@ dynamic_class_name_reference: nn.Variable = $$ $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.PropertyFetch: nn.Variable = $$ $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) } } @@ -5058,6 +5202,8 @@ static_class_constant: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -5093,6 +5239,9 @@ static_scalar_value: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + // save comments + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NAMESPACE T_NS_SEPARATOR namespace_name @@ -5105,7 +5254,7 @@ static_scalar_value: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -5120,7 +5269,7 @@ static_scalar_value: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5191,6 +5340,8 @@ static_operation: $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '+' static_scalar_value @@ -5203,6 +5354,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.PlusToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value '-' static_scalar_value @@ -5214,6 +5367,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.MinusToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5226,6 +5381,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.AsteriskToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5238,6 +5395,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.PowToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5250,6 +5409,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.SlashToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5262,6 +5423,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.PercentToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5298,6 +5461,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.VerticalBarToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5310,6 +5475,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.AmpersandToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5322,6 +5489,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.CaretToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5334,6 +5503,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.SlToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5346,6 +5517,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.SrToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5358,6 +5531,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.DotToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5370,6 +5545,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.LogicalXorToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5382,6 +5559,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.LogicalAndToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5394,6 +5573,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.LogicalOrToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5406,6 +5587,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.BooleanAndToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5418,6 +5601,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.BooleanOrToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5430,6 +5615,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.IsIdenticalToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5442,6 +5629,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.IsNotIdenticalToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5454,6 +5643,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.IsEqualToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5467,6 +5658,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.IsNotEqualToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.IsNotEqualToken) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5479,6 +5672,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.LessToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5491,6 +5686,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.GreaterToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5503,6 +5700,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.IsSmallerOrEqualToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5515,6 +5714,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.IsGreaterOrEqualToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5528,6 +5729,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5541,6 +5744,8 @@ static_operation: // save comments $2.Meta.SetTokenName(meta.QuestionMarkToken).AppendTo($$.GetMeta()) $4.Meta.SetTokenName(meta.ColonToken).AppendTo($$.GetMeta()) + + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5573,8 +5778,10 @@ static_operation: $$ = $2 // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) + yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) + $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) + $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) + yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5596,6 +5803,9 @@ general_constant: name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + // save comments + $1[0].GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_NAMESPACE T_NS_SEPARATOR namespace_name @@ -5606,7 +5816,7 @@ general_constant: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.NsSeparatorToken).AppendTo(name.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -5621,7 +5831,7 @@ general_constant: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5743,6 +5953,8 @@ non_empty_static_array_pair_list: $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) $4.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_static_array_pair_list ',' static_scalar_value @@ -5756,6 +5968,8 @@ non_empty_static_array_pair_list: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value T_DOUBLE_ARROW static_scalar_value @@ -5769,6 +5983,8 @@ non_empty_static_array_pair_list: // save comments $2.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | static_scalar_value @@ -5779,6 +5995,8 @@ non_empty_static_array_pair_list: // save position arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -5804,8 +6022,8 @@ parenthesis_expr: $$ = $2 // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.OpenParenthesisToken) + yylex.(*Parser).prependMetaToken($$, $1, meta.OpenParenthesisToken) + $1.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo($$.GetMeta()) $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.CloseParenthesisToken) @@ -5816,8 +6034,8 @@ parenthesis_expr: $$ = $2 // save comments - $1.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.OpenParenthesisToken) + yylex.(*Parser).prependMetaToken($$, $1, meta.OpenParenthesisToken) + $1.Meta.SetTokenName(meta.OpenParenthesisToken).PrependTo($$.GetMeta()) $3.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.CloseParenthesisToken) @@ -5873,16 +6091,19 @@ variable: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.PropertyFetch: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.MethodCall: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) } } @@ -5892,16 +6113,19 @@ variable: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.PropertyFetch: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) case *expr.MethodCall: nn.Variable = $$ nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) $$ = nn + nn.Variable.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) } } @@ -6048,6 +6272,8 @@ static_member: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects @@ -6060,6 +6286,8 @@ static_member: // save comments $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -6087,6 +6315,8 @@ array_function_dereference: $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | function_call '[' dim_offset ']' @@ -6102,6 +6332,8 @@ array_function_dereference: $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -6169,6 +6401,8 @@ reference_variable: $4.Meta.SetTokenName(meta.CloseSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseSquareBracket) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | reference_variable '{' expr '}' @@ -6184,6 +6418,8 @@ reference_variable: $4.Meta.SetTokenName(meta.CloseCurlyBracesToken).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $4, meta.CloseCurlyBracesToken) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | compound_variable @@ -6331,8 +6567,8 @@ variable_name: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) - yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) + yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) + $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) @@ -6410,6 +6646,8 @@ assignment_list_element: // save position $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_LIST '(' assignment_list ')' @@ -6422,7 +6660,7 @@ assignment_list_element: $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(item)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(item.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) $2.Meta.SetTokenName(meta.OpenParenthesisToken).AppendTo(item.GetMeta()) $4.Meta.SetTokenName(meta.CloseParenthesisToken).AppendTo(item.GetMeta()) @@ -6474,6 +6712,8 @@ non_empty_array_pair_list: $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) $4.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_array_pair_list ',' expr @@ -6487,6 +6727,8 @@ non_empty_array_pair_list: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) + $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr T_DOUBLE_ARROW expr @@ -6500,6 +6742,8 @@ non_empty_array_pair_list: // save comments $2.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | expr @@ -6510,6 +6754,8 @@ non_empty_array_pair_list: // save position arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_array_pair_list ',' expr T_DOUBLE_ARROW '&' w_variable @@ -6527,6 +6773,8 @@ non_empty_array_pair_list: $4.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) $5.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + $3.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | non_empty_array_pair_list ',' '&' w_variable @@ -6541,7 +6789,7 @@ non_empty_array_pair_list: // save comments $2.Meta.SetTokenName(meta.NodeEnd).AppendTo(lastNode($1).GetMeta()) - $3.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + $3.Meta.SetTokenName(meta.NodeStart).AppendTo(arrayItem.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6559,6 +6807,8 @@ non_empty_array_pair_list: $2.Meta.SetTokenName(meta.DoubleArrowToken).AppendTo(arrayItem.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo(arrayItem.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '&' w_variable @@ -6572,7 +6822,7 @@ non_empty_array_pair_list: arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(reference.GetMeta()) + $1.Meta.SetTokenName(meta.NodeStart).AppendTo(arrayItem.GetMeta()) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6647,7 +6897,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $2.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $2, meta.OpenSquareBracket) @@ -6670,7 +6919,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo(variable.GetMeta()) yylex.(*Parser).appendMeta(variable, &meta.Data{"$", meta.TokenType, nil, meta.NodeStart}, meta.NodeStart) $2.Meta.SetTokenName(meta.ObjectOperatorToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(fetch.GetMeta()) @@ -6687,7 +6935,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) @@ -6706,7 +6953,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) $2.Meta.SetTokenName(meta.NodeStart).AppendTo(name.GetMeta()) $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) @@ -6726,7 +6972,6 @@ encaps_var: $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) // save comments - $1.Meta.SetTokenName(meta.NodeStart).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $1, meta.NodeStart) $3.Meta.SetTokenName(meta.OpenSquareBracket).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.OpenSquareBracket) @@ -6742,7 +6987,6 @@ encaps_var: $$ = $2; // save comments - $1.Meta.SetTokenName(meta.NodeStart).PrependTo($$.GetMeta()) yylex.(*Parser).prependMetaToken($$, $1, meta.NodeStart) $3.Meta.SetTokenName(meta.NodeEnd).AppendTo($$.GetMeta()) yylex.(*Parser).appendMetaToken($$, $3, meta.NodeEnd) @@ -6949,6 +7193,8 @@ class_constant: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING @@ -6964,6 +7210,8 @@ class_constant: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -6982,6 +7230,8 @@ static_class_name_scalar: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ; @@ -7000,6 +7250,8 @@ class_name_scalar: $2.Meta.SetTokenName(meta.PaamayimNekudotayimToken).AppendTo($$.GetMeta()) $3.Meta.SetTokenName(meta.NodeStart).AppendTo(target.GetMeta()) + $1.GetMeta().Cut(newInheritMetaFilter()).PrependTo($$.GetMeta()) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } ;