diff --git a/internal/php5/php5.go b/internal/php5/php5.go index d65f45d..ce30db8 100644 --- a/internal/php5/php5.go +++ b/internal/php5/php5.go @@ -344,7 +344,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php5/php5.y:6439 +// line internal/php5/php5.y:6418 type simpleIndirectReference struct { all []*ast.ExprVariable @@ -2323,7 +2323,7 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:271 + // line internal/php5/php5.y:271 { yylex.(*Parser).rootNode = &ast.Root{ast.Node{}, yyDollar[1].list} yylex.(*Parser).rootNode.GetNode().Position = position.NewNodeListPosition(yyDollar[1].list) @@ -2332,7 +2332,7 @@ yydefault: } case 2: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:281 + // line internal/php5/php5.y:281 { if inlineHtmlNode, ok := yyDollar[2].node.(*ast.StmtInlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) @@ -2345,13 +2345,13 @@ yydefault: } case 3: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:292 + // line internal/php5/php5.y:292 { yyVAL.list = []ast.Vertex{} } case 4: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:299 + // line internal/php5/php5.y:299 { yyVAL.list = []ast.Vertex{ &ast.NameNamePart{ @@ -2365,7 +2365,7 @@ yydefault: } case 5: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:311 + // line internal/php5/php5.y:311 { yyVAL.list = append(yyDollar[1].list, &ast.NameNamePart{ Node: ast.Node{ @@ -2378,32 +2378,32 @@ yydefault: } case 6: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:325 + // line internal/php5/php5.y:325 { // error yyVAL.node = nil } case 7: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:330 + // line internal/php5/php5.y:330 { yyVAL.node = yyDollar[1].node } case 8: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:334 + // line internal/php5/php5.y:334 { yyVAL.node = yyDollar[1].node } case 9: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:338 + // line internal/php5/php5.y:338 { yyVAL.node = yyDollar[1].node } case 10: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:342 + // line internal/php5/php5.y:342 { yyVAL.node = &ast.StmtHaltCompiler{ Node: ast.Node{ @@ -2417,7 +2417,7 @@ yydefault: } case 11: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:354 + // line internal/php5/php5.y:354 { yyVAL.node = &ast.StmtNamespace{ Node: ast.Node{ @@ -2435,7 +2435,7 @@ yydefault: } case 12: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:370 + // line internal/php5/php5.y:370 { yyVAL.node = &ast.StmtNamespace{ Node: ast.Node{ @@ -2455,7 +2455,7 @@ yydefault: } case 13: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:388 + // line internal/php5/php5.y:388 { yyVAL.node = &ast.StmtNamespace{ Node: ast.Node{ @@ -2469,7 +2469,7 @@ yydefault: } case 14: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:400 + // line internal/php5/php5.y:400 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2482,7 +2482,7 @@ yydefault: } case 15: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:411 + // line internal/php5/php5.y:411 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2502,7 +2502,7 @@ yydefault: } case 16: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:429 + // line internal/php5/php5.y:429 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2522,7 +2522,7 @@ yydefault: } case 17: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:447 + // line internal/php5/php5.y:447 { yyDollar[1].node.(*ast.StmtConstList).SemiColonTkn = yyDollar[2].token yyDollar[1].node.(*ast.StmtConstList).Node.Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token) @@ -2530,7 +2530,7 @@ yydefault: } case 18: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:456 + // line internal/php5/php5.y:456 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2538,13 +2538,13 @@ yydefault: } case 19: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:462 + // line internal/php5/php5.y:462 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 20: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:469 + // line internal/php5/php5.y:469 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2560,7 +2560,7 @@ yydefault: } case 21: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:483 + // line internal/php5/php5.y:483 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2584,7 +2584,7 @@ yydefault: } case 22: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:505 + // line internal/php5/php5.y:505 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2601,7 +2601,7 @@ yydefault: } case 23: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:520 + // line internal/php5/php5.y:520 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2626,7 +2626,7 @@ yydefault: } case 24: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:546 + // line internal/php5/php5.y:546 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2634,13 +2634,13 @@ yydefault: } case 25: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:552 + // line internal/php5/php5.y:552 { 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:559 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2656,7 +2656,7 @@ yydefault: } case 27: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:573 + // line internal/php5/php5.y:573 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2680,7 +2680,7 @@ yydefault: } case 28: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:595 + // line internal/php5/php5.y:595 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2697,7 +2697,7 @@ yydefault: } case 29: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:610 + // line internal/php5/php5.y:610 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2722,7 +2722,7 @@ yydefault: } case 30: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:636 + // line internal/php5/php5.y:636 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2730,13 +2730,13 @@ yydefault: } case 31: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:642 + // line internal/php5/php5.y:642 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 32: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:649 + // line internal/php5/php5.y:649 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2752,7 +2752,7 @@ yydefault: } case 33: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:663 + // line internal/php5/php5.y:663 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2776,7 +2776,7 @@ yydefault: } case 34: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:685 + // line internal/php5/php5.y:685 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2793,7 +2793,7 @@ yydefault: } case 35: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:700 + // line internal/php5/php5.y:700 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2818,7 +2818,7 @@ yydefault: } case 36: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:726 + // line internal/php5/php5.y:726 { constList := yyDollar[1].node.(*ast.StmtConstList) constList.Node.Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[5].node) @@ -2844,7 +2844,7 @@ yydefault: } case 37: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:750 + // line internal/php5/php5.y:750 { yyVAL.node = &ast.StmtConstList{ Node: ast.Node{ @@ -2873,7 +2873,7 @@ yydefault: } case 38: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:780 + // line internal/php5/php5.y:780 { if inlineHtmlNode, ok := yyDollar[2].node.(*ast.StmtInlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) @@ -2886,38 +2886,38 @@ yydefault: } case 39: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:791 + // line internal/php5/php5.y:791 { yyVAL.list = []ast.Vertex{} } case 40: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:799 + // line internal/php5/php5.y:799 { // error yyVAL.node = nil } case 41: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:804 + // line internal/php5/php5.y:804 { yyVAL.node = yyDollar[1].node } case 42: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:808 + // line internal/php5/php5.y:808 { yyVAL.node = yyDollar[1].node } case 43: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:812 + // line internal/php5/php5.y:812 { yyVAL.node = yyDollar[1].node } case 44: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:816 + // line internal/php5/php5.y:816 { yyVAL.node = &ast.StmtHaltCompiler{ Node: ast.Node{ @@ -2931,13 +2931,13 @@ yydefault: } case 45: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:832 + // line internal/php5/php5.y:832 { yyVAL.node = yyDollar[1].node } case 46: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:836 + // line internal/php5/php5.y:836 { yyVAL.node = &ast.StmtLabel{ Node: ast.Node{ @@ -2955,7 +2955,7 @@ yydefault: } case 47: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:855 + // line internal/php5/php5.y:855 { yyVAL.node = &ast.StmtStmtList{ Node: ast.Node{ @@ -2968,7 +2968,7 @@ yydefault: } case 48: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:866 + // line internal/php5/php5.y:866 { pos := position.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node) if yyDollar[5].node != nil { @@ -2992,7 +2992,7 @@ yydefault: } case 49: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:888 + // line internal/php5/php5.y:888 { yyVAL.node = &ast.StmtIf{ Node: ast.Node{ @@ -3018,7 +3018,7 @@ yydefault: } case 50: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:912 + // line internal/php5/php5.y:912 { yyDollar[3].node.(*ast.StmtWhile).WhileTkn = yyDollar[1].token yyDollar[3].node.(*ast.StmtWhile).OpenParenthesisTkn = yyDollar[2].node.(*ast.ParserBrackets).OpenBracketTkn @@ -3030,7 +3030,7 @@ yydefault: } case 51: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:922 + // line internal/php5/php5.y:922 { yyVAL.node = &ast.StmtDo{ Node: ast.Node{ @@ -3047,7 +3047,7 @@ yydefault: } case 52: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php5/php5.y:937 + // line internal/php5/php5.y:937 { yyDollar[9].node.(*ast.StmtFor).ForTkn = yyDollar[1].token yyDollar[9].node.(*ast.StmtFor).OpenParenthesisTkn = yyDollar[2].token @@ -3063,7 +3063,7 @@ yydefault: } case 53: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:951 + // line internal/php5/php5.y:951 { yyDollar[3].node.(*ast.StmtSwitch).SwitchTkn = yyDollar[1].token yyDollar[3].node.(*ast.StmtSwitch).OpenParenthesisTkn = yyDollar[2].node.(*ast.ParserBrackets).OpenBracketTkn @@ -3075,7 +3075,7 @@ yydefault: } case 54: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:961 + // line internal/php5/php5.y:961 { yyVAL.node = &ast.StmtBreak{ Node: ast.Node{ @@ -3087,7 +3087,7 @@ yydefault: } case 55: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:971 + // line internal/php5/php5.y:971 { yyVAL.node = &ast.StmtBreak{ Node: ast.Node{ @@ -3100,7 +3100,7 @@ yydefault: } case 56: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:982 + // line internal/php5/php5.y:982 { yyVAL.node = &ast.StmtContinue{ Node: ast.Node{ @@ -3112,7 +3112,7 @@ yydefault: } case 57: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:992 + // line internal/php5/php5.y:992 { yyVAL.node = &ast.StmtContinue{ Node: ast.Node{ @@ -3125,7 +3125,7 @@ yydefault: } case 58: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1003 + // line internal/php5/php5.y:1003 { yyVAL.node = &ast.StmtReturn{ Node: ast.Node{ @@ -3137,7 +3137,7 @@ yydefault: } case 59: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1013 + // line internal/php5/php5.y:1013 { yyVAL.node = &ast.StmtReturn{ Node: ast.Node{ @@ -3150,7 +3150,7 @@ yydefault: } case 60: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1024 + // line internal/php5/php5.y:1024 { yyVAL.node = &ast.StmtReturn{ Node: ast.Node{ @@ -3163,7 +3163,7 @@ yydefault: } case 61: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1035 + // line internal/php5/php5.y:1035 { yyVAL.node = &ast.StmtExpression{ast.Node{}, yyDollar[1].node} @@ -3177,7 +3177,7 @@ yydefault: } case 62: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1047 + // line internal/php5/php5.y:1047 { yyDollar[2].node.(*ast.StmtGlobal).GlobalTkn = yyDollar[1].token yyDollar[2].node.(*ast.StmtGlobal).SemiColonTkn = yyDollar[3].token @@ -3188,7 +3188,7 @@ yydefault: } case 63: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1056 + // line internal/php5/php5.y:1056 { yyDollar[2].node.(*ast.StmtStatic).StaticTkn = yyDollar[1].token yyDollar[2].node.(*ast.StmtStatic).SemiColonTkn = yyDollar[3].token @@ -3199,7 +3199,7 @@ yydefault: } case 64: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1065 + // line internal/php5/php5.y:1065 { yyDollar[2].node.(*ast.StmtEcho).EchoTkn = yyDollar[1].token yyDollar[2].node.(*ast.StmtEcho).SemiColonTkn = yyDollar[3].token @@ -3209,7 +3209,7 @@ yydefault: } case 65: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1073 + // line internal/php5/php5.y:1073 { yyVAL.node = &ast.StmtInlineHtml{ Node: ast.Node{ @@ -3221,7 +3221,7 @@ yydefault: } case 66: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1083 + // line internal/php5/php5.y:1083 { yyVAL.node = &ast.StmtExpression{ast.Node{}, yyDollar[1].node} @@ -3235,7 +3235,7 @@ yydefault: } case 67: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1095 + // line internal/php5/php5.y:1095 { yyDollar[3].node.(*ast.StmtUnset).UnsetTkn = yyDollar[1].token yyDollar[3].node.(*ast.StmtUnset).OpenParenthesisTkn = yyDollar[2].token @@ -3247,7 +3247,7 @@ yydefault: } case 68: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:1105 + // line internal/php5/php5.y:1105 { yyDollar[8].node.(*ast.StmtForeach).ForeachTkn = yyDollar[1].token yyDollar[8].node.(*ast.StmtForeach).OpenParenthesisTkn = yyDollar[2].token @@ -3267,7 +3267,7 @@ yydefault: } case 69: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:1123 + // line internal/php5/php5.y:1123 { yyDollar[8].node.(*ast.StmtForeach).ForeachTkn = yyDollar[1].token yyDollar[8].node.(*ast.StmtForeach).OpenParenthesisTkn = yyDollar[2].token @@ -3287,7 +3287,7 @@ yydefault: } case 70: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1141 + // line internal/php5/php5.y:1141 { yyDollar[5].node.(*ast.StmtDeclare).DeclareTkn = yyDollar[1].token yyDollar[5].node.(*ast.StmtDeclare).OpenParenthesisTkn = yyDollar[2].token @@ -3300,7 +3300,7 @@ yydefault: } case 71: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1152 + // line internal/php5/php5.y:1152 { yyVAL.node = &ast.StmtNop{ Node: ast.Node{ @@ -3311,7 +3311,7 @@ yydefault: } case 72: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:1161 + // line internal/php5/php5.y:1161 { yyVAL.node = &ast.StmtTry{ TryTkn: yyDollar[1].token, @@ -3330,7 +3330,7 @@ yydefault: } case 73: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1178 + // line internal/php5/php5.y:1178 { yyVAL.node = &ast.StmtThrow{ Node: ast.Node{ @@ -3343,7 +3343,7 @@ yydefault: } case 74: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1189 + // line internal/php5/php5.y:1189 { yyVAL.node = &ast.StmtGoto{ Node: ast.Node{ @@ -3362,13 +3362,13 @@ yydefault: } case 75: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1209 + // line internal/php5/php5.y:1209 { yyVAL.list = []ast.Vertex{} } case 76: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php5/php5.y:1213 + // line internal/php5/php5.y:1213 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -3401,13 +3401,13 @@ yydefault: } case 77: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1247 + // line internal/php5/php5.y:1247 { yyVAL.node = nil } case 78: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1251 + // line internal/php5/php5.y:1251 { yyVAL.node = &ast.StmtFinally{ Node: ast.Node{ @@ -3421,31 +3421,31 @@ yydefault: } case 79: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1266 + // line internal/php5/php5.y:1266 { yyVAL.list = yyDollar[1].list } case 80: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1270 + // line internal/php5/php5.y:1270 { yyVAL.list = []ast.Vertex{} } case 81: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1277 + // line internal/php5/php5.y:1277 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 82: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1281 + // line internal/php5/php5.y:1281 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 83: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:1288 + // line internal/php5/php5.y:1288 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -3477,7 +3477,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1321 + // line internal/php5/php5.y:1321 { yyVAL.node = &ast.StmtUnset{ Vars: []ast.Vertex{yyDollar[1].node}, @@ -3485,7 +3485,7 @@ yydefault: } case 85: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1327 + // line internal/php5/php5.y:1327 { 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) @@ -3494,74 +3494,74 @@ yydefault: } case 86: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1337 + // line internal/php5/php5.y:1337 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1344 + // line internal/php5/php5.y:1344 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1351 + // line internal/php5/php5.y:1351 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1358 + // line internal/php5/php5.y:1358 { yyVAL.token = nil } case 90: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1362 + // line internal/php5/php5.y:1362 { yyVAL.token = yyDollar[1].token } case 91: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1369 + // line internal/php5/php5.y:1369 { yyVAL.token = nil } case 92: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1373 + // line internal/php5/php5.y:1373 { yyVAL.token = yyDollar[1].token } case 93: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php5/php5.y:1380 + // line internal/php5/php5.y:1380 { - name := &ast.Identifier{ + yyVAL.node = &ast.StmtFunction{ Node: ast.Node{ - Position: position.NewTokenPosition(yyDollar[3].token), + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[9].token), }, - IdentifierTkn: yyDollar[3].token, - Value: yyDollar[3].token.Value, + FunctionTkn: yyDollar[1].token, + AmpersandTkn: yyDollar[2].token, + FunctionName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + }, + OpenParenthesisTkn: yyDollar[4].token, + Params: yyDollar[5].list, + CloseParenthesisTkn: yyDollar[6].token, + OpenCurlyBracketTkn: yyDollar[7].token, + Stmts: yyDollar[8].list, + CloseCurlyBracketTkn: yyDollar[9].token, } - yyVAL.node = &ast.StmtFunction{ast.Node{}, yyDollar[2].token != nil, name, yyDollar[5].list, nil, yyDollar[8].list} - - // save position - 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(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:1406 + // line internal/php5/php5.y:1406 { switch n := yyDollar[1].node.(type) { case *ast.StmtClass: @@ -3598,7 +3598,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:1441 + // line internal/php5/php5.y:1441 { name := &ast.Identifier{ Node: ast.Node{ @@ -3619,7 +3619,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1464 + // line internal/php5/php5.y:1464 { yyVAL.node = &ast.StmtClass{ Node: ast.Node{ @@ -3630,7 +3630,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1473 + // line internal/php5/php5.y:1473 { yyVAL.node = &ast.StmtClass{ Node: ast.Node{ @@ -3650,7 +3650,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1491 + // line internal/php5/php5.y:1491 { yyVAL.node = &ast.StmtTrait{ Node: ast.Node{ @@ -3661,7 +3661,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1500 + // line internal/php5/php5.y:1500 { yyVAL.node = &ast.StmtClass{ Node: ast.Node{ @@ -3681,13 +3681,13 @@ yydefault: } case 100: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1521 + // line internal/php5/php5.y:1521 { yyVAL.node = nil } case 101: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1525 + // line internal/php5/php5.y:1525 { yyVAL.node = &ast.StmtClassExtends{ Node: ast.Node{ @@ -3699,19 +3699,19 @@ yydefault: } case 102: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1538 + // line internal/php5/php5.y:1538 { yyVAL.token = yyDollar[1].token } case 103: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1545 + // line internal/php5/php5.y:1545 { yyVAL.node = nil } case 104: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1549 + // line internal/php5/php5.y:1549 { yyVAL.node = &ast.StmtInterfaceExtends{ Node: ast.Node{ @@ -3724,13 +3724,13 @@ yydefault: } case 105: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1563 + // line internal/php5/php5.y:1563 { yyVAL.node = nil } case 106: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1567 + // line internal/php5/php5.y:1567 { yyVAL.node = &ast.StmtClassImplements{ Node: ast.Node{ @@ -3743,7 +3743,7 @@ yydefault: } case 107: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1581 + // line internal/php5/php5.y:1581 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -3751,7 +3751,7 @@ yydefault: } case 108: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1587 + // line internal/php5/php5.y:1587 { 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) @@ -3760,13 +3760,13 @@ yydefault: } case 109: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1597 + // line internal/php5/php5.y:1597 { yyVAL.node = nil } case 110: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1601 + // line internal/php5/php5.y:1601 { yyVAL.node = &ast.StmtForeach{ DoubleArrowTkn: yyDollar[1].token, @@ -3775,13 +3775,13 @@ yydefault: } case 111: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1611 + // line internal/php5/php5.y:1611 { yyVAL.node = yyDollar[1].node } case 112: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1615 + // line internal/php5/php5.y:1615 { yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node} @@ -3793,7 +3793,7 @@ yydefault: } case 113: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1625 + // line internal/php5/php5.y:1625 { yyVAL.node = &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -3807,7 +3807,7 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1640 + // line internal/php5/php5.y:1640 { yyVAL.node = &ast.StmtFor{ Node: ast.Node{ @@ -3818,7 +3818,7 @@ yydefault: } case 115: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1649 + // line internal/php5/php5.y:1649 { yyVAL.node = &ast.StmtFor{ Node: ast.Node{ @@ -3838,7 +3838,7 @@ yydefault: } case 116: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1670 + // line internal/php5/php5.y:1670 { yyVAL.node = &ast.StmtForeach{ Node: ast.Node{ @@ -3849,7 +3849,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1679 + // line internal/php5/php5.y:1679 { yyVAL.node = &ast.StmtForeach{ Node: ast.Node{ @@ -3869,7 +3869,7 @@ yydefault: } case 118: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1701 + // line internal/php5/php5.y:1701 { yyVAL.node = &ast.StmtDeclare{ Node: ast.Node{ @@ -3880,7 +3880,7 @@ yydefault: } case 119: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1710 + // line internal/php5/php5.y:1710 { yyVAL.node = &ast.StmtDeclare{ Node: ast.Node{ @@ -3900,7 +3900,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1732 + // line internal/php5/php5.y:1732 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -3925,7 +3925,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1755 + // line internal/php5/php5.y:1755 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append( @@ -3952,7 +3952,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1784 + // line internal/php5/php5.y:1784 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3965,7 +3965,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1795 + // line internal/php5/php5.y:1795 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3979,7 +3979,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1807 + // line internal/php5/php5.y:1807 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3994,7 +3994,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1820 + // line internal/php5/php5.y:1820 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -4010,13 +4010,13 @@ yydefault: } case 126: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1838 + // line internal/php5/php5.y:1838 { yyVAL.list = nil } case 127: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1842 + // line internal/php5/php5.y:1842 { yyVAL.list = append(yyDollar[1].list, &ast.StmtCase{ Node: ast.Node{ @@ -4030,7 +4030,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1854 + // line internal/php5/php5.y:1854 { yyVAL.list = append(yyDollar[1].list, &ast.StmtDefault{ Node: ast.Node{ @@ -4043,19 +4043,19 @@ yydefault: } case 129: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1869 + // line internal/php5/php5.y:1869 { yyVAL.token = yyDollar[1].token } case 130: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1873 + // line internal/php5/php5.y:1873 { yyVAL.token = yyDollar[1].token } case 131: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1881 + // line internal/php5/php5.y:1881 { yyVAL.node = &ast.StmtWhile{ Node: ast.Node{ @@ -4066,7 +4066,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1890 + // line internal/php5/php5.y:1890 { yyVAL.node = &ast.StmtWhile{ Node: ast.Node{ @@ -4086,13 +4086,13 @@ yydefault: } case 133: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1913 + // line internal/php5/php5.y:1913 { yyVAL.list = nil } case 134: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1917 + // line internal/php5/php5.y:1917 { yyVAL.list = append(yyDollar[1].list, &ast.StmtElseIf{ Node: ast.Node{ @@ -4107,13 +4107,13 @@ yydefault: } case 135: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1934 + // line internal/php5/php5.y:1934 { yyVAL.list = nil } case 136: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1938 + // line internal/php5/php5.y:1938 { yyVAL.list = append(yyDollar[1].list, &ast.StmtElseIf{ Node: ast.Node{ @@ -4135,13 +4135,13 @@ yydefault: } case 137: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1962 + // line internal/php5/php5.y:1962 { yyVAL.node = nil } case 138: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1966 + // line internal/php5/php5.y:1966 { yyVAL.node = &ast.StmtElse{ Node: ast.Node{ @@ -4153,13 +4153,13 @@ yydefault: } case 139: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1980 + // line internal/php5/php5.y:1980 { yyVAL.node = nil } case 140: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1984 + // line internal/php5/php5.y:1984 { yyVAL.node = &ast.StmtElse{ Node: ast.Node{ @@ -4178,25 +4178,25 @@ yydefault: } case 141: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2005 + // line internal/php5/php5.y:2005 { yyVAL.list = yyDollar[1].list } case 142: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2009 + // line internal/php5/php5.y:2009 { yyVAL.list = nil } case 143: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2016 + // line internal/php5/php5.y:2016 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 144: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2020 + // line internal/php5/php5.y:2020 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4205,7 +4205,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:2030 + // line internal/php5/php5.y:2030 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -4259,7 +4259,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:2082 + // line internal/php5/php5.y:2082 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -4316,13 +4316,13 @@ yydefault: } case 147: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2141 + // line internal/php5/php5.y:2141 { yyVAL.node = nil } case 148: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2145 + // line internal/php5/php5.y:2145 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -4334,7 +4334,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2155 + // line internal/php5/php5.y:2155 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -4346,13 +4346,13 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2165 + // line internal/php5/php5.y:2165 { yyVAL.node = yyDollar[1].node } case 151: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2173 + // line internal/php5/php5.y:2173 { yyVAL.node = &ast.ArgumentList{ Node: ast.Node{ @@ -4364,7 +4364,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2183 + // line internal/php5/php5.y:2183 { argumentList := yyDollar[2].node.(*ast.ArgumentList) argumentList.Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) @@ -4375,7 +4375,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2192 + // line internal/php5/php5.y:2192 { yyVAL.node = &ast.ArgumentList{ Node: ast.Node{ @@ -4395,7 +4395,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2214 + // line internal/php5/php5.y:2214 { yyVAL.node = &ast.ArgumentList{ Arguments: []ast.Vertex{yyDollar[1].node}, @@ -4403,7 +4403,7 @@ yydefault: } case 155: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2220 + // line internal/php5/php5.y:2220 { yyDollar[1].node.(*ast.ArgumentList).SeparatorTkns = append(yyDollar[1].node.(*ast.ArgumentList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ArgumentList).Arguments = append(yyDollar[1].node.(*ast.ArgumentList).Arguments, yyDollar[3].node) @@ -4412,7 +4412,7 @@ yydefault: } case 156: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2230 + // line internal/php5/php5.y:2230 { yyVAL.node = &ast.Argument{ Node: ast.Node{ @@ -4423,7 +4423,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2239 + // line internal/php5/php5.y:2239 { yyVAL.node = &ast.Argument{ Node: ast.Node{ @@ -4434,7 +4434,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2248 + // line internal/php5/php5.y:2248 { yyVAL.node = &ast.Argument{ Node: ast.Node{ @@ -4446,7 +4446,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2258 + // line internal/php5/php5.y:2258 { yyVAL.node = &ast.Argument{ Node: ast.Node{ @@ -4458,7 +4458,7 @@ yydefault: } case 160: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2271 + // line internal/php5/php5.y:2271 { 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) @@ -4467,7 +4467,7 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2278 + // line internal/php5/php5.y:2278 { yyVAL.node = &ast.StmtGlobal{ Vars: []ast.Vertex{yyDollar[1].node}, @@ -4475,7 +4475,7 @@ yydefault: } case 162: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2288 + // line internal/php5/php5.y:2288 { name := &ast.Identifier{ Node: ast.Node{ @@ -4494,7 +4494,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2305 + // line internal/php5/php5.y:2305 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -4506,7 +4506,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:2315 + // line internal/php5/php5.y:2315 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -4520,7 +4520,7 @@ yydefault: } case 165: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2331 + // line internal/php5/php5.y:2331 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -4549,7 +4549,7 @@ yydefault: } case 166: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:2358 + // line internal/php5/php5.y:2358 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -4580,7 +4580,7 @@ yydefault: } case 167: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2387 + // line internal/php5/php5.y:2387 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -4610,7 +4610,7 @@ yydefault: } case 168: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2415 + // line internal/php5/php5.y:2415 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -4642,19 +4642,19 @@ yydefault: } case 169: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2449 + // line internal/php5/php5.y:2449 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 170: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2453 + // line internal/php5/php5.y:2453 { yyVAL.list = []ast.Vertex{} } case 171: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2461 + // line internal/php5/php5.y:2461 { yyVAL.node = &ast.StmtPropertyList{ast.Node{}, yyDollar[1].list, nil, yyDollar[2].list} @@ -4668,7 +4668,7 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2473 + // line internal/php5/php5.y:2473 { yyDollar[1].node.(*ast.StmtClassConstList).SemiColonTkn = yyDollar[2].token yyDollar[1].node.(*ast.StmtClassConstList).Node.Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token) @@ -4676,49 +4676,42 @@ yydefault: } case 173: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2479 + // line internal/php5/php5.y:2479 { yyVAL.node = yyDollar[1].node } case 174: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:2483 + // line internal/php5/php5.y:2483 { - 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 - if yyDollar[1].list == nil { - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[2].token, yyDollar[8].node) - } else { + pos := position.NewTokenNodePosition(yyDollar[2].token, yyDollar[8].node) + if yyDollar[1].list != nil { yyVAL.node.GetNode().Position = position.NewNodeListNodePosition(yyDollar[1].list, yyDollar[8].node) } - // save comments - if len(yyDollar[1].list) > 0 { - yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.ModifierList, yyDollar[2].token.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.StmtClassMethod{ + Node: ast.Node{ + Position: pos, + }, + Modifiers: yyDollar[1].list, + FunctionTkn: yyDollar[2].token, + AmpersandTkn: yyDollar[3].token, + MethodName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, + }, + OpenParenthesisTkn: yyDollar[5].token, + Params: yyDollar[6].list, + CloseParenthesisTkn: yyDollar[7].token, + Stmt: yyDollar[8].node, } - if yyDollar[3].token == nil { - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Function, yyDollar[4].token.SkippedTokens) - } else { - 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[5].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.ParameterList, yyDollar[7].token.SkippedTokens) } case 175: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2520 + // line internal/php5/php5.y:2513 { yyVAL.node = &ast.StmtTraitUse{ Node: ast.Node{ @@ -4732,7 +4725,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2535 + // line internal/php5/php5.y:2528 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -4740,7 +4733,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2541 + // line internal/php5/php5.y:2534 { 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) @@ -4749,7 +4742,7 @@ yydefault: } case 178: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2551 + // line internal/php5/php5.y:2544 { yyVAL.node = &ast.StmtNop{ Node: ast.Node{ @@ -4760,7 +4753,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2560 + // line internal/php5/php5.y:2553 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, yyDollar[2].list} @@ -4772,31 +4765,31 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2573 + // line internal/php5/php5.y:2566 { yyVAL.list = nil } case 181: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2577 + // line internal/php5/php5.y:2570 { yyVAL.list = yyDollar[1].list } case 182: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2584 + // line internal/php5/php5.y:2577 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 183: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2588 + // line internal/php5/php5.y:2581 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 184: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2595 + // line internal/php5/php5.y:2588 { yyVAL.node = yyDollar[1].node @@ -4806,7 +4799,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2603 + // line internal/php5/php5.y:2596 { yyVAL.node = yyDollar[1].node @@ -4816,7 +4809,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2614 + // line internal/php5/php5.y:2607 { yyVAL.node = &ast.StmtTraitUsePrecedence{ Node: ast.Node{ @@ -4830,7 +4823,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2629 + // line internal/php5/php5.y:2622 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -4838,7 +4831,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2635 + // line internal/php5/php5.y:2628 { 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) @@ -4847,7 +4840,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2645 + // line internal/php5/php5.y:2638 { name := &ast.Identifier{ Node: ast.Node{ @@ -4866,13 +4859,13 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2662 + // line internal/php5/php5.y:2655 { yyVAL.node = yyDollar[1].node } case 191: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2669 + // line internal/php5/php5.y:2662 { target := &ast.Identifier{ Node: ast.Node{ @@ -4892,7 +4885,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:2690 + // line internal/php5/php5.y:2683 { alias := &ast.Identifier{ Node: ast.Node{ @@ -4912,7 +4905,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2708 + // line internal/php5/php5.y:2701 { yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, nil} @@ -4925,19 +4918,19 @@ yydefault: } case 194: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2722 + // line internal/php5/php5.y:2715 { yyVAL.node = nil } case 195: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2726 + // line internal/php5/php5.y:2719 { yyVAL.node = yyDollar[1].node } case 196: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2733 + // line internal/php5/php5.y:2726 { yyVAL.node = &ast.StmtNop{ Node: ast.Node{ @@ -4948,7 +4941,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2742 + // line internal/php5/php5.y:2735 { yyVAL.node = &ast.StmtStmtList{ Node: ast.Node{ @@ -4961,13 +4954,13 @@ yydefault: } case 198: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2756 + // line internal/php5/php5.y:2749 { yyVAL.list = yyDollar[1].list } case 199: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2760 + // line internal/php5/php5.y:2753 { yyVAL.list = []ast.Vertex{ &ast.Identifier{ @@ -4981,31 +4974,31 @@ yydefault: } case 200: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2775 + // line internal/php5/php5.y:2768 { yyVAL.list = nil } case 201: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2779 + // line internal/php5/php5.y:2772 { yyVAL.list = yyDollar[1].list } case 202: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2786 + // line internal/php5/php5.y:2779 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 203: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2790 + // line internal/php5/php5.y:2783 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 204: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2797 + // line internal/php5/php5.y:2790 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -5017,7 +5010,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2807 + // line internal/php5/php5.y:2800 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -5029,7 +5022,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2817 + // line internal/php5/php5.y:2810 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -5041,7 +5034,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2827 + // line internal/php5/php5.y:2820 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -5053,7 +5046,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2837 + // line internal/php5/php5.y:2830 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -5065,7 +5058,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2847 + // line internal/php5/php5.y:2840 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -5077,7 +5070,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2860 + // line internal/php5/php5.y:2853 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -5100,7 +5093,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:2881 + // line internal/php5/php5.y:2874 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -5124,7 +5117,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2903 + // line internal/php5/php5.y:2896 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -5146,7 +5139,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2923 + // line internal/php5/php5.y:2916 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -5169,7 +5162,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:2947 + // line internal/php5/php5.y:2940 { constList := yyDollar[1].node.(*ast.StmtClassConstList) constList.Node.Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[5].node) @@ -5195,7 +5188,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:2971 + // line internal/php5/php5.y:2964 { yyVAL.node = &ast.StmtClassConstList{ Node: ast.Node{ @@ -5224,7 +5217,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3001 + // line internal/php5/php5.y:2994 { 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) @@ -5233,7 +5226,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3008 + // line internal/php5/php5.y:3001 { yyVAL.node = &ast.StmtEcho{ Exprs: []ast.Vertex{yyDollar[1].node}, @@ -5241,19 +5234,19 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:3018 + // line internal/php5/php5.y:3011 { yyVAL.list = nil } case 219: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3022 + // line internal/php5/php5.y:3015 { yyVAL.list = yyDollar[1].list } case 220: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3029 + // line internal/php5/php5.y:3022 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5262,25 +5255,25 @@ yydefault: } case 221: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3036 + // line internal/php5/php5.y:3029 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 222: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3043 + // line internal/php5/php5.y:3036 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 223: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3047 + // line internal/php5/php5.y:3040 { yyVAL.list = yyDollar[1].list } case 224: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3054 + // line internal/php5/php5.y:3047 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -5294,7 +5287,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3066 + // line internal/php5/php5.y:3059 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[2].node} yyVAL.list = []ast.Vertex{fetch} @@ -5308,37 +5301,37 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3081 + // line internal/php5/php5.y:3074 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 227: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3085 + // line internal/php5/php5.y:3078 { yyVAL.list = yyDollar[1].list } case 228: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3089 + // line internal/php5/php5.y:3082 { yyVAL.list = yyDollar[1].list } case 229: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:3096 + // line internal/php5/php5.y:3089 { yyVAL.list = nil } case 230: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3100 + // line internal/php5/php5.y:3093 { yyVAL.list = yyDollar[1].list } case 231: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3107 + // line internal/php5/php5.y:3100 { if yyDollar[3].node != nil { @@ -5354,7 +5347,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:3124 + // line internal/php5/php5.y:3117 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, listNode, yyDollar[6].node} @@ -5371,7 +5364,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3139 + // line internal/php5/php5.y:3132 { yyVAL.node = &ast.ExprAssign{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5384,7 +5377,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3150 + // line internal/php5/php5.y:3143 { yyVAL.node = &ast.ExprAssignReference{ast.Node{}, yyDollar[1].node, yyDollar[4].node} @@ -5398,7 +5391,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:3162 + // line internal/php5/php5.y:3155 { var _new *ast.ExprNew @@ -5425,7 +5418,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3187 + // line internal/php5/php5.y:3180 { yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node} @@ -5437,7 +5430,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3197 + // line internal/php5/php5.y:3190 { yyVAL.node = &ast.ExprAssignPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5449,7 +5442,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3207 + // line internal/php5/php5.y:3200 { yyVAL.node = &ast.ExprAssignMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5462,7 +5455,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3218 + // line internal/php5/php5.y:3211 { yyVAL.node = &ast.ExprAssignMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5475,7 +5468,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3229 + // line internal/php5/php5.y:3222 { yyVAL.node = &ast.ExprAssignPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5488,7 +5481,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3240 + // line internal/php5/php5.y:3233 { yyVAL.node = &ast.ExprAssignDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5501,7 +5494,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3251 + // line internal/php5/php5.y:3244 { yyVAL.node = &ast.ExprAssignConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5514,7 +5507,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3262 + // line internal/php5/php5.y:3255 { yyVAL.node = &ast.ExprAssignMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5527,7 +5520,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3273 + // line internal/php5/php5.y:3266 { yyVAL.node = &ast.ExprAssignBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5540,7 +5533,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3284 + // line internal/php5/php5.y:3277 { yyVAL.node = &ast.ExprAssignBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5553,7 +5546,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3295 + // line internal/php5/php5.y:3288 { yyVAL.node = &ast.ExprAssignBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5566,7 +5559,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3306 + // line internal/php5/php5.y:3299 { yyVAL.node = &ast.ExprAssignShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5579,7 +5572,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3317 + // line internal/php5/php5.y:3310 { yyVAL.node = &ast.ExprAssignShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5592,7 +5585,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3328 + // line internal/php5/php5.y:3321 { yyVAL.node = &ast.ExprPostInc{ast.Node{}, yyDollar[1].node} @@ -5605,7 +5598,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3339 + // line internal/php5/php5.y:3332 { yyVAL.node = &ast.ExprPreInc{ast.Node{}, yyDollar[2].node} @@ -5617,7 +5610,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3349 + // line internal/php5/php5.y:3342 { yyVAL.node = &ast.ExprPostDec{ast.Node{}, yyDollar[1].node} @@ -5630,7 +5623,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3360 + // line internal/php5/php5.y:3353 { yyVAL.node = &ast.ExprPreDec{ast.Node{}, yyDollar[2].node} @@ -5642,7 +5635,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3370 + // line internal/php5/php5.y:3363 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5655,7 +5648,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3381 + // line internal/php5/php5.y:3374 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5668,7 +5661,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3392 + // line internal/php5/php5.y:3385 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5681,7 +5674,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3403 + // line internal/php5/php5.y:3396 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5694,7 +5687,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3414 + // line internal/php5/php5.y:3407 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5707,7 +5700,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3425 + // line internal/php5/php5.y:3418 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5720,7 +5713,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3436 + // line internal/php5/php5.y:3429 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5733,7 +5726,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3447 + // line internal/php5/php5.y:3440 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5746,7 +5739,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3458 + // line internal/php5/php5.y:3451 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5758,7 +5751,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3468 + // line internal/php5/php5.y:3461 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5771,7 +5764,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3479 + // line internal/php5/php5.y:3472 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5784,7 +5777,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3490 + // line internal/php5/php5.y:3483 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5797,7 +5790,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3501 + // line internal/php5/php5.y:3494 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5810,7 +5803,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3512 + // line internal/php5/php5.y:3505 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5823,7 +5816,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3523 + // line internal/php5/php5.y:3516 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5836,7 +5829,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3534 + // line internal/php5/php5.y:3527 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5849,7 +5842,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3545 + // line internal/php5/php5.y:3538 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5862,7 +5855,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3556 + // line internal/php5/php5.y:3549 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -5874,7 +5867,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3566 + // line internal/php5/php5.y:3559 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -5886,7 +5879,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3576 + // line internal/php5/php5.y:3569 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -5898,7 +5891,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3586 + // line internal/php5/php5.y:3579 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -5910,7 +5903,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3596 + // line internal/php5/php5.y:3589 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5923,7 +5916,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3607 + // line internal/php5/php5.y:3600 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5936,7 +5929,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3618 + // line internal/php5/php5.y:3611 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5949,7 +5942,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3629 + // line internal/php5/php5.y:3622 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5963,7 +5956,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3641 + // line internal/php5/php5.y:3634 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5976,7 +5969,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3652 + // line internal/php5/php5.y:3645 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5989,7 +5982,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3663 + // line internal/php5/php5.y:3656 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6002,7 +5995,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3674 + // line internal/php5/php5.y:3667 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6015,7 +6008,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3685 + // line internal/php5/php5.y:3678 { yyVAL.node = &ast.ExprInstanceOf{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6028,19 +6021,19 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3696 + // line internal/php5/php5.y:3689 { yyVAL.node = yyDollar[1].node } case 284: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3700 + // line internal/php5/php5.y:3693 { yyVAL.node = yyDollar[1].node } case 285: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3704 + // line internal/php5/php5.y:3697 { yyVAL.node = yyDollar[2].node @@ -6072,7 +6065,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:3734 + // line internal/php5/php5.y:3727 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -6086,7 +6079,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3746 + // line internal/php5/php5.y:3739 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -6100,13 +6093,13 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3758 + // line internal/php5/php5.y:3751 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3762 + // line internal/php5/php5.y:3755 { yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node} @@ -6119,7 +6112,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3773 + // line internal/php5/php5.y:3766 { yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node} @@ -6132,7 +6125,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3784 + // line internal/php5/php5.y:3777 { yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node} @@ -6145,7 +6138,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3795 + // line internal/php5/php5.y:3788 { yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node} @@ -6158,7 +6151,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3806 + // line internal/php5/php5.y:3799 { yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node} @@ -6171,7 +6164,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3817 + // line internal/php5/php5.y:3810 { yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node} @@ -6184,7 +6177,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3828 + // line internal/php5/php5.y:3821 { yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node} @@ -6197,7 +6190,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3839 + // line internal/php5/php5.y:3832 { yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[2].node} @@ -6217,7 +6210,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3857 + // line internal/php5/php5.y:3850 { yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node} @@ -6229,25 +6222,25 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3867 + // line internal/php5/php5.y:3860 { yyVAL.node = yyDollar[1].node } case 299: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3871 + // line internal/php5/php5.y:3864 { yyVAL.node = yyDollar[1].node } case 300: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3875 + // line internal/php5/php5.y:3868 { yyVAL.node = yyDollar[1].node } case 301: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3879 + // line internal/php5/php5.y:3872 { yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list} @@ -6259,7 +6252,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3889 + // line internal/php5/php5.y:3882 { yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} @@ -6271,7 +6264,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3899 + // line internal/php5/php5.y:3892 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil} @@ -6283,62 +6276,46 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php5/php5.y:3909 + // line internal/php5/php5.y:3902 { - yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[4].list, yyDollar[6].ClosureUse, nil, yyDollar[8].list} - - // save position - 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[3].token.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Function, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Ampersand, yyDollar[3].token.SkippedTokens) - } - yylex.(*Parser).setFreeFloating(yyVAL.node, token.ParameterList, yyDollar[5].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.LexicalVars, yyDollar[7].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[9].token.SkippedTokens) - - // normalize - if yyDollar[6].ClosureUse == nil { - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Params, yyVAL.node.GetNode().Tokens[token.LexicalVars]) - delete(yyVAL.node.GetNode().Tokens, token.LexicalVars) + yyVAL.node = &ast.ExprClosure{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[9].token), + }, + FunctionTkn: yyDollar[1].token, + AmpersandTkn: yyDollar[2].token, + OpenParenthesisTkn: yyDollar[3].token, + Params: yyDollar[4].list, + CloseParenthesisTkn: yyDollar[5].token, + ClosureUse: yyDollar[6].ClosureUse, + OpenCurlyBracketTkn: yyDollar[7].token, + Stmts: yyDollar[8].list, + CloseCurlyBracketTkn: yyDollar[9].token, } } case 305: yyDollar = yyS[yypt-10 : yypt+1] -// line internal/php5/php5.y:3933 + // line internal/php5/php5.y:3919 { - yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[3].token != nil, true, yyDollar[5].list, yyDollar[7].ClosureUse, nil, yyDollar[9].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[10].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Static, yyDollar[2].token.SkippedTokens) - if yyDollar[3].token == nil { - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Function, yyDollar[4].token.SkippedTokens) - } else { - 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.ParameterList, yyDollar[6].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.LexicalVars, yyDollar[8].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[10].token.SkippedTokens) - - // normalize - if yyDollar[7].ClosureUse == nil { - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Params, yyVAL.node.GetNode().Tokens[token.LexicalVars]) - delete(yyVAL.node.GetNode().Tokens, token.LexicalVars) + yyVAL.node = &ast.ExprClosure{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[10].token), + }, + StaticTkn: yyDollar[1].token, + FunctionTkn: yyDollar[2].token, + AmpersandTkn: yyDollar[3].token, + OpenParenthesisTkn: yyDollar[4].token, + Params: yyDollar[5].list, + CloseParenthesisTkn: yyDollar[6].token, + ClosureUse: yyDollar[7].ClosureUse, + OpenCurlyBracketTkn: yyDollar[8].token, + Stmts: yyDollar[9].list, + CloseCurlyBracketTkn: yyDollar[10].token, } } case 306: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3961 + // line internal/php5/php5.y:3940 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6350,7 +6327,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3971 + // line internal/php5/php5.y:3950 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6362,7 +6339,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3981 + // line internal/php5/php5.y:3960 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6375,7 +6352,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3992 + // line internal/php5/php5.y:3971 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6388,7 +6365,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4006 + // line internal/php5/php5.y:3985 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6401,7 +6378,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4017 + // line internal/php5/php5.y:3996 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6414,7 +6391,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4028 + // line internal/php5/php5.y:4007 { str := &ast.ScalarString{ Node: ast.Node{ @@ -6434,7 +6411,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4046 + // line internal/php5/php5.y:4025 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6447,7 +6424,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4060 + // line internal/php5/php5.y:4039 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -6461,7 +6438,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4072 + // line internal/php5/php5.y:4051 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -6474,19 +6451,19 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4086 + // line internal/php5/php5.y:4065 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4093 + // line internal/php5/php5.y:4072 { yyVAL.ClosureUse = nil } case 318: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4097 + // line internal/php5/php5.y:4076 { yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list} @@ -6500,7 +6477,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4112 + // line internal/php5/php5.y:4091 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6521,7 +6498,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4131 + // line internal/php5/php5.y:4110 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6545,7 +6522,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4153 + // line internal/php5/php5.y:4132 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6565,7 +6542,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4171 + // line internal/php5/php5.y:4150 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6588,7 +6565,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4195 + // line internal/php5/php5.y:4174 { name := &ast.NameName{ Node: ast.Node{ @@ -6603,7 +6580,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4208 + // line internal/php5/php5.y:4187 { name := &ast.NameRelative{ Node: ast.Node{ @@ -6620,7 +6597,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4223 + // line internal/php5/php5.y:4202 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -6636,7 +6613,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4237 + // line internal/php5/php5.y:4216 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6649,7 +6626,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4248 + // line internal/php5/php5.y:4227 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6662,7 +6639,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4259 + // line internal/php5/php5.y:4238 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6675,7 +6652,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4270 + // line internal/php5/php5.y:4249 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6688,7 +6665,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4281 + // line internal/php5/php5.y:4260 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6700,7 +6677,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4294 + // line internal/php5/php5.y:4273 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -6712,7 +6689,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4304 + // line internal/php5/php5.y:4283 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -6723,7 +6700,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4313 + // line internal/php5/php5.y:4292 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -6736,7 +6713,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4324 + // line internal/php5/php5.y:4303 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -6748,7 +6725,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4337 + // line internal/php5/php5.y:4316 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -6759,7 +6736,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4346 + // line internal/php5/php5.y:4325 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -6772,7 +6749,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4357 + // line internal/php5/php5.y:4336 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -6784,19 +6761,19 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4370 + // line internal/php5/php5.y:4349 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4374 + // line internal/php5/php5.y:4353 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4381 + // line internal/php5/php5.y:4360 { yyVAL.node = yyDollar[1].node @@ -6837,25 +6814,25 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4420 + // line internal/php5/php5.y:4399 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4428 + // line internal/php5/php5.y:4407 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4432 + // line internal/php5/php5.y:4411 { yyVAL.list = []ast.Vertex{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4440 + // line internal/php5/php5.y:4419 { yyVAL.list = yyDollar[2].list @@ -6864,13 +6841,13 @@ yydefault: } case 345: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4450 + // line internal/php5/php5.y:4429 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4454 + // line internal/php5/php5.y:4433 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6886,19 +6863,19 @@ yydefault: } case 347: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4468 + // line internal/php5/php5.y:4447 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4475 + // line internal/php5/php5.y:4454 { yyVAL.list = []ast.Vertex{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4479 + // line internal/php5/php5.y:4458 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6912,25 +6889,25 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4491 + // line internal/php5/php5.y:4470 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4498 + // line internal/php5/php5.y:4477 { yyVAL.node = nil } case 352: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4502 + // line internal/php5/php5.y:4481 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4509 + // line internal/php5/php5.y:4488 { yyVAL.node = &ast.ScalarLnumber{ Node: ast.Node{ @@ -6942,7 +6919,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4519 + // line internal/php5/php5.y:4498 { yyVAL.node = &ast.ScalarDnumber{ Node: ast.Node{ @@ -6954,7 +6931,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4529 + // line internal/php5/php5.y:4508 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -6966,7 +6943,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4539 + // line internal/php5/php5.y:4518 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6978,7 +6955,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4549 + // line internal/php5/php5.y:4528 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6990,7 +6967,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4559 + // line internal/php5/php5.y:4538 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7002,7 +6979,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4569 + // line internal/php5/php5.y:4548 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7014,7 +6991,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4579 + // line internal/php5/php5.y:4558 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7026,7 +7003,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4589 + // line internal/php5/php5.y:4568 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7038,7 +7015,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4599 + // line internal/php5/php5.y:4578 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7050,7 +7027,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4609 + // line internal/php5/php5.y:4588 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7071,7 +7048,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4628 + // line internal/php5/php5.y:4607 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7083,7 +7060,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4641 + // line internal/php5/php5.y:4620 { target := &ast.Identifier{ Node: ast.Node{ @@ -7103,25 +7080,25 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4662 + // line internal/php5/php5.y:4641 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4669 + // line internal/php5/php5.y:4648 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4673 + // line internal/php5/php5.y:4652 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4677 + // line internal/php5/php5.y:4656 { name := &ast.NameName{ Node: ast.Node{ @@ -7136,7 +7113,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4690 + // line internal/php5/php5.y:4669 { name := &ast.NameRelative{ Node: ast.Node{ @@ -7153,7 +7130,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4705 + // line internal/php5/php5.y:4684 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -7169,7 +7146,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4719 + // line internal/php5/php5.y:4698 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -7183,7 +7160,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4731 + // line internal/php5/php5.y:4710 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -7196,13 +7173,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4742 + // line internal/php5/php5.y:4721 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4746 + // line internal/php5/php5.y:4725 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7214,13 +7191,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4756 + // line internal/php5/php5.y:4735 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4763 + // line internal/php5/php5.y:4742 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7233,7 +7210,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4774 + // line internal/php5/php5.y:4753 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7246,7 +7223,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4785 + // line internal/php5/php5.y:4764 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7259,7 +7236,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4796 + // line internal/php5/php5.y:4775 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7272,7 +7249,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4807 + // line internal/php5/php5.y:4786 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7285,7 +7262,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4818 + // line internal/php5/php5.y:4797 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7298,7 +7275,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4829 + // line internal/php5/php5.y:4808 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7311,7 +7288,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4840 + // line internal/php5/php5.y:4819 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -7323,7 +7300,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4850 + // line internal/php5/php5.y:4829 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -7335,7 +7312,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4860 + // line internal/php5/php5.y:4839 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7348,7 +7325,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4871 + // line internal/php5/php5.y:4850 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7361,7 +7338,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4882 + // line internal/php5/php5.y:4861 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7374,7 +7351,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4893 + // line internal/php5/php5.y:4872 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7387,7 +7364,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4904 + // line internal/php5/php5.y:4883 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7400,7 +7377,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4915 + // line internal/php5/php5.y:4894 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7413,7 +7390,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4926 + // line internal/php5/php5.y:4905 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7426,7 +7403,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4937 + // line internal/php5/php5.y:4916 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7439,7 +7416,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4948 + // line internal/php5/php5.y:4927 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7452,7 +7429,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4959 + // line internal/php5/php5.y:4938 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7465,7 +7442,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4970 + // line internal/php5/php5.y:4949 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7478,7 +7455,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4981 + // line internal/php5/php5.y:4960 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7491,7 +7468,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4992 + // line internal/php5/php5.y:4971 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7504,7 +7481,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5003 + // line internal/php5/php5.y:4982 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7517,7 +7494,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5014 + // line internal/php5/php5.y:4993 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7531,7 +7508,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5026 + // line internal/php5/php5.y:5005 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7544,7 +7521,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5037 + // line internal/php5/php5.y:5016 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7557,7 +7534,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5048 + // line internal/php5/php5.y:5027 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7570,7 +7547,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5059 + // line internal/php5/php5.y:5038 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7583,7 +7560,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5070 + // line internal/php5/php5.y:5049 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -7597,7 +7574,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5082 + // line internal/php5/php5.y:5061 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -7611,7 +7588,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5094 + // line internal/php5/php5.y:5073 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -7623,7 +7600,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5104 + // line internal/php5/php5.y:5083 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -7635,7 +7612,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5114 + // line internal/php5/php5.y:5093 { yyVAL.node = yyDollar[2].node @@ -7645,13 +7622,13 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5125 + // line internal/php5/php5.y:5104 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5129 + // line internal/php5/php5.y:5108 { name := &ast.NameName{ Node: ast.Node{ @@ -7666,7 +7643,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5142 + // line internal/php5/php5.y:5121 { name := &ast.NameRelative{ Node: ast.Node{ @@ -7683,7 +7660,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5157 + // line internal/php5/php5.y:5136 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -7699,7 +7676,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5174 + // line internal/php5/php5.y:5153 { name := &ast.Identifier{ Node: ast.Node{ @@ -7718,25 +7695,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5191 + // line internal/php5/php5.y:5170 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5195 + // line internal/php5/php5.y:5174 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5199 + // line internal/php5/php5.y:5178 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5203 + // line internal/php5/php5.y:5182 { yyVAL.node = &ast.ScalarEncapsed{ Node: ast.Node{ @@ -7749,7 +7726,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5214 + // line internal/php5/php5.y:5193 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7762,7 +7739,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5225 + // line internal/php5/php5.y:5204 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7774,13 +7751,13 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5238 + // line internal/php5/php5.y:5217 { yyVAL.list = nil } case 422: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5242 + // line internal/php5/php5.y:5221 { yyVAL.list = yyDollar[1].list @@ -7791,19 +7768,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5254 + // line internal/php5/php5.y:5233 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5258 + // line internal/php5/php5.y:5237 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5265 + // line internal/php5/php5.y:5244 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -7818,7 +7795,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5278 + // line internal/php5/php5.y:5257 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -7832,7 +7809,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5290 + // line internal/php5/php5.y:5269 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -7846,7 +7823,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5302 + // line internal/php5/php5.y:5281 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -7859,19 +7836,19 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5316 + // line internal/php5/php5.y:5295 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5320 + // line internal/php5/php5.y:5299 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5327 + // line internal/php5/php5.y:5306 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -7888,7 +7865,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5342 + // line internal/php5/php5.y:5321 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -7905,25 +7882,25 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5361 + // line internal/php5/php5.y:5340 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5369 + // line internal/php5/php5.y:5348 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5376 + // line internal/php5/php5.y:5355 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5383 + // line internal/php5/php5.y:5362 { yyVAL.node = yyDollar[1].node @@ -7981,25 +7958,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5439 + // line internal/php5/php5.y:5418 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5446 + // line internal/php5/php5.y:5425 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5450 + // line internal/php5/php5.y:5429 { yyVAL.list = []ast.Vertex{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5458 + // line internal/php5/php5.y:5437 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*ast.ExprMethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*ast.ExprPropertyFetch).Property @@ -8013,7 +7990,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5473 + // line internal/php5/php5.y:5452 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -8027,7 +8004,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5485 + // line internal/php5/php5.y:5464 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = []ast.Vertex{yyDollar[1].node, fetch} @@ -8041,7 +8018,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5500 + // line internal/php5/php5.y:5479 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, nil, nil, yyDollar[1].node.(*ast.ArgumentList)} @@ -8050,31 +8027,31 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5510 + // line internal/php5/php5.y:5489 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5514 + // line internal/php5/php5.y:5493 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5518 + // line internal/php5/php5.y:5497 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5525 + // line internal/php5/php5.y:5504 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5529 + // line internal/php5/php5.y:5508 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -8086,7 +8063,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5542 + // line internal/php5/php5.y:5521 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8099,7 +8076,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5553 + // line internal/php5/php5.y:5532 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8112,13 +8089,13 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5567 + // line internal/php5/php5.y:5546 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5574 + // line internal/php5/php5.y:5553 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8131,7 +8108,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5585 + // line internal/php5/php5.y:5564 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8144,31 +8121,31 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5599 + // line internal/php5/php5.y:5578 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5603 + // line internal/php5/php5.y:5582 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5607 + // line internal/php5/php5.y:5586 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5615 + // line internal/php5/php5.y:5594 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5619 + // line internal/php5/php5.y:5598 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -8180,13 +8157,13 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5629 + // line internal/php5/php5.y:5608 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5636 + // line internal/php5/php5.y:5615 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8199,7 +8176,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5647 + // line internal/php5/php5.y:5626 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8212,13 +8189,13 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5658 + // line internal/php5/php5.y:5637 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5666 + // line internal/php5/php5.y:5645 { name := &ast.Identifier{ Node: ast.Node{ @@ -8237,7 +8214,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5683 + // line internal/php5/php5.y:5662 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -8251,25 +8228,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5698 + // line internal/php5/php5.y:5677 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5702 + // line internal/php5/php5.y:5681 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5710 + // line internal/php5/php5.y:5689 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5714 + // line internal/php5/php5.y:5693 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8279,7 +8256,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5725 + // line internal/php5/php5.y:5704 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -8293,7 +8270,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5737 + // line internal/php5/php5.y:5716 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -8307,7 +8284,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5749 + // line internal/php5/php5.y:5728 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8317,7 +8294,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5760 + // line internal/php5/php5.y:5739 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -8329,7 +8306,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5770 + // line internal/php5/php5.y:5749 { yyVAL.node = yyDollar[2].node @@ -8342,7 +8319,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5784 + // line internal/php5/php5.y:5763 { n := &ast.ExprVariable{ast.Node{}, nil} yyVAL.simpleIndirectReference = simpleIndirectReference{[]*ast.ExprVariable{n}, n} @@ -8355,7 +8332,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5795 + // line internal/php5/php5.y:5774 { n := &ast.ExprVariable{ast.Node{}, nil} @@ -8372,7 +8349,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5813 + // line internal/php5/php5.y:5792 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}} @@ -8385,7 +8362,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5824 + // line internal/php5/php5.y:5803 { if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil { yyVAL.list = []ast.Vertex{} @@ -8395,7 +8372,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5836 + // line internal/php5/php5.y:5815 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} @@ -8407,7 +8384,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5846 + // line internal/php5/php5.y:5825 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, listNode} @@ -8423,19 +8400,19 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5860 + // line internal/php5/php5.y:5839 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} } case 481: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5868 + // line internal/php5/php5.y:5847 { yyVAL.list = []ast.Vertex{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5872 + // line internal/php5/php5.y:5851 { yyVAL.list = yyDollar[1].list @@ -8450,7 +8427,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5888 + // line internal/php5/php5.y:5867 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8465,7 +8442,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5901 + // line internal/php5/php5.y:5880 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8479,7 +8456,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5913 + // line internal/php5/php5.y:5892 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -8493,7 +8470,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5925 + // line internal/php5/php5.y:5904 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -8506,7 +8483,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:5936 + // line internal/php5/php5.y:5915 { reference := &ast.ExprReference{ast.Node{}, yyDollar[6].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, reference} @@ -8524,7 +8501,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5952 + // line internal/php5/php5.y:5931 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -8540,7 +8517,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5966 + // line internal/php5/php5.y:5945 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference} @@ -8557,7 +8534,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5981 + // line internal/php5/php5.y:5960 { reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -8572,13 +8549,13 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5997 + // line internal/php5/php5.y:5976 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6001 + // line internal/php5/php5.y:5980 { yyVAL.list = append( yyDollar[1].list, @@ -8593,13 +8570,13 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6014 + // line internal/php5/php5.y:5993 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6018 + // line internal/php5/php5.y:5997 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -8614,7 +8591,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6034 + // line internal/php5/php5.y:6013 { name := &ast.Identifier{ Node: ast.Node{ @@ -8633,7 +8610,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6051 + // line internal/php5/php5.y:6030 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -8655,7 +8632,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6071 + // line internal/php5/php5.y:6050 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -8683,7 +8660,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6097 + // line internal/php5/php5.y:6076 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -8698,7 +8675,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6110 + // line internal/php5/php5.y:6089 { name := &ast.Identifier{ Node: ast.Node{ @@ -8720,7 +8697,7 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:6130 + // line internal/php5/php5.y:6109 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -8744,7 +8721,7 @@ yydefault: } case 501: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6152 + // line internal/php5/php5.y:6131 { yyVAL.node = yyDollar[2].node @@ -8754,7 +8731,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6163 + // line internal/php5/php5.y:6142 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -8766,7 +8743,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6173 + // line internal/php5/php5.y:6152 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -8795,7 +8772,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6200 + // line internal/php5/php5.y:6179 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -8814,7 +8791,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6220 + // line internal/php5/php5.y:6199 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -8828,7 +8805,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6232 + // line internal/php5/php5.y:6211 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -8850,7 +8827,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6252 + // line internal/php5/php5.y:6231 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -8872,7 +8849,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6272 + // line internal/php5/php5.y:6251 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -8884,7 +8861,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6282 + // line internal/php5/php5.y:6261 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -8896,7 +8873,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6292 + // line internal/php5/php5.y:6271 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -8918,7 +8895,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6312 + // line internal/php5/php5.y:6291 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -8930,7 +8907,7 @@ yydefault: } case 512: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6322 + // line internal/php5/php5.y:6301 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -8942,13 +8919,13 @@ yydefault: } case 513: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6335 + // line internal/php5/php5.y:6314 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 514: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6339 + // line internal/php5/php5.y:6318 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -8957,19 +8934,19 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6349 + // line internal/php5/php5.y:6328 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6353 + // line internal/php5/php5.y:6332 { yyVAL.node = yyDollar[1].node } case 517: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6360 + // line internal/php5/php5.y:6339 { target := &ast.Identifier{ Node: ast.Node{ @@ -8989,7 +8966,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6378 + // line internal/php5/php5.y:6357 { target := &ast.Identifier{ Node: ast.Node{ @@ -9009,7 +8986,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6399 + // line internal/php5/php5.y:6378 { target := &ast.Identifier{ Node: ast.Node{ @@ -9029,7 +9006,7 @@ yydefault: } case 520: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6420 + // line internal/php5/php5.y:6399 { target := &ast.Identifier{ Node: ast.Node{ diff --git a/internal/php5/php5.y b/internal/php5/php5.y index e5d4558..a3d1ea4 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -1378,26 +1378,26 @@ is_variadic: unticked_function_declaration_statement: function is_reference T_STRING '(' parameter_list ')' '{' inner_statement_list '}' { - name := &ast.Identifier{ + $$ = &ast.StmtFunction{ Node: ast.Node{ - Position: position.NewTokenPosition($3), + Position: position.NewTokensPosition($1, $9), }, - IdentifierTkn: $3, - Value: $3.Value, + FunctionTkn: $1, + AmpersandTkn: $2, + FunctionName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + }, + OpenParenthesisTkn: $4, + Params: $5, + CloseParenthesisTkn: $6, + OpenCurlyBracketTkn: $7, + Stmts: $8, + CloseCurlyBracketTkn: $9, } - $$ = &ast.StmtFunction{ast.Node{}, $2 != nil, name, $5, nil, $8} - - // save position - $$.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($$, token.ParamList, $6.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Params, $7.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $9.SkippedTokens) } ; @@ -2481,37 +2481,30 @@ class_statement: } | method_modifiers function is_reference T_STRING '(' parameter_list ')' method_body { - 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 - if $1 == nil { - $$.GetNode().Position = position.NewTokenNodePosition($2, $8) - } else { + pos := position.NewTokenNodePosition($2, $8) + if $1 != nil { $$.GetNode().Position = position.NewNodeListNodePosition($1, $8) } - // save comments - if len($1) > 0 { - yylex.(*Parser).MoveFreeFloating($1[0], $$) - yylex.(*Parser).setFreeFloating($$, token.ModifierList, $2.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating($$, token.Start, $2.SkippedTokens) + $$ = &ast.StmtClassMethod{ + Node: ast.Node{ + Position: pos, + }, + Modifiers: $1, + FunctionTkn: $2, + AmpersandTkn: $3, + MethodName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + }, + OpenParenthesisTkn: $5, + Params: $6, + CloseParenthesisTkn: $7, + Stmt: $8, } - if $3 == nil { - yylex.(*Parser).setFreeFloating($$, token.Function, $4.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating($$, token.Function, $3.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Ampersand, $4.SkippedTokens) - } - yylex.(*Parser).setFreeFloating($$, token.Name, $5.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.ParameterList, $7.SkippedTokens) } ; @@ -3907,51 +3900,37 @@ expr_without_variable: } | function is_reference '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' { - $$ = &ast.ExprClosure{ast.Node{}, $2 != nil, false, $4, $6, nil, $8} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $9) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - if $2 == nil { - yylex.(*Parser).setFreeFloating($$, token.Function, $3.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating($$, token.Function, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Ampersand, $3.SkippedTokens) - } - yylex.(*Parser).setFreeFloating($$, token.ParameterList, $5.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.LexicalVars, $7.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $9.SkippedTokens) - - // normalize - if $6 == nil { - yylex.(*Parser).setFreeFloatingTokens($$, token.Params, $$.GetNode().Tokens[token.LexicalVars]); delete($$.GetNode().Tokens, token.LexicalVars) + $$ = &ast.ExprClosure{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $9), + }, + FunctionTkn: $1, + AmpersandTkn: $2, + OpenParenthesisTkn: $3, + Params: $4, + CloseParenthesisTkn: $5, + ClosureUse: $6, + OpenCurlyBracketTkn: $7, + Stmts: $8, + CloseCurlyBracketTkn: $9, } } | T_STATIC function is_reference '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' { - $$ = &ast.ExprClosure{ast.Node{}, $3 != nil, true, $5, $7, nil, $9} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $10) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Static, $2.SkippedTokens) - if $3 == nil { - yylex.(*Parser).setFreeFloating($$, token.Function, $4.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating($$, token.Function, $3.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Ampersand, $4.SkippedTokens) - } - yylex.(*Parser).setFreeFloating($$, token.ParameterList, $6.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.LexicalVars, $8.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $10.SkippedTokens) - - // normalize - if $7 == nil { - yylex.(*Parser).setFreeFloatingTokens($$, token.Params, $$.GetNode().Tokens[token.LexicalVars]); delete($$.GetNode().Tokens, token.LexicalVars) + $$ = &ast.ExprClosure{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $10), + }, + StaticTkn: $1, + FunctionTkn: $2, + AmpersandTkn: $3, + OpenParenthesisTkn: $4, + Params: $5, + CloseParenthesisTkn: $6, + ClosureUse: $7, + OpenCurlyBracketTkn: $8, + Stmts: $9, + CloseCurlyBracketTkn: $10, } } ; diff --git a/internal/php7/php7.go b/internal/php7/php7.go index 0a0e9af..5d03f1b 100644 --- a/internal/php7/php7.go +++ b/internal/php7/php7.go @@ -344,7 +344,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php7/php7.y:4996 +// line internal/php7/php7.y:4969 // line yacctab:1 var yyExca = [...]int{ @@ -3576,60 +3576,56 @@ yydefault: yyDollar = yyS[yypt-11 : yypt+1] // line internal/php7/php7.y:1216 { - name := &ast.Identifier{ + yyVAL.node = &ast.StmtFunction{ Node: ast.Node{ - Position: position.NewTokenPosition(yyDollar[3].token), + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[11].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 - 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(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) - - // normalize - if yyDollar[8].node == nil { - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Params, yyVAL.node.GetNode().Tokens[token.ReturnType]) - delete(yyVAL.node.GetNode().Tokens, token.ReturnType) + FunctionTkn: yyDollar[1].token, + AmpersandTkn: yyDollar[2].token, + FunctionName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + }, + OpenParenthesisTkn: yyDollar[5].token, + Params: yyDollar[6].list, + CloseParenthesisTkn: yyDollar[7].token, + ColonTkn: yyDollar[8].node.(*ast.ReturnType).ColonTkn, + ReturnType: yyDollar[8].node.(*ast.ReturnType).Type, + OpenCurlyBracketTkn: yyDollar[9].token, + Stmts: yyDollar[10].list, + CloseCurlyBracketTkn: yyDollar[11].token, } } case 166: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1248 + // line internal/php7/php7.y:1244 { yyVAL.token = nil } case 167: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1252 + // line internal/php7/php7.y:1248 { yyVAL.token = yyDollar[1].token } case 168: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1259 + // line internal/php7/php7.y:1255 { yyVAL.token = nil } case 169: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1263 + // line internal/php7/php7.y:1259 { yyVAL.token = yyDollar[1].token } case 170: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:1270 + // line internal/php7/php7.y:1266 { yyVAL.node = &ast.StmtClass{ Node: ast.Node{ @@ -3653,7 +3649,7 @@ yydefault: } case 171: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php7/php7.y:1292 + // line internal/php7/php7.y:1288 { yyVAL.node = &ast.StmtClass{ Node: ast.Node{ @@ -3676,19 +3672,19 @@ yydefault: } case 172: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1316 + // line internal/php7/php7.y:1312 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 173: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1320 + // line internal/php7/php7.y:1316 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 174: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1327 + // line internal/php7/php7.y:1323 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -3700,7 +3696,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1337 + // line internal/php7/php7.y:1333 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -3712,7 +3708,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1350 + // line internal/php7/php7.y:1346 { yyVAL.node = &ast.StmtTrait{ Node: ast.Node{ @@ -3733,7 +3729,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:1372 + // line internal/php7/php7.y:1368 { name := &ast.Identifier{ Node: ast.Node{ @@ -3754,13 +3750,13 @@ yydefault: } case 178: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1394 + // line internal/php7/php7.y:1390 { yyVAL.node = nil } case 179: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1398 + // line internal/php7/php7.y:1394 { yyVAL.node = &ast.StmtClassExtends{ Node: ast.Node{ @@ -3772,13 +3768,13 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1411 + // line internal/php7/php7.y:1407 { yyVAL.node = nil } case 181: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1415 + // line internal/php7/php7.y:1411 { yyVAL.node = &ast.StmtInterfaceExtends{ Node: ast.Node{ @@ -3791,13 +3787,13 @@ yydefault: } case 182: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1429 + // line internal/php7/php7.y:1425 { yyVAL.node = nil } case 183: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1433 + // line internal/php7/php7.y:1429 { yyVAL.node = &ast.StmtClassImplements{ Node: ast.Node{ @@ -3810,13 +3806,13 @@ yydefault: } case 184: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1447 + // line internal/php7/php7.y:1443 { yyVAL.node = yyDollar[1].node } case 185: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1451 + // line internal/php7/php7.y:1447 { yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node} @@ -3828,7 +3824,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1461 + // line internal/php7/php7.y:1457 { yyVAL.node = &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -3842,7 +3838,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1473 + // line internal/php7/php7.y:1469 { yyVAL.node = &ast.ExprShortList{ast.Node{}, yyDollar[2].list} @@ -3855,7 +3851,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1487 + // line internal/php7/php7.y:1483 { yyVAL.node = &ast.StmtFor{ Node: ast.Node{ @@ -3866,7 +3862,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1496 + // line internal/php7/php7.y:1492 { yyVAL.node = &ast.StmtFor{ Node: ast.Node{ @@ -3886,7 +3882,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1517 + // line internal/php7/php7.y:1513 { yyVAL.node = &ast.StmtForeach{ Node: ast.Node{ @@ -3897,7 +3893,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1526 + // line internal/php7/php7.y:1522 { yyVAL.node = &ast.StmtForeach{ Node: ast.Node{ @@ -3917,7 +3913,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1547 + // line internal/php7/php7.y:1543 { yyVAL.node = &ast.StmtDeclare{ Node: ast.Node{ @@ -3928,7 +3924,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1556 + // line internal/php7/php7.y:1552 { yyVAL.node = &ast.StmtDeclare{ Node: ast.Node{ @@ -3948,7 +3944,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1577 + // line internal/php7/php7.y:1573 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3961,7 +3957,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1588 + // line internal/php7/php7.y:1584 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3975,7 +3971,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1600 + // line internal/php7/php7.y:1596 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -3990,7 +3986,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1613 + // line internal/php7/php7.y:1609 { yyVAL.node = &ast.StmtSwitch{ Node: ast.Node{ @@ -4006,13 +4002,13 @@ yydefault: } case 198: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1630 + // line internal/php7/php7.y:1626 { yyVAL.list = nil } case 199: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1634 + // line internal/php7/php7.y:1630 { yyVAL.list = append(yyDollar[1].list, &ast.StmtCase{ Node: ast.Node{ @@ -4026,7 +4022,7 @@ yydefault: } case 200: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1646 + // line internal/php7/php7.y:1642 { yyVAL.list = append(yyDollar[1].list, &ast.StmtDefault{ Node: ast.Node{ @@ -4039,19 +4035,19 @@ yydefault: } case 201: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1660 + // line internal/php7/php7.y:1656 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1664 + // line internal/php7/php7.y:1660 { yyVAL.token = yyDollar[1].token } case 203: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1671 + // line internal/php7/php7.y:1667 { yyVAL.node = &ast.StmtWhile{ Node: ast.Node{ @@ -4062,7 +4058,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1680 + // line internal/php7/php7.y:1676 { yyVAL.node = &ast.StmtWhile{ Node: ast.Node{ @@ -4082,7 +4078,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1701 + // line internal/php7/php7.y:1697 { yyVAL.node = &ast.StmtIf{ Node: ast.Node{ @@ -4097,7 +4093,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1714 + // line internal/php7/php7.y:1710 { yyDollar[1].node.(*ast.StmtIf).ElseIf = append(yyDollar[1].node.(*ast.StmtIf).ElseIf, &ast.StmtElseIf{ Node: ast.Node{ @@ -4116,13 +4112,13 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1734 + // line internal/php7/php7.y:1730 { yyVAL.node = yyDollar[1].node } case 208: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1738 + // line internal/php7/php7.y:1734 { yyDollar[1].node.(*ast.StmtIf).Else = &ast.StmtElse{ Node: ast.Node{ @@ -4138,7 +4134,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1755 + // line internal/php7/php7.y:1751 { yyVAL.node = &ast.StmtIf{ Node: ast.Node{ @@ -4160,7 +4156,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:1775 + // line internal/php7/php7.y:1771 { yyDollar[1].node.(*ast.StmtIf).ElseIf = append(yyDollar[1].node.(*ast.StmtIf).ElseIf, &ast.StmtElseIf{ Node: ast.Node{ @@ -4184,7 +4180,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1800 + // line internal/php7/php7.y:1796 { yyDollar[1].node.(*ast.StmtIf).EndIfTkn = yyDollar[2].token yyDollar[1].node.(*ast.StmtIf).SemiColonTkn = yyDollar[3].token @@ -4194,7 +4190,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1808 + // line internal/php7/php7.y:1804 { yyDollar[1].node.(*ast.StmtIf).Else = &ast.StmtElse{ Node: ast.Node{ @@ -4218,25 +4214,25 @@ yydefault: } case 213: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1833 + // line internal/php7/php7.y:1829 { yyVAL.list = yyDollar[1].list } case 214: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1837 + // line internal/php7/php7.y:1833 { yyVAL.list = nil } case 215: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1844 + // line internal/php7/php7.y:1840 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 216: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1848 + // line internal/php7/php7.y:1844 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4245,7 +4241,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1858 + // line internal/php7/php7.y:1854 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -4299,7 +4295,7 @@ yydefault: } case 218: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1910 + // line internal/php7/php7.y:1906 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -4356,25 +4352,25 @@ yydefault: } case 219: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1968 + // line internal/php7/php7.y:1964 { yyVAL.node = nil } case 220: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1972 + // line internal/php7/php7.y:1968 { yyVAL.node = yyDollar[1].node } case 221: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1979 + // line internal/php7/php7.y:1975 { yyVAL.node = yyDollar[1].node } case 222: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1983 + // line internal/php7/php7.y:1979 { yyVAL.node = &ast.Nullable{ Node: ast.Node{ @@ -4386,7 +4382,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1996 + // line internal/php7/php7.y:1992 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -4398,7 +4394,7 @@ yydefault: } case 224: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2006 + // line internal/php7/php7.y:2002 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -4410,28 +4406,28 @@ yydefault: } case 225: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2016 + // line internal/php7/php7.y:2012 { yyVAL.node = yyDollar[1].node } case 226: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2023 + // line internal/php7/php7.y:2019 { yyVAL.node = nil } case 227: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2027 + // line internal/php7/php7.y:2023 { - yyVAL.node = yyDollar[2].node - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, append(yyDollar[1].token.SkippedTokens, yyVAL.node.GetNode().Tokens[token.Start]...)) + yyVAL.node = &ast.ReturnType{ + ColonTkn: yyDollar[1].token, + Type: yyDollar[2].node, + } } case 228: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2037 + // line internal/php7/php7.y:2033 { yyVAL.node = &ast.ArgumentList{ Node: ast.Node{ @@ -4443,7 +4439,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2047 + // line internal/php7/php7.y:2043 { argumentList := yyDollar[2].node.(*ast.ArgumentList) argumentList.Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) @@ -4455,7 +4451,7 @@ yydefault: } case 230: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2060 + // line internal/php7/php7.y:2056 { yyVAL.node = &ast.ArgumentList{ Arguments: []ast.Vertex{yyDollar[1].node}, @@ -4463,7 +4459,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2066 + // line internal/php7/php7.y:2062 { yyDollar[1].node.(*ast.ArgumentList).SeparatorTkns = append(yyDollar[1].node.(*ast.ArgumentList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ArgumentList).Arguments = append(yyDollar[1].node.(*ast.ArgumentList).Arguments, yyDollar[3].node) @@ -4472,7 +4468,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2076 + // line internal/php7/php7.y:2072 { yyVAL.node = &ast.Argument{ Node: ast.Node{ @@ -4483,7 +4479,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2085 + // line internal/php7/php7.y:2081 { yyVAL.node = &ast.Argument{ Node: ast.Node{ @@ -4495,7 +4491,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2098 + // line internal/php7/php7.y:2094 { 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) @@ -4504,7 +4500,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2105 + // line internal/php7/php7.y:2101 { yyVAL.node = &ast.StmtGlobal{ Vars: []ast.Vertex{yyDollar[1].node}, @@ -4512,13 +4508,13 @@ yydefault: } case 236: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2114 + // line internal/php7/php7.y:2110 { yyVAL.node = yyDollar[1].node } case 237: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2121 + // line internal/php7/php7.y:2117 { 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) @@ -4527,7 +4523,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2128 + // line internal/php7/php7.y:2124 { yyVAL.node = &ast.StmtStatic{ Vars: []ast.Vertex{yyDollar[1].node}, @@ -4535,7 +4531,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2137 + // line internal/php7/php7.y:2133 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -4561,7 +4557,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2161 + // line internal/php7/php7.y:2157 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -4588,19 +4584,19 @@ yydefault: } case 241: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2189 + // line internal/php7/php7.y:2185 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 242: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2193 + // line internal/php7/php7.y:2189 { yyVAL.list = []ast.Vertex{} } case 243: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2200 + // line internal/php7/php7.y:2196 { yyVAL.node = &ast.StmtPropertyList{ast.Node{}, yyDollar[1].list, yyDollar[2].node, yyDollar[3].list} @@ -4614,7 +4610,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2212 + // line internal/php7/php7.y:2208 { yyVAL.node = &ast.StmtClassConstList{ Node: ast.Node{ @@ -4628,7 +4624,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2224 + // line internal/php7/php7.y:2220 { yyVAL.node = &ast.StmtTraitUse{ Node: ast.Node{ @@ -4642,42 +4638,38 @@ yydefault: } case 246: yyDollar = yyS[yypt-10 : yypt+1] - // line internal/php7/php7.y:2236 + // line internal/php7/php7.y:2232 { - 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 - if yyDollar[1].list == nil { - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[2].token, yyDollar[10].node) - } else { + pos := position.NewTokenNodePosition(yyDollar[2].token, yyDollar[10].node) + if yyDollar[1].list != nil { yyVAL.node.GetNode().Position = position.NewNodeListNodePosition(yyDollar[1].list, yyDollar[10].node) } - // save comments - if len(yyDollar[1].list) > 0 { - yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.ModifierList, yyDollar[2].token.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.StmtClassMethod{ + Node: ast.Node{ + Position: pos, + }, + Modifiers: yyDollar[1].list, + FunctionTkn: yyDollar[2].token, + AmpersandTkn: yyDollar[3].token, + MethodName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, + }, + OpenParenthesisTkn: yyDollar[6].token, + Params: yyDollar[7].list, + CloseParenthesisTkn: yyDollar[8].token, + ColonTkn: yyDollar[9].node.(*ast.ReturnType).ColonTkn, + ReturnType: yyDollar[9].node.(*ast.ReturnType).Type, + Stmt: yyDollar[10].node, } - if yyDollar[3].token == nil { - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Function, yyDollar[4].token.SkippedTokens) - } else { - 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.ParameterList, yyDollar[8].token.SkippedTokens) } case 247: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2272 + // line internal/php7/php7.y:2264 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -4685,7 +4677,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2278 + // line internal/php7/php7.y:2270 { 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) @@ -4694,7 +4686,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2288 + // line internal/php7/php7.y:2280 { yyVAL.node = &ast.StmtNop{ Node: ast.Node{ @@ -4705,7 +4697,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2297 + // line internal/php7/php7.y:2289 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, nil} @@ -4717,7 +4709,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2307 + // line internal/php7/php7.y:2299 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, yyDollar[2].list} @@ -4729,19 +4721,19 @@ yydefault: } case 252: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2320 + // line internal/php7/php7.y:2312 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 253: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2324 + // line internal/php7/php7.y:2316 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 254: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2331 + // line internal/php7/php7.y:2323 { yyVAL.node = yyDollar[1].node @@ -4751,7 +4743,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2339 + // line internal/php7/php7.y:2331 { yyVAL.node = yyDollar[1].node @@ -4761,7 +4753,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2350 + // line internal/php7/php7.y:2342 { yyVAL.node = &ast.StmtTraitUsePrecedence{ Node: ast.Node{ @@ -4775,7 +4767,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2365 + // line internal/php7/php7.y:2357 { alias := &ast.Identifier{ Node: ast.Node{ @@ -4795,7 +4787,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2383 + // line internal/php7/php7.y:2375 { alias := &ast.Identifier{ Node: ast.Node{ @@ -4815,7 +4807,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2401 + // line internal/php7/php7.y:2393 { alias := &ast.Identifier{ Node: ast.Node{ @@ -4835,7 +4827,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2419 + // line internal/php7/php7.y:2411 { yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, nil} @@ -4848,7 +4840,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2433 + // line internal/php7/php7.y:2425 { name := &ast.Identifier{ Node: ast.Node{ @@ -4867,13 +4859,13 @@ yydefault: } case 262: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2450 + // line internal/php7/php7.y:2442 { yyVAL.node = yyDollar[1].node } case 263: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2457 + // line internal/php7/php7.y:2449 { target := &ast.Identifier{ Node: ast.Node{ @@ -4893,7 +4885,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2478 + // line internal/php7/php7.y:2470 { yyVAL.node = &ast.StmtNop{ Node: ast.Node{ @@ -4904,7 +4896,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2487 + // line internal/php7/php7.y:2479 { yyVAL.node = &ast.StmtStmtList{ Node: ast.Node{ @@ -4917,13 +4909,13 @@ yydefault: } case 266: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2501 + // line internal/php7/php7.y:2493 { yyVAL.list = yyDollar[1].list } case 267: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2505 + // line internal/php7/php7.y:2497 { yyVAL.list = []ast.Vertex{ &ast.Identifier{ @@ -4937,31 +4929,31 @@ yydefault: } case 268: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2520 + // line internal/php7/php7.y:2512 { yyVAL.list = nil } case 269: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2524 + // line internal/php7/php7.y:2516 { yyVAL.list = yyDollar[1].list } case 270: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2531 + // line internal/php7/php7.y:2523 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 271: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2535 + // line internal/php7/php7.y:2527 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 272: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2542 + // line internal/php7/php7.y:2534 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -4973,7 +4965,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2552 + // line internal/php7/php7.y:2544 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -4985,7 +4977,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2562 + // line internal/php7/php7.y:2554 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -4997,7 +4989,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2572 + // line internal/php7/php7.y:2564 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -5009,7 +5001,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2582 + // line internal/php7/php7.y:2574 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -5021,7 +5013,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2592 + // line internal/php7/php7.y:2584 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -5033,7 +5025,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2605 + // line internal/php7/php7.y:2597 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5042,13 +5034,13 @@ yydefault: } case 279: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2612 + // line internal/php7/php7.y:2604 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 280: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2619 + // line internal/php7/php7.y:2611 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -5069,7 +5061,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2638 + // line internal/php7/php7.y:2630 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -5091,7 +5083,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2661 + // line internal/php7/php7.y:2653 { lastNode(yyDollar[1].list).(*ast.StmtConstant).CommaTkn = yyDollar[2].token @@ -5099,13 +5091,13 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2667 + // line internal/php7/php7.y:2659 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 284: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2674 + // line internal/php7/php7.y:2666 { yyVAL.node = &ast.StmtConstant{ Node: ast.Node{ @@ -5126,7 +5118,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2696 + // line internal/php7/php7.y:2688 { yyVAL.node = &ast.StmtConstant{ Node: ast.Node{ @@ -5147,7 +5139,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2718 + // line internal/php7/php7.y:2710 { 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) @@ -5156,7 +5148,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2725 + // line internal/php7/php7.y:2717 { yyVAL.node = &ast.StmtEcho{ Exprs: []ast.Vertex{yyDollar[1].node}, @@ -5164,25 +5156,25 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2734 + // line internal/php7/php7.y:2726 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2741 + // line internal/php7/php7.y:2733 { yyVAL.list = nil } case 290: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2745 + // line internal/php7/php7.y:2737 { yyVAL.list = yyDollar[1].list } case 291: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2752 + // line internal/php7/php7.y:2744 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5191,13 +5183,13 @@ yydefault: } case 292: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2759 + // line internal/php7/php7.y:2751 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 293: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php7/php7.y:2766 + // line internal/php7/php7.y:2758 { yyVAL.node = &ast.StmtClass{ Node: ast.Node{ @@ -5214,7 +5206,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2784 + // line internal/php7/php7.y:2776 { if yyDollar[3].node != nil { yyVAL.node = &ast.ExprNew{ast.Node{}, yyDollar[2].node, yyDollar[3].node.(*ast.ArgumentList)} @@ -5229,7 +5221,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2797 + // line internal/php7/php7.y:2789 { yyVAL.node = &ast.ExprNew{ast.Node{}, yyDollar[2].node, nil} @@ -5241,7 +5233,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:2810 + // line internal/php7/php7.y:2802 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, listNode, yyDollar[6].node} @@ -5258,7 +5250,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:2825 + // line internal/php7/php7.y:2817 { shortList := &ast.ExprShortList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, shortList, yyDollar[5].node} @@ -5274,7 +5266,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2839 + // line internal/php7/php7.y:2831 { yyVAL.node = &ast.ExprAssign{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5287,7 +5279,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2850 + // line internal/php7/php7.y:2842 { yyVAL.node = &ast.ExprAssignReference{ast.Node{}, yyDollar[1].node, yyDollar[4].node} @@ -5301,7 +5293,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2862 + // line internal/php7/php7.y:2854 { yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node} @@ -5313,7 +5305,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2872 + // line internal/php7/php7.y:2864 { yyVAL.node = &ast.ExprAssignPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5326,7 +5318,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2883 + // line internal/php7/php7.y:2875 { yyVAL.node = &ast.ExprAssignMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5339,7 +5331,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2894 + // line internal/php7/php7.y:2886 { yyVAL.node = &ast.ExprAssignMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5352,7 +5344,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2905 + // line internal/php7/php7.y:2897 { yyVAL.node = &ast.ExprAssignPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5365,7 +5357,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2916 + // line internal/php7/php7.y:2908 { yyVAL.node = &ast.ExprAssignDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5378,7 +5370,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2927 + // line internal/php7/php7.y:2919 { yyVAL.node = &ast.ExprAssignConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5391,7 +5383,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2938 + // line internal/php7/php7.y:2930 { yyVAL.node = &ast.ExprAssignMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5404,7 +5396,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2949 + // line internal/php7/php7.y:2941 { yyVAL.node = &ast.ExprAssignBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5417,7 +5409,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2960 + // line internal/php7/php7.y:2952 { yyVAL.node = &ast.ExprAssignBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5430,7 +5422,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2971 + // line internal/php7/php7.y:2963 { yyVAL.node = &ast.ExprAssignBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5443,7 +5435,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2982 + // line internal/php7/php7.y:2974 { yyVAL.node = &ast.ExprAssignShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5456,7 +5448,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2993 + // line internal/php7/php7.y:2985 { yyVAL.node = &ast.ExprAssignShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5469,7 +5461,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3004 + // line internal/php7/php7.y:2996 { yyVAL.node = &ast.ExprAssignCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5482,7 +5474,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3015 + // line internal/php7/php7.y:3007 { yyVAL.node = &ast.ExprPostInc{ast.Node{}, yyDollar[1].node} @@ -5495,7 +5487,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3026 + // line internal/php7/php7.y:3018 { yyVAL.node = &ast.ExprPreInc{ast.Node{}, yyDollar[2].node} @@ -5507,7 +5499,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3036 + // line internal/php7/php7.y:3028 { yyVAL.node = &ast.ExprPostDec{ast.Node{}, yyDollar[1].node} @@ -5520,7 +5512,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3047 + // line internal/php7/php7.y:3039 { yyVAL.node = &ast.ExprPreDec{ast.Node{}, yyDollar[2].node} @@ -5532,7 +5524,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3057 + // line internal/php7/php7.y:3049 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5545,7 +5537,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3068 + // line internal/php7/php7.y:3060 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5558,7 +5550,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3079 + // line internal/php7/php7.y:3071 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5571,7 +5563,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3090 + // line internal/php7/php7.y:3082 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5584,7 +5576,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3101 + // line internal/php7/php7.y:3093 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5597,7 +5589,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3112 + // line internal/php7/php7.y:3104 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5610,7 +5602,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3123 + // line internal/php7/php7.y:3115 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5623,7 +5615,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3134 + // line internal/php7/php7.y:3126 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5636,7 +5628,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3145 + // line internal/php7/php7.y:3137 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5648,7 +5640,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3155 + // line internal/php7/php7.y:3147 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5661,7 +5653,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3166 + // line internal/php7/php7.y:3158 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5674,7 +5666,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3177 + // line internal/php7/php7.y:3169 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5687,7 +5679,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3188 + // line internal/php7/php7.y:3180 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5700,7 +5692,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3199 + // line internal/php7/php7.y:3191 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5713,7 +5705,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3210 + // line internal/php7/php7.y:3202 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5726,7 +5718,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3221 + // line internal/php7/php7.y:3213 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5739,7 +5731,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3232 + // line internal/php7/php7.y:3224 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5752,7 +5744,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3243 + // line internal/php7/php7.y:3235 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -5764,7 +5756,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3253 + // line internal/php7/php7.y:3245 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -5776,7 +5768,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3263 + // line internal/php7/php7.y:3255 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -5788,7 +5780,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3273 + // line internal/php7/php7.y:3265 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -5800,7 +5792,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3283 + // line internal/php7/php7.y:3275 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5813,7 +5805,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3294 + // line internal/php7/php7.y:3286 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5826,7 +5818,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3305 + // line internal/php7/php7.y:3297 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5839,7 +5831,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3316 + // line internal/php7/php7.y:3308 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5853,7 +5845,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3328 + // line internal/php7/php7.y:3320 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5866,7 +5858,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3339 + // line internal/php7/php7.y:3331 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5879,7 +5871,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3350 + // line internal/php7/php7.y:3342 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5892,7 +5884,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3361 + // line internal/php7/php7.y:3353 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5905,7 +5897,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3372 + // line internal/php7/php7.y:3364 { yyVAL.node = &ast.ExprBinarySpaceship{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5918,7 +5910,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3383 + // line internal/php7/php7.y:3375 { yyVAL.node = &ast.ExprInstanceOf{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5931,7 +5923,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3394 + // line internal/php7/php7.y:3386 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -5948,13 +5940,13 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3409 + // line internal/php7/php7.y:3401 { yyVAL.node = yyDollar[1].node } case 351: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:3413 + // line internal/php7/php7.y:3405 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -5968,7 +5960,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3425 + // line internal/php7/php7.y:3417 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -5982,7 +5974,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3437 + // line internal/php7/php7.y:3429 { yyVAL.node = &ast.ExprBinaryCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5995,13 +5987,13 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3448 + // line internal/php7/php7.y:3440 { yyVAL.node = yyDollar[1].node } case 355: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3452 + // line internal/php7/php7.y:3444 { yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node} @@ -6014,7 +6006,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3463 + // line internal/php7/php7.y:3455 { yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node} @@ -6027,7 +6019,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3474 + // line internal/php7/php7.y:3466 { yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node} @@ -6040,7 +6032,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3485 + // line internal/php7/php7.y:3477 { yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node} @@ -6053,7 +6045,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3496 + // line internal/php7/php7.y:3488 { yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node} @@ -6066,7 +6058,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3507 + // line internal/php7/php7.y:3499 { yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node} @@ -6079,7 +6071,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3518 + // line internal/php7/php7.y:3510 { yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node} @@ -6092,7 +6084,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3529 + // line internal/php7/php7.y:3521 { yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[2].node} @@ -6112,7 +6104,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3547 + // line internal/php7/php7.y:3539 { yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node} @@ -6124,13 +6116,13 @@ yydefault: } case 364: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3557 + // line internal/php7/php7.y:3549 { yyVAL.node = yyDollar[1].node } case 365: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3561 + // line internal/php7/php7.y:3553 { yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list} @@ -6142,7 +6134,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3571 + // line internal/php7/php7.y:3563 { yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} @@ -6154,7 +6146,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3581 + // line internal/php7/php7.y:3573 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil} @@ -6166,7 +6158,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3591 + // line internal/php7/php7.y:3583 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6178,7 +6170,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3601 + // line internal/php7/php7.y:3593 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6191,7 +6183,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3612 + // line internal/php7/php7.y:3604 { yyVAL.node = &ast.ExprYieldFrom{ast.Node{}, yyDollar[2].node} @@ -6203,109 +6195,86 @@ yydefault: } case 371: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3622 + // line internal/php7/php7.y:3614 { yyVAL.node = yyDollar[1].node } case 372: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3626 + // line internal/php7/php7.y:3618 { - yyVAL.node = yyDollar[2].node - - switch n := yyVAL.node.(type) { + switch n := yyDollar[2].node.(type) { case *ast.ExprClosure: - n.Static = true + n.Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) + n.StaticTkn = yyDollar[1].token case *ast.ExprArrowFunction: - n.Static = true + n.Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) + n.StaticTkn = yyDollar[1].token } - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Static, yyVAL.node.GetNode().Tokens[token.Start]) - delete(yyVAL.node.GetNode().Tokens, token.Start) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = yyDollar[2].node } case 373: yyDollar = yyS[yypt-11 : yypt+1] - // line internal/php7/php7.y:3647 + // line internal/php7/php7.y:3634 { - yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list} - - // save position - 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[4].token.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Function, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Ampersand, yyDollar[4].token.SkippedTokens) - } - yylex.(*Parser).setFreeFloating(yyVAL.node, token.ParameterList, yyDollar[6].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.ReturnType, yyDollar[9].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[11].token.SkippedTokens) - - // normalize - if yyDollar[8].node == nil { - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.LexicalVars, yyVAL.node.GetNode().Tokens[token.ReturnType]) - delete(yyVAL.node.GetNode().Tokens, token.ReturnType) - } - if yyDollar[7].ClosureUse == nil { - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Params, yyVAL.node.GetNode().Tokens[token.LexicalVarList]) - delete(yyVAL.node.GetNode().Tokens, token.LexicalVarList) + yyVAL.node = &ast.ExprClosure{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[11].token), + }, + FunctionTkn: yyDollar[1].token, + AmpersandTkn: yyDollar[2].token, + OpenParenthesisTkn: yyDollar[4].token, + Params: yyDollar[5].list, + CloseParenthesisTkn: yyDollar[6].token, + ClosureUse: yyDollar[7].ClosureUse, + ColonTkn: yyDollar[8].node.(*ast.ReturnType).ColonTkn, + ReturnType: yyDollar[8].node.(*ast.ReturnType).Type, + OpenCurlyBracketTkn: yyDollar[9].token, + Stmts: yyDollar[10].list, + CloseCurlyBracketTkn: yyDollar[11].token, } } case 374: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:3674 + // line internal/php7/php7.y:3653 { - yyVAL.node = &ast.ExprArrowFunction{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[4].list, yyDollar[6].node, yyDollar[9].node} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node) - - // 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[3].token.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Function, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Ampersand, yyDollar[3].token.SkippedTokens) - } - yylex.(*Parser).setFreeFloating(yyVAL.node, token.ParameterList, yyDollar[5].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.ReturnType, yyDollar[8].token.SkippedTokens) - - // normalize - if yyDollar[6].node == nil { - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Params, yyVAL.node.GetNode().Tokens[token.ReturnType]) - delete(yyVAL.node.GetNode().Tokens, token.ReturnType) + yyVAL.node = &ast.ExprArrowFunction{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node), + }, + FnTkn: yyDollar[1].token, + AmpersandTkn: yyDollar[2].token, + OpenParenthesisTkn: yyDollar[3].token, + Params: yyDollar[4].list, + CloseParenthesisTkn: yyDollar[5].token, + ColonTkn: yyDollar[6].node.(*ast.ReturnType).ColonTkn, + ReturnType: yyDollar[6].node.(*ast.ReturnType).Type, + DoubleArrowTkn: yyDollar[8].token, + Expr: yyDollar[9].node, } } case 376: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3704 + // line internal/php7/php7.y:3677 { yyVAL.token = nil } case 377: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3708 + // line internal/php7/php7.y:3681 { yyVAL.token = yyDollar[1].token } case 378: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3715 + // line internal/php7/php7.y:3688 { yyVAL.ClosureUse = nil } case 379: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3719 + // line internal/php7/php7.y:3692 { yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list} @@ -6319,7 +6288,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3734 + // line internal/php7/php7.y:3707 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6328,13 +6297,13 @@ yydefault: } case 381: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3741 + // line internal/php7/php7.y:3714 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 382: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3748 + // line internal/php7/php7.y:3721 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6353,7 +6322,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3765 + // line internal/php7/php7.y:3738 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6375,7 +6344,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3788 + // line internal/php7/php7.y:3761 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6387,7 +6356,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3798 + // line internal/php7/php7.y:3771 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6400,7 +6369,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3809 + // line internal/php7/php7.y:3782 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6413,7 +6382,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3820 + // line internal/php7/php7.y:3793 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6425,7 +6394,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3833 + // line internal/php7/php7.y:3806 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -6437,31 +6406,31 @@ yydefault: } case 389: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3843 + // line internal/php7/php7.y:3816 { yyVAL.node = yyDollar[1].node } case 390: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3850 + // line internal/php7/php7.y:3823 { yyVAL.node = yyDollar[1].node } case 391: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3854 + // line internal/php7/php7.y:3827 { yyVAL.node = yyDollar[1].node } case 392: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3861 + // line internal/php7/php7.y:3834 { yyVAL.node = nil } case 393: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3865 + // line internal/php7/php7.y:3838 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6478,13 +6447,13 @@ yydefault: } case 394: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3883 + // line internal/php7/php7.y:3856 { yyVAL.list = []ast.Vertex{} } case 395: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3887 + // line internal/php7/php7.y:3860 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6498,25 +6467,25 @@ yydefault: } case 396: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3899 + // line internal/php7/php7.y:3872 { yyVAL.list = yyDollar[1].list } case 397: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3906 + // line internal/php7/php7.y:3879 { yyVAL.node = nil } case 398: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3910 + // line internal/php7/php7.y:3883 { yyVAL.node = yyDollar[1].node } case 399: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3917 + // line internal/php7/php7.y:3890 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -6530,7 +6499,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3929 + // line internal/php7/php7.y:3902 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -6543,7 +6512,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3940 + // line internal/php7/php7.y:3913 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -6555,7 +6524,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3953 + // line internal/php7/php7.y:3926 { yyVAL.node = &ast.ScalarLnumber{ Node: ast.Node{ @@ -6567,7 +6536,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3963 + // line internal/php7/php7.y:3936 { yyVAL.node = &ast.ScalarDnumber{ Node: ast.Node{ @@ -6579,7 +6548,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3973 + // line internal/php7/php7.y:3946 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6591,7 +6560,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3983 + // line internal/php7/php7.y:3956 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6603,7 +6572,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3993 + // line internal/php7/php7.y:3966 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6615,7 +6584,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4003 + // line internal/php7/php7.y:3976 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6627,7 +6596,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4013 + // line internal/php7/php7.y:3986 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6639,7 +6608,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4023 + // line internal/php7/php7.y:3996 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6651,7 +6620,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4033 + // line internal/php7/php7.y:4006 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6663,7 +6632,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4043 + // line internal/php7/php7.y:4016 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6675,7 +6644,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4053 + // line internal/php7/php7.y:4026 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6696,7 +6665,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4072 + // line internal/php7/php7.y:4045 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6708,7 +6677,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4082 + // line internal/php7/php7.y:4055 { yyVAL.node = &ast.ScalarEncapsed{ Node: ast.Node{ @@ -6721,7 +6690,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4093 + // line internal/php7/php7.y:4066 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6734,19 +6703,19 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4104 + // line internal/php7/php7.y:4077 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4108 + // line internal/php7/php7.y:4081 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4115 + // line internal/php7/php7.y:4088 { yyVAL.node = &ast.ExprConstFetch{ast.Node{}, yyDollar[1].node} @@ -6758,7 +6727,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4125 + // line internal/php7/php7.y:4098 { target := &ast.Identifier{ Node: ast.Node{ @@ -6778,7 +6747,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4143 + // line internal/php7/php7.y:4116 { target := &ast.Identifier{ Node: ast.Node{ @@ -6798,43 +6767,43 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4164 + // line internal/php7/php7.y:4137 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4168 + // line internal/php7/php7.y:4141 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:4175 + // line internal/php7/php7.y:4148 { yyVAL.node = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4179 + // line internal/php7/php7.y:4152 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4186 + // line internal/php7/php7.y:4159 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4193 + // line internal/php7/php7.y:4166 { yyVAL.node = yyDollar[1].node } case 427: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4197 + // line internal/php7/php7.y:4170 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6851,19 +6820,19 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4212 + // line internal/php7/php7.y:4185 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4219 + // line internal/php7/php7.y:4192 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4223 + // line internal/php7/php7.y:4196 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6880,19 +6849,19 @@ yydefault: } case 431: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4238 + // line internal/php7/php7.y:4211 { yyVAL.node = yyDollar[1].node } case 432: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4245 + // line internal/php7/php7.y:4218 { yyVAL.node = yyDollar[1].node } case 433: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4249 + // line internal/php7/php7.y:4222 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6905,7 +6874,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4260 + // line internal/php7/php7.y:4233 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6918,7 +6887,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4271 + // line internal/php7/php7.y:4244 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6931,7 +6900,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4282 + // line internal/php7/php7.y:4255 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6944,25 +6913,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4293 + // line internal/php7/php7.y:4266 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4300 + // line internal/php7/php7.y:4273 { yyVAL.node = yyDollar[1].node } case 439: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4304 + // line internal/php7/php7.y:4277 { yyVAL.node = yyDollar[1].node } case 440: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4308 + // line internal/php7/php7.y:4281 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6975,7 +6944,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4322 + // line internal/php7/php7.y:4295 { name := &ast.Identifier{ Node: ast.Node{ @@ -6994,7 +6963,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4339 + // line internal/php7/php7.y:4312 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -7008,7 +6977,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4351 + // line internal/php7/php7.y:4324 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7020,7 +6989,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4364 + // line internal/php7/php7.y:4337 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7033,7 +7002,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4375 + // line internal/php7/php7.y:4348 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7046,13 +7015,13 @@ yydefault: } case 446: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4389 + // line internal/php7/php7.y:4362 { yyVAL.node = yyDollar[1].node } case 447: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4393 + // line internal/php7/php7.y:4366 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7065,7 +7034,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4404 + // line internal/php7/php7.y:4377 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7078,7 +7047,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4415 + // line internal/php7/php7.y:4388 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7091,7 +7060,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4426 + // line internal/php7/php7.y:4399 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7104,7 +7073,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4437 + // line internal/php7/php7.y:4410 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7117,7 +7086,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4451 + // line internal/php7/php7.y:4424 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -7129,7 +7098,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4461 + // line internal/php7/php7.y:4434 { yyVAL.node = yyDollar[2].node @@ -7139,13 +7108,13 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4469 + // line internal/php7/php7.y:4442 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4476 + // line internal/php7/php7.y:4449 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -7157,7 +7126,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4486 + // line internal/php7/php7.y:4459 { yyVAL.node = yyDollar[2].node @@ -7167,31 +7136,31 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4494 + // line internal/php7/php7.y:4467 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4501 + // line internal/php7/php7.y:4474 { yyVAL.list = yyDollar[1].list } case 459: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:4508 + // line internal/php7/php7.y:4481 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} } case 460: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4512 + // line internal/php7/php7.y:4485 { yyVAL.node = yyDollar[1].node } case 461: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4519 + // line internal/php7/php7.y:4492 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}} @@ -7204,7 +7173,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4530 + // line internal/php7/php7.y:4503 { if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil { yyVAL.list = []ast.Vertex{} @@ -7214,7 +7183,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4541 + // line internal/php7/php7.y:4514 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} @@ -7227,7 +7196,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4552 + // line internal/php7/php7.y:4525 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} @@ -7239,7 +7208,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4562 + // line internal/php7/php7.y:4535 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference} @@ -7255,7 +7224,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4576 + // line internal/php7/php7.y:4549 { reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -7269,7 +7238,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4588 + // line internal/php7/php7.y:4561 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, true, nil, yyDollar[2].node} @@ -7281,7 +7250,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:4598 + // line internal/php7/php7.y:4571 { // TODO: Cannot use list() as standalone expression listNode := &ast.ExprList{ast.Node{}, yyDollar[5].list} @@ -7300,7 +7269,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4615 + // line internal/php7/php7.y:4588 { // TODO: Cannot use list() as standalone expression listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -7317,13 +7286,13 @@ yydefault: } case 470: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4633 + // line internal/php7/php7.y:4606 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 471: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4637 + // line internal/php7/php7.y:4610 { yyVAL.list = append( yyDollar[1].list, @@ -7338,13 +7307,13 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4650 + // line internal/php7/php7.y:4623 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 473: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4654 + // line internal/php7/php7.y:4627 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -7359,7 +7328,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4670 + // line internal/php7/php7.y:4643 { name := &ast.Identifier{ Node: ast.Node{ @@ -7378,7 +7347,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4687 + // line internal/php7/php7.y:4660 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -7400,7 +7369,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4707 + // line internal/php7/php7.y:4680 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -7428,7 +7397,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4733 + // line internal/php7/php7.y:4706 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7443,7 +7412,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4746 + // line internal/php7/php7.y:4719 { name := &ast.Identifier{ Node: ast.Node{ @@ -7465,7 +7434,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:4766 + // line internal/php7/php7.y:4739 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -7489,7 +7458,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4788 + // line internal/php7/php7.y:4761 { yyVAL.node = yyDollar[2].node @@ -7499,7 +7468,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4799 + // line internal/php7/php7.y:4772 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -7511,7 +7480,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4809 + // line internal/php7/php7.y:4782 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -7534,7 +7503,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4830 + // line internal/php7/php7.y:4803 { _, err := strconv.Atoi(string(yyDollar[2].token.Value)) isInt := err == nil @@ -7562,7 +7531,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4856 + // line internal/php7/php7.y:4829 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -7581,7 +7550,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:4876 + // line internal/php7/php7.y:4849 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -7599,7 +7568,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4892 + // line internal/php7/php7.y:4865 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -7621,7 +7590,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4912 + // line internal/php7/php7.y:4885 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -7633,7 +7602,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4922 + // line internal/php7/php7.y:4895 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -7645,7 +7614,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4932 + // line internal/php7/php7.y:4905 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -7667,7 +7636,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4952 + // line internal/php7/php7.y:4925 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -7679,7 +7648,7 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4962 + // line internal/php7/php7.y:4935 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -7691,13 +7660,13 @@ yydefault: } case 492: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4975 + // line internal/php7/php7.y:4948 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 493: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4979 + // line internal/php7/php7.y:4952 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -7706,7 +7675,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4989 + // line internal/php7/php7.y:4962 { yyVAL.node = yyDollar[1].node } diff --git a/internal/php7/php7.y b/internal/php7/php7.y index 58eed16..c6bc108 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -1214,31 +1214,27 @@ 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.StmtFunction{ Node: ast.Node{ - Position: position.NewTokenPosition($3), + Position: position.NewTokensPosition($1, $11), }, - IdentifierTkn: $3, - Value: $3.Value, - } - $$ = &ast.StmtFunction{ast.Node{}, $2 != nil, name, $6, $8, $10} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $11) - - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - if $2 != nil { - yylex.(*Parser).setFreeFloating($$, token.Function, $2.SkippedTokens) - } - yylex.(*Parser).setFreeFloating($$, token.ParamList, $7.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.ReturnType, $9.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $11.SkippedTokens) - - // normalize - if $8 == nil { - yylex.(*Parser).setFreeFloatingTokens($$, token.Params, $$.GetNode().Tokens[token.ReturnType]); delete($$.GetNode().Tokens, token.ReturnType) + FunctionTkn: $1, + AmpersandTkn: $2, + FunctionName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + }, + OpenParenthesisTkn: $5, + Params: $6, + CloseParenthesisTkn: $7, + ColonTkn: $8.(*ast.ReturnType).ColonTkn, + ReturnType: $8.(*ast.ReturnType).Type, + OpenCurlyBracketTkn: $9, + Stmts: $10, + CloseCurlyBracketTkn: $11, } } ; @@ -2025,10 +2021,10 @@ return_type: } | ':' type_expr { - $$ = $2; - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Start, append($1.SkippedTokens, $$.GetNode().Tokens[token.Start]...)) + $$ = &ast.ReturnType{ + ColonTkn: $1, + Type: $2, + } } ; @@ -2234,36 +2230,32 @@ class_statement: } | method_modifiers T_FUNCTION returns_ref identifier backup_doc_comment '(' parameter_list ')' return_type method_body { - 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 - if $1 == nil { - $$.GetNode().Position = position.NewTokenNodePosition($2, $10) - } else { + pos := position.NewTokenNodePosition($2, $10) + if $1 != nil { $$.GetNode().Position = position.NewNodeListNodePosition($1, $10) } - // save comments - if len($1) > 0 { - yylex.(*Parser).MoveFreeFloating($1[0], $$) - yylex.(*Parser).setFreeFloating($$, token.ModifierList, $2.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating($$, token.Start, $2.SkippedTokens) + $$ = &ast.StmtClassMethod{ + Node: ast.Node{ + Position: pos, + }, + Modifiers: $1, + FunctionTkn: $2, + AmpersandTkn: $3, + MethodName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + }, + OpenParenthesisTkn: $6, + Params: $7, + CloseParenthesisTkn: $8, + ColonTkn: $9.(*ast.ReturnType).ColonTkn, + ReturnType: $9.(*ast.ReturnType).Type, + Stmt: $10, } - if $3 == nil { - yylex.(*Parser).setFreeFloating($$, token.Function, $4.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating($$, token.Function, $3.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Ampersand, $4.SkippedTokens) - } - yylex.(*Parser).setFreeFloating($$, token.ParameterList, $8.SkippedTokens) } ; @@ -3624,74 +3616,55 @@ expr_without_variable: } | T_STATIC inline_function { - $$ = $2; - - switch n := $$.(type) { + switch n := $2.(type) { case *ast.ExprClosure : - n.Static = true; + n.Position = position.NewTokenNodePosition($1, $2) + n.StaticTkn = $1; case *ast.ExprArrowFunction : - n.Static = true; + n.Position = position.NewTokenNodePosition($1, $2) + n.StaticTkn = $1; }; - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Static, $$.GetNode().Tokens[token.Start]); delete($$.GetNode().Tokens, token.Start) - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens); + $$ = $2 } ; inline_function: T_FUNCTION returns_ref backup_doc_comment '(' parameter_list ')' lexical_vars return_type '{' inner_statement_list '}' { - $$ = &ast.ExprClosure{ast.Node{}, $2 != nil, false, $5, $7, $8, $10} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $11) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - if $2 == nil { - yylex.(*Parser).setFreeFloating($$, token.Function, $4.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating($$, token.Function, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Ampersand, $4.SkippedTokens) - } - yylex.(*Parser).setFreeFloating($$, token.ParameterList, $6.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.ReturnType, $9.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $11.SkippedTokens) - - // normalize - if $8 == nil { - yylex.(*Parser).setFreeFloatingTokens($$, token.LexicalVars, $$.GetNode().Tokens[token.ReturnType]); delete($$.GetNode().Tokens, token.ReturnType) - } - if $7 == nil { - yylex.(*Parser).setFreeFloatingTokens($$, token.Params, $$.GetNode().Tokens[token.LexicalVarList]); delete($$.GetNode().Tokens, token.LexicalVarList) + $$ = &ast.ExprClosure{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $11), + }, + FunctionTkn: $1, + AmpersandTkn: $2, + OpenParenthesisTkn: $4, + Params: $5, + CloseParenthesisTkn: $6, + ClosureUse: $7, + ColonTkn: $8.(*ast.ReturnType).ColonTkn, + ReturnType: $8.(*ast.ReturnType).Type, + OpenCurlyBracketTkn: $9, + Stmts: $10, + CloseCurlyBracketTkn: $11, } } | T_FN returns_ref '(' parameter_list ')' return_type backup_doc_comment T_DOUBLE_ARROW expr { - $$ = &ast.ExprArrowFunction{ast.Node{}, $2 != nil, false, $4, $6, $9} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $9) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - if $2 == nil { - yylex.(*Parser).setFreeFloating($$, token.Function, $3.SkippedTokens) - } else { - yylex.(*Parser).setFreeFloating($$, token.Function, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Ampersand, $3.SkippedTokens) - }; - yylex.(*Parser).setFreeFloating($$, token.ParameterList, $5.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.ReturnType, $8.SkippedTokens) - - // normalize - if $6 == nil { - yylex.(*Parser).setFreeFloatingTokens($$, token.Params, $$.GetNode().Tokens[token.ReturnType]); delete($$.GetNode().Tokens, token.ReturnType) - }; + $$ = &ast.ExprArrowFunction{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $9), + }, + FnTkn: $1, + AmpersandTkn: $2, + OpenParenthesisTkn: $3, + Params: $4, + CloseParenthesisTkn: $5, + ColonTkn: $6.(*ast.ReturnType).ColonTkn, + ReturnType: $6.(*ast.ReturnType).Type, + DoubleArrowTkn: $8, + Expr: $9, + } } ; diff --git a/pkg/ast/node.go b/pkg/ast/node.go index 3c64e3d..fb50e7f 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -292,12 +292,16 @@ func (n *StmtClassImplements) Accept(v NodeVisitor) { // StmtClassMethod node type StmtClassMethod struct { Node - ReturnsRef bool - MethodName Vertex - Modifiers []Vertex - Params []Vertex - ReturnType Vertex - Stmt Vertex + Modifiers []Vertex + FunctionTkn *token.Token + AmpersandTkn *token.Token + MethodName Vertex + OpenParenthesisTkn *token.Token + Params []Vertex + CloseParenthesisTkn *token.Token + ColonTkn *token.Token + ReturnType Vertex + Stmt Vertex } func (n *StmtClassMethod) Accept(v NodeVisitor) { @@ -501,11 +505,17 @@ func (n *StmtForeach) Accept(v NodeVisitor) { // StmtFunction node type StmtFunction struct { Node - ReturnsRef bool - FunctionName Vertex - Params []Vertex - ReturnType Vertex - Stmts []Vertex + FunctionTkn *token.Token + AmpersandTkn *token.Token + FunctionName Vertex + OpenParenthesisTkn *token.Token + Params []Vertex + CloseParenthesisTkn *token.Token + ColonTkn *token.Token + ReturnType Vertex + OpenCurlyBracketTkn *token.Token + Stmts []Vertex + CloseCurlyBracketTkn *token.Token } func (n *StmtFunction) Accept(v NodeVisitor) { @@ -951,11 +961,16 @@ func (n *ExprArrayItem) Accept(v NodeVisitor) { // ExprArrowFunction node type ExprArrowFunction struct { Node - ReturnsRef bool - Static bool - Params []Vertex - ReturnType Vertex - Expr Vertex + StaticTkn *token.Token + FnTkn *token.Token + AmpersandTkn *token.Token + OpenParenthesisTkn *token.Token + Params []Vertex + CloseParenthesisTkn *token.Token + ColonTkn *token.Token + ReturnType Vertex + DoubleArrowTkn *token.Token + Expr Vertex } func (n *ExprArrowFunction) Accept(v NodeVisitor) { @@ -1006,12 +1021,18 @@ func (n *ExprClone) Accept(v NodeVisitor) { // ExprClosure node type ExprClosure struct { Node - ReturnsRef bool - Static bool - Params []Vertex - ClosureUse *ExprClosureUse - ReturnType Vertex - Stmts []Vertex + StaticTkn *token.Token + FunctionTkn *token.Token + AmpersandTkn *token.Token + OpenParenthesisTkn *token.Token + Params []Vertex + CloseParenthesisTkn *token.Token + ClosureUse *ExprClosureUse + ColonTkn *token.Token + ReturnType Vertex + OpenCurlyBracketTkn *token.Token + Stmts []Vertex + CloseCurlyBracketTkn *token.Token } func (n *ExprClosure) Accept(v NodeVisitor) { @@ -1947,6 +1968,8 @@ func (n *NameNamePart) Accept(v NodeVisitor) { v.NameNamePart(n) } +// TODO: move to private section + type ParserBrackets struct { Node OpenBracketTkn *token.Token @@ -1967,3 +1990,13 @@ type ParserSeparatedList struct { func (n *ParserSeparatedList) Accept(v NodeVisitor) { v.ParserSeparatedList(n) } + +type ReturnType struct { + Node + ColonTkn *token.Token + Type Vertex +} + +func (n *ReturnType) Accept(v NodeVisitor) { + // do nothing +} diff --git a/pkg/ast/visitor/dump.go b/pkg/ast/visitor/dump.go index 15c3226..6586d8c 100644 --- a/pkg/ast/visitor/dump.go +++ b/pkg/ast/visitor/dump.go @@ -288,11 +288,6 @@ func (v *Dump) StmtClassMethod(n *ast.StmtClassMethod) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtClassMethod{\n") v.printNode(n.GetNode()) - - if n.ReturnsRef { - v.printIndent(v.indent) - v.print("ReturnsRef: true,\n") - } } func (v *Dump) StmtConstList(n *ast.StmtConstList) { @@ -397,11 +392,6 @@ func (v *Dump) StmtFunction(n *ast.StmtFunction) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtFunction{\n") v.printNode(n.GetNode()) - - if n.ReturnsRef { - v.printIndent(v.indent) - v.print("ReturnsRef: true,\n") - } } func (v *Dump) StmtGlobal(n *ast.StmtGlobal) { @@ -641,16 +631,6 @@ func (v *Dump) ExprArrowFunction(n *ast.ExprArrowFunction) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprArrowFunction{\n") v.printNode(n.GetNode()) - - if n.ReturnsRef { - v.printIndent(v.indent) - v.print("ReturnsRef: true,\n") - } - - if n.Static { - v.printIndent(v.indent) - v.print("Static: true,\n") - } } func (v *Dump) ExprBitwiseNot(n *ast.ExprBitwiseNot) { @@ -681,16 +661,6 @@ func (v *Dump) ExprClosure(n *ast.ExprClosure) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprClosure{\n") v.printNode(n.GetNode()) - - if n.ReturnsRef { - v.printIndent(v.indent) - v.print("ReturnsRef: true,\n") - } - - if n.Static { - v.printIndent(v.indent) - v.print("Static: true,\n") - } } func (v *Dump) ExprClosureUse(n *ast.ExprClosureUse) { diff --git a/pkg/printer/pretty_printer.go b/pkg/printer/pretty_printer.go index 65c4cf6..fdd297f 100644 --- a/pkg/printer/pretty_printer.go +++ b/pkg/printer/pretty_printer.go @@ -1015,13 +1015,13 @@ func (p *PrettyPrinter) printExprClosureUse(n ast.Vertex) { func (p *PrettyPrinter) printExprClosure(n ast.Vertex) { nn := n.(*ast.ExprClosure) - if nn.Static { + if nn.StaticTkn != nil { io.WriteString(p.w, "static ") } io.WriteString(p.w, "function ") - if nn.ReturnsRef { + if nn.AmpersandTkn != nil { io.WriteString(p.w, "&") } @@ -1432,7 +1432,7 @@ func (p *PrettyPrinter) printStmtClassMethod(n ast.Vertex) { } io.WriteString(p.w, "function ") - if nn.ReturnsRef { + if nn.AmpersandTkn != nil { io.WriteString(p.w, "&") } @@ -1785,7 +1785,7 @@ func (p *PrettyPrinter) printStmtFunction(n ast.Vertex) { io.WriteString(p.w, "function ") - if nn.ReturnsRef { + if nn.AmpersandTkn != nil { io.WriteString(p.w, "&") } diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index 5848f39..ea131e5 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -1405,18 +1405,18 @@ func (p *Printer) printExprArrowFunction(n ast.Vertex) { nn := n.(*ast.ExprArrowFunction) p.printFreeFloating(nn, token.Start) - if nn.Static { + if nn.StaticTkn != nil { p.write([]byte("static")) } p.printFreeFloating(nn, token.Static) - if nn.Static && n.GetNode().Tokens.IsEmpty() { + if nn.StaticTkn != nil && n.GetNode().Tokens.IsEmpty() { p.write([]byte(" ")) } p.write([]byte("fn")) p.printFreeFloating(nn, token.Function) - if nn.ReturnsRef { + if nn.AmpersandTkn != nil { p.write([]byte("&")) } p.printFreeFloating(nn, token.Ampersand) @@ -1496,18 +1496,18 @@ func (p *Printer) printExprClosure(n ast.Vertex) { nn := n.(*ast.ExprClosure) p.printFreeFloating(nn, token.Start) - if nn.Static { + if nn.StaticTkn != nil { p.write([]byte("static")) } p.printFreeFloating(nn, token.Static) - if nn.Static && n.GetNode().Tokens.IsEmpty() { + if nn.StaticTkn != nil && n.GetNode().Tokens.IsEmpty() { p.write([]byte(" ")) } p.write([]byte("function")) p.printFreeFloating(nn, token.Function) - if nn.ReturnsRef { + if nn.AmpersandTkn != nil { p.write([]byte("&")) } p.printFreeFloating(nn, token.Ampersand) @@ -2040,7 +2040,7 @@ func (p *Printer) printStmtClassMethod(n ast.Vertex) { p.write([]byte("function")) p.printFreeFloating(nn, token.Function) - if nn.ReturnsRef { + if nn.AmpersandTkn != nil { if nn.GetNode().Tokens.IsEmpty() { p.write([]byte(" ")) } @@ -2384,7 +2384,7 @@ func (p *Printer) printStmtFunction(n ast.Vertex) { p.write([]byte("function")) p.printFreeFloating(nn, token.Function) - if nn.ReturnsRef { + if nn.AmpersandTkn != nil { if nn.GetNode().Tokens.IsEmpty() { p.write([]byte(" ")) }