diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 2e1bb38..e4b1646 100644 --- a/internal/php5/php5.go +++ b/internal/php5/php5.go @@ -340,13 +340,14 @@ var yyToknames = [...]string{ "'>'", "'.'", } + var yyStatenames = [...]string{} const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php5/php5.y:6172 +// line internal/php5/php5.y:6370 type simpleIndirectReference struct { all []*ast.ExprVariable @@ -600,7 +601,6 @@ const yyPrivate = 57344 const yyLast = 8877 var yyAct = [...]int{ - 102, 571, 844, 565, 1007, 966, 715, 61, 420, 827, 123, 131, 919, 200, 340, 594, 567, 607, 452, 816, 461, 808, 474, 735, 592, 684, 138, 140, 421, 142, @@ -1490,8 +1490,8 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 536, 0, 525, 0, 0, 0, 535, 534, 532, 533, } -var yyPact = [...]int{ +var yyPact = [...]int{ -1000, -1000, 2298, -1000, -1000, -1000, -1000, -1000, 336, 543, 613, 174, -1000, 348, -1000, -1000, 971, -1000, 276, 276, 5446, 332, 276, 6794, 6682, 6570, 396, 166, 802, 6906, @@ -1596,8 +1596,8 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, 632, 2614, 823, -1000, 102, 423, -1000, 2456, -1000, } -var yyPgo = [...]int{ +var yyPgo = [...]int{ 0, 29, 1183, 22, 21, 1177, 49, 41, 39, 544, 1176, 1175, 164, 217, 228, 180, 1362, 64, 134, 59, 781, 1399, 1172, 33, 1171, 1170, 1169, 136, 1157, 40, @@ -1615,8 +1615,8 @@ var yyPgo = [...]int{ 15, 17, 993, 34, 992, 991, 986, 984, 177, 13, 983, 902, } -var yyR1 = [...]int{ +var yyR1 = [...]int{ 0, 151, 100, 100, 101, 101, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 102, 102, 6, 6, 6, 6, 103, 103, 7, 7, 7, 7, @@ -1671,8 +1671,8 @@ var yyR1 = [...]int{ 39, 39, 39, 107, 107, 38, 38, 32, 32, 33, 34, } -var yyR2 = [...]int{ +var yyR2 = [...]int{ 0, 1, 2, 0, 1, 3, 1, 1, 1, 1, 4, 3, 5, 4, 3, 4, 4, 2, 3, 1, 1, 3, 2, 4, 3, 1, 1, 3, 2, 4, @@ -1727,8 +1727,8 @@ var yyR2 = [...]int{ 4, 2, 2, 1, 3, 1, 1, 3, 3, 3, 3, } -var yyChk = [...]int{ +var yyChk = [...]int{ -1000, -151, -100, -5, 2, -27, -53, -54, 52, 80, 45, -55, -28, 10, -62, -63, 39, 144, 7, 21, 20, 23, 30, 34, 35, 40, -52, 47, 99, 19, @@ -1833,8 +1833,8 @@ var yyChk = [...]int{ 146, 144, -47, -61, 148, -105, -47, 145, 12, 149, 144, -105, 145, } -var yyDef = [...]int{ +var yyDef = [...]int{ 3, -2, -2, 2, 6, 7, 8, 9, 0, 0, 0, 0, 45, 4, 87, 88, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 331, 0, @@ -1939,8 +1939,8 @@ var yyDef = [...]int{ 196, 39, 188, 82, 0, 0, 0, 197, 0, 0, 39, 0, 83, } -var yyTok1 = [...]int{ +var yyTok1 = [...]int{ 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -1955,8 +1955,8 @@ var yyTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 144, 161, 145, 157, } -var yyTok2 = [...]int{ +var yyTok2 = [...]int{ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, @@ -1972,6 +1972,7 @@ var yyTok2 = [...]int{ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, } + var yyTok3 = [...]int{ 0, } @@ -2485,7 +2486,8 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[2].token), }, - Value: yyDollar[2].token.Value, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, }, UseDeclarations: yyDollar[3].list, SemiColonTkn: yyDollar[4].token, @@ -2493,7 +2495,7 @@ yydefault: } case 16: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:432 +// line internal/php5/php5.y:433 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2504,7 +2506,8 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[2].token), }, - Value: yyDollar[2].token.Value, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, }, UseDeclarations: yyDollar[3].list, SemiColonTkn: yyDollar[4].token, @@ -2512,7 +2515,7 @@ yydefault: } case 17: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:449 +// line internal/php5/php5.y:451 { yyDollar[1].node.(*ast.StmtConstList).SemiColonTkn = yyDollar[2].token yyDollar[1].node.(*ast.StmtConstList).Node.Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token) @@ -2520,7 +2523,7 @@ yydefault: } case 18: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:458 +// line internal/php5/php5.y:460 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2528,13 +2531,13 @@ yydefault: } case 19: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:464 +// line internal/php5/php5.y:466 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 20: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:471 +// line internal/php5/php5.y:473 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2550,7 +2553,7 @@ yydefault: } case 21: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:485 +// line internal/php5/php5.y:487 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2567,13 +2570,14 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[3].token), }, - Value: yyDollar[3].token.Value, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, }, } } case 22: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:506 +// line internal/php5/php5.y:509 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2590,7 +2594,7 @@ yydefault: } case 23: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:521 +// line internal/php5/php5.y:524 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2608,13 +2612,14 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[4].token), }, - Value: yyDollar[4].token.Value, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, }, } } case 24: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:546 +// line internal/php5/php5.y:550 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2622,13 +2627,13 @@ yydefault: } case 25: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:552 +// line internal/php5/php5.y:556 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 26: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:559 +// line internal/php5/php5.y:563 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2644,7 +2649,7 @@ yydefault: } case 27: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:573 +// line internal/php5/php5.y:577 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2661,13 +2666,14 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[3].token), }, - Value: yyDollar[3].token.Value, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, }, } } case 28: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:594 +// line internal/php5/php5.y:599 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2684,7 +2690,7 @@ yydefault: } case 29: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:609 +// line internal/php5/php5.y:614 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2702,13 +2708,14 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[4].token), }, - Value: yyDollar[4].token.Value, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, }, } } case 30: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:634 +// line internal/php5/php5.y:640 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2716,13 +2723,13 @@ yydefault: } case 31: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:640 +// line internal/php5/php5.y:646 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 32: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:647 +// line internal/php5/php5.y:653 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2738,7 +2745,7 @@ yydefault: } case 33: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:661 +// line internal/php5/php5.y:667 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2755,13 +2762,14 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[3].token), }, - Value: yyDollar[3].token.Value, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, }, } } case 34: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:682 +// line internal/php5/php5.y:689 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2778,7 +2786,7 @@ yydefault: } case 35: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:697 +// line internal/php5/php5.y:704 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2796,13 +2804,14 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[4].token), }, - Value: yyDollar[4].token.Value, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, }, } } case 36: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:722 +// line internal/php5/php5.y:730 { constList := yyDollar[1].node.(*ast.StmtConstList) constList.Node.Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[5].node) @@ -2815,7 +2824,8 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[3].token), }, - Value: yyDollar[3].token.Value, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, }, EqualTkn: yyDollar[4].token, Expr: yyDollar[5].node, @@ -2827,7 +2837,7 @@ yydefault: } case 37: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:745 +// line internal/php5/php5.y:754 { yyVAL.node = &ast.StmtConstList{ Node: ast.Node{ @@ -2843,7 +2853,8 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[2].token), }, - Value: yyDollar[2].token.Value, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, }, EqualTkn: yyDollar[3].token, Expr: yyDollar[4].node, @@ -2855,7 +2866,7 @@ yydefault: } case 38: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:774 +// line internal/php5/php5.y:784 { if inlineHtmlNode, ok := yyDollar[2].node.(*ast.StmtInlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) @@ -2868,38 +2879,38 @@ yydefault: } case 39: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:785 +// line internal/php5/php5.y:795 { yyVAL.list = []ast.Vertex{} } case 40: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:793 +// line internal/php5/php5.y:803 { // error yyVAL.node = nil } case 41: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:798 +// line internal/php5/php5.y:808 { yyVAL.node = yyDollar[1].node } case 42: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:802 +// line internal/php5/php5.y:812 { yyVAL.node = yyDollar[1].node } case 43: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:806 +// line internal/php5/php5.y:816 { yyVAL.node = yyDollar[1].node } case 44: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:810 +// line internal/php5/php5.y:820 { yyVAL.node = &ast.StmtHaltCompiler{ Node: ast.Node{ @@ -2913,32 +2924,31 @@ yydefault: } case 45: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:826 +// line internal/php5/php5.y:836 { yyVAL.node = yyDollar[1].node } case 46: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:830 +// line internal/php5/php5.y:840 { - label := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtLabel{ Node: ast.Node{ Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), }, - LabelName: label, - ColonTkn: yyDollar[2].token, + LabelName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, + ColonTkn: yyDollar[2].token, } - - // save position - label.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(label, token.Start, yyDollar[1].token.SkippedTokens) } case 47: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:850 +// line internal/php5/php5.y:859 { yyVAL.node = &ast.StmtStmtList{ Node: ast.Node{ @@ -2951,7 +2961,7 @@ yydefault: } case 48: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:861 +// line internal/php5/php5.y:870 { pos := position.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node) if yyDollar[5].node != nil { @@ -2975,7 +2985,7 @@ yydefault: } case 49: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:883 +// line internal/php5/php5.y:892 { yyVAL.node = &ast.StmtIf{ Node: ast.Node{ @@ -3001,7 +3011,7 @@ yydefault: } case 50: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:907 +// line internal/php5/php5.y:916 { yyDollar[3].node.(*ast.StmtWhile).WhileTkn = yyDollar[1].token yyDollar[3].node.(*ast.StmtWhile).OpenParenthesisTkn = yyDollar[2].node.(*ast.ParserBrackets).OpenBracketTkn @@ -3013,7 +3023,7 @@ yydefault: } case 51: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:917 +// line internal/php5/php5.y:926 { yyVAL.node = &ast.StmtDo{ Node: ast.Node{ @@ -3030,7 +3040,7 @@ yydefault: } case 52: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php5/php5.y:932 +// line internal/php5/php5.y:941 { yyDollar[9].node.(*ast.StmtFor).ForTkn = yyDollar[1].token yyDollar[9].node.(*ast.StmtFor).OpenParenthesisTkn = yyDollar[2].token @@ -3046,7 +3056,7 @@ yydefault: } case 53: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:946 +// line internal/php5/php5.y:955 { yyDollar[3].node.(*ast.StmtSwitch).SwitchTkn = yyDollar[1].token yyDollar[3].node.(*ast.StmtSwitch).OpenParenthesisTkn = yyDollar[2].node.(*ast.ParserBrackets).OpenBracketTkn @@ -3058,7 +3068,7 @@ yydefault: } case 54: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:956 +// line internal/php5/php5.y:965 { yyVAL.node = &ast.StmtBreak{ Node: ast.Node{ @@ -3070,7 +3080,7 @@ yydefault: } case 55: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:966 +// line internal/php5/php5.y:975 { yyVAL.node = &ast.StmtBreak{ Node: ast.Node{ @@ -3083,7 +3093,7 @@ yydefault: } case 56: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:977 +// line internal/php5/php5.y:986 { yyVAL.node = &ast.StmtContinue{ Node: ast.Node{ @@ -3095,7 +3105,7 @@ yydefault: } case 57: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:987 +// line internal/php5/php5.y:996 { yyVAL.node = &ast.StmtContinue{ Node: ast.Node{ @@ -3108,7 +3118,7 @@ yydefault: } case 58: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:998 +// line internal/php5/php5.y:1007 { yyVAL.node = &ast.StmtReturn{ Node: ast.Node{ @@ -3120,7 +3130,7 @@ yydefault: } case 59: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1008 +// line internal/php5/php5.y:1017 { yyVAL.node = &ast.StmtReturn{ Node: ast.Node{ @@ -3133,7 +3143,7 @@ yydefault: } case 60: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1019 +// line internal/php5/php5.y:1028 { yyVAL.node = &ast.StmtReturn{ Node: ast.Node{ @@ -3146,7 +3156,7 @@ yydefault: } case 61: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1030 +// line internal/php5/php5.y:1039 { yyVAL.node = &ast.StmtExpression{ast.Node{}, yyDollar[1].node} @@ -3160,7 +3170,7 @@ yydefault: } case 62: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1042 +// line internal/php5/php5.y:1051 { yyDollar[2].node.(*ast.StmtGlobal).GlobalTkn = yyDollar[1].token yyDollar[2].node.(*ast.StmtGlobal).SemiColonTkn = yyDollar[3].token @@ -3171,7 +3181,7 @@ yydefault: } case 63: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1051 +// line internal/php5/php5.y:1060 { yyDollar[2].node.(*ast.StmtStatic).StaticTkn = yyDollar[1].token yyDollar[2].node.(*ast.StmtStatic).SemiColonTkn = yyDollar[3].token @@ -3182,7 +3192,7 @@ yydefault: } case 64: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1060 +// line internal/php5/php5.y:1069 { yyDollar[2].node.(*ast.StmtEcho).EchoTkn = yyDollar[1].token yyDollar[2].node.(*ast.StmtEcho).SemiColonTkn = yyDollar[3].token @@ -3192,7 +3202,7 @@ yydefault: } case 65: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1068 +// line internal/php5/php5.y:1077 { yyVAL.node = &ast.StmtInlineHtml{ Node: ast.Node{ @@ -3204,7 +3214,7 @@ yydefault: } case 66: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1078 +// line internal/php5/php5.y:1087 { yyVAL.node = &ast.StmtExpression{ast.Node{}, yyDollar[1].node} @@ -3218,7 +3228,7 @@ yydefault: } case 67: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1090 +// line internal/php5/php5.y:1099 { yyDollar[3].node.(*ast.StmtUnset).UnsetTkn = yyDollar[1].token yyDollar[3].node.(*ast.StmtUnset).OpenParenthesisTkn = yyDollar[2].token @@ -3230,7 +3240,7 @@ yydefault: } case 68: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:1100 +// line internal/php5/php5.y:1109 { yyDollar[8].node.(*ast.StmtForeach).ForeachTkn = yyDollar[1].token yyDollar[8].node.(*ast.StmtForeach).OpenParenthesisTkn = yyDollar[2].token @@ -3250,7 +3260,7 @@ yydefault: } case 69: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:1118 +// line internal/php5/php5.y:1127 { yyDollar[8].node.(*ast.StmtForeach).ForeachTkn = yyDollar[1].token yyDollar[8].node.(*ast.StmtForeach).OpenParenthesisTkn = yyDollar[2].token @@ -3270,7 +3280,7 @@ yydefault: } case 70: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1136 +// line internal/php5/php5.y:1145 { yyDollar[5].node.(*ast.StmtDeclare).DeclareTkn = yyDollar[1].token yyDollar[5].node.(*ast.StmtDeclare).OpenParenthesisTkn = yyDollar[2].token @@ -3283,7 +3293,7 @@ yydefault: } case 71: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1147 +// line internal/php5/php5.y:1156 { yyVAL.node = &ast.StmtNop{ Node: ast.Node{ @@ -3294,7 +3304,7 @@ yydefault: } case 72: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:1156 +// line internal/php5/php5.y:1165 { yyVAL.node = &ast.StmtTry{ TryTkn: yyDollar[1].token, @@ -3313,7 +3323,7 @@ yydefault: } case 73: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1173 +// line internal/php5/php5.y:1182 { yyVAL.node = &ast.StmtThrow{ Node: ast.Node{ @@ -3326,36 +3336,40 @@ yydefault: } case 74: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1184 +// line internal/php5/php5.y:1193 { - label := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} - yyVAL.node = &ast.StmtGoto{ Node: ast.Node{ Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), }, - GotoTkn: yyDollar[1].token, - Label: label, + GotoTkn: yyDollar[1].token, + Label: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, SemiColonTkn: yyDollar[3].token, } - - // save position - label.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) - - // save comments - yylex.(*Parser).setFreeFloating(label, token.Start, yyDollar[2].token.SkippedTokens) } case 75: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1206 +// line internal/php5/php5.y:1213 { yyVAL.list = []ast.Vertex{} } case 76: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php5/php5.y:1210 +// line internal/php5/php5.y:1217 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} catch := &ast.StmtCatch{ Node: ast.Node{ @@ -3373,7 +3387,6 @@ yydefault: yyVAL.list = append([]ast.Vertex{catch}, yyDollar[9].list...) // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) // save comments @@ -3381,13 +3394,13 @@ yydefault: } case 77: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1239 +// line internal/php5/php5.y:1251 { yyVAL.node = nil } case 78: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1243 +// line internal/php5/php5.y:1255 { yyVAL.node = &ast.StmtFinally{ Node: ast.Node{ @@ -3401,33 +3414,39 @@ yydefault: } case 79: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1258 +// line internal/php5/php5.y:1270 { yyVAL.list = yyDollar[1].list } case 80: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1262 +// line internal/php5/php5.y:1274 { yyVAL.list = []ast.Vertex{} } case 81: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1269 +// line internal/php5/php5.y:1281 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 82: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1273 +// line internal/php5/php5.y:1285 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 83: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:1280 +// line internal/php5/php5.y:1292 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyVAL.node = &ast.StmtCatch{ Node: ast.Node{ @@ -3444,7 +3463,6 @@ yydefault: } // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) // save comments @@ -3452,7 +3470,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1308 +// line internal/php5/php5.y:1325 { yyVAL.node = &ast.StmtUnset{ Vars: []ast.Vertex{yyDollar[1].node}, @@ -3460,7 +3478,7 @@ yydefault: } case 85: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1314 +// line internal/php5/php5.y:1331 { yyDollar[1].node.(*ast.StmtUnset).Vars = append(yyDollar[1].node.(*ast.StmtUnset).Vars, yyDollar[3].node) yyDollar[1].node.(*ast.StmtUnset).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtUnset).SeparatorTkns, yyDollar[2].token) @@ -3469,75 +3487,82 @@ yydefault: } case 86: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1324 +// line internal/php5/php5.y:1341 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1331 +// line internal/php5/php5.y:1348 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1338 +// line internal/php5/php5.y:1355 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1345 +// line internal/php5/php5.y:1362 { yyVAL.token = nil } case 90: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1349 +// line internal/php5/php5.y:1366 { yyVAL.token = yyDollar[1].token } case 91: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1356 +// line internal/php5/php5.y:1373 { yyVAL.token = nil } case 92: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1360 +// line internal/php5/php5.y:1377 { yyVAL.token = yyDollar[1].token } case 93: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php5/php5.y:1367 +// line internal/php5/php5.y:1384 { - name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.StmtFunction{ast.Node{}, yyDollar[2].token != nil, name, yyDollar[5].list, nil, yyDollar[8].list} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[9].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) if yyDollar[2].token != nil { yylex.(*Parser).setFreeFloating(yyVAL.node, token.Function, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Start, yyDollar[3].token.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating(name, token.Start, yyDollar[3].token.SkippedTokens) } - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[4].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.ParamList, yyDollar[6].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Params, yyDollar[7].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[9].token.SkippedTokens) } case 94: yyDollar = yyS[yypt-7 : yypt+1] -// line internal/php5/php5.y:1392 +// line internal/php5/php5.y:1410 { - name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + } switch n := yyDollar[1].node.(type) { case *ast.StmtClass: n.ClassName = name @@ -3553,34 +3578,36 @@ yydefault: yyVAL.node = yyDollar[1].node // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[7].token) // save comments - yylex.(*Parser).setFreeFloating(name, token.Start, yyDollar[2].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[5].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[7].token.SkippedTokens) } case 95: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:1418 +// line internal/php5/php5.y:1440 { - name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + } yyVAL.node = &ast.StmtInterface{ast.Node{}, name, yyDollar[3].InterfaceExtends, yyDollar[5].list} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[6].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Start, yyDollar[2].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[4].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[6].token.SkippedTokens) } case 96: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1437 +// line internal/php5/php5.y:1463 { yyVAL.node = &ast.StmtClass{ast.Node{}, nil, nil, nil, nil, nil, nil} @@ -3592,13 +3619,18 @@ yydefault: } case 97: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1447 +// line internal/php5/php5.y:1473 { - classModifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + classModifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } yyVAL.node = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil} // save position - classModifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token) // save comments @@ -3607,25 +3639,30 @@ yydefault: } case 98: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1460 +// line internal/php5/php5.y:1491 { - yyVAL.node = &ast.StmtTrait{ast.Node{}, nil, nil} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 99: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1470 +// line internal/php5/php5.y:1501 { - classModifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + classModifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } yyVAL.node = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil} // save position - classModifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token) // save comments @@ -3634,13 +3671,13 @@ yydefault: } case 100: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1486 +// line internal/php5/php5.y:1522 { yyVAL.ClassExtends = nil } case 101: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1490 +// line internal/php5/php5.y:1526 { yyVAL.ClassExtends = &ast.StmtClassExtends{ast.Node{}, yyDollar[2].node} @@ -3652,19 +3689,19 @@ yydefault: } case 102: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1503 +// line internal/php5/php5.y:1539 { yyVAL.token = yyDollar[1].token } case 103: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1510 +// line internal/php5/php5.y:1546 { yyVAL.InterfaceExtends = nil } case 104: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1514 +// line internal/php5/php5.y:1550 { yyVAL.InterfaceExtends = &ast.StmtInterfaceExtends{ast.Node{}, yyDollar[2].list} @@ -3676,13 +3713,13 @@ yydefault: } case 105: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1527 +// line internal/php5/php5.y:1563 { yyVAL.ClassImplements = nil } case 106: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1531 +// line internal/php5/php5.y:1567 { yyVAL.ClassImplements = &ast.StmtClassImplements{ast.Node{}, yyDollar[2].list} @@ -3694,13 +3731,13 @@ yydefault: } case 107: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1544 +// line internal/php5/php5.y:1580 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 108: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1548 +// line internal/php5/php5.y:1584 { switch n := lastNode(yyDollar[1].list).(type) { case *ast.NameName: @@ -3714,13 +3751,13 @@ yydefault: } case 109: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1560 +// line internal/php5/php5.y:1596 { yyVAL.node = nil } case 110: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1564 +// line internal/php5/php5.y:1600 { yyVAL.node = &ast.StmtForeach{ DoubleArrowTkn: yyDollar[1].token, @@ -3729,13 +3766,13 @@ yydefault: } case 111: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1574 +// line internal/php5/php5.y:1610 { yyVAL.node = yyDollar[1].node } case 112: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1578 +// line internal/php5/php5.y:1614 { yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node} @@ -3747,7 +3784,7 @@ yydefault: } case 113: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1588 +// line internal/php5/php5.y:1624 { yyVAL.node = &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -3761,7 +3798,7 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1603 +// line internal/php5/php5.y:1639 { yyVAL.node = &ast.StmtFor{ Node: ast.Node{ @@ -3772,7 +3809,7 @@ yydefault: } case 115: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1612 +// line internal/php5/php5.y:1648 { yyVAL.node = &ast.StmtFor{ Node: ast.Node{ @@ -3792,7 +3829,7 @@ yydefault: } case 116: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1633 +// line internal/php5/php5.y:1669 { yyVAL.node = &ast.StmtForeach{ Node: ast.Node{ @@ -3803,7 +3840,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1642 +// line internal/php5/php5.y:1678 { yyVAL.node = &ast.StmtForeach{ Node: ast.Node{ @@ -3823,7 +3860,7 @@ yydefault: } case 118: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1664 +// line internal/php5/php5.y:1700 { yyVAL.node = &ast.StmtDeclare{ Node: ast.Node{ @@ -3834,7 +3871,7 @@ yydefault: } case 119: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1673 +// line internal/php5/php5.y:1709 { yyVAL.node = &ast.StmtDeclare{ Node: ast.Node{ @@ -3854,7 +3891,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1695 +// line internal/php5/php5.y:1731 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -3866,7 +3903,8 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[1].token), }, - Value: yyDollar[1].token.Value, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, }, EqualTkn: yyDollar[2].token, Expr: yyDollar[3].node, @@ -3878,7 +3916,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1717 +// line internal/php5/php5.y:1754 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append( @@ -3891,7 +3929,8 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[3].token), }, - Value: yyDollar[3].token.Value, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, }, EqualTkn: yyDollar[4].token, Expr: yyDollar[5].node, @@ -3904,7 +3943,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1745 +// line internal/php5/php5.y:1783 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3917,7 +3956,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1756 +// line internal/php5/php5.y:1794 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3931,7 +3970,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1768 +// line internal/php5/php5.y:1806 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3946,7 +3985,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1781 +// line internal/php5/php5.y:1819 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3962,13 +4001,13 @@ yydefault: } case 126: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1799 +// line internal/php5/php5.y:1837 { yyVAL.list = nil } case 127: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1803 +// line internal/php5/php5.y:1841 { yyVAL.list = append(yyDollar[1].list, &ast.StmtCase{ Node: ast.Node{ @@ -3982,7 +4021,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1815 +// line internal/php5/php5.y:1853 { yyVAL.list = append(yyDollar[1].list, &ast.StmtDefault{ Node: ast.Node{ @@ -3995,19 +4034,19 @@ yydefault: } case 129: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1830 +// line internal/php5/php5.y:1868 { yyVAL.token = yyDollar[1].token } case 130: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1834 +// line internal/php5/php5.y:1872 { yyVAL.token = yyDollar[1].token } case 131: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1842 +// line internal/php5/php5.y:1880 { yyVAL.node = &ast.StmtWhile{ Node: ast.Node{ @@ -4018,7 +4057,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1851 +// line internal/php5/php5.y:1889 { yyVAL.node = &ast.StmtWhile{ Node: ast.Node{ @@ -4038,13 +4077,13 @@ yydefault: } case 133: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1874 +// line internal/php5/php5.y:1912 { yyVAL.list = nil } case 134: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1878 +// line internal/php5/php5.y:1916 { yyVAL.list = append(yyDollar[1].list, &ast.StmtElseIf{ Node: ast.Node{ @@ -4059,13 +4098,13 @@ yydefault: } case 135: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1895 +// line internal/php5/php5.y:1933 { yyVAL.list = nil } case 136: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1899 +// line internal/php5/php5.y:1937 { yyVAL.list = append(yyDollar[1].list, &ast.StmtElseIf{ Node: ast.Node{ @@ -4087,13 +4126,13 @@ yydefault: } case 137: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1923 +// line internal/php5/php5.y:1961 { yyVAL.node = nil } case 138: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1927 +// line internal/php5/php5.y:1965 { yyVAL.node = &ast.StmtElse{ Node: ast.Node{ @@ -4105,13 +4144,13 @@ yydefault: } case 139: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1941 +// line internal/php5/php5.y:1979 { yyVAL.node = nil } case 140: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1945 +// line internal/php5/php5.y:1983 { yyVAL.node = &ast.StmtElse{ Node: ast.Node{ @@ -4130,25 +4169,25 @@ yydefault: } case 141: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1966 +// line internal/php5/php5.y:2004 { yyVAL.list = yyDollar[1].list } case 142: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1970 +// line internal/php5/php5.y:2008 { yyVAL.list = nil } case 143: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1977 +// line internal/php5/php5.y:2015 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 144: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1981 +// line internal/php5/php5.y:2019 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4157,10 +4196,15 @@ yydefault: } case 145: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1991 +// line internal/php5/php5.y:2029 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, + } var variable ast.Vertex variable = &ast.ExprVariable{ast.Node{}, identifier} @@ -4193,10 +4237,15 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:2025 +// line internal/php5/php5.y:2068 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, + } var variable ast.Vertex variable = &ast.ExprVariable{ast.Node{}, identifier} @@ -4230,43 +4279,43 @@ yydefault: } case 147: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2064 +// line internal/php5/php5.y:2112 { yyVAL.node = nil } case 148: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2068 +// line internal/php5/php5.y:2116 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 149: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2078 +// line internal/php5/php5.y:2126 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 150: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2088 +// line internal/php5/php5.y:2136 { yyVAL.node = yyDollar[1].node } case 151: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2096 +// line internal/php5/php5.y:2144 { yyVAL.node = &ast.ArgumentList{ast.Node{}, nil} @@ -4279,7 +4328,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2107 +// line internal/php5/php5.y:2155 { yyVAL.node = &ast.ArgumentList{ast.Node{}, yyDollar[2].list} @@ -4292,7 +4341,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2118 +// line internal/php5/php5.y:2166 { arg := &ast.Argument{ast.Node{}, false, false, yyDollar[2].node} yyVAL.node = &ast.ArgumentList{ast.Node{}, []ast.Vertex{arg}} @@ -4307,13 +4356,13 @@ yydefault: } case 154: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2135 +// line internal/php5/php5.y:2183 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 155: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2139 +// line internal/php5/php5.y:2187 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4322,7 +4371,7 @@ yydefault: } case 156: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2149 +// line internal/php5/php5.y:2197 { yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node} @@ -4334,7 +4383,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2159 +// line internal/php5/php5.y:2207 { yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node} @@ -4346,7 +4395,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2169 +// line internal/php5/php5.y:2217 { yyVAL.node = &ast.Argument{ast.Node{}, false, true, yyDollar[2].node} @@ -4358,7 +4407,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2179 +// line internal/php5/php5.y:2227 { yyVAL.node = &ast.Argument{ast.Node{}, true, false, yyDollar[2].node} @@ -4370,7 +4419,7 @@ yydefault: } case 160: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2192 +// line internal/php5/php5.y:2240 { yyDollar[1].node.(*ast.StmtGlobal).Vars = append(yyDollar[1].node.(*ast.StmtGlobal).Vars, yyDollar[3].node) yyDollar[1].node.(*ast.StmtGlobal).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtGlobal).SeparatorTkns, yyDollar[2].token) @@ -4379,7 +4428,7 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2199 +// line internal/php5/php5.y:2247 { yyVAL.node = &ast.StmtGlobal{ Vars: []ast.Vertex{yyDollar[1].node}, @@ -4387,13 +4436,18 @@ yydefault: } case 162: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2209 +// line internal/php5/php5.y:2257 { - name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } yyVAL.node = &ast.ExprVariable{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -4401,7 +4455,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2221 +// line internal/php5/php5.y:2274 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -4413,7 +4467,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:2231 +// line internal/php5/php5.y:2284 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -4427,9 +4481,15 @@ yydefault: } case 165: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2247 +// line internal/php5/php5.y:2300 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyDollar[1].node.(*ast.StmtStatic).Vars = append(yyDollar[1].node.(*ast.StmtStatic).Vars, &ast.StmtStaticVar{ @@ -4443,7 +4503,6 @@ yydefault: yyVAL.node = yyDollar[1].node // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) // save comments @@ -4451,9 +4510,15 @@ yydefault: } case 166: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:2269 +// line internal/php5/php5.y:2327 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyDollar[1].node.(*ast.StmtStatic).Vars = append(yyDollar[1].node.(*ast.StmtStatic).Vars, &ast.StmtStaticVar{ @@ -4469,7 +4534,6 @@ yydefault: yyVAL.node = yyDollar[1].node // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) // save comments @@ -4477,9 +4541,15 @@ yydefault: } case 167: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2293 +// line internal/php5/php5.y:2356 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyVAL.node = &ast.StmtStatic{ @@ -4494,7 +4564,6 @@ yydefault: } // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -4502,9 +4571,15 @@ yydefault: } case 168: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2316 +// line internal/php5/php5.y:2384 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyVAL.node = &ast.StmtStatic{ @@ -4521,7 +4596,6 @@ yydefault: } // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -4529,19 +4603,19 @@ yydefault: } case 169: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2345 +// line internal/php5/php5.y:2418 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 170: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2349 +// line internal/php5/php5.y:2422 { yyVAL.list = []ast.Vertex{} } case 171: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2357 +// line internal/php5/php5.y:2430 { yyVAL.node = &ast.StmtPropertyList{ast.Node{}, yyDollar[1].list, nil, yyDollar[2].list} @@ -4555,7 +4629,7 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2369 +// line internal/php5/php5.y:2442 { yyDollar[1].node.(*ast.StmtClassConstList).SemiColonTkn = yyDollar[2].token yyDollar[1].node.(*ast.StmtClassConstList).Node.Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token) @@ -4563,19 +4637,24 @@ yydefault: } case 173: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2375 +// line internal/php5/php5.y:2448 { yyVAL.node = yyDollar[1].node } case 174: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:2379 +// line internal/php5/php5.y:2452 { - name := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, + } yyVAL.node = &ast.StmtClassMethod{ast.Node{}, yyDollar[3].token != nil, name, yyDollar[1].list, yyDollar[6].list, nil, yyDollar[8].node} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) if yyDollar[1].list == nil { yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[2].token, yyDollar[8].node) } else { @@ -4600,7 +4679,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2411 +// line internal/php5/php5.y:2489 { yyVAL.node = &ast.StmtTraitUse{ast.Node{}, yyDollar[2].list, yyDollar[3].node} @@ -4612,13 +4691,13 @@ yydefault: } case 176: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2424 +// line internal/php5/php5.y:2502 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 177: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2428 +// line internal/php5/php5.y:2506 { switch n := lastNode(yyDollar[1].list).(type) { case *ast.NameName: @@ -4632,7 +4711,7 @@ yydefault: } case 178: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2440 +// line internal/php5/php5.y:2518 { yyVAL.node = &ast.StmtNop{ Node: ast.Node{ @@ -4643,7 +4722,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2449 +// line internal/php5/php5.y:2527 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, yyDollar[2].list} @@ -4655,31 +4734,31 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2462 +// line internal/php5/php5.y:2540 { yyVAL.list = nil } case 181: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2466 +// line internal/php5/php5.y:2544 { yyVAL.list = yyDollar[1].list } case 182: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2473 +// line internal/php5/php5.y:2551 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 183: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2477 +// line internal/php5/php5.y:2555 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 184: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2484 +// line internal/php5/php5.y:2562 { yyVAL.node = yyDollar[1].node @@ -4689,7 +4768,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2492 +// line internal/php5/php5.y:2570 { yyVAL.node = yyDollar[1].node @@ -4699,7 +4778,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2503 +// line internal/php5/php5.y:2581 { yyVAL.node = &ast.StmtTraitUsePrecedence{ast.Node{}, yyDollar[1].node, yyDollar[3].list} @@ -4712,13 +4791,13 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2517 +// line internal/php5/php5.y:2595 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 188: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2521 +// line internal/php5/php5.y:2599 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4727,13 +4806,18 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2531 +// line internal/php5/php5.y:2609 { - name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, nil, name} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -4741,45 +4825,53 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2543 +// line internal/php5/php5.y:2626 { yyVAL.node = yyDollar[1].node } case 191: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2550 +// line internal/php5/php5.y:2633 { - target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, yyDollar[1].node, target} // save position - target.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token) // save comments yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, yyDollar[2].token.SkippedTokens) } case 192: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:2567 +// line internal/php5/php5.y:2654 { - alias := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} + alias := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, + } yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, alias} // save position - alias.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) // save comments yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Ref, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(alias, token.Start, yyDollar[4].token.SkippedTokens) } case 193: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2581 +// line internal/php5/php5.y:2672 { yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, nil} @@ -4792,19 +4884,19 @@ yydefault: } case 194: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2595 +// line internal/php5/php5.y:2686 { yyVAL.node = nil } case 195: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2599 +// line internal/php5/php5.y:2690 { yyVAL.node = yyDollar[1].node } case 196: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2606 +// line internal/php5/php5.y:2697 { yyVAL.node = &ast.StmtNop{ Node: ast.Node{ @@ -4815,7 +4907,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2615 +// line internal/php5/php5.y:2706 { yyVAL.node = &ast.StmtStmtList{ Node: ast.Node{ @@ -4828,130 +4920,136 @@ yydefault: } case 198: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2629 +// line internal/php5/php5.y:2720 { yyVAL.list = yyDollar[1].list } case 199: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2633 +// line internal/php5/php5.y:2724 { - modifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - yyVAL.list = []ast.Vertex{modifier} - - // save position - modifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(modifier, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.list = []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, + } } case 200: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2647 +// line internal/php5/php5.y:2739 { yyVAL.list = nil } case 201: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2651 +// line internal/php5/php5.y:2743 { yyVAL.list = yyDollar[1].list } case 202: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2658 +// line internal/php5/php5.y:2750 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 203: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2662 +// line internal/php5/php5.y:2754 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 204: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2669 +// line internal/php5/php5.y:2761 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 205: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2679 +// line internal/php5/php5.y:2771 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 206: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2689 +// line internal/php5/php5.y:2781 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 207: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2699 +// line internal/php5/php5.y:2791 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 208: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2709 +// line internal/php5/php5.y:2801 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 209: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2719 +// line internal/php5/php5.y:2811 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 210: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2732 +// line internal/php5/php5.y:2824 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} property := &ast.StmtProperty{ast.Node{}, variable, nil} yyVAL.list = append(yyDollar[1].list, property) // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) property.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) @@ -4961,15 +5059,20 @@ yydefault: } case 211: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:2748 +// line internal/php5/php5.y:2845 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} property := &ast.StmtProperty{ast.Node{}, variable, yyDollar[5].node} yyVAL.list = append(yyDollar[1].list, property) // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) property.GetNode().Position = position.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node) @@ -4980,15 +5083,20 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2765 +// line internal/php5/php5.y:2867 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} property := &ast.StmtProperty{ast.Node{}, variable, nil} yyVAL.list = []ast.Vertex{property} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) property.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) @@ -4997,15 +5105,20 @@ yydefault: } case 213: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2780 +// line internal/php5/php5.y:2887 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} property := &ast.StmtProperty{ast.Node{}, variable, yyDollar[3].node} yyVAL.list = []ast.Vertex{property} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) property.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node) @@ -5015,7 +5128,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:2799 +// line internal/php5/php5.y:2911 { constList := yyDollar[1].node.(*ast.StmtClassConstList) constList.Node.Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[5].node) @@ -5028,7 +5141,8 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[3].token), }, - Value: yyDollar[3].token.Value, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, }, EqualTkn: yyDollar[4].token, Expr: yyDollar[5].node, @@ -5040,7 +5154,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:2822 +// line internal/php5/php5.y:2935 { yyVAL.node = &ast.StmtClassConstList{ Node: ast.Node{ @@ -5056,7 +5170,8 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[2].token), }, - Value: yyDollar[2].token.Value, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, }, EqualTkn: yyDollar[3].token, Expr: yyDollar[4].node, @@ -5068,7 +5183,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2851 +// line internal/php5/php5.y:2965 { yyDollar[1].node.(*ast.StmtEcho).Exprs = append(yyDollar[1].node.(*ast.StmtEcho).Exprs, yyDollar[3].node) yyDollar[1].node.(*ast.StmtEcho).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtEcho).SeparatorTkns, yyDollar[2].token) @@ -5077,7 +5192,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2858 +// line internal/php5/php5.y:2972 { yyVAL.node = &ast.StmtEcho{ Exprs: []ast.Vertex{yyDollar[1].node}, @@ -5085,19 +5200,19 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2868 +// line internal/php5/php5.y:2982 { yyVAL.list = nil } case 219: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2872 +// line internal/php5/php5.y:2986 { yyVAL.list = yyDollar[1].list } case 220: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2879 +// line internal/php5/php5.y:2993 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5106,25 +5221,25 @@ yydefault: } case 221: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2886 +// line internal/php5/php5.y:3000 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 222: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2893 +// line internal/php5/php5.y:3007 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 223: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2897 +// line internal/php5/php5.y:3011 { yyVAL.list = yyDollar[1].list } case 224: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:2904 +// line internal/php5/php5.y:3018 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -5138,7 +5253,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2916 +// line internal/php5/php5.y:3030 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[2].node} yyVAL.list = []ast.Vertex{fetch} @@ -5152,37 +5267,37 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2931 +// line internal/php5/php5.y:3045 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 227: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2935 +// line internal/php5/php5.y:3049 { yyVAL.list = yyDollar[1].list } case 228: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2939 +// line internal/php5/php5.y:3053 { yyVAL.list = yyDollar[1].list } case 229: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2946 +// line internal/php5/php5.y:3060 { yyVAL.list = nil } case 230: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2950 +// line internal/php5/php5.y:3064 { yyVAL.list = yyDollar[1].list } case 231: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2957 +// line internal/php5/php5.y:3071 { if yyDollar[3].node != nil { @@ -5198,7 +5313,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:2974 +// line internal/php5/php5.y:3088 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, listNode, yyDollar[6].node} @@ -5215,7 +5330,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2989 +// line internal/php5/php5.y:3103 { yyVAL.node = &ast.ExprAssign{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5228,7 +5343,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3000 +// line internal/php5/php5.y:3114 { yyVAL.node = &ast.ExprAssignReference{ast.Node{}, yyDollar[1].node, yyDollar[4].node} @@ -5242,7 +5357,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:3012 +// line internal/php5/php5.y:3126 { var _new *ast.ExprNew @@ -5269,7 +5384,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3037 +// line internal/php5/php5.y:3151 { yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node} @@ -5281,7 +5396,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3047 +// line internal/php5/php5.y:3161 { yyVAL.node = &ast.ExprAssignPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5293,7 +5408,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3057 +// line internal/php5/php5.y:3171 { yyVAL.node = &ast.ExprAssignMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5306,7 +5421,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3068 +// line internal/php5/php5.y:3182 { yyVAL.node = &ast.ExprAssignMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5319,7 +5434,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3079 +// line internal/php5/php5.y:3193 { yyVAL.node = &ast.ExprAssignPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5332,7 +5447,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3090 +// line internal/php5/php5.y:3204 { yyVAL.node = &ast.ExprAssignDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5345,7 +5460,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3101 +// line internal/php5/php5.y:3215 { yyVAL.node = &ast.ExprAssignConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5358,7 +5473,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3112 +// line internal/php5/php5.y:3226 { yyVAL.node = &ast.ExprAssignMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5371,7 +5486,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3123 +// line internal/php5/php5.y:3237 { yyVAL.node = &ast.ExprAssignBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5384,7 +5499,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3134 +// line internal/php5/php5.y:3248 { yyVAL.node = &ast.ExprAssignBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5397,7 +5512,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3145 +// line internal/php5/php5.y:3259 { yyVAL.node = &ast.ExprAssignBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5410,7 +5525,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3156 +// line internal/php5/php5.y:3270 { yyVAL.node = &ast.ExprAssignShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5423,7 +5538,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3167 +// line internal/php5/php5.y:3281 { yyVAL.node = &ast.ExprAssignShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5436,7 +5551,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3178 +// line internal/php5/php5.y:3292 { yyVAL.node = &ast.ExprPostInc{ast.Node{}, yyDollar[1].node} @@ -5449,7 +5564,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3189 +// line internal/php5/php5.y:3303 { yyVAL.node = &ast.ExprPreInc{ast.Node{}, yyDollar[2].node} @@ -5461,7 +5576,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3199 +// line internal/php5/php5.y:3313 { yyVAL.node = &ast.ExprPostDec{ast.Node{}, yyDollar[1].node} @@ -5474,7 +5589,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3210 +// line internal/php5/php5.y:3324 { yyVAL.node = &ast.ExprPreDec{ast.Node{}, yyDollar[2].node} @@ -5486,7 +5601,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3220 +// line internal/php5/php5.y:3334 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5499,7 +5614,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3231 +// line internal/php5/php5.y:3345 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5512,7 +5627,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3242 +// line internal/php5/php5.y:3356 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5525,7 +5640,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3253 +// line internal/php5/php5.y:3367 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5538,7 +5653,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3264 +// line internal/php5/php5.y:3378 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5551,7 +5666,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3275 +// line internal/php5/php5.y:3389 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5564,7 +5679,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3286 +// line internal/php5/php5.y:3400 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5577,7 +5692,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3297 +// line internal/php5/php5.y:3411 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5590,7 +5705,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3308 +// line internal/php5/php5.y:3422 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5602,7 +5717,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3318 +// line internal/php5/php5.y:3432 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5615,7 +5730,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3329 +// line internal/php5/php5.y:3443 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5628,7 +5743,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3340 +// line internal/php5/php5.y:3454 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5641,7 +5756,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3351 +// line internal/php5/php5.y:3465 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5654,7 +5769,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3362 +// line internal/php5/php5.y:3476 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5667,7 +5782,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3373 +// line internal/php5/php5.y:3487 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5680,7 +5795,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3384 +// line internal/php5/php5.y:3498 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5693,7 +5808,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3395 +// line internal/php5/php5.y:3509 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5706,7 +5821,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3406 +// line internal/php5/php5.y:3520 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -5718,7 +5833,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3416 +// line internal/php5/php5.y:3530 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -5730,7 +5845,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3426 +// line internal/php5/php5.y:3540 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -5742,7 +5857,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3436 +// line internal/php5/php5.y:3550 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -5754,7 +5869,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3446 +// line internal/php5/php5.y:3560 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5767,7 +5882,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3457 +// line internal/php5/php5.y:3571 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5780,7 +5895,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3468 +// line internal/php5/php5.y:3582 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5793,7 +5908,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3479 +// line internal/php5/php5.y:3593 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5807,7 +5922,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3491 +// line internal/php5/php5.y:3605 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5820,7 +5935,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3502 +// line internal/php5/php5.y:3616 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5833,7 +5948,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3513 +// line internal/php5/php5.y:3627 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5846,7 +5961,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3524 +// line internal/php5/php5.y:3638 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5859,7 +5974,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3535 +// line internal/php5/php5.y:3649 { yyVAL.node = &ast.ExprInstanceOf{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5872,19 +5987,19 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3546 +// line internal/php5/php5.y:3660 { yyVAL.node = yyDollar[1].node } case 284: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3550 +// line internal/php5/php5.y:3664 { yyVAL.node = yyDollar[1].node } case 285: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3554 +// line internal/php5/php5.y:3668 { yyVAL.node = yyDollar[2].node @@ -5916,7 +6031,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:3584 +// line internal/php5/php5.y:3698 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -5930,7 +6045,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3596 +// line internal/php5/php5.y:3710 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -5944,13 +6059,13 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3608 +// line internal/php5/php5.y:3722 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3612 +// line internal/php5/php5.y:3726 { yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node} @@ -5963,7 +6078,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3623 +// line internal/php5/php5.y:3737 { yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node} @@ -5976,7 +6091,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3634 +// line internal/php5/php5.y:3748 { yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node} @@ -5989,7 +6104,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3645 +// line internal/php5/php5.y:3759 { yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node} @@ -6002,7 +6117,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3656 +// line internal/php5/php5.y:3770 { yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node} @@ -6015,7 +6130,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3667 +// line internal/php5/php5.y:3781 { yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node} @@ -6028,7 +6143,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3678 +// line internal/php5/php5.y:3792 { yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node} @@ -6041,7 +6156,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3689 +// line internal/php5/php5.y:3803 { yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[2].node} @@ -6061,7 +6176,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3707 +// line internal/php5/php5.y:3821 { yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node} @@ -6073,25 +6188,25 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3717 +// line internal/php5/php5.y:3831 { yyVAL.node = yyDollar[1].node } case 299: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3721 +// line internal/php5/php5.y:3835 { yyVAL.node = yyDollar[1].node } case 300: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3725 +// line internal/php5/php5.y:3839 { yyVAL.node = yyDollar[1].node } case 301: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3729 +// line internal/php5/php5.y:3843 { yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list} @@ -6103,7 +6218,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3739 +// line internal/php5/php5.y:3853 { yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} @@ -6115,7 +6230,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3749 +// line internal/php5/php5.y:3863 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil} @@ -6127,7 +6242,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php5/php5.y:3759 +// line internal/php5/php5.y:3873 { yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[4].list, yyDollar[6].ClosureUse, nil, yyDollar[8].list} @@ -6154,7 +6269,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] -// line internal/php5/php5.y:3783 +// line internal/php5/php5.y:3897 { yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[3].token != nil, true, yyDollar[5].list, yyDollar[7].ClosureUse, nil, yyDollar[9].list} @@ -6182,7 +6297,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3811 +// line internal/php5/php5.y:3925 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6194,7 +6309,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3821 +// line internal/php5/php5.y:3935 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6206,7 +6321,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3831 +// line internal/php5/php5.y:3945 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6219,7 +6334,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3842 +// line internal/php5/php5.y:3956 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6232,7 +6347,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3856 +// line internal/php5/php5.y:3970 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6245,7 +6360,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3867 +// line internal/php5/php5.y:3981 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6258,7 +6373,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3878 +// line internal/php5/php5.y:3992 { str := &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, str, yyDollar[3].node} @@ -6274,7 +6389,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3892 +// line internal/php5/php5.y:4006 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6287,7 +6402,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3906 +// line internal/php5/php5.y:4020 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -6301,7 +6416,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3918 +// line internal/php5/php5.y:4032 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -6314,19 +6429,19 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3932 +// line internal/php5/php5.y:4046 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:3939 +// line internal/php5/php5.y:4053 { yyVAL.ClosureUse = nil } case 318: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3943 +// line internal/php5/php5.y:4057 { yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list} @@ -6340,14 +6455,19 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3958 +// line internal/php5/php5.y:4072 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyVAL.list = append(yyDollar[1].list, variable) // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) // save comments @@ -6356,15 +6476,20 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3972 +// line internal/php5/php5.y:4091 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} reference := &ast.ExprReference{ast.Node{}, variable} yyVAL.list = append(yyDollar[1].list, reference) // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) reference.GetNode().Position = position.NewTokensPosition(yyDollar[3].token, yyDollar[4].token) @@ -6375,14 +6500,19 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3989 +// line internal/php5/php5.y:4113 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyVAL.list = []ast.Vertex{variable} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -6390,15 +6520,20 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4002 +// line internal/php5/php5.y:4131 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} reference := &ast.ExprReference{ast.Node{}, variable} yyVAL.list = []ast.Vertex{reference} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) reference.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token) @@ -6408,7 +6543,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4021 +// line internal/php5/php5.y:4155 { name := &ast.NameName{ Node: ast.Node{ @@ -6423,7 +6558,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4034 +// line internal/php5/php5.y:4168 { name := &ast.NameRelative{ Node: ast.Node{ @@ -6440,7 +6575,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4049 +// line internal/php5/php5.y:4183 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -6456,7 +6591,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4063 +// line internal/php5/php5.y:4197 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6469,7 +6604,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4074 +// line internal/php5/php5.y:4208 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6482,7 +6617,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4085 +// line internal/php5/php5.y:4219 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6495,7 +6630,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4096 +// line internal/php5/php5.y:4230 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6508,7 +6643,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4107 +// line internal/php5/php5.y:4241 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6520,19 +6655,19 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4120 +// line internal/php5/php5.y:4254 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 332: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4130 +// line internal/php5/php5.y:4264 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -6543,7 +6678,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4139 +// line internal/php5/php5.y:4273 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -6556,7 +6691,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4150 +// line internal/php5/php5.y:4284 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -6568,7 +6703,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4163 +// line internal/php5/php5.y:4297 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -6579,7 +6714,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4172 +// line internal/php5/php5.y:4306 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -6592,7 +6727,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4183 +// line internal/php5/php5.y:4317 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -6604,19 +6739,19 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4196 +// line internal/php5/php5.y:4330 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4200 +// line internal/php5/php5.y:4334 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4207 +// line internal/php5/php5.y:4341 { yyVAL.node = yyDollar[1].node @@ -6657,25 +6792,25 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4246 +// line internal/php5/php5.y:4380 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4254 +// line internal/php5/php5.y:4388 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4258 +// line internal/php5/php5.y:4392 { yyVAL.list = []ast.Vertex{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4266 +// line internal/php5/php5.y:4400 { yyVAL.list = yyDollar[2].list @@ -6684,13 +6819,13 @@ yydefault: } case 345: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4276 +// line internal/php5/php5.y:4410 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4280 +// line internal/php5/php5.y:4414 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6706,19 +6841,19 @@ yydefault: } case 347: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4294 +// line internal/php5/php5.y:4428 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4301 +// line internal/php5/php5.y:4435 { yyVAL.list = []ast.Vertex{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4305 +// line internal/php5/php5.y:4439 { part := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{part} @@ -6728,25 +6863,25 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4313 +// line internal/php5/php5.y:4447 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4320 +// line internal/php5/php5.y:4454 { yyVAL.node = nil } case 352: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4324 +// line internal/php5/php5.y:4458 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4331 +// line internal/php5/php5.y:4465 { yyVAL.node = &ast.ScalarLnumber{ast.Node{}, yyDollar[1].token.Value} @@ -6758,7 +6893,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4341 +// line internal/php5/php5.y:4475 { yyVAL.node = &ast.ScalarDnumber{ast.Node{}, yyDollar[1].token.Value} @@ -6770,7 +6905,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4351 +// line internal/php5/php5.y:4485 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -6782,7 +6917,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4361 +// line internal/php5/php5.y:4495 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6794,7 +6929,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4371 +// line internal/php5/php5.y:4505 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6806,7 +6941,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4381 +// line internal/php5/php5.y:4515 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6818,7 +6953,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4391 +// line internal/php5/php5.y:4525 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6830,7 +6965,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4401 +// line internal/php5/php5.y:4535 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6842,7 +6977,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4411 +// line internal/php5/php5.y:4545 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6854,7 +6989,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4421 +// line internal/php5/php5.y:4555 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6866,7 +7001,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4431 +// line internal/php5/php5.y:4565 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, []ast.Vertex{encapsed}} @@ -6880,7 +7015,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4443 +// line internal/php5/php5.y:4577 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, nil} @@ -6892,41 +7027,45 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4456 +// line internal/php5/php5.y:4590 { - target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} // save position - target.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token) // save comments yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, yyDollar[3].token.SkippedTokens) } case 366: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4473 +// line internal/php5/php5.y:4611 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4480 +// line internal/php5/php5.y:4618 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4484 +// line internal/php5/php5.y:4622 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4488 +// line internal/php5/php5.y:4626 { name := &ast.NameName{ Node: ast.Node{ @@ -6941,7 +7080,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4501 +// line internal/php5/php5.y:4639 { name := &ast.NameRelative{ Node: ast.Node{ @@ -6958,7 +7097,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4516 +// line internal/php5/php5.y:4654 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -6974,7 +7113,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4530 +// line internal/php5/php5.y:4668 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -6988,7 +7127,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4542 +// line internal/php5/php5.y:4680 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -7001,13 +7140,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4553 +// line internal/php5/php5.y:4691 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4557 +// line internal/php5/php5.y:4695 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7019,13 +7158,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4567 +// line internal/php5/php5.y:4705 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4574 +// line internal/php5/php5.y:4712 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7038,7 +7177,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4585 +// line internal/php5/php5.y:4723 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7051,7 +7190,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4596 +// line internal/php5/php5.y:4734 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7064,7 +7203,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4607 +// line internal/php5/php5.y:4745 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7077,7 +7216,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4618 +// line internal/php5/php5.y:4756 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7090,7 +7229,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4629 +// line internal/php5/php5.y:4767 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7103,7 +7242,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4640 +// line internal/php5/php5.y:4778 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7116,7 +7255,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4651 +// line internal/php5/php5.y:4789 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -7128,7 +7267,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4661 +// line internal/php5/php5.y:4799 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -7140,7 +7279,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4671 +// line internal/php5/php5.y:4809 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7153,7 +7292,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4682 +// line internal/php5/php5.y:4820 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7166,7 +7305,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4693 +// line internal/php5/php5.y:4831 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7179,7 +7318,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4704 +// line internal/php5/php5.y:4842 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7192,7 +7331,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4715 +// line internal/php5/php5.y:4853 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7205,7 +7344,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4726 +// line internal/php5/php5.y:4864 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7218,7 +7357,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4737 +// line internal/php5/php5.y:4875 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7231,7 +7370,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4748 +// line internal/php5/php5.y:4886 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7244,7 +7383,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4759 +// line internal/php5/php5.y:4897 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7257,7 +7396,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4770 +// line internal/php5/php5.y:4908 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7270,7 +7409,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4781 +// line internal/php5/php5.y:4919 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7283,7 +7422,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4792 +// line internal/php5/php5.y:4930 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7296,7 +7435,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4803 +// line internal/php5/php5.y:4941 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7309,7 +7448,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4814 +// line internal/php5/php5.y:4952 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7322,7 +7461,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4825 +// line internal/php5/php5.y:4963 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7336,7 +7475,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4837 +// line internal/php5/php5.y:4975 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7349,7 +7488,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4848 +// line internal/php5/php5.y:4986 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7362,7 +7501,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4859 +// line internal/php5/php5.y:4997 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7375,7 +7514,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4870 +// line internal/php5/php5.y:5008 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7388,7 +7527,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4881 +// line internal/php5/php5.y:5019 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -7402,7 +7541,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:4893 +// line internal/php5/php5.y:5031 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -7416,7 +7555,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4905 +// line internal/php5/php5.y:5043 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -7428,7 +7567,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4915 +// line internal/php5/php5.y:5053 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -7440,7 +7579,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4925 +// line internal/php5/php5.y:5063 { yyVAL.node = yyDollar[2].node @@ -7450,13 +7589,13 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4936 +// line internal/php5/php5.y:5074 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4940 +// line internal/php5/php5.y:5078 { name := &ast.NameName{ Node: ast.Node{ @@ -7471,7 +7610,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4953 +// line internal/php5/php5.y:5091 { name := &ast.NameRelative{ Node: ast.Node{ @@ -7488,7 +7627,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4968 +// line internal/php5/php5.y:5106 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -7504,13 +7643,18 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4985 +// line internal/php5/php5.y:5123 { - name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } yyVAL.node = &ast.ExprVariable{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -7518,25 +7662,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4997 +// line internal/php5/php5.y:5140 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5001 +// line internal/php5/php5.y:5144 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5005 +// line internal/php5/php5.y:5148 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5009 +// line internal/php5/php5.y:5152 { yyVAL.node = &ast.ScalarEncapsed{ast.Node{}, yyDollar[2].list} @@ -7548,7 +7692,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5019 +// line internal/php5/php5.y:5162 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, yyDollar[2].list} @@ -7560,7 +7704,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5029 +// line internal/php5/php5.y:5172 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7572,13 +7716,13 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5042 +// line internal/php5/php5.y:5185 { yyVAL.list = nil } case 422: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5046 +// line internal/php5/php5.y:5189 { yyVAL.list = yyDollar[1].list @@ -7589,19 +7733,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5058 +// line internal/php5/php5.y:5201 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5062 +// line internal/php5/php5.y:5205 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5069 +// line internal/php5/php5.y:5212 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -7616,7 +7760,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5082 +// line internal/php5/php5.y:5225 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -7630,7 +7774,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5094 +// line internal/php5/php5.y:5237 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -7644,7 +7788,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5106 +// line internal/php5/php5.y:5249 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -7657,19 +7801,19 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5120 +// line internal/php5/php5.y:5263 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5124 +// line internal/php5/php5.y:5267 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5131 +// line internal/php5/php5.y:5274 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -7686,7 +7830,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5146 +// line internal/php5/php5.y:5289 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -7703,25 +7847,25 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5165 +// line internal/php5/php5.y:5308 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5173 +// line internal/php5/php5.y:5316 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5180 +// line internal/php5/php5.y:5323 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5187 +// line internal/php5/php5.y:5330 { yyVAL.node = yyDollar[1].node @@ -7779,25 +7923,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5243 +// line internal/php5/php5.y:5386 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5250 +// line internal/php5/php5.y:5393 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5254 +// line internal/php5/php5.y:5397 { yyVAL.list = []ast.Vertex{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5262 +// line internal/php5/php5.y:5405 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*ast.ExprMethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*ast.ExprPropertyFetch).Property @@ -7811,7 +7955,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5277 +// line internal/php5/php5.y:5420 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -7825,7 +7969,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5289 +// line internal/php5/php5.y:5432 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = []ast.Vertex{yyDollar[1].node, fetch} @@ -7839,7 +7983,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5304 +// line internal/php5/php5.y:5447 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, nil, nil, yyDollar[1].node.(*ast.ArgumentList)} @@ -7848,31 +7992,31 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5314 +// line internal/php5/php5.y:5457 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5318 +// line internal/php5/php5.y:5461 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5322 +// line internal/php5/php5.y:5465 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5329 +// line internal/php5/php5.y:5472 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5333 +// line internal/php5/php5.y:5476 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -7884,7 +8028,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5346 +// line internal/php5/php5.y:5489 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7897,7 +8041,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5357 +// line internal/php5/php5.y:5500 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7910,13 +8054,13 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5371 +// line internal/php5/php5.y:5514 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5378 +// line internal/php5/php5.y:5521 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7929,7 +8073,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5389 +// line internal/php5/php5.y:5532 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7942,31 +8086,31 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5403 +// line internal/php5/php5.y:5546 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5407 +// line internal/php5/php5.y:5550 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5411 +// line internal/php5/php5.y:5554 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5419 +// line internal/php5/php5.y:5562 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5423 +// line internal/php5/php5.y:5566 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -7978,13 +8122,13 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5433 +// line internal/php5/php5.y:5576 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5440 +// line internal/php5/php5.y:5583 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7997,7 +8141,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5451 +// line internal/php5/php5.y:5594 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8010,19 +8154,24 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5462 +// line internal/php5/php5.y:5605 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5470 +// line internal/php5/php5.y:5613 { - name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } yyVAL.node = &ast.ExprVariable{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -8030,7 +8179,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5482 +// line internal/php5/php5.y:5630 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -8044,25 +8193,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5497 +// line internal/php5/php5.y:5645 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5501 +// line internal/php5/php5.y:5649 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5509 +// line internal/php5/php5.y:5657 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5513 +// line internal/php5/php5.y:5661 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8072,7 +8221,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5524 +// line internal/php5/php5.y:5672 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -8086,7 +8235,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5536 +// line internal/php5/php5.y:5684 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -8100,7 +8249,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5548 +// line internal/php5/php5.y:5696 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8110,19 +8259,19 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5559 +// line internal/php5/php5.y:5707 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 473: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5569 +// line internal/php5/php5.y:5717 { yyVAL.node = yyDollar[2].node @@ -8135,7 +8284,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5583 +// line internal/php5/php5.y:5731 { n := &ast.ExprVariable{ast.Node{}, nil} yyVAL.simpleIndirectReference = simpleIndirectReference{[]*ast.ExprVariable{n}, n} @@ -8148,7 +8297,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5594 +// line internal/php5/php5.y:5742 { n := &ast.ExprVariable{ast.Node{}, nil} @@ -8165,7 +8314,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5612 +// line internal/php5/php5.y:5760 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}} @@ -8178,7 +8327,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5623 +// line internal/php5/php5.y:5771 { if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil { yyVAL.list = []ast.Vertex{} @@ -8188,7 +8337,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5635 +// line internal/php5/php5.y:5783 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} @@ -8200,7 +8349,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5645 +// line internal/php5/php5.y:5793 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, listNode} @@ -8216,19 +8365,19 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5659 +// line internal/php5/php5.y:5807 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} } case 481: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5667 +// line internal/php5/php5.y:5815 { yyVAL.list = []ast.Vertex{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5671 +// line internal/php5/php5.y:5819 { yyVAL.list = yyDollar[1].list @@ -8243,7 +8392,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5687 +// line internal/php5/php5.y:5835 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8258,7 +8407,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5700 +// line internal/php5/php5.y:5848 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8272,7 +8421,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5712 +// line internal/php5/php5.y:5860 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -8286,7 +8435,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5724 +// line internal/php5/php5.y:5872 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -8299,7 +8448,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:5735 +// line internal/php5/php5.y:5883 { reference := &ast.ExprReference{ast.Node{}, yyDollar[6].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, reference} @@ -8317,7 +8466,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5751 +// line internal/php5/php5.y:5899 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -8333,7 +8482,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5765 +// line internal/php5/php5.y:5913 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference} @@ -8350,7 +8499,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5780 +// line internal/php5/php5.y:5928 { reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -8365,13 +8514,13 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5796 +// line internal/php5/php5.y:5944 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5800 +// line internal/php5/php5.y:5948 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.list = append(yyDollar[1].list, encapsed) @@ -8384,13 +8533,13 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5811 +// line internal/php5/php5.y:5959 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5815 +// line internal/php5/php5.y:5963 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{encapsed, yyDollar[2].node} @@ -8403,13 +8552,18 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5829 +// line internal/php5/php5.y:5977 { - name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } yyVAL.node = &ast.ExprVariable{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -8417,14 +8571,19 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5841 +// line internal/php5/php5.y:5994 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, variable, yyDollar[3].node} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) @@ -8434,26 +8593,35 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5856 +// line internal/php5/php5.y:6014 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} - fetch := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + fetch := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, variable, fetch} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - fetch.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(fetch, token.Start, yyDollar[3].token.SkippedTokens) } case 498: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5873 +// line internal/php5/php5.y:6040 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -8468,15 +8636,20 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5886 +// line internal/php5/php5.y:6053 { - name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, name} yyVAL.node = variable // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) // save comments @@ -8485,14 +8658,19 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:5901 +// line internal/php5/php5.y:6073 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, variable, yyDollar[4].node} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[6].token) @@ -8504,7 +8682,7 @@ yydefault: } case 501: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5918 +// line internal/php5/php5.y:6095 { yyVAL.node = yyDollar[2].node @@ -8514,7 +8692,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5929 +// line internal/php5/php5.y:6106 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -8526,7 +8704,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5939 +// line internal/php5/php5.y:6116 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -8543,13 +8721,18 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5954 +// line internal/php5/php5.y:6131 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -8557,7 +8740,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5969 +// line internal/php5/php5.y:6151 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -8571,7 +8754,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5981 +// line internal/php5/php5.y:6163 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -8593,7 +8776,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6001 +// line internal/php5/php5.y:6183 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -8615,7 +8798,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6021 +// line internal/php5/php5.y:6203 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -8627,7 +8810,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6031 +// line internal/php5/php5.y:6213 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -8639,7 +8822,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6041 +// line internal/php5/php5.y:6223 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -8661,7 +8844,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6061 +// line internal/php5/php5.y:6243 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -8673,7 +8856,7 @@ yydefault: } case 512: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6071 +// line internal/php5/php5.y:6253 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -8685,13 +8868,13 @@ yydefault: } case 513: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6084 +// line internal/php5/php5.y:6266 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 514: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6088 +// line internal/php5/php5.y:6270 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -8700,79 +8883,95 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6098 +// line internal/php5/php5.y:6280 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6102 +// line internal/php5/php5.y:6284 { yyVAL.node = yyDollar[1].node } case 517: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6109 +// line internal/php5/php5.y:6291 { - target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} // save position - target.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token) // save comments yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, yyDollar[3].token.SkippedTokens) } case 518: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6123 +// line internal/php5/php5.y:6309 { - target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} // save position - target.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token) // save comments yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, yyDollar[3].token.SkippedTokens) } case 519: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6140 +// line internal/php5/php5.y:6330 { - target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} // save position - target.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token) // save comments yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, yyDollar[3].token.SkippedTokens) } case 520: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6157 +// line internal/php5/php5.y:6351 { - target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} // save position - target.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token) // save comments yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, yyDollar[3].token.SkippedTokens) } } goto yystack /* stack new state and value */ diff --git a/internal/php5/php5.y b/internal/php5/php5.y index 47d2df6..22a845a 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -422,7 +422,8 @@ top_statement: Node: ast.Node{ Position: position.NewTokenPosition($2), }, - Value: $2.Value, + IdentifierTkn: $2, + Value: $2.Value, }, UseDeclarations: $3, SemiColonTkn: $4, @@ -439,7 +440,8 @@ top_statement: Node: ast.Node{ Position: position.NewTokenPosition($2), }, - Value: $2.Value, + IdentifierTkn: $2, + Value: $2.Value, }, UseDeclarations: $3, SemiColonTkn: $4, @@ -498,7 +500,8 @@ use_declaration: Node: ast.Node{ Position: position.NewTokenPosition($3), }, - Value: $3.Value, + IdentifierTkn: $3, + Value: $3.Value, }, } } @@ -535,7 +538,8 @@ use_declaration: Node: ast.Node{ Position: position.NewTokenPosition($4), }, - Value: $4.Value, + IdentifierTkn: $4, + Value: $4.Value, }, } } @@ -586,7 +590,8 @@ use_function_declaration: Node: ast.Node{ Position: position.NewTokenPosition($3), }, - Value: $3.Value, + IdentifierTkn: $3, + Value: $3.Value, }, } } @@ -623,7 +628,8 @@ use_function_declaration: Node: ast.Node{ Position: position.NewTokenPosition($4), }, - Value: $4.Value, + IdentifierTkn: $4, + Value: $4.Value, }, } } @@ -674,7 +680,8 @@ use_const_declaration: Node: ast.Node{ Position: position.NewTokenPosition($3), }, - Value: $3.Value, + IdentifierTkn: $3, + Value: $3.Value, }, } } @@ -711,7 +718,8 @@ use_const_declaration: Node: ast.Node{ Position: position.NewTokenPosition($4), }, - Value: $4.Value, + IdentifierTkn: $4, + Value: $4.Value, }, } } @@ -731,7 +739,8 @@ constant_declaration: Node: ast.Node{ Position: position.NewTokenPosition($3), }, - Value: $3.Value, + IdentifierTkn: $3, + Value: $3.Value, }, EqualTkn: $4, Expr: $5, @@ -757,7 +766,8 @@ constant_declaration: Node: ast.Node{ Position: position.NewTokenPosition($2), }, - Value: $2.Value, + IdentifierTkn: $2, + Value: $2.Value, }, EqualTkn: $3, Expr: $4, @@ -828,20 +838,19 @@ statement: } | T_STRING ':' { - label := &ast.Identifier{ast.Node{}, $1.Value} $$ = &ast.StmtLabel{ Node: ast.Node{ Position: position.NewTokensPosition($1, $2), }, - LabelName: label, + LabelName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + }, ColonTkn: $2, } - - // save position - label.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating(label, token.Start, $1.SkippedTokens) } ; @@ -1182,22 +1191,20 @@ unticked_statement: } | T_GOTO T_STRING ';' { - label := &ast.Identifier{ast.Node{}, $2.Value} - $$ = &ast.StmtGoto{ Node: ast.Node{ Position: position.NewTokensPosition($1, $3), }, - GotoTkn: $1, - Label: label, + GotoTkn: $1, + Label: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + }, SemiColonTkn: $3, } - - // save position - label.GetNode().Position = position.NewTokenPosition($2) - - // save comments - yylex.(*Parser).setFreeFloating(label, token.Start, $2.SkippedTokens) } ; @@ -1208,7 +1215,13 @@ catch_statement: } | T_CATCH '(' fully_qualified_class_name T_VARIABLE ')' '{' inner_statement_list '}' additional_catches { - identifier := &ast.Identifier{ast.Node{}, $4.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} catch := &ast.StmtCatch{ Node: ast.Node{ @@ -1226,7 +1239,6 @@ catch_statement: $$ = append([]ast.Vertex{catch}, $9...) // save position - identifier.GetNode().Position = position.NewTokenPosition($4) variable.GetNode().Position = position.NewTokenPosition($4) // save comments @@ -1278,7 +1290,13 @@ non_empty_additional_catches: additional_catch: T_CATCH '(' fully_qualified_class_name T_VARIABLE ')' '{' inner_statement_list '}' { - identifier := &ast.Identifier{ast.Node{}, $4.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = &ast.StmtCatch{ Node: ast.Node{ @@ -1295,7 +1313,6 @@ additional_catch: } // save position - identifier.GetNode().Position = position.NewTokenPosition($4) variable.GetNode().Position = position.NewTokenPosition($4) // save comments @@ -1365,22 +1382,23 @@ is_variadic: unticked_function_declaration_statement: function is_reference T_STRING '(' parameter_list ')' '{' inner_statement_list '}' { - name := &ast.Identifier{ast.Node{}, $3.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.StmtFunction{ast.Node{}, $2 != nil, name, $5, nil, $8} // save position - name.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewTokensPosition($1, $9) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) if $2 != nil { yylex.(*Parser).setFreeFloating($$, token.Function, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Start, $3.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating(name, token.Start, $3.SkippedTokens) } - yylex.(*Parser).setFreeFloating($$, token.Name, $4.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.ParamList, $6.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.Params, $7.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.Stmts, $9.SkippedTokens) @@ -1390,7 +1408,13 @@ unticked_function_declaration_statement: unticked_class_declaration_statement: class_entry_type T_STRING extends_from implements_list '{' class_statement_list '}' { - name := &ast.Identifier{ast.Node{}, $2.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + } switch n := $1.(type) { case *ast.StmtClass : n.ClassName = name @@ -1406,26 +1430,28 @@ unticked_class_declaration_statement: $$ = $1 // save position - name.GetNode().Position = position.NewTokenPosition($2) $$.GetNode().Position = position.NewNodeTokenPosition($1, $7) // save comments - yylex.(*Parser).setFreeFloating(name, token.Start, $2.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.Name, $5.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.Stmts, $7.SkippedTokens) } | interface_entry T_STRING interface_extends_list '{' class_statement_list '}' { - name := &ast.Identifier{ast.Node{}, $2.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + } $$ = &ast.StmtInterface{ast.Node{}, name, $3, $5} // save position - name.GetNode().Position = position.NewTokenPosition($2) $$.GetNode().Position = position.NewTokensPosition($1, $6) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Start, $2.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.Name, $4.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.Stmts, $6.SkippedTokens) } @@ -1445,11 +1471,16 @@ class_entry_type: } | T_ABSTRACT T_CLASS { - classModifier := &ast.Identifier{ast.Node{}, $1.Value} + classModifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } $$ = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil} // save position - classModifier.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokensPosition($1, $2) // save comments @@ -1458,21 +1489,26 @@ class_entry_type: } | T_TRAIT { - $$ = &ast.StmtTrait{ast.Node{}, nil, nil} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_FINAL T_CLASS { - classModifier := &ast.Identifier{ast.Node{}, $1.Value} + classModifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } $$ = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil} // save position - classModifier.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokensPosition($1, $2) // save comments @@ -1703,7 +1739,8 @@ declare_list: Node: ast.Node{ Position: position.NewTokenPosition($1), }, - Value: $1.Value, + IdentifierTkn: $1, + Value: $1.Value, }, EqualTkn: $2, Expr: $3, @@ -1726,7 +1763,8 @@ declare_list: Node: ast.Node{ Position: position.NewTokenPosition($3), }, - Value: $3.Value, + IdentifierTkn: $3, + Value: $3.Value, }, EqualTkn: $4, Expr: $5, @@ -1989,8 +2027,13 @@ non_empty_parameter_list: parameter: optional_class_type is_reference is_variadic T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $4.Value} - identifier.GetNode().Position = position.NewTokenPosition($4) + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + } var variable ast.Vertex variable = &ast.ExprVariable{ast.Node{}, identifier} @@ -2023,8 +2066,13 @@ parameter: } | optional_class_type is_reference is_variadic T_VARIABLE '=' static_scalar { - identifier := &ast.Identifier{ast.Node{}, $4.Value} - identifier.GetNode().Position = position.NewTokenPosition($4) + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + } var variable ast.Vertex variable = &ast.ExprVariable{ast.Node{}, identifier} @@ -2066,23 +2114,23 @@ optional_class_type: } | T_ARRAY { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_CALLABLE { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | fully_qualified_class_name { @@ -2207,11 +2255,16 @@ global_var_list: global_var: T_VARIABLE { - name := &ast.Identifier{ast.Node{}, $1.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } $$ = &ast.ExprVariable{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -2245,7 +2298,13 @@ global_var: static_var_list: static_var_list ',' T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $3.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $1.(*ast.StmtStatic).Vars = append($1.(*ast.StmtStatic).Vars, &ast.StmtStaticVar{ @@ -2259,7 +2318,6 @@ static_var_list: $$ = $1 // save position - identifier.GetNode().Position = position.NewTokenPosition($3) variable.GetNode().Position = position.NewTokenPosition($3) // save comments @@ -2267,7 +2325,13 @@ static_var_list: } | static_var_list ',' T_VARIABLE '=' static_scalar { - identifier := &ast.Identifier{ast.Node{}, $3.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $1.(*ast.StmtStatic).Vars = append($1.(*ast.StmtStatic).Vars, &ast.StmtStaticVar{ @@ -2283,7 +2347,6 @@ static_var_list: $$ = $1 // save position - identifier.GetNode().Position = position.NewTokenPosition($3) variable.GetNode().Position = position.NewTokenPosition($3) // save comments @@ -2291,7 +2354,13 @@ static_var_list: } | T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = &ast.StmtStatic{ @@ -2306,7 +2375,6 @@ static_var_list: } // save position - identifier.GetNode().Position = position.NewTokenPosition($1) variable.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -2314,7 +2382,13 @@ static_var_list: } | T_VARIABLE '=' static_scalar { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = &ast.StmtStatic{ @@ -2331,7 +2405,6 @@ static_var_list: } // save position - identifier.GetNode().Position = position.NewTokenPosition($1) variable.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -2377,11 +2450,16 @@ class_statement: } | method_modifiers function is_reference T_STRING '(' parameter_list ')' method_body { - name := &ast.Identifier{ast.Node{}, $4.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + } $$ = &ast.StmtClassMethod{ast.Node{}, $3 != nil, name, $1, $6, nil, $8} // save position - name.GetNode().Position = position.NewTokenPosition($4) if $1 == nil { $$.GetNode().Position = position.NewTokenNodePosition($2, $8) } else { @@ -2529,11 +2607,16 @@ trait_reference_list: trait_method_reference: T_STRING { - name := &ast.Identifier{ast.Node{}, $1.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } $$ = &ast.StmtTraitMethodRef{ast.Node{}, nil, name} // save position - name.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -2548,34 +2631,42 @@ trait_method_reference: trait_method_reference_fully_qualified: fully_qualified_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { - target := &ast.Identifier{ast.Node{}, $3.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.StmtTraitMethodRef{ast.Node{}, $1, target} // save position - target.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, $2.SkippedTokens) } ; trait_alias: trait_method_reference T_AS trait_modifiers T_STRING { - alias := &ast.Identifier{ast.Node{}, $4.Value} + alias := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + } $$ = &ast.StmtTraitUseAlias{ast.Node{}, $1, $3, alias} // save position - alias.GetNode().Position = position.NewTokenPosition($4) $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).setFreeFloating($$, token.Ref, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(alias, token.Start, $4.SkippedTokens) } | trait_method_reference T_AS member_modifier { @@ -2631,14 +2722,15 @@ variable_modifiers: } | T_VAR { - modifier := &ast.Identifier{ast.Node{}, $1.Value} - $$ = []ast.Vertex{modifier} - - // save position - modifier.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating(modifier, token.Start, $1.SkippedTokens) + $$ = []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + }, + } } ; @@ -2667,76 +2759,81 @@ non_empty_member_modifiers: member_modifier: T_PUBLIC { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_PROTECTED { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_PRIVATE { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_STATIC { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_ABSTRACT { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_FINAL { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } ; class_variable_declaration: class_variable_declaration ',' T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $3.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} property := &ast.StmtProperty{ast.Node{}, variable, nil} $$ = append($1, property) // save position - identifier.GetNode().Position = position.NewTokenPosition($3) variable.GetNode().Position = position.NewTokenPosition($3) property.GetNode().Position = position.NewTokenPosition($3) @@ -2746,13 +2843,18 @@ class_variable_declaration: } | class_variable_declaration ',' T_VARIABLE '=' static_scalar { - identifier := &ast.Identifier{ast.Node{}, $3.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} property := &ast.StmtProperty{ast.Node{}, variable, $5} $$ = append($1, property) // save position - identifier.GetNode().Position = position.NewTokenPosition($3) variable.GetNode().Position = position.NewTokenPosition($3) property.GetNode().Position = position.NewTokenNodePosition($3, $5) @@ -2763,13 +2865,18 @@ class_variable_declaration: } | T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} property := &ast.StmtProperty{ast.Node{}, variable, nil} $$ = []ast.Vertex{property} // save position - identifier.GetNode().Position = position.NewTokenPosition($1) variable.GetNode().Position = position.NewTokenPosition($1) property.GetNode().Position = position.NewTokenPosition($1) @@ -2778,13 +2885,18 @@ class_variable_declaration: } | T_VARIABLE '=' static_scalar { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} property := &ast.StmtProperty{ast.Node{}, variable, $3} $$ = []ast.Vertex{property} // save position - identifier.GetNode().Position = position.NewTokenPosition($1) variable.GetNode().Position = position.NewTokenPosition($1) property.GetNode().Position = position.NewTokenNodePosition($1, $3) @@ -2808,7 +2920,8 @@ class_constant_declaration: Node: ast.Node{ Position: position.NewTokenPosition($3), }, - Value: $3.Value, + IdentifierTkn: $3, + Value: $3.Value, }, EqualTkn: $4, Expr: $5, @@ -2834,7 +2947,8 @@ class_constant_declaration: Node: ast.Node{ Position: position.NewTokenPosition($2), }, - Value: $2.Value, + IdentifierTkn: $2, + Value: $2.Value, }, EqualTkn: $3, Expr: $4, @@ -3956,12 +4070,17 @@ lexical_vars: lexical_var_list: lexical_var_list ',' T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $3.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = append($1, variable) // save position - identifier.GetNode().Position = position.NewTokenPosition($3) variable.GetNode().Position = position.NewTokenPosition($3) // save comments @@ -3970,13 +4089,18 @@ lexical_var_list: } | lexical_var_list ',' '&' T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $4.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} reference := &ast.ExprReference{ast.Node{}, variable} $$ = append($1, reference) // save position - identifier.GetNode().Position = position.NewTokenPosition($4) variable.GetNode().Position = position.NewTokenPosition($4) reference.GetNode().Position = position.NewTokensPosition($3, $4) @@ -3987,12 +4111,17 @@ lexical_var_list: } | T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = []ast.Vertex{variable} // save position - identifier.GetNode().Position = position.NewTokenPosition($1) variable.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -4000,13 +4129,18 @@ lexical_var_list: } | '&' T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $2.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} reference := &ast.ExprReference{ast.Node{}, variable} $$ = []ast.Vertex{reference} // save position - identifier.GetNode().Position = position.NewTokenPosition($2) variable.GetNode().Position = position.NewTokenPosition($2) reference.GetNode().Position = position.NewTokensPosition($1, $2) @@ -4118,13 +4252,13 @@ function_call: class_name: T_STATIC { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | namespace_name { @@ -4454,17 +4588,21 @@ common_scalar: static_class_constant: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { - target := &ast.Identifier{ast.Node{}, $3.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target} // save position - target.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, $3.SkippedTokens) } ; @@ -4983,11 +5121,16 @@ general_constant: scalar: T_STRING_VARNAME { - name := &ast.Identifier{ast.Node{}, $1.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } $$ = &ast.ExprVariable{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -5468,11 +5611,16 @@ reference_variable: compound_variable: T_VARIABLE { - name := &ast.Identifier{ast.Node{}, $1.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } $$ = &ast.ExprVariable{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -5557,13 +5705,13 @@ object_dim_list: variable_name: T_STRING { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | '{' expr '}' { @@ -5827,11 +5975,16 @@ encaps_list: encaps_var: T_VARIABLE { - name := &ast.Identifier{ast.Node{}, $1.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } $$ = &ast.ExprVariable{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -5839,12 +5992,17 @@ encaps_var: } | T_VARIABLE '[' encaps_var_offset ']' { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = &ast.ExprArrayDimFetch{ast.Node{}, variable, $3} // save position - identifier.GetNode().Position = position.NewTokenPosition($1) variable.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokensPosition($1, $4) @@ -5854,20 +6012,29 @@ encaps_var: } | T_VARIABLE T_OBJECT_OPERATOR T_STRING { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} - fetch := &ast.Identifier{ast.Node{}, $3.Value} + fetch := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.ExprPropertyFetch{ast.Node{}, variable, fetch} // save position - identifier.GetNode().Position = position.NewTokenPosition($1) variable.GetNode().Position = position.NewTokenPosition($1) - fetch.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewTokensPosition($1, $3) // save comments yylex.(*Parser).setFreeFloating($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(fetch, token.Start, $3.SkippedTokens) } | T_DOLLAR_OPEN_CURLY_BRACES expr '}' { @@ -5884,13 +6051,18 @@ encaps_var: } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' { - name := &ast.Identifier{ast.Node{}, $2.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + } variable := &ast.ExprVariable{ast.Node{}, name} $$ = variable // save position - name.GetNode().Position = position.NewTokenPosition($2) $$.GetNode().Position = position.NewTokensPosition($1, $3) // save comments @@ -5899,12 +6071,17 @@ encaps_var: } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' { - identifier := &ast.Identifier{ast.Node{}, $2.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = &ast.ExprArrayDimFetch{ast.Node{}, variable, $4} // save position - identifier.GetNode().Position = position.NewTokenPosition($2) variable.GetNode().Position = position.NewTokenPosition($2) $$.GetNode().Position = position.NewTokensPosition($1, $6) @@ -5952,11 +6129,16 @@ encaps_var_offset: } | T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } $$ = &ast.ExprVariable{ast.Node{}, identifier} // save position - identifier.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -6107,65 +6289,81 @@ isset_variable: class_constant: class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { - target := &ast.Identifier{ast.Node{}, $3.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target} // save position - target.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, $3.SkippedTokens) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { - target := &ast.Identifier{ast.Node{}, $3.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target} // save position - target.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, $3.SkippedTokens) } ; static_class_name_scalar: class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS { - target := &ast.Identifier{ast.Node{}, $3.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target} // save position - target.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, $3.SkippedTokens) } ; class_name_scalar: class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS { - target := &ast.Identifier{ast.Node{}, $3.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target} // save position - target.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, $3.SkippedTokens) } ; diff --git a/internal/php7/php7.go b/internal/php7/php7.go index cde883b..3af3c85 100644 --- a/internal/php7/php7.go +++ b/internal/php7/php7.go @@ -340,13 +340,14 @@ var yyToknames = [...]string{ "'>'", "'.'", } + var yyStatenames = [...]string{} const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php7/php7.y:4808 +// line internal/php7/php7.y:4941 // line yacctab:1 var yyExca = [...]int{ @@ -545,7 +546,6 @@ const yyPrivate = 57344 const yyLast = 7766 var yyAct = [...]int{ - 28, 132, 765, 631, 843, 880, 866, 585, 442, 748, 842, 109, 785, 820, 191, 839, 635, 682, 113, 634, 668, 128, 140, 140, 140, 712, 650, 153, 380, 572, @@ -1324,8 +1324,8 @@ var yyAct = [...]int{ 0, 0, 0, 0, 235, 0, 672, 0, 0, 670, 0, 0, 0, 0, 0, 108, } -var yyPact = [...]int{ +var yyPact = [...]int{ -1000, -1000, 1251, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 264, 483, 651, 766, -1000, -1000, -1000, 262, 4342, 261, 259, 5524, 5524, 5524, 183, 776, 5524, -1000, 6743, 258, @@ -1421,8 +1421,8 @@ var yyPact = [...]int{ -1000, 285, -40, -1000, -1000, 7446, -1000, -1000, 1567, 103, -1000, -1000, 269, 283, -1000, -1000, -1000, 1409, -1000, } -var yyPgo = [...]int{ +var yyPgo = [...]int{ 0, 931, 929, 14, 8, 928, 4, 29, 13, 927, 11, 44, 78, 71, 52, 48, 926, 26, 924, 83, 21, 82, 916, 0, 84, 915, 914, 42, 190, 32, @@ -1437,8 +1437,8 @@ var yyPgo = [...]int{ 846, 554, 845, 844, 839, 34, 837, 80, 1, 3, 832, 17, 831, 821, 803, 7, 767, 752, 28, } -var yyR1 = [...]int{ +var yyR1 = [...]int{ 0, 127, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, @@ -1490,8 +1490,8 @@ var yyR1 = [...]int{ 65, 66, 66, 66, 66, 50, 50, 50, 50, 50, 50, 50, 113, 113, 77, } -var yyR2 = [...]int{ +var yyR2 = [...]int{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1543,8 +1543,8 @@ var yyR2 = [...]int{ 3, 1, 1, 2, 1, 5, 4, 2, 2, 4, 2, 2, 1, 3, 1, } -var yyChk = [...]int{ +var yyChk = [...]int{ -1000, -127, -117, -9, 2, -11, -12, -13, -14, -15, 52, 80, 45, 39, 144, -69, -71, 21, 20, 23, 30, 34, 35, 40, 47, 99, 19, 14, -23, 49, @@ -1640,8 +1640,8 @@ var yyChk = [...]int{ -128, 148, -125, 10, -4, -96, -6, 146, -118, -119, -6, 145, 149, -79, -86, 146, 144, -118, 145, } -var yyDef = [...]int{ +var yyDef = [...]int{ 80, -2, -2, 79, 86, 87, 88, 89, 90, 91, 0, 0, 0, 0, 124, 133, 134, 0, 0, 0, 0, 423, 423, 423, 0, 388, 0, 145, 0, 0, @@ -1737,8 +1737,8 @@ var yyDef = [...]int{ 284, -2, 256, 257, 258, 260, 263, 189, 0, 0, 259, 157, 226, 0, 246, 264, 124, 0, 265, } -var yyTok1 = [...]int{ +var yyTok1 = [...]int{ 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -1753,8 +1753,8 @@ var yyTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 144, 161, 145, 157, } -var yyTok2 = [...]int{ +var yyTok2 = [...]int{ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, @@ -1770,6 +1770,7 @@ var yyTok2 = [...]int{ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, } + var yyTok3 = [...]int{ 0, } @@ -2113,7 +2114,7 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:294 + // line internal/php7/php7.y:294 { yylex.(*Parser).rootNode = &ast.Root{ast.Node{}, yyDollar[1].list} @@ -2124,469 +2125,469 @@ yydefault: } case 2: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 3: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 4: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 5: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 6: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 7: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 8: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 9: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 10: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 11: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 12: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 13: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 14: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 15: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 16: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 17: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 18: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 19: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 20: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 21: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 22: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 23: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 24: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 25: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 26: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 27: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 28: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 29: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 30: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 31: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 32: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 33: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 34: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 35: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 36: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 37: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 38: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 39: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 40: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 41: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 42: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 43: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 44: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 45: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 46: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 47: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 48: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 49: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 50: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 51: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 52: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 53: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 54: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 55: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 56: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 57: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 58: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 59: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 60: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 61: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:311 + // line internal/php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 62: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:311 + // line internal/php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 63: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:311 + // line internal/php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 64: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:311 + // line internal/php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 65: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:311 + // line internal/php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 66: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:311 + // line internal/php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 67: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:311 + // line internal/php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 68: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:311 + // line internal/php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 69: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:311 + // line internal/php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 70: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:316 + // line internal/php7/php7.y:316 { yyVAL.token = yyDollar[1].token } case 71: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:319 + // line internal/php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 72: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:319 + // line internal/php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 73: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:319 + // line internal/php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 74: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:319 + // line internal/php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 75: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:319 + // line internal/php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 76: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:319 + // line internal/php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 77: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:324 + // line internal/php7/php7.y:324 { yyVAL.token = yyDollar[1].token } case 78: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:328 + // line internal/php7/php7.y:328 { yyVAL.token = yyDollar[1].token } case 79: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:335 + // line internal/php7/php7.y:335 { if inlineHtmlNode, ok := yyDollar[2].node.(*ast.StmtInlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) @@ -2599,13 +2600,13 @@ yydefault: } case 80: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:346 + // line internal/php7/php7.y:346 { yyVAL.list = []ast.Vertex{} } case 81: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:353 + // line internal/php7/php7.y:353 { yyVAL.list = []ast.Vertex{ &ast.NameNamePart{ @@ -2619,7 +2620,7 @@ yydefault: } case 82: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:365 + // line internal/php7/php7.y:365 { yyVAL.list = append(yyDollar[1].list, &ast.NameNamePart{ Node: ast.Node{ @@ -2632,7 +2633,7 @@ yydefault: } case 83: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:379 + // line internal/php7/php7.y:379 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -2643,7 +2644,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:388 + // line internal/php7/php7.y:388 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -2656,7 +2657,7 @@ yydefault: } case 85: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:399 + // line internal/php7/php7.y:399 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -2668,44 +2669,44 @@ yydefault: } case 86: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:412 + // line internal/php7/php7.y:412 { // error yyVAL.node = nil } case 87: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:417 + // line internal/php7/php7.y:417 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:421 + // line internal/php7/php7.y:421 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:425 + // line internal/php7/php7.y:425 { yyVAL.node = yyDollar[1].node } case 90: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:429 + // line internal/php7/php7.y:429 { yyVAL.node = yyDollar[1].node } case 91: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:433 + // line internal/php7/php7.y:433 { yyVAL.node = yyDollar[1].node } case 92: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:437 + // line internal/php7/php7.y:437 { yyVAL.node = &ast.StmtHaltCompiler{ Node: ast.Node{ @@ -2719,7 +2720,7 @@ yydefault: } case 93: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:449 + // line internal/php7/php7.y:449 { yyVAL.node = &ast.StmtNamespace{ Node: ast.Node{ @@ -2737,7 +2738,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:465 + // line internal/php7/php7.y:465 { yyVAL.node = &ast.StmtNamespace{ Node: ast.Node{ @@ -2757,7 +2758,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:483 + // line internal/php7/php7.y:483 { yyVAL.node = &ast.StmtNamespace{ Node: ast.Node{ @@ -2771,7 +2772,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:495 + // line internal/php7/php7.y:495 { use := yyDollar[2].node.(*ast.StmtGroupUse) @@ -2783,7 +2784,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:505 + // line internal/php7/php7.y:505 { use := yyDollar[3].node.(*ast.StmtGroupUse) @@ -2796,7 +2797,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:516 + // line internal/php7/php7.y:516 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2809,7 +2810,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:527 + // line internal/php7/php7.y:527 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2823,7 +2824,7 @@ yydefault: } case 100: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:539 + // line internal/php7/php7.y:539 { yyVAL.node = &ast.StmtConstList{ Node: ast.Node{ @@ -2837,31 +2838,31 @@ yydefault: } case 101: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:554 + // line internal/php7/php7.y:554 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 102: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:564 + // line internal/php7/php7.y:564 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 103: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:577 + // line internal/php7/php7.y:577 { if len(yyDollar[4].list) > 0 { yyDollar[4].list[len(yyDollar[4].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[5].token @@ -2885,7 +2886,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-7 : yypt+1] -// line internal/php7/php7.y:599 + // line internal/php7/php7.y:599 { yyDollar[5].list[len(yyDollar[5].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[6].token @@ -2908,7 +2909,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:623 + // line internal/php7/php7.y:623 { yyDollar[4].list[len(yyDollar[4].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[5].token @@ -2930,7 +2931,7 @@ yydefault: } case 106: yyDollar = yyS[yypt-7 : yypt+1] -// line internal/php7/php7.y:643 + // line internal/php7/php7.y:643 { yyDollar[5].list[len(yyDollar[5].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[6].token @@ -2953,19 +2954,19 @@ yydefault: } case 107: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:667 + // line internal/php7/php7.y:667 { yyVAL.token = nil } case 108: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:671 + // line internal/php7/php7.y:671 { yyVAL.token = yyDollar[1].token } case 109: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:678 + // line internal/php7/php7.y:678 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2973,13 +2974,13 @@ yydefault: } case 110: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:684 + // line internal/php7/php7.y:684 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 111: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:691 + // line internal/php7/php7.y:691 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2987,13 +2988,13 @@ yydefault: } case 112: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:697 + // line internal/php7/php7.y:697 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 113: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:704 + // line internal/php7/php7.y:704 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -3001,19 +3002,19 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:710 + // line internal/php7/php7.y:710 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 115: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:717 + // line internal/php7/php7.y:717 { yyVAL.node = yyDollar[1].node } case 116: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:721 + // line internal/php7/php7.y:721 { decl := yyDollar[2].node.(*ast.StmtUseDeclaration) decl.Type = yyDollar[1].node @@ -3023,7 +3024,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:732 + // line internal/php7/php7.y:732 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -3039,7 +3040,7 @@ yydefault: } case 118: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:746 + // line internal/php7/php7.y:746 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -3056,19 +3057,20 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[3].token), }, - Value: yyDollar[3].token.Value, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, }, } } case 119: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:770 + // line internal/php7/php7.y:771 { yyVAL.node = yyDollar[1].node } case 120: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:774 + // line internal/php7/php7.y:775 { decl := yyDollar[2].node.(*ast.StmtUseDeclaration) decl.NsSeparatorTkn = yyDollar[1].token @@ -3078,7 +3080,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:785 + // line internal/php7/php7.y:786 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -3087,7 +3089,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:792 + // line internal/php7/php7.y:793 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -3095,7 +3097,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:801 + // line internal/php7/php7.y:802 { if inlineHtmlNode, ok := yyDollar[2].node.(*ast.StmtInlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) @@ -3108,50 +3110,50 @@ yydefault: } case 124: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:812 + // line internal/php7/php7.y:813 { yyVAL.list = []ast.Vertex{} } case 125: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:819 + // line internal/php7/php7.y:820 { // error yyVAL.node = nil } case 126: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:824 + // line internal/php7/php7.y:825 { yyVAL.node = yyDollar[1].node } case 127: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:828 + // line internal/php7/php7.y:829 { yyVAL.node = yyDollar[1].node } case 128: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:832 + // line internal/php7/php7.y:833 { yyVAL.node = yyDollar[1].node } case 129: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:836 + // line internal/php7/php7.y:837 { yyVAL.node = yyDollar[1].node } case 130: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:840 + // line internal/php7/php7.y:841 { yyVAL.node = yyDollar[1].node } case 131: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:844 + // line internal/php7/php7.y:845 { yyVAL.node = &ast.StmtHaltCompiler{ Node: ast.Node{ @@ -3165,7 +3167,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:858 + // line internal/php7/php7.y:859 { yyVAL.node = &ast.StmtStmtList{ Node: ast.Node{ @@ -3178,19 +3180,19 @@ yydefault: } case 133: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:869 + // line internal/php7/php7.y:870 { yyVAL.node = yyDollar[1].node } case 134: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:873 + // line internal/php7/php7.y:874 { yyVAL.node = yyDollar[1].node } case 135: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:877 + // line internal/php7/php7.y:878 { yyDollar[5].node.(*ast.StmtWhile).WhileTkn = yyDollar[1].token yyDollar[5].node.(*ast.StmtWhile).OpenParenthesisTkn = yyDollar[2].token @@ -3202,7 +3204,7 @@ yydefault: } case 136: yyDollar = yyS[yypt-7 : yypt+1] -// line internal/php7/php7.y:887 + // line internal/php7/php7.y:888 { yyVAL.node = &ast.StmtDo{ Node: ast.Node{ @@ -3219,7 +3221,7 @@ yydefault: } case 137: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php7/php7.y:902 + // line internal/php7/php7.y:903 { yyDollar[9].node.(*ast.StmtFor).ForTkn = yyDollar[1].token yyDollar[9].node.(*ast.StmtFor).OpenParenthesisTkn = yyDollar[2].token @@ -3235,7 +3237,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:916 + // line internal/php7/php7.y:917 { yyDollar[5].node.(*ast.StmtSwitch).SwitchTkn = yyDollar[1].token yyDollar[5].node.(*ast.StmtSwitch).OpenParenthesisTkn = yyDollar[2].token @@ -3247,7 +3249,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:926 + // line internal/php7/php7.y:927 { yyVAL.node = &ast.StmtBreak{ Node: ast.Node{ @@ -3260,7 +3262,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:937 + // line internal/php7/php7.y:938 { yyVAL.node = &ast.StmtContinue{ Node: ast.Node{ @@ -3273,7 +3275,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:948 + // line internal/php7/php7.y:949 { yyVAL.node = &ast.StmtReturn{ Node: ast.Node{ @@ -3286,7 +3288,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:959 + // line internal/php7/php7.y:960 { yyDollar[2].node.(*ast.StmtGlobal).GlobalTkn = yyDollar[1].token yyDollar[2].node.(*ast.StmtGlobal).SemiColonTkn = yyDollar[3].token @@ -3296,7 +3298,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:967 + // line internal/php7/php7.y:968 { yyDollar[2].node.(*ast.StmtStatic).StaticTkn = yyDollar[1].token yyDollar[2].node.(*ast.StmtStatic).SemiColonTkn = yyDollar[3].token @@ -3306,7 +3308,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:975 + // line internal/php7/php7.y:976 { yyDollar[2].node.(*ast.StmtEcho).EchoTkn = yyDollar[1].token yyDollar[2].node.(*ast.StmtEcho).SemiColonTkn = yyDollar[3].token @@ -3316,7 +3318,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:983 + // line internal/php7/php7.y:984 { yyVAL.node = &ast.StmtInlineHtml{ Node: ast.Node{ @@ -3328,7 +3330,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:993 + // line internal/php7/php7.y:994 { yyVAL.node = &ast.StmtExpression{ast.Node{}, yyDollar[1].node} @@ -3342,7 +3344,7 @@ yydefault: } case 147: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:1005 + // line internal/php7/php7.y:1006 { yyDollar[3].node.(*ast.StmtUnset).UnsetTkn = yyDollar[1].token yyDollar[3].node.(*ast.StmtUnset).OpenParenthesisTkn = yyDollar[2].token @@ -3355,7 +3357,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-7 : yypt+1] -// line internal/php7/php7.y:1016 + // line internal/php7/php7.y:1017 { yyDollar[7].node.(*ast.StmtForeach).ForeachTkn = yyDollar[1].token yyDollar[7].node.(*ast.StmtForeach).OpenParenthesisTkn = yyDollar[2].token @@ -3369,7 +3371,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php7/php7.y:1028 + // line internal/php7/php7.y:1029 { yyDollar[9].node.(*ast.StmtForeach).ForeachTkn = yyDollar[1].token yyDollar[9].node.(*ast.StmtForeach).OpenParenthesisTkn = yyDollar[2].token @@ -3385,7 +3387,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:1042 + // line internal/php7/php7.y:1043 { yyDollar[5].node.(*ast.StmtDeclare).DeclareTkn = yyDollar[1].token yyDollar[5].node.(*ast.StmtDeclare).OpenParenthesisTkn = yyDollar[2].token @@ -3398,7 +3400,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1053 + // line internal/php7/php7.y:1054 { yyVAL.node = &ast.StmtNop{ Node: ast.Node{ @@ -3409,7 +3411,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:1062 + // line internal/php7/php7.y:1063 { yyVAL.node = &ast.StmtTry{ TryTkn: yyDollar[1].token, @@ -3428,7 +3430,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1079 + // line internal/php7/php7.y:1080 { yyVAL.node = &ast.StmtThrow{ Node: ast.Node{ @@ -3441,55 +3443,58 @@ yydefault: } case 154: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1090 + // line internal/php7/php7.y:1091 { - label := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} - yyVAL.node = &ast.StmtGoto{ Node: ast.Node{ Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), }, - GotoTkn: yyDollar[1].token, - Label: label, + GotoTkn: yyDollar[1].token, + Label: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + }, SemiColonTkn: yyDollar[3].token, } - - // save position - label.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) - - // save comments - yylex.(*Parser).setFreeFloating(label, token.Start, yyDollar[2].token.SkippedTokens) } case 155: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1109 + // line internal/php7/php7.y:1108 { - label := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtLabel{ Node: ast.Node{ Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), }, - LabelName: label, - ColonTkn: yyDollar[2].token, + LabelName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, + ColonTkn: yyDollar[2].token, } - - // save position - label.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(label, token.Start, yyDollar[1].token.SkippedTokens) } case 156: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1128 + // line internal/php7/php7.y:1126 { yyVAL.list = []ast.Vertex{} } case 157: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php7/php7.y:1132 + // line internal/php7/php7.y:1130 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[5].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[5].token), + }, + IdentifierTkn: yyDollar[5].token, + Value: yyDollar[5].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} catch := yyDollar[4].node.(*ast.StmtCatch) @@ -3505,7 +3510,6 @@ yydefault: yyVAL.list = append(yyDollar[1].list, catch) // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[5].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[5].token) // save comments @@ -3513,7 +3517,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1158 + // line internal/php7/php7.y:1161 { yyVAL.node = &ast.StmtCatch{ Types: []ast.Vertex{yyDollar[1].node}, @@ -3521,7 +3525,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1164 + // line internal/php7/php7.y:1167 { yyDollar[1].node.(*ast.StmtCatch).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtCatch).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.StmtCatch).Types = append(yyDollar[1].node.(*ast.StmtCatch).Types, yyDollar[3].node) @@ -3530,13 +3534,13 @@ yydefault: } case 160: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1174 + // line internal/php7/php7.y:1177 { yyVAL.node = nil } case 161: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1178 + // line internal/php7/php7.y:1181 { yyVAL.node = &ast.StmtFinally{ Node: ast.Node{ @@ -3550,7 +3554,7 @@ yydefault: } case 162: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1193 + // line internal/php7/php7.y:1196 { yyVAL.node = &ast.StmtUnset{ Vars: []ast.Vertex{yyDollar[1].node}, @@ -3558,7 +3562,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1199 + // line internal/php7/php7.y:1202 { yyDollar[1].node.(*ast.StmtUnset).Vars = append(yyDollar[1].node.(*ast.StmtUnset).Vars, yyDollar[3].node) yyDollar[1].node.(*ast.StmtUnset).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtUnset).SeparatorTkns, yyDollar[2].token) @@ -3567,30 +3571,31 @@ yydefault: } case 164: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1209 + // line internal/php7/php7.y:1212 { yyVAL.node = yyDollar[1].node } case 165: yyDollar = yyS[yypt-11 : yypt+1] -// line internal/php7/php7.y:1216 + // line internal/php7/php7.y:1219 { - name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.StmtFunction{ast.Node{}, yyDollar[2].token != nil, name, yyDollar[6].list, yyDollar[8].node, yyDollar[10].list} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[11].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) if yyDollar[2].token != nil { yylex.(*Parser).setFreeFloating(yyVAL.node, token.Function, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Start, yyDollar[3].token.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating(name, token.Start, yyDollar[3].token.SkippedTokens) } - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[5].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.ParamList, yyDollar[7].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.ReturnType, yyDollar[9].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[11].token.SkippedTokens) @@ -3603,142 +3608,156 @@ yydefault: } case 166: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1247 + // line internal/php7/php7.y:1251 { yyVAL.token = nil } case 167: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1251 + // line internal/php7/php7.y:1255 { yyVAL.token = yyDollar[1].token } case 168: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1258 + // line internal/php7/php7.y:1262 { yyVAL.token = nil } case 169: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1262 + // line internal/php7/php7.y:1266 { yyVAL.token = yyDollar[1].token } case 170: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php7/php7.y:1269 + // line internal/php7/php7.y:1273 { - name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.StmtClass{ast.Node{}, name, yyDollar[1].list, nil, yyDollar[4].ClassExtends, yyDollar[5].ClassImplements, yyDollar[8].list} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[9].token) // save comments yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.ModifierList, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Start, yyDollar[3].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[7].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[9].token.SkippedTokens) } case 171: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php7/php7.y:1285 + // line internal/php7/php7.y:1292 { - name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + } yyVAL.node = &ast.StmtClass{ast.Node{}, name, nil, nil, yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[8].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Start, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[6].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[8].token.SkippedTokens) } case 172: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1303 + // line internal/php7/php7.y:1313 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 173: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1307 + // line internal/php7/php7.y:1317 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 174: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1314 + // line internal/php7/php7.y:1324 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 175: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1324 + // line internal/php7/php7.y:1334 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 176: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:1337 + // line internal/php7/php7.y:1347 { - name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + } yyVAL.node = &ast.StmtTrait{ast.Node{}, name, yyDollar[5].list} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[6].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Start, yyDollar[2].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[4].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[6].token.SkippedTokens) } case 177: yyDollar = yyS[yypt-7 : yypt+1] -// line internal/php7/php7.y:1355 + // line internal/php7/php7.y:1369 { - name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + } yyVAL.node = &ast.StmtInterface{ast.Node{}, name, yyDollar[3].InterfaceExtends, yyDollar[6].list} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[7].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Start, yyDollar[2].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[5].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[7].token.SkippedTokens) } case 178: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1373 + // line internal/php7/php7.y:1391 { yyVAL.ClassExtends = nil } case 179: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1377 + // line internal/php7/php7.y:1395 { yyVAL.ClassExtends = &ast.StmtClassExtends{ast.Node{}, yyDollar[2].node} @@ -3750,13 +3769,13 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1390 + // line internal/php7/php7.y:1408 { yyVAL.InterfaceExtends = nil } case 181: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1394 + // line internal/php7/php7.y:1412 { yyVAL.InterfaceExtends = &ast.StmtInterfaceExtends{ast.Node{}, yyDollar[2].list} @@ -3768,13 +3787,13 @@ yydefault: } case 182: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1407 + // line internal/php7/php7.y:1425 { yyVAL.ClassImplements = nil } case 183: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1411 + // line internal/php7/php7.y:1429 { yyVAL.ClassImplements = &ast.StmtClassImplements{ast.Node{}, yyDollar[2].list} @@ -3786,13 +3805,13 @@ yydefault: } case 184: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1424 + // line internal/php7/php7.y:1442 { yyVAL.node = yyDollar[1].node } case 185: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1428 + // line internal/php7/php7.y:1446 { yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node} @@ -3804,7 +3823,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1438 + // line internal/php7/php7.y:1456 { yyVAL.node = &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -3818,7 +3837,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1450 + // line internal/php7/php7.y:1468 { yyVAL.node = &ast.ExprShortList{ast.Node{}, yyDollar[2].list} @@ -3831,7 +3850,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1464 + // line internal/php7/php7.y:1482 { yyVAL.node = &ast.StmtFor{ Node: ast.Node{ @@ -3842,7 +3861,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1473 + // line internal/php7/php7.y:1491 { yyVAL.node = &ast.StmtFor{ Node: ast.Node{ @@ -3862,7 +3881,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1494 + // line internal/php7/php7.y:1512 { yyVAL.node = &ast.StmtForeach{ Node: ast.Node{ @@ -3873,7 +3892,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1503 + // line internal/php7/php7.y:1521 { yyVAL.node = &ast.StmtForeach{ Node: ast.Node{ @@ -3893,7 +3912,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1524 + // line internal/php7/php7.y:1542 { yyVAL.node = &ast.StmtDeclare{ Node: ast.Node{ @@ -3904,7 +3923,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1533 + // line internal/php7/php7.y:1551 { yyVAL.node = &ast.StmtDeclare{ Node: ast.Node{ @@ -3924,7 +3943,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1554 + // line internal/php7/php7.y:1572 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3937,7 +3956,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1565 + // line internal/php7/php7.y:1583 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3951,7 +3970,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1577 + // line internal/php7/php7.y:1595 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3966,7 +3985,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:1590 + // line internal/php7/php7.y:1608 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3982,13 +4001,13 @@ yydefault: } case 198: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1607 + // line internal/php7/php7.y:1625 { yyVAL.list = nil } case 199: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:1611 + // line internal/php7/php7.y:1629 { yyVAL.list = append(yyDollar[1].list, &ast.StmtCase{ Node: ast.Node{ @@ -4002,7 +4021,7 @@ yydefault: } case 200: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1623 + // line internal/php7/php7.y:1641 { yyVAL.list = append(yyDollar[1].list, &ast.StmtDefault{ Node: ast.Node{ @@ -4015,19 +4034,19 @@ yydefault: } case 201: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1637 + // line internal/php7/php7.y:1655 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1641 + // line internal/php7/php7.y:1659 { yyVAL.token = yyDollar[1].token } case 203: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1648 + // line internal/php7/php7.y:1666 { yyVAL.node = &ast.StmtWhile{ Node: ast.Node{ @@ -4038,7 +4057,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1657 + // line internal/php7/php7.y:1675 { yyVAL.node = &ast.StmtWhile{ Node: ast.Node{ @@ -4058,7 +4077,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:1678 + // line internal/php7/php7.y:1696 { yyVAL.node = &ast.StmtIf{ Node: ast.Node{ @@ -4073,7 +4092,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:1691 + // line internal/php7/php7.y:1709 { yyDollar[1].node.(*ast.StmtIf).ElseIf = append(yyDollar[1].node.(*ast.StmtIf).ElseIf, &ast.StmtElseIf{ Node: ast.Node{ @@ -4092,13 +4111,13 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1711 + // line internal/php7/php7.y:1729 { yyVAL.node = yyDollar[1].node } case 208: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1715 + // line internal/php7/php7.y:1733 { yyDollar[1].node.(*ast.StmtIf).Else = &ast.StmtElse{ Node: ast.Node{ @@ -4114,7 +4133,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:1732 + // line internal/php7/php7.y:1750 { yyVAL.node = &ast.StmtIf{ Node: ast.Node{ @@ -4136,7 +4155,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-7 : yypt+1] -// line internal/php7/php7.y:1752 + // line internal/php7/php7.y:1770 { yyDollar[1].node.(*ast.StmtIf).ElseIf = append(yyDollar[1].node.(*ast.StmtIf).ElseIf, &ast.StmtElseIf{ Node: ast.Node{ @@ -4160,7 +4179,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1777 + // line internal/php7/php7.y:1795 { yyDollar[1].node.(*ast.StmtIf).EndIfTkn = yyDollar[2].token yyDollar[1].node.(*ast.StmtIf).SemiColonTkn = yyDollar[3].token @@ -4170,7 +4189,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:1785 + // line internal/php7/php7.y:1803 { yyDollar[1].node.(*ast.StmtIf).Else = &ast.StmtElse{ Node: ast.Node{ @@ -4194,25 +4213,25 @@ yydefault: } case 213: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1810 + // line internal/php7/php7.y:1828 { yyVAL.list = yyDollar[1].list } case 214: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1814 + // line internal/php7/php7.y:1832 { yyVAL.list = nil } case 215: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1821 + // line internal/php7/php7.y:1839 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 216: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1825 + // line internal/php7/php7.y:1843 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4221,10 +4240,15 @@ yydefault: } case 217: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1835 + // line internal/php7/php7.y:1853 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, + } var variable ast.Vertex variable = &ast.ExprVariable{ast.Node{}, identifier} @@ -4257,10 +4281,15 @@ yydefault: } case 218: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:1869 + // line internal/php7/php7.y:1892 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, + } var variable ast.Vertex variable = &ast.ExprVariable{ast.Node{}, identifier} @@ -4294,25 +4323,25 @@ yydefault: } case 219: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1907 + // line internal/php7/php7.y:1935 { yyVAL.node = nil } case 220: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1911 + // line internal/php7/php7.y:1939 { yyVAL.node = yyDollar[1].node } case 221: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1918 + // line internal/php7/php7.y:1946 { yyVAL.node = yyDollar[1].node } case 222: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1922 + // line internal/php7/php7.y:1950 { yyVAL.node = &ast.Nullable{ast.Node{}, yyDollar[2].node} @@ -4324,43 +4353,43 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1935 + // line internal/php7/php7.y:1963 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 224: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1945 + // line internal/php7/php7.y:1973 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 225: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1955 + // line internal/php7/php7.y:1983 { yyVAL.node = yyDollar[1].node } case 226: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1962 + // line internal/php7/php7.y:1990 { yyVAL.node = nil } case 227: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1966 + // line internal/php7/php7.y:1994 { yyVAL.node = yyDollar[2].node @@ -4369,7 +4398,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1976 + // line internal/php7/php7.y:2004 { yyVAL.node = &ast.ArgumentList{ast.Node{}, nil} @@ -4382,7 +4411,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1987 + // line internal/php7/php7.y:2015 { yyVAL.node = &ast.ArgumentList{ast.Node{}, yyDollar[2].list} @@ -4399,13 +4428,13 @@ yydefault: } case 230: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2005 + // line internal/php7/php7.y:2033 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 231: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2009 + // line internal/php7/php7.y:2037 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4414,7 +4443,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2019 + // line internal/php7/php7.y:2047 { yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node} @@ -4426,7 +4455,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2029 + // line internal/php7/php7.y:2057 { yyVAL.node = &ast.Argument{ast.Node{}, true, false, yyDollar[2].node} @@ -4438,7 +4467,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2042 + // line internal/php7/php7.y:2070 { yyDollar[1].node.(*ast.StmtGlobal).Vars = append(yyDollar[1].node.(*ast.StmtGlobal).Vars, yyDollar[3].node) yyDollar[1].node.(*ast.StmtGlobal).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtGlobal).SeparatorTkns, yyDollar[2].token) @@ -4447,7 +4476,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2049 + // line internal/php7/php7.y:2077 { yyVAL.node = &ast.StmtGlobal{ Vars: []ast.Vertex{yyDollar[1].node}, @@ -4455,13 +4484,13 @@ yydefault: } case 236: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2058 + // line internal/php7/php7.y:2086 { yyVAL.node = yyDollar[1].node } case 237: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2065 + // line internal/php7/php7.y:2093 { yyDollar[1].node.(*ast.StmtStatic).Vars = append(yyDollar[1].node.(*ast.StmtStatic).Vars, yyDollar[3].node) yyDollar[1].node.(*ast.StmtStatic).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtStatic).SeparatorTkns, yyDollar[2].token) @@ -4470,7 +4499,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2072 + // line internal/php7/php7.y:2100 { yyVAL.node = &ast.StmtStatic{ Vars: []ast.Vertex{yyDollar[1].node}, @@ -4478,9 +4507,15 @@ yydefault: } case 239: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2081 + // line internal/php7/php7.y:2109 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyVAL.node = &ast.StmtStaticVar{ @@ -4491,7 +4526,6 @@ yydefault: } // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -4499,9 +4533,15 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2100 + // line internal/php7/php7.y:2133 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyVAL.node = &ast.StmtStaticVar{ Node: ast.Node{ @@ -4513,7 +4553,6 @@ yydefault: } // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -4521,19 +4560,19 @@ yydefault: } case 241: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2123 + // line internal/php7/php7.y:2161 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 242: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:2127 + // line internal/php7/php7.y:2165 { yyVAL.list = []ast.Vertex{} } case 243: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2134 + // line internal/php7/php7.y:2172 { yyVAL.node = &ast.StmtPropertyList{ast.Node{}, yyDollar[1].list, yyDollar[2].node, yyDollar[3].list} @@ -4547,7 +4586,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2146 + // line internal/php7/php7.y:2184 { yyVAL.node = &ast.StmtClassConstList{ Node: ast.Node{ @@ -4561,7 +4600,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2158 + // line internal/php7/php7.y:2196 { yyVAL.node = &ast.StmtTraitUse{ast.Node{}, yyDollar[2].list, yyDollar[3].node} @@ -4573,13 +4612,18 @@ yydefault: } case 246: yyDollar = yyS[yypt-10 : yypt+1] -// line internal/php7/php7.y:2168 + // line internal/php7/php7.y:2206 { - name := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, + } yyVAL.node = &ast.StmtClassMethod{ast.Node{}, yyDollar[3].token != nil, name, yyDollar[1].list, yyDollar[7].list, yyDollar[9].node, yyDollar[10].node} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) if yyDollar[1].list == nil { yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[2].token, yyDollar[10].node) } else { @@ -4599,18 +4643,17 @@ yydefault: yylex.(*Parser).setFreeFloating(yyVAL.node, token.Function, yyDollar[3].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Ampersand, yyDollar[4].token.SkippedTokens) } - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[6].token.SkippedTokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.ParameterList, yyDollar[8].token.SkippedTokens) } case 247: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2200 + // line internal/php7/php7.y:2242 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 248: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2204 + // line internal/php7/php7.y:2246 { switch n := lastNode(yyDollar[1].list).(type) { case *ast.NameName: @@ -4624,7 +4667,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2216 + // line internal/php7/php7.y:2258 { yyVAL.node = &ast.StmtNop{ Node: ast.Node{ @@ -4635,7 +4678,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2225 + // line internal/php7/php7.y:2267 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, nil} @@ -4647,7 +4690,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2235 + // line internal/php7/php7.y:2277 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, yyDollar[2].list} @@ -4659,19 +4702,19 @@ yydefault: } case 252: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2248 + // line internal/php7/php7.y:2290 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 253: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2252 + // line internal/php7/php7.y:2294 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 254: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2259 + // line internal/php7/php7.y:2301 { yyVAL.node = yyDollar[1].node @@ -4681,7 +4724,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2267 + // line internal/php7/php7.y:2309 { yyVAL.node = yyDollar[1].node @@ -4691,7 +4734,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2278 + // line internal/php7/php7.y:2320 { yyVAL.node = &ast.StmtTraitUsePrecedence{ast.Node{}, yyDollar[1].node, yyDollar[3].list} @@ -4704,55 +4747,67 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2292 + // line internal/php7/php7.y:2334 { - alias := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + alias := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, nil, alias} // save position - alias.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token) // save comments yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Ref, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(alias, token.Start, yyDollar[3].token.SkippedTokens) } case 258: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2306 + // line internal/php7/php7.y:2352 { - alias := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + alias := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, nil, alias} // save position - alias.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token) // save comments yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Ref, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(alias, token.Start, yyDollar[3].token.SkippedTokens) } case 259: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2320 + // line internal/php7/php7.y:2370 { - alias := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} + alias := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, + } yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, alias} // save position - alias.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) // save comments yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Ref, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(alias, token.Start, yyDollar[4].token.SkippedTokens) } case 260: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2334 + // line internal/php7/php7.y:2388 { yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, nil} @@ -4765,13 +4820,18 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2348 + // line internal/php7/php7.y:2402 { - name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, nil, name} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -4779,29 +4839,33 @@ yydefault: } case 262: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2360 + // line internal/php7/php7.y:2419 { yyVAL.node = yyDollar[1].node } case 263: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2367 + // line internal/php7/php7.y:2426 { - target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, yyDollar[1].node, target} // save position - target.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token) // save comments yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, yyDollar[2].token.SkippedTokens) } case 264: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2384 + // line internal/php7/php7.y:2447 { yyVAL.node = &ast.StmtNop{ Node: ast.Node{ @@ -4812,7 +4876,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2393 + // line internal/php7/php7.y:2456 { yyVAL.node = &ast.StmtStmtList{ Node: ast.Node{ @@ -4825,122 +4889,123 @@ yydefault: } case 266: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2407 + // line internal/php7/php7.y:2470 { yyVAL.list = yyDollar[1].list } case 267: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2411 + // line internal/php7/php7.y:2474 { - modifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - yyVAL.list = []ast.Vertex{modifier} - - // save position - modifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(modifier, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.list = []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, + } } case 268: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:2425 + // line internal/php7/php7.y:2489 { yyVAL.list = nil } case 269: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2429 + // line internal/php7/php7.y:2493 { yyVAL.list = yyDollar[1].list } case 270: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2436 + // line internal/php7/php7.y:2500 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 271: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2440 + // line internal/php7/php7.y:2504 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 272: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2447 + // line internal/php7/php7.y:2511 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 273: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2457 + // line internal/php7/php7.y:2521 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 274: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2467 + // line internal/php7/php7.y:2531 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 275: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2477 + // line internal/php7/php7.y:2541 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 276: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2487 + // line internal/php7/php7.y:2551 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 277: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2497 + // line internal/php7/php7.y:2561 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 278: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2510 + // line internal/php7/php7.y:2574 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4949,20 +5014,25 @@ yydefault: } case 279: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2517 + // line internal/php7/php7.y:2581 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 280: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2524 + // line internal/php7/php7.y:2588 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyVAL.node = &ast.StmtProperty{ast.Node{}, variable, nil} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) @@ -4971,14 +5041,19 @@ yydefault: } case 281: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2538 + // line internal/php7/php7.y:2607 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyVAL.node = &ast.StmtProperty{ast.Node{}, variable, yyDollar[3].node} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node) @@ -4988,7 +5063,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2556 + // line internal/php7/php7.y:2630 { lastNode(yyDollar[1].list).(*ast.StmtConstant).CommaTkn = yyDollar[2].token @@ -4996,13 +5071,13 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2562 + // line internal/php7/php7.y:2636 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 284: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2569 + // line internal/php7/php7.y:2643 { yyVAL.node = &ast.StmtConstant{ Node: ast.Node{ @@ -5012,7 +5087,8 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[1].token), }, - Value: yyDollar[1].token.Value, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, }, EqualTkn: yyDollar[2].token, Expr: yyDollar[3].node, @@ -5022,7 +5098,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2590 + // line internal/php7/php7.y:2665 { yyVAL.node = &ast.StmtConstant{ Node: ast.Node{ @@ -5032,7 +5108,8 @@ yydefault: Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[1].token), }, - Value: yyDollar[1].token.Value, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, }, EqualTkn: yyDollar[2].token, Expr: yyDollar[3].node, @@ -5042,7 +5119,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2611 + // line internal/php7/php7.y:2687 { yyDollar[1].node.(*ast.StmtEcho).Exprs = append(yyDollar[1].node.(*ast.StmtEcho).Exprs, yyDollar[3].node) yyDollar[1].node.(*ast.StmtEcho).SeparatorTkns = append(yyDollar[1].node.(*ast.StmtEcho).SeparatorTkns, yyDollar[2].token) @@ -5051,7 +5128,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2618 + // line internal/php7/php7.y:2694 { yyVAL.node = &ast.StmtEcho{ Exprs: []ast.Vertex{yyDollar[1].node}, @@ -5059,25 +5136,25 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2627 + // line internal/php7/php7.y:2703 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:2634 + // line internal/php7/php7.y:2710 { yyVAL.list = nil } case 290: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2638 + // line internal/php7/php7.y:2714 { yyVAL.list = yyDollar[1].list } case 291: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2645 + // line internal/php7/php7.y:2721 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5086,13 +5163,13 @@ yydefault: } case 292: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2652 + // line internal/php7/php7.y:2728 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 293: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php7/php7.y:2659 + // line internal/php7/php7.y:2735 { if yyDollar[2].node != nil { yyVAL.node = &ast.StmtClass{ast.Node{}, nil, nil, yyDollar[2].node.(*ast.ArgumentList), yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list} @@ -5110,7 +5187,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2678 + // line internal/php7/php7.y:2754 { if yyDollar[3].node != nil { yyVAL.node = &ast.ExprNew{ast.Node{}, yyDollar[2].node, yyDollar[3].node.(*ast.ArgumentList)} @@ -5125,7 +5202,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2691 + // line internal/php7/php7.y:2767 { yyVAL.node = &ast.ExprNew{ast.Node{}, yyDollar[2].node, nil} @@ -5137,7 +5214,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:2704 + // line internal/php7/php7.y:2780 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, listNode, yyDollar[6].node} @@ -5154,7 +5231,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:2719 + // line internal/php7/php7.y:2795 { shortList := &ast.ExprShortList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, shortList, yyDollar[5].node} @@ -5170,7 +5247,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2733 + // line internal/php7/php7.y:2809 { yyVAL.node = &ast.ExprAssign{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5183,7 +5260,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2744 + // line internal/php7/php7.y:2820 { yyVAL.node = &ast.ExprAssignReference{ast.Node{}, yyDollar[1].node, yyDollar[4].node} @@ -5197,7 +5274,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2756 + // line internal/php7/php7.y:2832 { yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node} @@ -5209,7 +5286,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2766 + // line internal/php7/php7.y:2842 { yyVAL.node = &ast.ExprAssignPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5222,7 +5299,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2777 + // line internal/php7/php7.y:2853 { yyVAL.node = &ast.ExprAssignMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5235,7 +5312,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2788 + // line internal/php7/php7.y:2864 { yyVAL.node = &ast.ExprAssignMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5248,7 +5325,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2799 + // line internal/php7/php7.y:2875 { yyVAL.node = &ast.ExprAssignPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5261,7 +5338,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2810 + // line internal/php7/php7.y:2886 { yyVAL.node = &ast.ExprAssignDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5274,7 +5351,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2821 + // line internal/php7/php7.y:2897 { yyVAL.node = &ast.ExprAssignConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5287,7 +5364,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2832 + // line internal/php7/php7.y:2908 { yyVAL.node = &ast.ExprAssignMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5300,7 +5377,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2843 + // line internal/php7/php7.y:2919 { yyVAL.node = &ast.ExprAssignBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5313,7 +5390,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2854 + // line internal/php7/php7.y:2930 { yyVAL.node = &ast.ExprAssignBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5326,7 +5403,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2865 + // line internal/php7/php7.y:2941 { yyVAL.node = &ast.ExprAssignBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5339,7 +5416,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2876 + // line internal/php7/php7.y:2952 { yyVAL.node = &ast.ExprAssignShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5352,7 +5429,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2887 + // line internal/php7/php7.y:2963 { yyVAL.node = &ast.ExprAssignShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5365,7 +5442,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2898 + // line internal/php7/php7.y:2974 { yyVAL.node = &ast.ExprAssignCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5378,7 +5455,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2909 + // line internal/php7/php7.y:2985 { yyVAL.node = &ast.ExprPostInc{ast.Node{}, yyDollar[1].node} @@ -5391,7 +5468,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2920 + // line internal/php7/php7.y:2996 { yyVAL.node = &ast.ExprPreInc{ast.Node{}, yyDollar[2].node} @@ -5403,7 +5480,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2930 + // line internal/php7/php7.y:3006 { yyVAL.node = &ast.ExprPostDec{ast.Node{}, yyDollar[1].node} @@ -5416,7 +5493,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2941 + // line internal/php7/php7.y:3017 { yyVAL.node = &ast.ExprPreDec{ast.Node{}, yyDollar[2].node} @@ -5428,7 +5505,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2951 + // line internal/php7/php7.y:3027 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5441,7 +5518,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2962 + // line internal/php7/php7.y:3038 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5454,7 +5531,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2973 + // line internal/php7/php7.y:3049 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5467,7 +5544,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2984 + // line internal/php7/php7.y:3060 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5480,7 +5557,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2995 + // line internal/php7/php7.y:3071 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5493,7 +5570,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3006 + // line internal/php7/php7.y:3082 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5506,7 +5583,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3017 + // line internal/php7/php7.y:3093 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5519,7 +5596,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3028 + // line internal/php7/php7.y:3104 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5532,7 +5609,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3039 + // line internal/php7/php7.y:3115 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5544,7 +5621,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3049 + // line internal/php7/php7.y:3125 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5557,7 +5634,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3060 + // line internal/php7/php7.y:3136 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5570,7 +5647,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3071 + // line internal/php7/php7.y:3147 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5583,7 +5660,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3082 + // line internal/php7/php7.y:3158 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5596,7 +5673,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3093 + // line internal/php7/php7.y:3169 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5609,7 +5686,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3104 + // line internal/php7/php7.y:3180 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5622,7 +5699,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3115 + // line internal/php7/php7.y:3191 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5635,7 +5712,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3126 + // line internal/php7/php7.y:3202 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5648,7 +5725,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3137 + // line internal/php7/php7.y:3213 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -5660,7 +5737,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3147 + // line internal/php7/php7.y:3223 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -5672,7 +5749,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3157 + // line internal/php7/php7.y:3233 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -5684,7 +5761,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3167 + // line internal/php7/php7.y:3243 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -5696,7 +5773,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3177 + // line internal/php7/php7.y:3253 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5709,7 +5786,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3188 + // line internal/php7/php7.y:3264 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5722,7 +5799,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3199 + // line internal/php7/php7.y:3275 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5735,7 +5812,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3210 + // line internal/php7/php7.y:3286 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5749,7 +5826,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3222 + // line internal/php7/php7.y:3298 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5762,7 +5839,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3233 + // line internal/php7/php7.y:3309 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5775,7 +5852,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3244 + // line internal/php7/php7.y:3320 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5788,7 +5865,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3255 + // line internal/php7/php7.y:3331 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5801,7 +5878,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3266 + // line internal/php7/php7.y:3342 { yyVAL.node = &ast.ExprBinarySpaceship{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5814,7 +5891,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3277 + // line internal/php7/php7.y:3353 { yyVAL.node = &ast.ExprInstanceOf{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5827,7 +5904,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3288 + // line internal/php7/php7.y:3364 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -5844,13 +5921,13 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3303 + // line internal/php7/php7.y:3379 { yyVAL.node = yyDollar[1].node } case 351: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:3307 + // line internal/php7/php7.y:3383 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -5864,7 +5941,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3319 + // line internal/php7/php7.y:3395 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -5878,7 +5955,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3331 + // line internal/php7/php7.y:3407 { yyVAL.node = &ast.ExprBinaryCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5891,13 +5968,13 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3342 + // line internal/php7/php7.y:3418 { yyVAL.node = yyDollar[1].node } case 355: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3346 + // line internal/php7/php7.y:3422 { yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node} @@ -5910,7 +5987,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3357 + // line internal/php7/php7.y:3433 { yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node} @@ -5923,7 +6000,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3368 + // line internal/php7/php7.y:3444 { yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node} @@ -5936,7 +6013,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3379 + // line internal/php7/php7.y:3455 { yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node} @@ -5949,7 +6026,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3390 + // line internal/php7/php7.y:3466 { yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node} @@ -5962,7 +6039,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3401 + // line internal/php7/php7.y:3477 { yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node} @@ -5975,7 +6052,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3412 + // line internal/php7/php7.y:3488 { yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node} @@ -5988,7 +6065,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3423 + // line internal/php7/php7.y:3499 { yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[2].node} @@ -6008,7 +6085,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3441 + // line internal/php7/php7.y:3517 { yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node} @@ -6020,13 +6097,13 @@ yydefault: } case 364: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3451 + // line internal/php7/php7.y:3527 { yyVAL.node = yyDollar[1].node } case 365: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3455 + // line internal/php7/php7.y:3531 { yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list} @@ -6038,7 +6115,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3465 + // line internal/php7/php7.y:3541 { yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} @@ -6050,7 +6127,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3475 + // line internal/php7/php7.y:3551 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil} @@ -6062,7 +6139,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3485 + // line internal/php7/php7.y:3561 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6074,7 +6151,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3495 + // line internal/php7/php7.y:3571 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6087,7 +6164,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3506 + // line internal/php7/php7.y:3582 { yyVAL.node = &ast.ExprYieldFrom{ast.Node{}, yyDollar[2].node} @@ -6099,13 +6176,13 @@ yydefault: } case 371: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3516 + // line internal/php7/php7.y:3592 { yyVAL.node = yyDollar[1].node } case 372: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3520 + // line internal/php7/php7.y:3596 { yyVAL.node = yyDollar[2].node @@ -6126,7 +6203,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-11 : yypt+1] -// line internal/php7/php7.y:3541 + // line internal/php7/php7.y:3617 { yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list} @@ -6157,7 +6234,7 @@ yydefault: } case 374: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php7/php7.y:3568 + // line internal/php7/php7.y:3644 { yyVAL.node = &ast.ExprArrowFunction{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[4].list, yyDollar[6].node, yyDollar[9].node} @@ -6183,25 +6260,25 @@ yydefault: } case 376: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3598 + // line internal/php7/php7.y:3674 { yyVAL.token = nil } case 377: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3602 + // line internal/php7/php7.y:3678 { yyVAL.token = yyDollar[1].token } case 378: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3609 + // line internal/php7/php7.y:3685 { yyVAL.ClosureUse = nil } case 379: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3613 + // line internal/php7/php7.y:3689 { yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list} @@ -6215,7 +6292,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3628 + // line internal/php7/php7.y:3704 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6224,19 +6301,24 @@ yydefault: } case 381: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3635 + // line internal/php7/php7.y:3711 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 382: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3642 + // line internal/php7/php7.y:3718 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -6244,14 +6326,19 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3654 + // line internal/php7/php7.y:3735 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyVAL.node = &ast.ExprReference{ast.Node{}, variable} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token) @@ -6261,7 +6348,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3672 + // line internal/php7/php7.y:3758 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6273,7 +6360,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3682 + // line internal/php7/php7.y:3768 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6286,7 +6373,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3693 + // line internal/php7/php7.y:3779 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6299,7 +6386,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3704 + // line internal/php7/php7.y:3790 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6311,43 +6398,43 @@ yydefault: } case 388: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3717 + // line internal/php7/php7.y:3803 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 389: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3727 + // line internal/php7/php7.y:3813 { yyVAL.node = yyDollar[1].node } case 390: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3734 + // line internal/php7/php7.y:3820 { yyVAL.node = yyDollar[1].node } case 391: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3738 + // line internal/php7/php7.y:3824 { yyVAL.node = yyDollar[1].node } case 392: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3745 + // line internal/php7/php7.y:3831 { yyVAL.node = nil } case 393: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3749 + // line internal/php7/php7.y:3835 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6364,13 +6451,13 @@ yydefault: } case 394: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3767 + // line internal/php7/php7.y:3853 { yyVAL.list = []ast.Vertex{} } case 395: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3771 + // line internal/php7/php7.y:3857 { part := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{part} @@ -6380,25 +6467,25 @@ yydefault: } case 396: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3779 + // line internal/php7/php7.y:3865 { yyVAL.list = yyDollar[1].list } case 397: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3786 + // line internal/php7/php7.y:3872 { yyVAL.node = nil } case 398: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3790 + // line internal/php7/php7.y:3876 { yyVAL.node = yyDollar[1].node } case 399: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3797 + // line internal/php7/php7.y:3883 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -6412,7 +6499,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3809 + // line internal/php7/php7.y:3895 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -6425,7 +6512,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3820 + // line internal/php7/php7.y:3906 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -6437,7 +6524,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3833 + // line internal/php7/php7.y:3919 { yyVAL.node = &ast.ScalarLnumber{ast.Node{}, yyDollar[1].token.Value} @@ -6449,7 +6536,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3843 + // line internal/php7/php7.y:3929 { yyVAL.node = &ast.ScalarDnumber{ast.Node{}, yyDollar[1].token.Value} @@ -6461,7 +6548,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3853 + // line internal/php7/php7.y:3939 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6473,7 +6560,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3863 + // line internal/php7/php7.y:3949 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6485,7 +6572,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3873 + // line internal/php7/php7.y:3959 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6497,7 +6584,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3883 + // line internal/php7/php7.y:3969 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6509,7 +6596,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3893 + // line internal/php7/php7.y:3979 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6521,7 +6608,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3903 + // line internal/php7/php7.y:3989 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6533,7 +6620,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3913 + // line internal/php7/php7.y:3999 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6545,7 +6632,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3923 + // line internal/php7/php7.y:4009 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6557,7 +6644,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3933 + // line internal/php7/php7.y:4019 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, []ast.Vertex{encapsed}} @@ -6571,7 +6658,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3945 + // line internal/php7/php7.y:4031 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, nil} @@ -6583,7 +6670,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3955 + // line internal/php7/php7.y:4041 { yyVAL.node = &ast.ScalarEncapsed{ast.Node{}, yyDollar[2].list} @@ -6595,7 +6682,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3965 + // line internal/php7/php7.y:4051 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, yyDollar[2].list} @@ -6607,19 +6694,19 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3975 + // line internal/php7/php7.y:4061 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3979 + // line internal/php7/php7.y:4065 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3986 + // line internal/php7/php7.y:4072 { yyVAL.node = &ast.ExprConstFetch{ast.Node{}, yyDollar[1].node} @@ -6631,75 +6718,83 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3996 + // line internal/php7/php7.y:4082 { - target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} // save position - target.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token) // save comments yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, yyDollar[3].token.SkippedTokens) } case 420: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4010 + // line internal/php7/php7.y:4100 { - target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} // save position - target.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token) // save comments yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, yyDollar[3].token.SkippedTokens) } case 421: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4027 + // line internal/php7/php7.y:4121 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4031 + // line internal/php7/php7.y:4125 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:4038 + // line internal/php7/php7.y:4132 { yyVAL.node = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4042 + // line internal/php7/php7.y:4136 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4049 + // line internal/php7/php7.y:4143 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4056 + // line internal/php7/php7.y:4150 { yyVAL.node = yyDollar[1].node } case 427: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4060 + // line internal/php7/php7.y:4154 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6716,19 +6811,19 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4075 + // line internal/php7/php7.y:4169 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4082 + // line internal/php7/php7.y:4176 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4086 + // line internal/php7/php7.y:4180 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6745,19 +6840,19 @@ yydefault: } case 431: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4101 + // line internal/php7/php7.y:4195 { yyVAL.node = yyDollar[1].node } case 432: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4108 + // line internal/php7/php7.y:4202 { yyVAL.node = yyDollar[1].node } case 433: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4112 + // line internal/php7/php7.y:4206 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6770,7 +6865,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4123 + // line internal/php7/php7.y:4217 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6783,7 +6878,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4134 + // line internal/php7/php7.y:4228 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6796,7 +6891,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4145 + // line internal/php7/php7.y:4239 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6809,25 +6904,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4156 + // line internal/php7/php7.y:4250 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4163 + // line internal/php7/php7.y:4257 { yyVAL.node = yyDollar[1].node } case 439: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4167 + // line internal/php7/php7.y:4261 { yyVAL.node = yyDollar[1].node } case 440: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4171 + // line internal/php7/php7.y:4265 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6840,13 +6935,18 @@ yydefault: } case 441: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4185 + // line internal/php7/php7.y:4279 { - name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } yyVAL.node = &ast.ExprVariable{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -6854,7 +6954,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4197 + // line internal/php7/php7.y:4296 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -6868,7 +6968,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4209 + // line internal/php7/php7.y:4308 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -6880,7 +6980,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4222 + // line internal/php7/php7.y:4321 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6893,7 +6993,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4233 + // line internal/php7/php7.y:4332 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6906,13 +7006,13 @@ yydefault: } case 446: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4247 + // line internal/php7/php7.y:4346 { yyVAL.node = yyDollar[1].node } case 447: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4251 + // line internal/php7/php7.y:4350 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6925,7 +7025,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4262 + // line internal/php7/php7.y:4361 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6938,7 +7038,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4273 + // line internal/php7/php7.y:4372 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6951,7 +7051,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4284 + // line internal/php7/php7.y:4383 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6964,7 +7064,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4295 + // line internal/php7/php7.y:4394 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6977,19 +7077,19 @@ yydefault: } case 452: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4309 + // line internal/php7/php7.y:4408 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 453: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4319 + // line internal/php7/php7.y:4418 { yyVAL.node = yyDollar[2].node @@ -6999,25 +7099,25 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4327 + // line internal/php7/php7.y:4426 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4334 + // line internal/php7/php7.y:4433 { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } } case 456: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4344 + // line internal/php7/php7.y:4443 { yyVAL.node = yyDollar[2].node @@ -7027,31 +7127,31 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4352 + // line internal/php7/php7.y:4451 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4359 + // line internal/php7/php7.y:4458 { yyVAL.list = yyDollar[1].list } case 459: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:4366 + // line internal/php7/php7.y:4465 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} } case 460: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4370 + // line internal/php7/php7.y:4469 { yyVAL.node = yyDollar[1].node } case 461: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4377 + // line internal/php7/php7.y:4476 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}} @@ -7064,7 +7164,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4388 + // line internal/php7/php7.y:4487 { if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil { yyVAL.list = []ast.Vertex{} @@ -7074,7 +7174,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4399 + // line internal/php7/php7.y:4498 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} @@ -7087,7 +7187,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4410 + // line internal/php7/php7.y:4509 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} @@ -7099,7 +7199,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4420 + // line internal/php7/php7.y:4519 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference} @@ -7115,7 +7215,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4434 + // line internal/php7/php7.y:4533 { reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -7129,7 +7229,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4446 + // line internal/php7/php7.y:4545 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, true, nil, yyDollar[2].node} @@ -7141,7 +7241,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:4456 + // line internal/php7/php7.y:4555 { // TODO: Cannot use list() as standalone expression listNode := &ast.ExprList{ast.Node{}, yyDollar[5].list} @@ -7160,7 +7260,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4473 + // line internal/php7/php7.y:4572 { // TODO: Cannot use list() as standalone expression listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -7177,13 +7277,13 @@ yydefault: } case 470: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4491 + // line internal/php7/php7.y:4590 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 471: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4495 + // line internal/php7/php7.y:4594 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.list = append(yyDollar[1].list, encapsed) @@ -7196,13 +7296,13 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4506 + // line internal/php7/php7.y:4605 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 473: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4510 + // line internal/php7/php7.y:4609 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{encapsed, yyDollar[2].node} @@ -7215,13 +7315,18 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4524 + // line internal/php7/php7.y:4623 { - name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } yyVAL.node = &ast.ExprVariable{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -7229,14 +7334,19 @@ yydefault: } case 475: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4536 + // line internal/php7/php7.y:4640 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, variable, yyDollar[3].node} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) @@ -7246,26 +7356,35 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4551 + // line internal/php7/php7.y:4660 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} - fetch := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} + fetch := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + } yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, variable, fetch} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - fetch.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Var, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(fetch, token.Start, yyDollar[3].token.SkippedTokens) } case 477: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4568 + // line internal/php7/php7.y:4686 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7280,15 +7399,20 @@ yydefault: } case 478: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4581 + // line internal/php7/php7.y:4699 { - name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, name} yyVAL.node = variable // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) // save comments @@ -7297,14 +7421,19 @@ yydefault: } case 479: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:4596 + // line internal/php7/php7.y:4719 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, variable, yyDollar[4].node} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) variable.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[6].token) @@ -7316,7 +7445,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4613 + // line internal/php7/php7.y:4741 { yyVAL.node = yyDollar[2].node @@ -7326,7 +7455,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4624 + // line internal/php7/php7.y:4752 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -7338,7 +7467,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4634 + // line internal/php7/php7.y:4762 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -7355,7 +7484,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4649 + // line internal/php7/php7.y:4777 { var lnumber *ast.ScalarLnumber // TODO: add option to handle 64 bit integer @@ -7381,13 +7510,18 @@ yydefault: } case 484: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4673 + // line internal/php7/php7.y:4801 { - identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + } yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier} // save position - identifier.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) // save comments @@ -7395,7 +7529,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:4688 + // line internal/php7/php7.y:4821 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -7413,7 +7547,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4704 + // line internal/php7/php7.y:4837 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -7435,7 +7569,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4724 + // line internal/php7/php7.y:4857 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -7447,7 +7581,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4734 + // line internal/php7/php7.y:4867 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -7459,7 +7593,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4744 + // line internal/php7/php7.y:4877 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -7481,7 +7615,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4764 + // line internal/php7/php7.y:4897 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -7493,7 +7627,7 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4774 + // line internal/php7/php7.y:4907 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -7505,13 +7639,13 @@ yydefault: } case 492: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4787 + // line internal/php7/php7.y:4920 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 493: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4791 + // line internal/php7/php7.y:4924 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -7520,7 +7654,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4801 + // line internal/php7/php7.y:4934 { yyVAL.node = yyDollar[1].node } diff --git a/internal/php7/php7.y b/internal/php7/php7.y index e4709aa..72ec026 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -552,23 +552,23 @@ top_statement: use_type: T_FUNCTION { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_CONST { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } ; @@ -759,7 +759,8 @@ unprefixed_use_declaration: Node: ast.Node{ Position: position.NewTokenPosition($3), }, - Value: $3.Value, + IdentifierTkn: $3, + Value: $3.Value, }, } } @@ -1088,39 +1089,36 @@ statement: } | T_GOTO T_STRING ';' { - label := &ast.Identifier{ast.Node{}, $2.Value} - $$ = &ast.StmtGoto{ Node: ast.Node{ Position: position.NewTokensPosition($1, $3), }, - GotoTkn: $1, - Label: label, + GotoTkn: $1, + Label: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + }, SemiColonTkn: $3, } - - // save position - label.GetNode().Position = position.NewTokenPosition($2) - - // save comments - yylex.(*Parser).setFreeFloating(label, token.Start, $2.SkippedTokens) } | T_STRING ':' { - label := &ast.Identifier{ast.Node{}, $1.Value} $$ = &ast.StmtLabel{ Node: ast.Node{ Position: position.NewTokensPosition($1, $2), }, - LabelName: label, - ColonTkn: $2, + LabelName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + }, + ColonTkn: $2, } - - // save position - label.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating(label, token.Start, $1.SkippedTokens) } catch_list: @@ -1130,7 +1128,13 @@ catch_list: } | catch_list T_CATCH '(' catch_name_list T_VARIABLE ')' '{' inner_statement_list '}' { - identifier := &ast.Identifier{ast.Node{}, $5.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($5), + }, + IdentifierTkn: $5, + Value: $5.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} catch := $4.(*ast.StmtCatch) @@ -1146,7 +1150,6 @@ catch_list: $$ = append($1, catch) // save position - identifier.GetNode().Position = position.NewTokenPosition($5) variable.GetNode().Position = position.NewTokenPosition($5) // save comments @@ -1214,11 +1217,16 @@ unset_variable: function_declaration_statement: T_FUNCTION returns_ref T_STRING backup_doc_comment '(' parameter_list ')' return_type '{' inner_statement_list '}' { - name := &ast.Identifier{ast.Node{}, $3.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.StmtFunction{ast.Node{}, $2 != nil, name, $6, $8, $10} // save position - name.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewTokensPosition($1, $11) @@ -1226,11 +1234,7 @@ function_declaration_statement: yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) if $2 != nil { yylex.(*Parser).setFreeFloating($$, token.Function, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Start, $3.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating(name, token.Start, $3.SkippedTokens) } - yylex.(*Parser).setFreeFloating($$, token.Name, $5.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.ParamList, $7.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.ReturnType, $9.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.Stmts, $11.SkippedTokens) @@ -1267,33 +1271,39 @@ is_variadic: class_declaration_statement: class_modifiers T_CLASS T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' { - name := &ast.Identifier{ast.Node{}, $3.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.StmtClass{ast.Node{}, name, $1, nil, $4, $5, $8} // save position - name.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewOptionalListTokensPosition($1, $2, $9) // save comments yylex.(*Parser).MoveFreeFloating($1[0], $$) yylex.(*Parser).setFreeFloating($$, token.ModifierList, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Start, $3.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Name, $7.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.Stmts, $9.SkippedTokens) } | T_CLASS T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' { - name := &ast.Identifier{ast.Node{}, $2.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + } $$ = &ast.StmtClass{ast.Node{}, name, nil, nil, $3, $4, $7} // save position - name.GetNode().Position = position.NewTokenPosition($2) $$.GetNode().Position = position.NewTokensPosition($1, $8) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Start, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Name, $6.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.Stmts, $8.SkippedTokens) } ; @@ -1312,39 +1322,43 @@ class_modifiers: class_modifier: T_ABSTRACT { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_FINAL { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } ; trait_declaration_statement: T_TRAIT T_STRING backup_doc_comment '{' class_statement_list '}' { - name := &ast.Identifier{ast.Node{}, $2.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + } $$ = &ast.StmtTrait{ast.Node{}, name, $5} // save position - name.GetNode().Position = position.NewTokenPosition($2) $$.GetNode().Position = position.NewTokensPosition($1, $6) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Start, $2.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.Name, $4.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.Stmts, $6.SkippedTokens) } @@ -1353,16 +1367,20 @@ trait_declaration_statement: interface_declaration_statement: T_INTERFACE T_STRING interface_extends_list backup_doc_comment '{' class_statement_list '}' { - name := &ast.Identifier{ast.Node{}, $2.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + } $$ = &ast.StmtInterface{ast.Node{}, name, $3, $6} // save position - name.GetNode().Position = position.NewTokenPosition($2) $$.GetNode().Position = position.NewTokensPosition($1, $7) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Start, $2.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.Name, $5.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.Stmts, $7.SkippedTokens) } @@ -1833,8 +1851,13 @@ non_empty_parameter_list: parameter: optional_type is_reference is_variadic T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $4.Value} - identifier.GetNode().Position = position.NewTokenPosition($4) + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + } var variable ast.Vertex variable = &ast.ExprVariable{ast.Node{}, identifier} @@ -1867,8 +1890,13 @@ parameter: } | optional_type is_reference is_variadic T_VARIABLE '=' expr { - identifier := &ast.Identifier{ast.Node{}, $4.Value} - identifier.GetNode().Position = position.NewTokenPosition($4) + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + } var variable ast.Vertex variable = &ast.ExprVariable{ast.Node{}, identifier} @@ -1933,23 +1961,23 @@ type_expr: type: T_ARRAY { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_CALLABLE { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | name { @@ -2079,7 +2107,13 @@ static_var_list: static_var: T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = &ast.StmtStaticVar{ @@ -2090,7 +2124,6 @@ static_var: } // save position - identifier.GetNode().Position = position.NewTokenPosition($1) variable.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -2098,7 +2131,13 @@ static_var: } | T_VARIABLE '=' expr { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = &ast.StmtStaticVar{ Node: ast.Node{ @@ -2110,7 +2149,6 @@ static_var: } // save position - identifier.GetNode().Position = position.NewTokenPosition($1) variable.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -2166,11 +2204,16 @@ class_statement: } | method_modifiers T_FUNCTION returns_ref identifier backup_doc_comment '(' parameter_list ')' return_type method_body { - name := &ast.Identifier{ast.Node{}, $4.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + } $$ = &ast.StmtClassMethod{ast.Node{}, $3 != nil, name, $1, $7, $9, $10} // save position - name.GetNode().Position = position.NewTokenPosition($4) if $1 == nil { $$.GetNode().Position = position.NewTokenNodePosition($2, $10) } else { @@ -2190,7 +2233,6 @@ class_statement: yylex.(*Parser).setFreeFloating($$, token.Function, $3.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.Ampersand, $4.SkippedTokens) } - yylex.(*Parser).setFreeFloating($$, token.Name, $6.SkippedTokens) yylex.(*Parser).setFreeFloating($$, token.ParameterList, $8.SkippedTokens) } ; @@ -2290,45 +2332,57 @@ trait_precedence: trait_alias: trait_method_reference T_AS T_STRING { - alias := &ast.Identifier{ast.Node{}, $3.Value} + alias := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.StmtTraitUseAlias{ast.Node{}, $1, nil, alias} // save position - alias.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).setFreeFloating($$, token.Ref, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(alias, token.Start, $3.SkippedTokens) } | trait_method_reference T_AS reserved_non_modifiers { - alias := &ast.Identifier{ast.Node{}, $3.Value} + alias := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.StmtTraitUseAlias{ast.Node{}, $1, nil, alias} // save position - alias.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).setFreeFloating($$, token.Ref, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(alias, token.Start, $3.SkippedTokens) } | trait_method_reference T_AS member_modifier identifier { - alias := &ast.Identifier{ast.Node{}, $4.Value} + alias := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + } $$ = &ast.StmtTraitUseAlias{ast.Node{}, $1, $3, alias} // save position - alias.GetNode().Position = position.NewTokenPosition($4) $$.GetNode().Position = position.NewNodeTokenPosition($1, $4) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).setFreeFloating($$, token.Ref, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(alias, token.Start, $4.SkippedTokens) } | trait_method_reference T_AS member_modifier { @@ -2346,11 +2400,16 @@ trait_alias: trait_method_reference: identifier { - name := &ast.Identifier{ast.Node{}, $1.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } $$ = &ast.StmtTraitMethodRef{ast.Node{}, nil, name} // save position - name.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -2365,17 +2424,21 @@ trait_method_reference: absolute_trait_method_reference: name T_PAAMAYIM_NEKUDOTAYIM identifier { - target := &ast.Identifier{ast.Node{}, $3.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.StmtTraitMethodRef{ast.Node{}, $1, target} // save position - target.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, $2.SkippedTokens) } ; @@ -2409,14 +2472,15 @@ variable_modifiers: } | T_VAR { - modifier := &ast.Identifier{ast.Node{}, $1.Value} - $$ = []ast.Vertex{modifier} - - // save position - modifier.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating(modifier, token.Start, $1.SkippedTokens) + $$ = []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + }, + } } ; @@ -2445,63 +2509,63 @@ non_empty_member_modifiers: member_modifier: T_PUBLIC { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_PROTECTED { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_PRIVATE { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_STATIC { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_ABSTRACT { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | T_FINAL { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } ; @@ -2522,12 +2586,17 @@ property_list: property: T_VARIABLE backup_doc_comment { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = &ast.StmtProperty{ast.Node{}, variable, nil} // save position - identifier.GetNode().Position = position.NewTokenPosition($1) variable.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokenPosition($1) @@ -2536,12 +2605,17 @@ property: } | T_VARIABLE '=' expr backup_doc_comment { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = &ast.StmtProperty{ast.Node{}, variable, $3} // save position - identifier.GetNode().Position = position.NewTokenPosition($1) variable.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokenNodePosition($1, $3) @@ -2575,7 +2649,8 @@ class_const_decl: Node: ast.Node{ Position: position.NewTokenPosition($1), }, - Value: $1.Value, + IdentifierTkn: $1, + Value: $1.Value, }, EqualTkn: $2, Expr: $3, @@ -2596,7 +2671,8 @@ const_decl: Node: ast.Node{ Position: position.NewTokenPosition($1), }, - Value: $1.Value, + IdentifierTkn: $1, + Value: $1.Value, }, EqualTkn: $2, Expr: $3, @@ -3640,11 +3716,16 @@ lexical_var_list: lexical_var: T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } $$ = &ast.ExprVariable{ast.Node{}, identifier} // save position - identifier.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -3652,12 +3733,17 @@ lexical_var: } | '&' T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $2.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = &ast.ExprReference{ast.Node{}, variable} // save position - identifier.GetNode().Position = position.NewTokenPosition($2) variable.GetNode().Position = position.NewTokenPosition($2) $$.GetNode().Position = position.NewTokensPosition($1, $2) @@ -3715,13 +3801,13 @@ function_call: class_name: T_STATIC { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | name { @@ -3994,31 +4080,39 @@ constant: } | class_name T_PAAMAYIM_NEKUDOTAYIM identifier { - target := &ast.Identifier{ast.Node{}, $3.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target} // save position - target.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, $3.SkippedTokens) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM identifier { - target := &ast.Identifier{ast.Node{}, $3.Value} + target := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.ExprClassConstFetch{ast.Node{}, $1, target} // save position - target.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewNodeTokenPosition($1, $3) // save comments yylex.(*Parser).MoveFreeFloating($1, $$) yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(target, token.Start, $3.SkippedTokens) } ; @@ -4183,11 +4277,16 @@ variable: simple_variable: T_VARIABLE { - name := &ast.Identifier{ast.Node{}, $1.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } $$ = &ast.ExprVariable{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -4307,13 +4406,13 @@ new_variable: member_name: identifier { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | '{' expr '}' { @@ -4332,13 +4431,13 @@ member_name: property_name: T_STRING { - $$ = &ast.Identifier{ast.Node{}, $1.Value} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } } | '{' expr '}' { @@ -4522,11 +4621,16 @@ encaps_list: encaps_var: T_VARIABLE { - name := &ast.Identifier{ast.Node{}, $1.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } $$ = &ast.ExprVariable{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokenPosition($1) // save comments @@ -4534,12 +4638,17 @@ encaps_var: } | T_VARIABLE '[' encaps_var_offset ']' { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = &ast.ExprArrayDimFetch{ast.Node{}, variable, $3} // save position - identifier.GetNode().Position = position.NewTokenPosition($1) variable.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokensPosition($1, $4) @@ -4549,20 +4658,29 @@ encaps_var: } | T_VARIABLE T_OBJECT_OPERATOR T_STRING { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} - fetch := &ast.Identifier{ast.Node{}, $3.Value} + fetch := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + } $$ = &ast.ExprPropertyFetch{ast.Node{}, variable, fetch} // save position - identifier.GetNode().Position = position.NewTokenPosition($1) variable.GetNode().Position = position.NewTokenPosition($1) - fetch.GetNode().Position = position.NewTokenPosition($3) $$.GetNode().Position = position.NewTokensPosition($1, $3) // save comments yylex.(*Parser).setFreeFloating($$, token.Var, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(fetch, token.Start, $3.SkippedTokens) } | T_DOLLAR_OPEN_CURLY_BRACES expr '}' { @@ -4579,13 +4697,18 @@ encaps_var: } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' { - name := &ast.Identifier{ast.Node{}, $2.Value} + name := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + } variable := &ast.ExprVariable{ast.Node{}, name} $$ = variable // save position - name.GetNode().Position = position.NewTokenPosition($2) $$.GetNode().Position = position.NewTokensPosition($1, $3) // save comments @@ -4594,12 +4717,17 @@ encaps_var: } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' { - identifier := &ast.Identifier{ast.Node{}, $2.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + } variable := &ast.ExprVariable{ast.Node{}, identifier} $$ = &ast.ExprArrayDimFetch{ast.Node{}, variable, $4} // save position - identifier.GetNode().Position = position.NewTokenPosition($2) variable.GetNode().Position = position.NewTokenPosition($2) $$.GetNode().Position = position.NewTokensPosition($1, $6) @@ -4671,11 +4799,16 @@ encaps_var_offset: } | T_VARIABLE { - identifier := &ast.Identifier{ast.Node{}, $1.Value} + identifier := &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + } $$ = &ast.ExprVariable{ast.Node{}, identifier} // save position - identifier.GetNode().Position = position.NewTokenPosition($1) $$.GetNode().Position = position.NewTokenPosition($1) // save comments diff --git a/pkg/ast/node.go b/pkg/ast/node.go index 7882623..d792bea 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -75,7 +75,8 @@ func (n *Parameter) Accept(v NodeVisitor) { // Identifier node type Identifier struct { Node - Value []byte + IdentifierTkn *token.Token + Value []byte } func (n *Identifier) Accept(v NodeVisitor) {