From c63213630a3faf3de16a7e72c6b48662fc6b58a0 Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Mon, 24 Aug 2020 23:28:44 +0300 Subject: [PATCH] [refactoring] update ast structure of "Constant" nodes --- internal/php5/parser_test.go | 16 +- internal/php5/php5.go | 1207 ++++++++++---------- internal/php5/php5.y | 199 ++-- internal/php5/php5_test.go | 16 +- internal/php7/parser_test.go | 20 +- internal/php7/php7.go | 1082 +++++++++--------- internal/php7/php7.y | 94 +- internal/php7/php7_test.go | 18 +- pkg/ast/node.go | 16 +- pkg/ast/traverser/dfs.go | 12 +- pkg/ast/visitor/filter_tokens.go | 15 + pkg/ast/visitor/namespace_resolver.go | 2 +- pkg/ast/visitor/namespace_resolver_test.go | 16 +- pkg/printer/pretty_printer.go | 2 +- pkg/printer/pretty_printer_test.go | 32 +- pkg/printer/printer.go | 78 +- pkg/printer/printer_parsed_php5_test.go | 5 +- pkg/printer/printer_parsed_php7_test.go | 5 +- pkg/printer/printer_test.go | 40 +- 19 files changed, 1457 insertions(+), 1418 deletions(-) diff --git a/internal/php5/parser_test.go b/internal/php5/parser_test.go index ab1446d..52dc6df 100644 --- a/internal/php5/parser_test.go +++ b/internal/php5/parser_test.go @@ -4154,7 +4154,7 @@ func TestStmtClassConstList_WithoutModifiers(t *testing.T) { EndPos: 27, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -4186,7 +4186,7 @@ func TestStmtClassConstList_WithoutModifiers(t *testing.T) { EndPos: 36, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -5124,7 +5124,7 @@ func TestStmtConstList(t *testing.T) { EndPos: 16, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -5156,7 +5156,7 @@ func TestStmtConstList(t *testing.T) { EndPos: 25, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -5451,7 +5451,7 @@ func TestStmtDeclare(t *testing.T) { EndPos: 18, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -5530,7 +5530,7 @@ func TestStmtDeclare_Stmts(t *testing.T) { EndPos: 18, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -5562,7 +5562,7 @@ func TestStmtDeclare_Stmts(t *testing.T) { EndPos: 34, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -5642,7 +5642,7 @@ func TestStmtDeclare_Alt(t *testing.T) { EndPos: 18, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 926e1be..f836b8b 100644 --- a/internal/php5/php5.go +++ b/internal/php5/php5.go @@ -346,7 +346,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php5/php5.y:6128 +// line internal/php5/php5.y:6155 type simpleIndirectReference struct { all []*ast.ExprVariable @@ -2514,18 +2514,13 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] // line internal/php5/php5.y:449 { + yyDollar[1].node.(*ast.StmtConstList).SemiColonTkn = yyDollar[2].token + yyDollar[1].node.(*ast.StmtConstList).Node.Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token) yyVAL.node = yyDollar[1].node - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setToken(yyVAL.node, token.SemiColon, yyDollar[2].token.SkippedTokens) } case 18: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:463 +// line internal/php5/php5.y:458 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2533,13 +2528,13 @@ yydefault: } case 19: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:469 +// line internal/php5/php5.y:464 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 20: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:476 +// line internal/php5/php5.y:471 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2555,7 +2550,7 @@ yydefault: } case 21: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:490 +// line internal/php5/php5.y:485 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2578,7 +2573,7 @@ yydefault: } case 22: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:511 +// line internal/php5/php5.y:506 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2595,7 +2590,7 @@ yydefault: } case 23: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:526 +// line internal/php5/php5.y:521 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2619,7 +2614,7 @@ yydefault: } case 24: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:551 +// line internal/php5/php5.y:546 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2627,13 +2622,13 @@ yydefault: } case 25: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:557 +// 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:564 +// line internal/php5/php5.y:559 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2649,7 +2644,7 @@ yydefault: } case 27: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:578 +// line internal/php5/php5.y:573 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2672,7 +2667,7 @@ yydefault: } case 28: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:599 +// line internal/php5/php5.y:594 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2689,7 +2684,7 @@ yydefault: } case 29: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:614 +// line internal/php5/php5.y:609 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2713,7 +2708,7 @@ yydefault: } case 30: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:639 +// line internal/php5/php5.y:634 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2721,13 +2716,13 @@ yydefault: } case 31: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:645 +// line internal/php5/php5.y:640 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 32: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:652 +// line internal/php5/php5.y:647 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2743,7 +2738,7 @@ yydefault: } case 33: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:666 +// line internal/php5/php5.y:661 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2766,7 +2761,7 @@ yydefault: } case 34: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:687 +// line internal/php5/php5.y:682 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2783,7 +2778,7 @@ yydefault: } case 35: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:702 +// line internal/php5/php5.y:697 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2807,47 +2802,60 @@ yydefault: } case 36: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:727 +// line internal/php5/php5.y:722 { - name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} - constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[5].node} constList := yyDollar[1].node.(*ast.StmtConstList) - lastConst := lastNode(constList.Consts) - constList.Consts = append(constList.Consts, constant) + constList.Node.Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[5].node) + lastNode(constList.Consts).(*ast.StmtConstant).CommaTkn = yyDollar[2].token + constList.Consts = append(constList.Consts, &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + Value: yyDollar[3].token.Value, + }, + EqualTkn: yyDollar[4].token, + Expr: yyDollar[5].node, + }) + yyVAL.node = yyDollar[1].node - // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) - constant.GetNode().Position = position.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node) - yyVAL.node.GetNode().Position = position.NewNodeNodeListPosition(yyDollar[1].node, constList.Consts) - - // save comments - yylex.(*Parser).setFreeFloating(lastConst, token.End, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Start, yyDollar[3].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Name, yyDollar[4].token.SkippedTokens) + yylex.(*Parser).setFreeFloating(lastNode(yyVAL.node.(*ast.StmtConstList).Consts).(*ast.StmtConstant).Name, token.Start, yyDollar[3].token.SkippedTokens) } case 37: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:746 +// line internal/php5/php5.y:745 { - name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} - constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[4].node} - constList := []ast.Vertex{constant} - yyVAL.node = &ast.StmtConstList{ast.Node{}, constList} + yyVAL.node = &ast.StmtConstList{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node), + }, + ConstTkn: yyDollar[1].token, + Consts: []ast.Vertex{ + &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[2].token, yyDollar[4].node), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + Value: yyDollar[2].token.Value, + }, + EqualTkn: yyDollar[3].token, + Expr: yyDollar[4].node, + }, + }, + } - // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) - constant.GetNode().Position = position.NewTokenNodePosition(yyDollar[2].token, yyDollar[4].node) - yyVAL.node.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, constList) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Start, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Name, yyDollar[3].token.SkippedTokens) + yylex.(*Parser).setFreeFloating(lastNode(yyVAL.node.(*ast.StmtConstList).Consts).(*ast.StmtConstant).Name, token.Start, yyDollar[2].token.SkippedTokens) } case 38: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:766 +// line internal/php5/php5.y:774 { if inlineHtmlNode, ok := yyDollar[2].node.(*ast.StmtInlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) @@ -2860,38 +2868,38 @@ yydefault: } case 39: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:777 +// line internal/php5/php5.y:785 { yyVAL.list = []ast.Vertex{} } case 40: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:785 +// line internal/php5/php5.y:793 { // error yyVAL.node = nil } case 41: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:790 +// line internal/php5/php5.y:798 { yyVAL.node = yyDollar[1].node } case 42: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:794 +// line internal/php5/php5.y:802 { yyVAL.node = yyDollar[1].node } case 43: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:798 +// line internal/php5/php5.y:806 { yyVAL.node = yyDollar[1].node } case 44: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:802 +// line internal/php5/php5.y:810 { yyVAL.node = &ast.StmtHaltCompiler{ Node: ast.Node{ @@ -2905,13 +2913,13 @@ yydefault: } case 45: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:818 +// line internal/php5/php5.y:826 { yyVAL.node = yyDollar[1].node } case 46: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:822 +// line internal/php5/php5.y:830 { label := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtLabel{ast.Node{}, label} @@ -2926,7 +2934,7 @@ yydefault: } case 47: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:838 +// line internal/php5/php5.y:846 { yyVAL.node = &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} @@ -2939,7 +2947,7 @@ yydefault: } case 48: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:849 +// line internal/php5/php5.y:857 { yyVAL.node = &ast.StmtIf{ast.Node{}, yyDollar[2].node, yyDollar[3].node, yyDollar[4].list, yyDollar[5].node} @@ -2957,7 +2965,7 @@ yydefault: } case 49: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:865 +// line internal/php5/php5.y:873 { stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[4].list} stmtsBrackets := &ast.ParserBrackets{ast.Node{}, stmts} @@ -2982,7 +2990,7 @@ yydefault: } case 50: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:888 +// line internal/php5/php5.y:896 { switch n := yyDollar[3].node.(type) { case *ast.StmtWhile: @@ -3001,7 +3009,7 @@ yydefault: } case 51: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:905 +// line internal/php5/php5.y:913 { yyVAL.node = &ast.StmtDo{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -3016,7 +3024,7 @@ yydefault: } case 52: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php5/php5.y:918 +// line internal/php5/php5.y:926 { switch n := yyDollar[9].node.(type) { case *ast.StmtFor: @@ -3043,7 +3051,7 @@ yydefault: } case 53: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:943 +// line internal/php5/php5.y:951 { switch n := yyDollar[3].node.(type) { case *ast.StmtSwitch: @@ -3064,7 +3072,7 @@ yydefault: } case 54: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:962 +// line internal/php5/php5.y:970 { yyVAL.node = &ast.StmtBreak{ast.Node{}, nil} @@ -3078,7 +3086,7 @@ yydefault: } case 55: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:974 +// line internal/php5/php5.y:982 { yyVAL.node = &ast.StmtBreak{ast.Node{}, yyDollar[2].node} @@ -3092,7 +3100,7 @@ yydefault: } case 56: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:986 +// line internal/php5/php5.y:994 { yyVAL.node = &ast.StmtContinue{ast.Node{}, nil} @@ -3106,7 +3114,7 @@ yydefault: } case 57: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:998 +// line internal/php5/php5.y:1006 { yyVAL.node = &ast.StmtContinue{ast.Node{}, yyDollar[2].node} @@ -3120,7 +3128,7 @@ yydefault: } case 58: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1010 +// line internal/php5/php5.y:1018 { yyVAL.node = &ast.StmtReturn{ast.Node{}, nil} @@ -3134,7 +3142,7 @@ yydefault: } case 59: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1022 +// line internal/php5/php5.y:1030 { yyVAL.node = &ast.StmtReturn{ast.Node{}, yyDollar[2].node} @@ -3148,7 +3156,7 @@ yydefault: } case 60: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1034 +// line internal/php5/php5.y:1042 { yyVAL.node = &ast.StmtReturn{ast.Node{}, yyDollar[2].node} @@ -3162,7 +3170,7 @@ yydefault: } case 61: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1046 +// line internal/php5/php5.y:1054 { yyVAL.node = &ast.StmtExpression{ast.Node{}, yyDollar[1].node} @@ -3176,7 +3184,7 @@ yydefault: } case 62: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1058 +// line internal/php5/php5.y:1066 { yyVAL.node = &ast.StmtGlobal{ast.Node{}, yyDollar[2].list} @@ -3190,7 +3198,7 @@ yydefault: } case 63: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1070 +// line internal/php5/php5.y:1078 { yyVAL.node = &ast.StmtStatic{ast.Node{}, yyDollar[2].list} @@ -3204,7 +3212,7 @@ yydefault: } case 64: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1082 +// line internal/php5/php5.y:1090 { yyVAL.node = &ast.StmtEcho{ast.Node{}, yyDollar[2].list} @@ -3219,7 +3227,7 @@ yydefault: } case 65: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1095 +// line internal/php5/php5.y:1103 { yyVAL.node = &ast.StmtInlineHtml{ast.Node{}, yyDollar[1].token.Value} @@ -3231,7 +3239,7 @@ yydefault: } case 66: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1105 +// line internal/php5/php5.y:1113 { yyVAL.node = &ast.StmtExpression{ast.Node{}, yyDollar[1].node} @@ -3245,7 +3253,7 @@ yydefault: } case 67: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1117 +// line internal/php5/php5.y:1125 { yyVAL.node = &ast.StmtUnset{ast.Node{}, yyDollar[3].list} @@ -3261,7 +3269,7 @@ yydefault: } case 68: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:1131 +// line internal/php5/php5.y:1139 { if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { @@ -3302,7 +3310,7 @@ yydefault: } case 69: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:1169 +// line internal/php5/php5.y:1177 { if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { @@ -3343,7 +3351,7 @@ yydefault: } case 70: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1207 +// line internal/php5/php5.y:1215 { yyVAL.node = yyDollar[5].node yyVAL.node.(*ast.StmtDeclare).Consts = yyDollar[3].list @@ -3358,7 +3366,7 @@ yydefault: } case 71: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1220 +// line internal/php5/php5.y:1228 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -3371,7 +3379,7 @@ yydefault: } case 72: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:1231 +// line internal/php5/php5.y:1239 { yyVAL.node = &ast.StmtTry{ast.Node{}, yyDollar[3].list, yyDollar[5].list, yyDollar[6].node} @@ -3389,7 +3397,7 @@ yydefault: } case 73: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1247 +// line internal/php5/php5.y:1255 { yyVAL.node = &ast.StmtThrow{ast.Node{}, yyDollar[2].node} @@ -3403,7 +3411,7 @@ yydefault: } case 74: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1259 +// line internal/php5/php5.y:1267 { label := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.StmtGoto{ast.Node{}, label} @@ -3420,13 +3428,13 @@ yydefault: } case 75: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1277 +// line internal/php5/php5.y:1285 { yyVAL.list = []ast.Vertex{} } case 76: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php5/php5.y:1281 +// line internal/php5/php5.y:1289 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -3448,13 +3456,13 @@ yydefault: } case 77: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1304 +// line internal/php5/php5.y:1312 { yyVAL.node = nil } case 78: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1308 +// line internal/php5/php5.y:1316 { yyVAL.node = &ast.StmtFinally{ast.Node{}, yyDollar[3].list} @@ -3468,31 +3476,31 @@ yydefault: } case 79: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1323 +// line internal/php5/php5.y:1331 { yyVAL.list = yyDollar[1].list } case 80: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1327 +// line internal/php5/php5.y:1335 { yyVAL.list = []ast.Vertex{} } case 81: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1334 +// line internal/php5/php5.y:1342 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 82: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1338 +// line internal/php5/php5.y:1346 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 83: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:1345 +// line internal/php5/php5.y:1353 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -3513,13 +3521,13 @@ yydefault: } case 84: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1367 +// line internal/php5/php5.y:1375 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 85: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1371 +// line internal/php5/php5.y:1379 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3528,49 +3536,49 @@ yydefault: } case 86: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1381 +// line internal/php5/php5.y:1389 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1388 +// line internal/php5/php5.y:1396 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1395 +// line internal/php5/php5.y:1403 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1402 +// line internal/php5/php5.y:1410 { yyVAL.token = nil } case 90: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1406 +// line internal/php5/php5.y:1414 { yyVAL.token = yyDollar[1].token } case 91: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1413 +// line internal/php5/php5.y:1421 { yyVAL.token = nil } case 92: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1417 +// line internal/php5/php5.y:1425 { yyVAL.token = yyDollar[1].token } case 93: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php5/php5.y:1424 +// line internal/php5/php5.y:1432 { name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtFunction{ast.Node{}, yyDollar[2].token != nil, name, yyDollar[5].list, nil, yyDollar[8].list} @@ -3594,7 +3602,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-7 : yypt+1] -// line internal/php5/php5.y:1449 +// line internal/php5/php5.y:1457 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} switch n := yyDollar[1].node.(type) { @@ -3622,7 +3630,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:1475 +// line internal/php5/php5.y:1483 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.StmtInterface{ast.Node{}, name, yyDollar[3].InterfaceExtends, yyDollar[5].list} @@ -3639,7 +3647,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1494 +// line internal/php5/php5.y:1502 { yyVAL.node = &ast.StmtClass{ast.Node{}, nil, nil, nil, nil, nil, nil} @@ -3651,7 +3659,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1504 +// line internal/php5/php5.y:1512 { classModifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil} @@ -3666,7 +3674,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1517 +// line internal/php5/php5.y:1525 { yyVAL.node = &ast.StmtTrait{ast.Node{}, nil, nil} @@ -3678,7 +3686,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1527 +// line internal/php5/php5.y:1535 { classModifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil} @@ -3693,13 +3701,13 @@ yydefault: } case 100: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1543 +// line internal/php5/php5.y:1551 { yyVAL.ClassExtends = nil } case 101: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1547 +// line internal/php5/php5.y:1555 { yyVAL.ClassExtends = &ast.StmtClassExtends{ast.Node{}, yyDollar[2].node} @@ -3711,19 +3719,19 @@ yydefault: } case 102: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1560 +// line internal/php5/php5.y:1568 { yyVAL.token = yyDollar[1].token } case 103: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1567 +// line internal/php5/php5.y:1575 { yyVAL.InterfaceExtends = nil } case 104: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1571 +// line internal/php5/php5.y:1579 { yyVAL.InterfaceExtends = &ast.StmtInterfaceExtends{ast.Node{}, yyDollar[2].list} @@ -3735,13 +3743,13 @@ yydefault: } case 105: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1584 +// line internal/php5/php5.y:1592 { yyVAL.ClassImplements = nil } case 106: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1588 +// line internal/php5/php5.y:1596 { yyVAL.ClassImplements = &ast.StmtClassImplements{ast.Node{}, yyDollar[2].list} @@ -3753,13 +3761,13 @@ yydefault: } case 107: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1601 +// line internal/php5/php5.y:1609 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 108: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1605 +// line internal/php5/php5.y:1613 { switch n := lastNode(yyDollar[1].list).(type) { case *ast.NameName: @@ -3773,13 +3781,13 @@ yydefault: } case 109: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1617 +// line internal/php5/php5.y:1625 { yyVAL.node = nil } case 110: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1621 +// line internal/php5/php5.y:1629 { yyVAL.node = yyDollar[2].node @@ -3788,13 +3796,13 @@ yydefault: } case 111: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1631 +// line internal/php5/php5.y:1639 { yyVAL.node = yyDollar[1].node } case 112: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1635 +// line internal/php5/php5.y:1643 { yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node} @@ -3806,7 +3814,7 @@ yydefault: } case 113: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1645 +// line internal/php5/php5.y:1653 { yyVAL.node = &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -3820,7 +3828,7 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1660 +// line internal/php5/php5.y:1668 { yyVAL.node = &ast.StmtFor{ast.Node{}, nil, nil, nil, yyDollar[1].node} @@ -3829,7 +3837,7 @@ yydefault: } case 115: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1667 +// line internal/php5/php5.y:1675 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltFor{ast.Node{}, nil, nil, nil, stmtList} @@ -3846,7 +3854,7 @@ yydefault: } case 116: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1685 +// line internal/php5/php5.y:1693 { yyVAL.node = &ast.StmtForeach{ast.Node{}, nil, nil, nil, yyDollar[1].node} @@ -3855,7 +3863,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1692 +// line internal/php5/php5.y:1700 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltForeach{ast.Node{}, nil, nil, nil, stmtList} @@ -3872,7 +3880,7 @@ yydefault: } case 118: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1711 +// line internal/php5/php5.y:1719 { yyVAL.node = &ast.StmtDeclare{ast.Node{}, false, nil, yyDollar[1].node} @@ -3881,7 +3889,7 @@ yydefault: } case 119: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1718 +// line internal/php5/php5.y:1726 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtDeclare{ast.Node{}, true, nil, stmtList} @@ -3898,40 +3906,50 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1737 +// line internal/php5/php5.y:1745 { - name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[3].node} - yyVAL.list = []ast.Vertex{constant} + yyVAL.list = []ast.Vertex{ + &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + Value: yyDollar[1].token.Value, + }, + EqualTkn: yyDollar[2].token, + Expr: yyDollar[3].node, + }, + } - // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - constant.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node) - - // save comments - yylex.(*Parser).setFreeFloating(constant, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Name, yyDollar[2].token.SkippedTokens) + yylex.(*Parser).setFreeFloating(lastNode(yyVAL.list).(*ast.StmtConstant).Name, token.Start, yyDollar[1].token.SkippedTokens) } case 121: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1751 +// line internal/php5/php5.y:1765 { - name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} - constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[5].node} - yyVAL.list = append(yyDollar[1].list, constant) + lastNode(yyDollar[1].list).(*ast.StmtConstant).CommaTkn = yyDollar[2].token + yyVAL.list = append(yyDollar[1].list, &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + Value: yyDollar[3].token.Value, + }, + EqualTkn: yyDollar[4].token, + Expr: yyDollar[5].node, + }) - // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) - constant.GetNode().Position = position.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node) - - // save comments - yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Start, yyDollar[3].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Name, yyDollar[4].token.SkippedTokens) + yylex.(*Parser).setFreeFloating(lastNode(yyVAL.list).(*ast.StmtConstant).Name, token.Start, yyDollar[3].token.SkippedTokens) } case 122: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1770 +// line internal/php5/php5.y:1788 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList} @@ -3946,7 +3964,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1783 +// line internal/php5/php5.y:1801 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList} @@ -3962,7 +3980,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1797 +// line internal/php5/php5.y:1815 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltSwitch{ast.Node{}, nil, caseList} @@ -3979,7 +3997,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1812 +// line internal/php5/php5.y:1830 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list} @@ -3998,13 +4016,13 @@ yydefault: } case 126: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1833 +// line internal/php5/php5.y:1851 { yyVAL.list = []ast.Vertex{} } case 127: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1837 +// line internal/php5/php5.y:1855 { _case := &ast.StmtCase{ast.Node{}, yyDollar[3].node, yyDollar[5].list} yyVAL.list = append(yyDollar[1].list, _case) @@ -4019,7 +4037,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1850 +// line internal/php5/php5.y:1868 { _default := &ast.StmtDefault{ast.Node{}, yyDollar[4].list} yyVAL.list = append(yyDollar[1].list, _default) @@ -4034,19 +4052,19 @@ yydefault: } case 129: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1867 +// line internal/php5/php5.y:1885 { yyVAL.token = yyDollar[1].token } case 130: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1871 +// line internal/php5/php5.y:1889 { yyVAL.token = yyDollar[1].token } case 131: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1879 +// line internal/php5/php5.y:1897 { yyVAL.node = &ast.StmtWhile{ast.Node{}, nil, yyDollar[1].node} @@ -4055,7 +4073,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1886 +// line internal/php5/php5.y:1904 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltWhile{ast.Node{}, nil, stmtList} @@ -4072,13 +4090,13 @@ yydefault: } case 133: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1906 +// line internal/php5/php5.y:1924 { yyVAL.list = nil } case 134: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:1910 +// line internal/php5/php5.y:1928 { _elseIf := &ast.StmtElseIf{ast.Node{}, yyDollar[3].node, yyDollar[4].node} yyVAL.list = append(yyDollar[1].list, _elseIf) @@ -4091,13 +4109,13 @@ yydefault: } case 135: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1925 +// line internal/php5/php5.y:1943 { yyVAL.list = nil } case 136: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:1929 +// line internal/php5/php5.y:1947 { stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[5].list} stmtsBrackets := &ast.ParserBrackets{ast.Node{}, stmts} @@ -4115,13 +4133,13 @@ yydefault: } case 137: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1949 +// line internal/php5/php5.y:1967 { yyVAL.node = nil } case 138: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:1953 +// line internal/php5/php5.y:1971 { yyVAL.node = &ast.StmtElse{ast.Node{}, yyDollar[2].node} @@ -4133,13 +4151,13 @@ yydefault: } case 139: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1967 +// line internal/php5/php5.y:1985 { yyVAL.node = nil } case 140: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:1971 +// line internal/php5/php5.y:1989 { stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[3].list} stmtsBrackets := &ast.ParserBrackets{ast.Node{}, stmts} @@ -4156,25 +4174,25 @@ yydefault: } case 141: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:1990 +// line internal/php5/php5.y:2008 { yyVAL.list = yyDollar[1].list } case 142: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:1994 +// line internal/php5/php5.y:2012 { yyVAL.list = nil } case 143: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2001 +// line internal/php5/php5.y:2019 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 144: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2005 +// line internal/php5/php5.y:2023 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4183,7 +4201,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:2015 +// line internal/php5/php5.y:2033 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) @@ -4219,7 +4237,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:2049 +// line internal/php5/php5.y:2067 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) @@ -4256,13 +4274,13 @@ yydefault: } case 147: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2088 +// line internal/php5/php5.y:2106 { yyVAL.node = nil } case 148: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2092 +// line internal/php5/php5.y:2110 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4274,7 +4292,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2102 +// line internal/php5/php5.y:2120 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4286,13 +4304,13 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2112 +// line internal/php5/php5.y:2130 { yyVAL.node = yyDollar[1].node } case 151: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2120 +// line internal/php5/php5.y:2138 { yyVAL.node = &ast.ArgumentList{ast.Node{}, nil} @@ -4305,7 +4323,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2131 +// line internal/php5/php5.y:2149 { yyVAL.node = &ast.ArgumentList{ast.Node{}, yyDollar[2].list} @@ -4318,7 +4336,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2142 +// line internal/php5/php5.y:2160 { arg := &ast.Argument{ast.Node{}, false, false, yyDollar[2].node} yyVAL.node = &ast.ArgumentList{ast.Node{}, []ast.Vertex{arg}} @@ -4333,13 +4351,13 @@ yydefault: } case 154: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2159 +// line internal/php5/php5.y:2177 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 155: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2163 +// line internal/php5/php5.y:2181 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4348,7 +4366,7 @@ yydefault: } case 156: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2173 +// line internal/php5/php5.y:2191 { yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node} @@ -4360,7 +4378,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2183 +// line internal/php5/php5.y:2201 { yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node} @@ -4372,7 +4390,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2193 +// line internal/php5/php5.y:2211 { yyVAL.node = &ast.Argument{ast.Node{}, false, true, yyDollar[2].node} @@ -4384,7 +4402,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2203 +// line internal/php5/php5.y:2221 { yyVAL.node = &ast.Argument{ast.Node{}, true, false, yyDollar[2].node} @@ -4396,7 +4414,7 @@ yydefault: } case 160: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2216 +// line internal/php5/php5.y:2234 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4405,13 +4423,13 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2223 +// line internal/php5/php5.y:2241 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 162: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2231 +// line internal/php5/php5.y:2249 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -4425,7 +4443,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2243 +// line internal/php5/php5.y:2261 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -4437,7 +4455,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:2253 +// line internal/php5/php5.y:2271 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -4451,7 +4469,7 @@ yydefault: } case 165: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2269 +// line internal/php5/php5.y:2287 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4469,7 +4487,7 @@ yydefault: } case 166: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:2285 +// line internal/php5/php5.y:2303 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4488,7 +4506,7 @@ yydefault: } case 167: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2302 +// line internal/php5/php5.y:2320 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4505,7 +4523,7 @@ yydefault: } case 168: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2317 +// line internal/php5/php5.y:2335 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4523,19 +4541,19 @@ yydefault: } case 169: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2337 +// line internal/php5/php5.y:2355 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 170: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2341 +// line internal/php5/php5.y:2359 { yyVAL.list = []ast.Vertex{} } case 171: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2349 +// line internal/php5/php5.y:2367 { yyVAL.node = &ast.StmtPropertyList{ast.Node{}, yyDollar[1].list, nil, yyDollar[2].list} @@ -4549,26 +4567,21 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2361 +// line internal/php5/php5.y:2379 { + yyDollar[1].node.(*ast.StmtClassConstList).SemiColonTkn = yyDollar[2].token + yyDollar[1].node.(*ast.StmtClassConstList).Node.Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token) yyVAL.node = yyDollar[1].node - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.ConstList, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setToken(yyVAL.node, token.SemiColon, yyDollar[2].token.SkippedTokens) } case 173: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2372 +// line internal/php5/php5.y:2385 { yyVAL.node = yyDollar[1].node } case 174: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php5/php5.y:2376 +// line internal/php5/php5.y:2389 { name := &ast.Identifier{ast.Node{}, 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} @@ -4599,7 +4612,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2408 +// line internal/php5/php5.y:2421 { yyVAL.node = &ast.StmtTraitUse{ast.Node{}, yyDollar[2].list, yyDollar[3].node} @@ -4611,13 +4624,13 @@ yydefault: } case 176: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2421 +// line internal/php5/php5.y:2434 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 177: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2425 +// line internal/php5/php5.y:2438 { switch n := lastNode(yyDollar[1].list).(type) { case *ast.NameName: @@ -4631,7 +4644,7 @@ yydefault: } case 178: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2437 +// line internal/php5/php5.y:2450 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -4643,7 +4656,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2447 +// line internal/php5/php5.y:2460 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, yyDollar[2].list} @@ -4655,31 +4668,31 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2460 +// line internal/php5/php5.y:2473 { yyVAL.list = nil } case 181: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2464 +// line internal/php5/php5.y:2477 { yyVAL.list = yyDollar[1].list } case 182: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2471 +// line internal/php5/php5.y:2484 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 183: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2475 +// line internal/php5/php5.y:2488 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 184: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2482 +// line internal/php5/php5.y:2495 { yyVAL.node = yyDollar[1].node @@ -4689,7 +4702,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2490 +// line internal/php5/php5.y:2503 { yyVAL.node = yyDollar[1].node @@ -4699,7 +4712,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2501 +// line internal/php5/php5.y:2514 { yyVAL.node = &ast.StmtTraitUsePrecedence{ast.Node{}, yyDollar[1].node, yyDollar[3].list} @@ -4712,13 +4725,13 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2515 +// line internal/php5/php5.y:2528 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 188: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2519 +// line internal/php5/php5.y:2532 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4727,7 +4740,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2529 +// line internal/php5/php5.y:2542 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, nil, name} @@ -4741,13 +4754,13 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2541 +// line internal/php5/php5.y:2554 { yyVAL.node = yyDollar[1].node } case 191: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2548 +// line internal/php5/php5.y:2561 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, yyDollar[1].node, target} @@ -4763,7 +4776,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:2565 +// line internal/php5/php5.y:2578 { alias := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, alias} @@ -4779,7 +4792,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2579 +// line internal/php5/php5.y:2592 { yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, nil} @@ -4792,19 +4805,19 @@ yydefault: } case 194: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2593 +// line internal/php5/php5.y:2606 { yyVAL.node = nil } case 195: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2597 +// line internal/php5/php5.y:2610 { yyVAL.node = yyDollar[1].node } case 196: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2604 +// line internal/php5/php5.y:2617 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -4817,7 +4830,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2615 +// line internal/php5/php5.y:2628 { yyVAL.node = &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} @@ -4830,13 +4843,13 @@ yydefault: } case 198: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2629 +// line internal/php5/php5.y:2642 { yyVAL.list = yyDollar[1].list } case 199: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2633 +// line internal/php5/php5.y:2646 { modifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{modifier} @@ -4849,31 +4862,31 @@ yydefault: } case 200: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2647 +// line internal/php5/php5.y:2660 { yyVAL.list = nil } case 201: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2651 +// line internal/php5/php5.y:2664 { yyVAL.list = yyDollar[1].list } case 202: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2658 +// line internal/php5/php5.y:2671 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 203: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2662 +// line internal/php5/php5.y:2675 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 204: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2669 +// line internal/php5/php5.y:2682 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4885,7 +4898,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2679 +// line internal/php5/php5.y:2692 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4897,7 +4910,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2689 +// line internal/php5/php5.y:2702 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4909,7 +4922,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2699 +// line internal/php5/php5.y:2712 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4921,7 +4934,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2709 +// line internal/php5/php5.y:2722 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4933,7 +4946,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2719 +// line internal/php5/php5.y:2732 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4945,7 +4958,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2732 +// line internal/php5/php5.y:2745 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4963,7 +4976,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:2748 +// line internal/php5/php5.y:2761 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4982,7 +4995,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2765 +// line internal/php5/php5.y:2778 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4999,7 +5012,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2780 +// line internal/php5/php5.y:2793 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -5017,46 +5030,60 @@ yydefault: } case 214: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:2799 +// line internal/php5/php5.y:2812 { - name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} - constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[5].node} constList := yyDollar[1].node.(*ast.StmtClassConstList) - lastConst := lastNode(constList.Consts) - constList.Consts = append(constList.Consts, constant) + constList.Node.Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[5].node) + lastNode(yyVAL.node.(*ast.StmtClassConstList).Consts).(*ast.StmtConstant).CommaTkn = yyDollar[2].token + constList.Consts = append(constList.Consts, &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + Value: yyDollar[3].token.Value, + }, + EqualTkn: yyDollar[4].token, + Expr: yyDollar[5].node, + }) + yyVAL.node = yyDollar[1].node - // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) - constant.GetNode().Position = position.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node) - yyDollar[1].node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[5].node) - - // save comments - yylex.(*Parser).setFreeFloating(lastConst, token.End, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Start, yyDollar[3].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Name, yyDollar[4].token.SkippedTokens) + yylex.(*Parser).setFreeFloating(lastNode(yyVAL.node.(*ast.StmtClassConstList).Consts).(*ast.StmtConstant).Name, token.Start, yyDollar[3].token.SkippedTokens) } case 215: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:2818 +// line internal/php5/php5.y:2835 { - name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} - constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[4].node} - yyVAL.node = &ast.StmtClassConstList{ast.Node{}, nil, []ast.Vertex{constant}} + yyVAL.node = &ast.StmtClassConstList{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node), + }, + ConstTkn: yyDollar[1].token, + Consts: []ast.Vertex{ + &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[2].token, yyDollar[4].node), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + Value: yyDollar[2].token.Value, + }, + EqualTkn: yyDollar[3].token, + Expr: yyDollar[4].node, + }, + }, + } - // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) - constant.GetNode().Position = position.NewTokenNodePosition(yyDollar[2].token, yyDollar[4].node) - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Start, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Name, yyDollar[3].token.SkippedTokens) + yylex.(*Parser).setFreeFloating(lastNode(yyVAL.node.(*ast.StmtClassConstList).Consts).(*ast.StmtConstant).Name, token.Start, yyDollar[2].token.SkippedTokens) } case 216: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2837 +// line internal/php5/php5.y:2864 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5065,25 +5092,25 @@ yydefault: } case 217: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2844 +// line internal/php5/php5.y:2871 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 218: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2852 +// line internal/php5/php5.y:2879 { yyVAL.list = nil } case 219: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2856 +// line internal/php5/php5.y:2883 { yyVAL.list = yyDollar[1].list } case 220: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2863 +// line internal/php5/php5.y:2890 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5092,25 +5119,25 @@ yydefault: } case 221: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2870 +// line internal/php5/php5.y:2897 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 222: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2877 +// line internal/php5/php5.y:2904 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 223: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2881 +// line internal/php5/php5.y:2908 { yyVAL.list = yyDollar[1].list } case 224: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:2888 +// line internal/php5/php5.y:2915 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -5124,7 +5151,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2900 +// line internal/php5/php5.y:2927 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[2].node} yyVAL.list = []ast.Vertex{fetch} @@ -5138,37 +5165,37 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:2915 +// line internal/php5/php5.y:2942 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 227: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2919 +// line internal/php5/php5.y:2946 { yyVAL.list = yyDollar[1].list } case 228: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2923 +// line internal/php5/php5.y:2950 { yyVAL.list = yyDollar[1].list } case 229: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:2930 +// line internal/php5/php5.y:2957 { yyVAL.list = nil } case 230: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:2934 +// line internal/php5/php5.y:2961 { yyVAL.list = yyDollar[1].list } case 231: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2941 +// line internal/php5/php5.y:2968 { if yyDollar[3].node != nil { @@ -5184,7 +5211,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:2958 +// line internal/php5/php5.y:2985 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, listNode, yyDollar[6].node} @@ -5201,7 +5228,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:2973 +// line internal/php5/php5.y:3000 { yyVAL.node = &ast.ExprAssign{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5214,7 +5241,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:2984 +// line internal/php5/php5.y:3011 { yyVAL.node = &ast.ExprAssignReference{ast.Node{}, yyDollar[1].node, yyDollar[4].node} @@ -5228,7 +5255,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:2996 +// line internal/php5/php5.y:3023 { var _new *ast.ExprNew @@ -5255,7 +5282,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3021 +// line internal/php5/php5.y:3048 { yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node} @@ -5267,7 +5294,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3031 +// line internal/php5/php5.y:3058 { yyVAL.node = &ast.ExprAssignPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5279,7 +5306,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3041 +// line internal/php5/php5.y:3068 { yyVAL.node = &ast.ExprAssignMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5292,7 +5319,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3052 +// line internal/php5/php5.y:3079 { yyVAL.node = &ast.ExprAssignMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5305,7 +5332,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3063 +// line internal/php5/php5.y:3090 { yyVAL.node = &ast.ExprAssignPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5318,7 +5345,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3074 +// line internal/php5/php5.y:3101 { yyVAL.node = &ast.ExprAssignDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5331,7 +5358,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3085 +// line internal/php5/php5.y:3112 { yyVAL.node = &ast.ExprAssignConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5344,7 +5371,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3096 +// line internal/php5/php5.y:3123 { yyVAL.node = &ast.ExprAssignMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5357,7 +5384,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3107 +// line internal/php5/php5.y:3134 { yyVAL.node = &ast.ExprAssignBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5370,7 +5397,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3118 +// line internal/php5/php5.y:3145 { yyVAL.node = &ast.ExprAssignBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5383,7 +5410,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3129 +// line internal/php5/php5.y:3156 { yyVAL.node = &ast.ExprAssignBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5396,7 +5423,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3140 +// line internal/php5/php5.y:3167 { yyVAL.node = &ast.ExprAssignShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5409,7 +5436,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3151 +// line internal/php5/php5.y:3178 { yyVAL.node = &ast.ExprAssignShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5422,7 +5449,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3162 +// line internal/php5/php5.y:3189 { yyVAL.node = &ast.ExprPostInc{ast.Node{}, yyDollar[1].node} @@ -5435,7 +5462,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3173 +// line internal/php5/php5.y:3200 { yyVAL.node = &ast.ExprPreInc{ast.Node{}, yyDollar[2].node} @@ -5447,7 +5474,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3183 +// line internal/php5/php5.y:3210 { yyVAL.node = &ast.ExprPostDec{ast.Node{}, yyDollar[1].node} @@ -5460,7 +5487,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3194 +// line internal/php5/php5.y:3221 { yyVAL.node = &ast.ExprPreDec{ast.Node{}, yyDollar[2].node} @@ -5472,7 +5499,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3204 +// line internal/php5/php5.y:3231 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5485,7 +5512,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3215 +// line internal/php5/php5.y:3242 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5498,7 +5525,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3226 +// line internal/php5/php5.y:3253 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5511,7 +5538,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3237 +// line internal/php5/php5.y:3264 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5524,7 +5551,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3248 +// line internal/php5/php5.y:3275 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5537,7 +5564,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3259 +// line internal/php5/php5.y:3286 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5550,7 +5577,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3270 +// line internal/php5/php5.y:3297 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5563,7 +5590,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3281 +// line internal/php5/php5.y:3308 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5576,7 +5603,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3292 +// line internal/php5/php5.y:3319 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5589,7 +5616,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3303 +// line internal/php5/php5.y:3330 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5602,7 +5629,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3314 +// line internal/php5/php5.y:3341 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5615,7 +5642,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3325 +// line internal/php5/php5.y:3352 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5628,7 +5655,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3336 +// line internal/php5/php5.y:3363 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5641,7 +5668,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3347 +// line internal/php5/php5.y:3374 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5654,7 +5681,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3358 +// line internal/php5/php5.y:3385 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5667,7 +5694,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3369 +// line internal/php5/php5.y:3396 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5680,7 +5707,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3380 +// line internal/php5/php5.y:3407 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5693,7 +5720,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3391 +// line internal/php5/php5.y:3418 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -5705,7 +5732,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3401 +// line internal/php5/php5.y:3428 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -5717,7 +5744,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3411 +// line internal/php5/php5.y:3438 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -5729,7 +5756,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3421 +// line internal/php5/php5.y:3448 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -5741,7 +5768,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3431 +// line internal/php5/php5.y:3458 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5754,7 +5781,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3442 +// line internal/php5/php5.y:3469 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5767,7 +5794,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3453 +// line internal/php5/php5.y:3480 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5780,7 +5807,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3464 +// line internal/php5/php5.y:3491 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5794,7 +5821,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3476 +// line internal/php5/php5.y:3503 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5807,7 +5834,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3487 +// line internal/php5/php5.y:3514 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5820,7 +5847,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3498 +// line internal/php5/php5.y:3525 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5833,7 +5860,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3509 +// line internal/php5/php5.y:3536 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5846,7 +5873,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3520 +// line internal/php5/php5.y:3547 { yyVAL.node = &ast.ExprInstanceOf{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5859,19 +5886,19 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3531 +// line internal/php5/php5.y:3558 { yyVAL.node = yyDollar[1].node } case 284: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3535 +// line internal/php5/php5.y:3562 { yyVAL.node = yyDollar[1].node } case 285: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3539 +// line internal/php5/php5.y:3566 { yyVAL.node = yyDollar[2].node @@ -5903,7 +5930,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:3569 +// line internal/php5/php5.y:3596 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -5917,7 +5944,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3581 +// line internal/php5/php5.y:3608 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -5931,13 +5958,13 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3593 +// line internal/php5/php5.y:3620 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3597 +// line internal/php5/php5.y:3624 { yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node} @@ -5950,7 +5977,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3608 +// line internal/php5/php5.y:3635 { yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node} @@ -5963,7 +5990,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3619 +// line internal/php5/php5.y:3646 { yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node} @@ -5976,7 +6003,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3630 +// line internal/php5/php5.y:3657 { yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node} @@ -5989,7 +6016,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3641 +// line internal/php5/php5.y:3668 { yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node} @@ -6002,7 +6029,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3652 +// line internal/php5/php5.y:3679 { yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node} @@ -6015,7 +6042,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3663 +// line internal/php5/php5.y:3690 { yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node} @@ -6028,7 +6055,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3674 +// line internal/php5/php5.y:3701 { yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[2].node} @@ -6048,7 +6075,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3692 +// line internal/php5/php5.y:3719 { yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node} @@ -6060,25 +6087,25 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3702 +// line internal/php5/php5.y:3729 { yyVAL.node = yyDollar[1].node } case 299: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3706 +// line internal/php5/php5.y:3733 { yyVAL.node = yyDollar[1].node } case 300: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3710 +// line internal/php5/php5.y:3737 { yyVAL.node = yyDollar[1].node } case 301: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3714 +// line internal/php5/php5.y:3741 { yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list} @@ -6090,7 +6117,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3724 +// line internal/php5/php5.y:3751 { yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} @@ -6102,7 +6129,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3734 +// line internal/php5/php5.y:3761 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil} @@ -6114,7 +6141,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php5/php5.y:3744 +// line internal/php5/php5.y:3771 { yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[4].list, yyDollar[6].ClosureUse, nil, yyDollar[8].list} @@ -6141,7 +6168,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] -// line internal/php5/php5.y:3768 +// line internal/php5/php5.y:3795 { yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[3].token != nil, true, yyDollar[5].list, yyDollar[7].ClosureUse, nil, yyDollar[9].list} @@ -6169,7 +6196,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3796 +// line internal/php5/php5.y:3823 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6181,7 +6208,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3806 +// line internal/php5/php5.y:3833 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6193,7 +6220,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3816 +// line internal/php5/php5.y:3843 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6206,7 +6233,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3827 +// line internal/php5/php5.y:3854 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6219,7 +6246,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3841 +// line internal/php5/php5.y:3868 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6232,7 +6259,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3852 +// line internal/php5/php5.y:3879 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6245,7 +6272,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3863 +// line internal/php5/php5.y:3890 { str := &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, str, yyDollar[3].node} @@ -6261,7 +6288,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3877 +// line internal/php5/php5.y:3904 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6274,7 +6301,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3891 +// line internal/php5/php5.y:3918 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -6288,7 +6315,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3903 +// line internal/php5/php5.y:3930 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -6301,19 +6328,19 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3917 +// line internal/php5/php5.y:3944 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:3924 +// line internal/php5/php5.y:3951 { yyVAL.ClosureUse = nil } case 318: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3928 +// line internal/php5/php5.y:3955 { yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list} @@ -6327,7 +6354,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:3943 +// line internal/php5/php5.y:3970 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -6343,7 +6370,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:3957 +// line internal/php5/php5.y:3984 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -6362,7 +6389,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:3974 +// line internal/php5/php5.y:4001 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -6377,7 +6404,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:3987 +// line internal/php5/php5.y:4014 { identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -6395,7 +6422,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4006 +// line internal/php5/php5.y:4033 { name := &ast.NameName{ Node: ast.Node{ @@ -6410,7 +6437,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4019 +// line internal/php5/php5.y:4046 { name := &ast.NameRelative{ Node: ast.Node{ @@ -6427,7 +6454,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4034 +// line internal/php5/php5.y:4061 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -6443,7 +6470,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4048 +// line internal/php5/php5.y:4075 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6456,7 +6483,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4059 +// line internal/php5/php5.y:4086 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6469,7 +6496,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4070 +// line internal/php5/php5.y:4097 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6482,7 +6509,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4081 +// line internal/php5/php5.y:4108 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6495,7 +6522,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4092 +// line internal/php5/php5.y:4119 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6507,7 +6534,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4105 +// line internal/php5/php5.y:4132 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -6519,7 +6546,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4115 +// line internal/php5/php5.y:4142 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -6530,7 +6557,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4124 +// line internal/php5/php5.y:4151 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -6543,7 +6570,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4135 +// line internal/php5/php5.y:4162 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -6555,7 +6582,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4148 +// line internal/php5/php5.y:4175 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -6566,7 +6593,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4157 +// line internal/php5/php5.y:4184 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -6579,7 +6606,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4168 +// line internal/php5/php5.y:4195 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -6591,19 +6618,19 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4181 +// line internal/php5/php5.y:4208 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4185 +// line internal/php5/php5.y:4212 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4192 +// line internal/php5/php5.y:4219 { yyVAL.node = yyDollar[1].node @@ -6644,25 +6671,25 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4231 +// line internal/php5/php5.y:4258 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4239 +// line internal/php5/php5.y:4266 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4243 +// line internal/php5/php5.y:4270 { yyVAL.list = []ast.Vertex{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4251 +// line internal/php5/php5.y:4278 { yyVAL.list = yyDollar[2].list @@ -6671,13 +6698,13 @@ yydefault: } case 345: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4261 +// line internal/php5/php5.y:4288 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4265 +// line internal/php5/php5.y:4292 { yyVAL.node = &ast.ParserBrackets{ast.Node{}, nil} @@ -6690,19 +6717,19 @@ yydefault: } case 347: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4276 +// line internal/php5/php5.y:4303 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4283 +// line internal/php5/php5.y:4310 { yyVAL.list = []ast.Vertex{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4287 +// line internal/php5/php5.y:4314 { part := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{part} @@ -6712,25 +6739,25 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4295 +// line internal/php5/php5.y:4322 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4302 +// line internal/php5/php5.y:4329 { yyVAL.node = nil } case 352: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4306 +// line internal/php5/php5.y:4333 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4313 +// line internal/php5/php5.y:4340 { yyVAL.node = &ast.ScalarLnumber{ast.Node{}, yyDollar[1].token.Value} @@ -6742,7 +6769,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4323 +// line internal/php5/php5.y:4350 { yyVAL.node = &ast.ScalarDnumber{ast.Node{}, yyDollar[1].token.Value} @@ -6754,7 +6781,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4333 +// line internal/php5/php5.y:4360 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -6766,7 +6793,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4343 +// line internal/php5/php5.y:4370 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6778,7 +6805,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4353 +// line internal/php5/php5.y:4380 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6790,7 +6817,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4363 +// line internal/php5/php5.y:4390 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6802,7 +6829,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4373 +// line internal/php5/php5.y:4400 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6814,7 +6841,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4383 +// line internal/php5/php5.y:4410 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6826,7 +6853,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4393 +// line internal/php5/php5.y:4420 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6838,7 +6865,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4403 +// line internal/php5/php5.y:4430 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6850,7 +6877,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4413 +// line internal/php5/php5.y:4440 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, []ast.Vertex{encapsed}} @@ -6864,7 +6891,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4425 +// line internal/php5/php5.y:4452 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, nil} @@ -6876,7 +6903,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4438 +// line internal/php5/php5.y:4465 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -6892,25 +6919,25 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4455 +// line internal/php5/php5.y:4482 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4462 +// line internal/php5/php5.y:4489 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4466 +// line internal/php5/php5.y:4493 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4470 +// line internal/php5/php5.y:4497 { name := &ast.NameName{ Node: ast.Node{ @@ -6925,7 +6952,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4483 +// line internal/php5/php5.y:4510 { name := &ast.NameRelative{ Node: ast.Node{ @@ -6942,7 +6969,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4498 +// line internal/php5/php5.y:4525 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -6958,7 +6985,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4512 +// line internal/php5/php5.y:4539 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -6972,7 +6999,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4524 +// line internal/php5/php5.y:4551 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -6985,13 +7012,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4535 +// line internal/php5/php5.y:4562 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4539 +// line internal/php5/php5.y:4566 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7003,13 +7030,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4549 +// line internal/php5/php5.y:4576 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4556 +// line internal/php5/php5.y:4583 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7022,7 +7049,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4567 +// line internal/php5/php5.y:4594 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7035,7 +7062,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4578 +// line internal/php5/php5.y:4605 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7048,7 +7075,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4589 +// line internal/php5/php5.y:4616 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7061,7 +7088,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4600 +// line internal/php5/php5.y:4627 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7074,7 +7101,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4611 +// line internal/php5/php5.y:4638 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7087,7 +7114,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4622 +// line internal/php5/php5.y:4649 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7100,7 +7127,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4633 +// line internal/php5/php5.y:4660 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -7112,7 +7139,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4643 +// line internal/php5/php5.y:4670 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -7124,7 +7151,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4653 +// line internal/php5/php5.y:4680 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7137,7 +7164,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4664 +// line internal/php5/php5.y:4691 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7150,7 +7177,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4675 +// line internal/php5/php5.y:4702 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7163,7 +7190,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4686 +// line internal/php5/php5.y:4713 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7176,7 +7203,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4697 +// line internal/php5/php5.y:4724 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7189,7 +7216,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4708 +// line internal/php5/php5.y:4735 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7202,7 +7229,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4719 +// line internal/php5/php5.y:4746 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7215,7 +7242,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4730 +// line internal/php5/php5.y:4757 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7228,7 +7255,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4741 +// line internal/php5/php5.y:4768 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7241,7 +7268,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4752 +// line internal/php5/php5.y:4779 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7254,7 +7281,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4763 +// line internal/php5/php5.y:4790 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7267,7 +7294,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4774 +// line internal/php5/php5.y:4801 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7280,7 +7307,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4785 +// line internal/php5/php5.y:4812 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7293,7 +7320,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4796 +// line internal/php5/php5.y:4823 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7306,7 +7333,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4807 +// line internal/php5/php5.y:4834 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7320,7 +7347,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4819 +// line internal/php5/php5.y:4846 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7333,7 +7360,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4830 +// line internal/php5/php5.y:4857 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7346,7 +7373,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4841 +// line internal/php5/php5.y:4868 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7359,7 +7386,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4852 +// line internal/php5/php5.y:4879 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7372,7 +7399,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4863 +// line internal/php5/php5.y:4890 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -7386,7 +7413,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:4875 +// line internal/php5/php5.y:4902 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -7400,7 +7427,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4887 +// line internal/php5/php5.y:4914 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -7412,7 +7439,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4897 +// line internal/php5/php5.y:4924 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -7424,7 +7451,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4907 +// line internal/php5/php5.y:4934 { yyVAL.node = yyDollar[2].node @@ -7434,13 +7461,13 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4918 +// line internal/php5/php5.y:4945 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4922 +// line internal/php5/php5.y:4949 { name := &ast.NameName{ Node: ast.Node{ @@ -7455,7 +7482,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4935 +// line internal/php5/php5.y:4962 { name := &ast.NameRelative{ Node: ast.Node{ @@ -7472,7 +7499,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4950 +// line internal/php5/php5.y:4977 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -7488,7 +7515,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4967 +// line internal/php5/php5.y:4994 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -7502,25 +7529,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4979 +// line internal/php5/php5.y:5006 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4983 +// line internal/php5/php5.y:5010 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4987 +// line internal/php5/php5.y:5014 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4991 +// line internal/php5/php5.y:5018 { yyVAL.node = &ast.ScalarEncapsed{ast.Node{}, yyDollar[2].list} @@ -7532,7 +7559,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5001 +// line internal/php5/php5.y:5028 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, yyDollar[2].list} @@ -7544,7 +7571,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5011 +// line internal/php5/php5.y:5038 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7556,13 +7583,13 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5024 +// line internal/php5/php5.y:5051 { yyVAL.list = nil } case 422: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5028 +// line internal/php5/php5.y:5055 { yyVAL.list = yyDollar[1].list @@ -7573,19 +7600,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5040 +// line internal/php5/php5.y:5067 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5044 +// line internal/php5/php5.y:5071 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5051 +// line internal/php5/php5.y:5078 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -7600,7 +7627,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5064 +// line internal/php5/php5.y:5091 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -7614,7 +7641,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5076 +// line internal/php5/php5.y:5103 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -7628,7 +7655,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5088 +// line internal/php5/php5.y:5115 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -7641,19 +7668,19 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5102 +// line internal/php5/php5.y:5129 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5106 +// line internal/php5/php5.y:5133 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5113 +// line internal/php5/php5.y:5140 { yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} @@ -7666,7 +7693,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5124 +// line internal/php5/php5.y:5151 { yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} @@ -7679,25 +7706,25 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5139 +// line internal/php5/php5.y:5166 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5147 +// line internal/php5/php5.y:5174 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5154 +// line internal/php5/php5.y:5181 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5161 +// line internal/php5/php5.y:5188 { yyVAL.node = yyDollar[1].node @@ -7755,25 +7782,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5217 +// line internal/php5/php5.y:5244 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5224 +// line internal/php5/php5.y:5251 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5228 +// line internal/php5/php5.y:5255 { yyVAL.list = []ast.Vertex{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5236 +// line internal/php5/php5.y:5263 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*ast.ExprMethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*ast.ExprPropertyFetch).Property @@ -7787,7 +7814,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5251 +// line internal/php5/php5.y:5278 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -7801,7 +7828,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5263 +// line internal/php5/php5.y:5290 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = []ast.Vertex{yyDollar[1].node, fetch} @@ -7815,7 +7842,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5278 +// line internal/php5/php5.y:5305 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, nil, nil, yyDollar[1].node.(*ast.ArgumentList)} @@ -7824,31 +7851,31 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5288 +// line internal/php5/php5.y:5315 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5292 +// line internal/php5/php5.y:5319 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5296 +// line internal/php5/php5.y:5323 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5303 +// line internal/php5/php5.y:5330 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5307 +// line internal/php5/php5.y:5334 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -7860,7 +7887,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5320 +// line internal/php5/php5.y:5347 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7873,7 +7900,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5331 +// line internal/php5/php5.y:5358 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7886,13 +7913,13 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5345 +// line internal/php5/php5.y:5372 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5352 +// line internal/php5/php5.y:5379 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7905,7 +7932,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5363 +// line internal/php5/php5.y:5390 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7918,31 +7945,31 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5377 +// line internal/php5/php5.y:5404 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5381 +// line internal/php5/php5.y:5408 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5385 +// line internal/php5/php5.y:5412 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5393 +// line internal/php5/php5.y:5420 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5397 +// line internal/php5/php5.y:5424 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -7954,13 +7981,13 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5407 +// line internal/php5/php5.y:5434 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5414 +// line internal/php5/php5.y:5441 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7973,7 +8000,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5425 +// line internal/php5/php5.y:5452 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7986,13 +8013,13 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5436 +// line internal/php5/php5.y:5463 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5444 +// line internal/php5/php5.y:5471 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -8006,7 +8033,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5456 +// line internal/php5/php5.y:5483 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -8020,25 +8047,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5471 +// line internal/php5/php5.y:5498 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5475 +// line internal/php5/php5.y:5502 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5483 +// line internal/php5/php5.y:5510 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5487 +// line internal/php5/php5.y:5514 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8048,7 +8075,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5498 +// line internal/php5/php5.y:5525 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -8062,7 +8089,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5510 +// line internal/php5/php5.y:5537 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -8076,7 +8103,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5522 +// line internal/php5/php5.y:5549 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8086,7 +8113,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5533 +// line internal/php5/php5.y:5560 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -8098,7 +8125,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5543 +// line internal/php5/php5.y:5570 { yyVAL.node = yyDollar[2].node @@ -8111,7 +8138,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5557 +// line internal/php5/php5.y:5584 { n := &ast.ExprVariable{ast.Node{}, nil} yyVAL.simpleIndirectReference = simpleIndirectReference{[]*ast.ExprVariable{n}, n} @@ -8124,7 +8151,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5568 +// line internal/php5/php5.y:5595 { n := &ast.ExprVariable{ast.Node{}, nil} @@ -8141,7 +8168,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5586 +// line internal/php5/php5.y:5613 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}} @@ -8154,7 +8181,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5597 +// line internal/php5/php5.y:5624 { if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil { yyVAL.list = []ast.Vertex{} @@ -8164,7 +8191,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5609 +// line internal/php5/php5.y:5636 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} @@ -8176,7 +8203,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5619 +// line internal/php5/php5.y:5646 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, listNode} @@ -8192,19 +8219,19 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5633 +// line internal/php5/php5.y:5660 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} } case 481: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5641 +// line internal/php5/php5.y:5668 { yyVAL.list = []ast.Vertex{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5645 +// line internal/php5/php5.y:5672 { yyVAL.list = yyDollar[1].list @@ -8219,7 +8246,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5661 +// line internal/php5/php5.y:5688 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8234,7 +8261,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5674 +// line internal/php5/php5.y:5701 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8248,7 +8275,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5686 +// line internal/php5/php5.y:5713 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -8262,7 +8289,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5698 +// line internal/php5/php5.y:5725 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -8275,7 +8302,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:5709 +// line internal/php5/php5.y:5736 { reference := &ast.ExprReference{ast.Node{}, yyDollar[6].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, reference} @@ -8293,7 +8320,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5725 +// line internal/php5/php5.y:5752 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -8309,7 +8336,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5739 +// line internal/php5/php5.y:5766 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference} @@ -8326,7 +8353,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5754 +// line internal/php5/php5.y:5781 { reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -8341,13 +8368,13 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5770 +// line internal/php5/php5.y:5797 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5774 +// line internal/php5/php5.y:5801 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.list = append(yyDollar[1].list, encapsed) @@ -8360,13 +8387,13 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5785 +// line internal/php5/php5.y:5812 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5789 +// line internal/php5/php5.y:5816 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{encapsed, yyDollar[2].node} @@ -8379,7 +8406,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5803 +// line internal/php5/php5.y:5830 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -8393,7 +8420,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5815 +// line internal/php5/php5.y:5842 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -8410,7 +8437,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5830 +// line internal/php5/php5.y:5857 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -8429,7 +8456,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5847 +// line internal/php5/php5.y:5874 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -8444,7 +8471,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5860 +// line internal/php5/php5.y:5887 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, name} @@ -8461,7 +8488,7 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:5875 +// line internal/php5/php5.y:5902 { identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -8480,7 +8507,7 @@ yydefault: } case 501: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5892 +// line internal/php5/php5.y:5919 { yyVAL.node = yyDollar[2].node @@ -8490,7 +8517,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5903 +// line internal/php5/php5.y:5930 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -8502,7 +8529,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5913 +// line internal/php5/php5.y:5940 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -8519,7 +8546,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5928 +// line internal/php5/php5.y:5955 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier} @@ -8533,7 +8560,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5943 +// line internal/php5/php5.y:5970 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -8547,7 +8574,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5955 +// line internal/php5/php5.y:5982 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} yyVAL.node = &ast.ExprEmpty{ast.Node{}, exprBrackets} @@ -8563,7 +8590,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5969 +// line internal/php5/php5.y:5996 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} yyVAL.node = &ast.ExprEmpty{ast.Node{}, exprBrackets} @@ -8579,7 +8606,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5983 +// line internal/php5/php5.y:6010 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -8591,7 +8618,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5993 +// line internal/php5/php5.y:6020 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -8603,7 +8630,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6003 +// line internal/php5/php5.y:6030 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} yyVAL.node = &ast.ExprEval{ast.Node{}, exprBrackets} @@ -8619,7 +8646,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6017 +// line internal/php5/php5.y:6044 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -8631,7 +8658,7 @@ yydefault: } case 512: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6027 +// line internal/php5/php5.y:6054 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -8643,13 +8670,13 @@ yydefault: } case 513: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6040 +// line internal/php5/php5.y:6067 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 514: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6044 +// line internal/php5/php5.y:6071 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -8658,19 +8685,19 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6054 +// line internal/php5/php5.y:6081 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6058 +// line internal/php5/php5.y:6085 { yyVAL.node = yyDollar[1].node } case 517: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6065 +// line internal/php5/php5.y:6092 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -8686,7 +8713,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6079 +// line internal/php5/php5.y:6106 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -8702,7 +8729,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6096 +// line internal/php5/php5.y:6123 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -8718,7 +8745,7 @@ yydefault: } case 520: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6113 +// line internal/php5/php5.y:6140 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} diff --git a/internal/php5/php5.y b/internal/php5/php5.y index 5d11a5d..181e9a4 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -447,14 +447,9 @@ top_statement: } | constant_declaration ';' { + $1.(*ast.StmtConstList).SemiColonTkn = $2 + $1.(*ast.StmtConstList).Node.Position = position.NewNodeTokenPosition($1, $2) $$ = $1 - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Stmts, $2.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $2.SkippedTokens) } ; @@ -725,39 +720,52 @@ use_const_declaration: constant_declaration: constant_declaration ',' T_STRING '=' static_scalar { - name := &ast.Identifier{ast.Node{}, $3.Value} - constant := &ast.StmtConstant{ast.Node{}, name, $5} constList := $1.(*ast.StmtConstList) - lastConst := lastNode(constList.Consts) - constList.Consts = append(constList.Consts, constant) + constList.Node.Position = position.NewNodesPosition($1, $5) + lastNode(constList.Consts).(*ast.StmtConstant).CommaTkn = $2 + constList.Consts = append(constList.Consts, &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($3, $5), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + Value: $3.Value, + }, + EqualTkn: $4, + Expr: $5, + }) + $$ = $1 - // save position - name.GetNode().Position = position.NewTokenPosition($3) - constant.GetNode().Position = position.NewTokenNodePosition($3, $5) - $$.GetNode().Position = position.NewNodeNodeListPosition($1, constList.Consts) - - // save comments - yylex.(*Parser).setFreeFloating(lastConst, token.End, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Start, $3.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Name, $4.SkippedTokens) + yylex.(*Parser).setFreeFloating(lastNode($$.(*ast.StmtConstList).Consts).(*ast.StmtConstant).Name, token.Start, $3.SkippedTokens) } | T_CONST T_STRING '=' static_scalar { - name := &ast.Identifier{ast.Node{}, $2.Value} - constant := &ast.StmtConstant{ast.Node{}, name, $4} - constList := []ast.Vertex{constant} - $$ = &ast.StmtConstList{ast.Node{}, constList} + $$ = &ast.StmtConstList{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $4), + }, + ConstTkn: $1, + Consts: []ast.Vertex{ + &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($2, $4), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + Value: $2.Value, + }, + EqualTkn: $3, + Expr: $4, + }, + }, + } - // save position - name.GetNode().Position = position.NewTokenPosition($2) - constant.GetNode().Position = position.NewTokenNodePosition($2, $4) - $$.GetNode().Position = position.NewTokenNodeListPosition($1, constList) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Start, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Name, $3.SkippedTokens) + yylex.(*Parser).setFreeFloating(lastNode($$.(*ast.StmtConstList).Consts).(*ast.StmtConstant).Name, token.Start, $2.SkippedTokens) } ; @@ -1735,32 +1743,42 @@ declare_statement: declare_list: T_STRING '=' static_scalar { - name := &ast.Identifier{ast.Node{}, $1.Value} - constant := &ast.StmtConstant{ast.Node{}, name, $3} - $$ = []ast.Vertex{constant} + $$ = []ast.Vertex{ + &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $3), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + Value: $1.Value, + }, + EqualTkn: $2, + Expr: $3, + }, + } - // save position - name.GetNode().Position = position.NewTokenPosition($1) - constant.GetNode().Position = position.NewTokenNodePosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating(constant, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Name, $2.SkippedTokens) + yylex.(*Parser).setFreeFloating(lastNode($$).(*ast.StmtConstant).Name, token.Start, $1.SkippedTokens) } | declare_list ',' T_STRING '=' static_scalar { - name := &ast.Identifier{ast.Node{}, $3.Value} - constant := &ast.StmtConstant{ast.Node{}, name, $5} - $$ = append($1, constant) + lastNode($1).(*ast.StmtConstant).CommaTkn = $2 + $$ = append($1, &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($3, $5), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + Value: $3.Value, + }, + EqualTkn: $4, + Expr: $5, + }) - // save position - name.GetNode().Position = position.NewTokenPosition($3) - constant.GetNode().Position = position.NewTokenNodePosition($3, $5) - - // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Start, $3.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Name, $4.SkippedTokens) + yylex.(*Parser).setFreeFloating(lastNode($$).(*ast.StmtConstant).Name, token.Start, $3.SkippedTokens) } ; @@ -2359,14 +2377,9 @@ class_statement: } | class_constant_declaration ';' { + $1.(*ast.StmtClassConstList).SemiColonTkn = $2 + $1.(*ast.StmtClassConstList).Node.Position = position.NewNodeTokenPosition($1, $2) $$ = $1 - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.ConstList, $2.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $2.SkippedTokens) } | trait_use_statement { @@ -2797,38 +2810,52 @@ class_variable_declaration: class_constant_declaration: class_constant_declaration ',' T_STRING '=' static_scalar { - name := &ast.Identifier{ast.Node{}, $3.Value} - constant := &ast.StmtConstant{ast.Node{}, name, $5} constList := $1.(*ast.StmtClassConstList) - lastConst := lastNode(constList.Consts) - constList.Consts = append(constList.Consts, constant) + constList.Node.Position = position.NewNodesPosition($1, $5) + lastNode($$.(*ast.StmtClassConstList).Consts).(*ast.StmtConstant).CommaTkn = $2 + constList.Consts = append(constList.Consts, &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($3, $5), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + Value: $3.Value, + }, + EqualTkn: $4, + Expr: $5, + }) + $$ = $1 - // save position - name.GetNode().Position = position.NewTokenPosition($3) - constant.GetNode().Position = position.NewTokenNodePosition($3, $5) - $1.GetNode().Position = position.NewNodesPosition($1, $5) - - // save comments - yylex.(*Parser).setFreeFloating(lastConst, token.End, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Start, $3.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Name, $4.SkippedTokens) + yylex.(*Parser).setFreeFloating(lastNode($$.(*ast.StmtClassConstList).Consts).(*ast.StmtConstant).Name, token.Start, $3.SkippedTokens) } | T_CONST T_STRING '=' static_scalar { - name := &ast.Identifier{ast.Node{}, $2.Value} - constant := &ast.StmtConstant{ast.Node{}, name, $4} - $$ = &ast.StmtClassConstList{ast.Node{}, nil, []ast.Vertex{constant}} + $$ = &ast.StmtClassConstList{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $4), + }, + ConstTkn: $1, + Consts: []ast.Vertex{ + &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($2, $4), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + Value: $2.Value, + }, + EqualTkn: $3, + Expr: $4, + }, + }, + } - // save position - name.GetNode().Position = position.NewTokenPosition($2) - constant.GetNode().Position = position.NewTokenNodePosition($2, $4) - $$.GetNode().Position = position.NewTokenNodePosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Start, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(constant, token.Name, $3.SkippedTokens) + yylex.(*Parser).setFreeFloating(lastNode($$.(*ast.StmtClassConstList).Consts).(*ast.StmtConstant).Name, token.Start, $2.SkippedTokens) } ; diff --git a/internal/php5/php5_test.go b/internal/php5/php5_test.go index a8b3fcb..ad42cb2 100644 --- a/internal/php5/php5_test.go +++ b/internal/php5/php5_test.go @@ -3134,7 +3134,7 @@ func TestPhp5(t *testing.T) { EndPos: 1071, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 58, @@ -3166,7 +3166,7 @@ func TestPhp5(t *testing.T) { EndPos: 1080, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 58, @@ -3793,7 +3793,7 @@ func TestPhp5(t *testing.T) { EndPos: 1409, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 67, @@ -3825,7 +3825,7 @@ func TestPhp5(t *testing.T) { EndPos: 1418, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 67, @@ -4020,7 +4020,7 @@ func TestPhp5(t *testing.T) { EndPos: 1512, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 71, @@ -4074,7 +4074,7 @@ func TestPhp5(t *testing.T) { EndPos: 1530, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 72, @@ -4106,7 +4106,7 @@ func TestPhp5(t *testing.T) { EndPos: 1546, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 72, @@ -4162,7 +4162,7 @@ func TestPhp5(t *testing.T) { EndPos: 1566, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 73, diff --git a/internal/php7/parser_test.go b/internal/php7/parser_test.go index 4cb66c8..b0e66dd 100644 --- a/internal/php7/parser_test.go +++ b/internal/php7/parser_test.go @@ -4318,7 +4318,7 @@ func TestStmtClassConstList(t *testing.T) { EndPos: 34, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -4350,7 +4350,7 @@ func TestStmtClassConstList(t *testing.T) { EndPos: 43, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -4442,7 +4442,7 @@ func TestStmtClassConstList_WithoutModifiers(t *testing.T) { EndPos: 27, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -4474,7 +4474,7 @@ func TestStmtClassConstList_WithoutModifiers(t *testing.T) { EndPos: 36, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -5721,7 +5721,7 @@ func TestStmtConstList(t *testing.T) { EndPos: 16, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -5753,7 +5753,7 @@ func TestStmtConstList(t *testing.T) { EndPos: 25, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -6048,7 +6048,7 @@ func TestStmtDeclare(t *testing.T) { EndPos: 18, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -6127,7 +6127,7 @@ func TestStmtDeclare_Stmts(t *testing.T) { EndPos: 18, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -6159,7 +6159,7 @@ func TestStmtDeclare_Stmts(t *testing.T) { EndPos: 34, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -6239,7 +6239,7 @@ func TestStmtDeclare_Alt(t *testing.T) { EndPos: 18, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, diff --git a/internal/php7/php7.go b/internal/php7/php7.go index f9ec7d4..39c7876 100644 --- a/internal/php7/php7.go +++ b/internal/php7/php7.go @@ -346,7 +346,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php7/php7.y:4832 +// line internal/php7/php7.y:4834 // line yacctab:1 var yyExca = [...]int{ @@ -2113,7 +2113,7 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:293 + // line internal/php7/php7.y:293 { yylex.(*Parser).rootNode = &ast.Root{ast.Node{}, yyDollar[1].list} @@ -2124,469 +2124,469 @@ yydefault: } case 2: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:304 + // line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 3: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:304 + // line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 4: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:304 + // line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 5: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:304 + // line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 6: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:304 + // line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 7: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:304 + // line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 8: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:304 + // line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 9: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:304 + // line internal/php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 10: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 11: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 12: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 13: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 14: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 15: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 16: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 17: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 18: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 19: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 20: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 21: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:305 + // line internal/php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 22: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 23: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 24: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 25: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 26: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 27: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 28: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 29: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 30: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 31: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:306 + // line internal/php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 32: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 33: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 34: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 35: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 36: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 37: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 38: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 39: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 40: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 41: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:307 + // line internal/php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 42: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 43: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 44: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 45: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 46: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 47: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 48: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 49: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 50: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 51: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 52: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:308 + // line internal/php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 53: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 54: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 55: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 56: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 57: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 58: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 59: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 60: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:309 + // line internal/php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 61: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 62: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 63: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 64: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 65: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 66: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 67: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 68: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 69: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:310 + // line internal/php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 70: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:315 + // line internal/php7/php7.y:315 { yyVAL.token = yyDollar[1].token } case 71: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:318 + // line internal/php7/php7.y:318 { yyVAL.token = yyDollar[1].token } case 72: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:318 + // line internal/php7/php7.y:318 { yyVAL.token = yyDollar[1].token } case 73: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:318 + // line internal/php7/php7.y:318 { yyVAL.token = yyDollar[1].token } case 74: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:318 + // line internal/php7/php7.y:318 { yyVAL.token = yyDollar[1].token } case 75: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:318 + // line internal/php7/php7.y:318 { yyVAL.token = yyDollar[1].token } case 76: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:318 + // line internal/php7/php7.y:318 { yyVAL.token = yyDollar[1].token } case 77: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:323 + // line internal/php7/php7.y:323 { yyVAL.token = yyDollar[1].token } case 78: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:327 + // line internal/php7/php7.y:327 { yyVAL.token = yyDollar[1].token } case 79: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:334 + // line internal/php7/php7.y:334 { if inlineHtmlNode, ok := yyDollar[2].node.(*ast.StmtInlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) @@ -2599,13 +2599,13 @@ yydefault: } case 80: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:345 + // line internal/php7/php7.y:345 { yyVAL.list = []ast.Vertex{} } case 81: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:352 + // line internal/php7/php7.y:352 { yyVAL.list = []ast.Vertex{ &ast.NameNamePart{ @@ -2619,7 +2619,7 @@ yydefault: } case 82: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:364 + // line internal/php7/php7.y:364 { yyVAL.list = append(yyDollar[1].list, &ast.NameNamePart{ Node: ast.Node{ @@ -2632,7 +2632,7 @@ yydefault: } case 83: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:378 + // line internal/php7/php7.y:378 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -2643,7 +2643,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:387 + // line internal/php7/php7.y:387 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -2656,7 +2656,7 @@ yydefault: } case 85: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:398 + // line internal/php7/php7.y:398 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -2668,44 +2668,44 @@ yydefault: } case 86: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:411 + // line internal/php7/php7.y:411 { // error yyVAL.node = nil } case 87: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:416 + // line internal/php7/php7.y:416 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:420 + // line internal/php7/php7.y:420 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:424 + // line internal/php7/php7.y:424 { yyVAL.node = yyDollar[1].node } case 90: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:428 + // line internal/php7/php7.y:428 { yyVAL.node = yyDollar[1].node } case 91: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:432 + // line internal/php7/php7.y:432 { yyVAL.node = yyDollar[1].node } case 92: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:436 + // line internal/php7/php7.y:436 { yyVAL.node = &ast.StmtHaltCompiler{ Node: ast.Node{ @@ -2719,7 +2719,7 @@ yydefault: } case 93: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:448 + // line internal/php7/php7.y:448 { yyVAL.node = &ast.StmtNamespace{ Node: ast.Node{ @@ -2737,7 +2737,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:464 + // line internal/php7/php7.y:464 { yyVAL.node = &ast.StmtNamespace{ Node: ast.Node{ @@ -2757,7 +2757,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:482 + // line internal/php7/php7.y:482 { yyVAL.node = &ast.StmtNamespace{ Node: ast.Node{ @@ -2771,7 +2771,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:494 + // line internal/php7/php7.y:494 { use := yyDollar[2].node.(*ast.StmtGroupUse) @@ -2783,7 +2783,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:504 + // line internal/php7/php7.y:504 { use := yyDollar[3].node.(*ast.StmtGroupUse) @@ -2796,7 +2796,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:515 + // line internal/php7/php7.y:515 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2809,7 +2809,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:526 + // line internal/php7/php7.y:526 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2823,21 +2823,20 @@ yydefault: } case 100: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:538 + // line internal/php7/php7.y:538 { - yyVAL.node = &ast.StmtConstList{ast.Node{}, yyDollar[2].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[3].token.SkippedTokens) - yylex.(*Parser).setToken(yyVAL.node, token.SemiColon, yyDollar[3].token.SkippedTokens) + yyVAL.node = &ast.StmtConstList{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), + }, + ConstTkn: yyDollar[1].token, + Consts: yyDollar[2].list, + SemiColonTkn: yyDollar[3].token, + } } case 101: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:553 + // line internal/php7/php7.y:552 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -2849,7 +2848,7 @@ yydefault: } case 102: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:563 + // line internal/php7/php7.y:562 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -2861,7 +2860,7 @@ yydefault: } case 103: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:576 + // line internal/php7/php7.y:575 { if len(yyDollar[4].list) > 0 { yyDollar[4].list[len(yyDollar[4].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[5].token @@ -2885,7 +2884,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-7 : yypt+1] -// line internal/php7/php7.y:598 + // line internal/php7/php7.y:597 { yyDollar[5].list[len(yyDollar[5].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[6].token @@ -2908,7 +2907,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:622 + // line internal/php7/php7.y:621 { yyDollar[4].list[len(yyDollar[4].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[5].token @@ -2930,7 +2929,7 @@ yydefault: } case 106: yyDollar = yyS[yypt-7 : yypt+1] -// line internal/php7/php7.y:642 + // line internal/php7/php7.y:641 { yyDollar[5].list[len(yyDollar[5].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[6].token @@ -2953,19 +2952,19 @@ yydefault: } case 107: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:666 + // line internal/php7/php7.y:665 { yyVAL.token = nil } case 108: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:670 + // line internal/php7/php7.y:669 { yyVAL.token = yyDollar[1].token } case 109: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:677 + // line internal/php7/php7.y:676 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2973,13 +2972,13 @@ yydefault: } case 110: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:683 + // line internal/php7/php7.y:682 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 111: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:690 + // line internal/php7/php7.y:689 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2987,13 +2986,13 @@ yydefault: } case 112: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:696 + // line internal/php7/php7.y:695 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 113: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:703 + // line internal/php7/php7.y:702 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -3001,19 +3000,19 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:709 + // line internal/php7/php7.y:708 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 115: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:716 + // line internal/php7/php7.y:715 { yyVAL.node = yyDollar[1].node } case 116: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:720 + // line internal/php7/php7.y:719 { decl := yyDollar[2].node.(*ast.StmtUseDeclaration) decl.Type = yyDollar[1].node @@ -3023,7 +3022,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:731 + // line internal/php7/php7.y:730 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -3039,7 +3038,7 @@ yydefault: } case 118: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:745 + // line internal/php7/php7.y:744 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -3062,13 +3061,13 @@ yydefault: } case 119: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:769 + // line internal/php7/php7.y:768 { yyVAL.node = yyDollar[1].node } case 120: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:773 + // line internal/php7/php7.y:772 { decl := yyDollar[2].node.(*ast.StmtUseDeclaration) decl.NsSeparatorTkn = yyDollar[1].token @@ -3078,22 +3077,21 @@ yydefault: } case 121: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:784 + // line internal/php7/php7.y:783 { - yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + lastNode(yyDollar[1].list).(*ast.StmtConstant).CommaTkn = yyDollar[2].token - // save comments - yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.SkippedTokens) + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 122: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:791 + // line internal/php7/php7.y:789 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 123: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:798 + // line internal/php7/php7.y:796 { if inlineHtmlNode, ok := yyDollar[2].node.(*ast.StmtInlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) @@ -3106,50 +3104,50 @@ yydefault: } case 124: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:809 + // line internal/php7/php7.y:807 { yyVAL.list = []ast.Vertex{} } case 125: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:816 + // line internal/php7/php7.y:814 { // error yyVAL.node = nil } case 126: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:821 + // line internal/php7/php7.y:819 { yyVAL.node = yyDollar[1].node } case 127: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:825 + // line internal/php7/php7.y:823 { yyVAL.node = yyDollar[1].node } case 128: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:829 + // line internal/php7/php7.y:827 { yyVAL.node = yyDollar[1].node } case 129: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:833 + // line internal/php7/php7.y:831 { yyVAL.node = yyDollar[1].node } case 130: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:837 + // line internal/php7/php7.y:835 { yyVAL.node = yyDollar[1].node } case 131: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:841 + // line internal/php7/php7.y:839 { yyVAL.node = &ast.StmtHaltCompiler{ Node: ast.Node{ @@ -3163,7 +3161,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:855 + // line internal/php7/php7.y:853 { yyVAL.node = &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} @@ -3176,19 +3174,19 @@ yydefault: } case 133: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:866 + // line internal/php7/php7.y:864 { yyVAL.node = yyDollar[1].node } case 134: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:870 + // line internal/php7/php7.y:868 { yyVAL.node = yyDollar[1].node } case 135: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:874 + // line internal/php7/php7.y:872 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} @@ -3212,7 +3210,7 @@ yydefault: } case 136: yyDollar = yyS[yypt-7 : yypt+1] -// line internal/php7/php7.y:896 + // line internal/php7/php7.y:894 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[5].node} yyVAL.node = &ast.StmtDo{ast.Node{}, yyDollar[2].node, exprBrackets} @@ -3230,7 +3228,7 @@ yydefault: } case 137: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php7/php7.y:912 + // line internal/php7/php7.y:910 { switch n := yyDollar[9].node.(type) { case *ast.StmtFor: @@ -3257,7 +3255,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:937 + // line internal/php7/php7.y:935 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} @@ -3283,7 +3281,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:961 + // line internal/php7/php7.y:959 { yyVAL.node = &ast.StmtBreak{ast.Node{}, yyDollar[2].node} @@ -3297,7 +3295,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:973 + // line internal/php7/php7.y:971 { yyVAL.node = &ast.StmtContinue{ast.Node{}, yyDollar[2].node} @@ -3311,7 +3309,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:985 + // line internal/php7/php7.y:983 { yyVAL.node = &ast.StmtReturn{ast.Node{}, yyDollar[2].node} @@ -3325,7 +3323,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:997 + // line internal/php7/php7.y:995 { yyVAL.node = &ast.StmtGlobal{ast.Node{}, yyDollar[2].list} @@ -3339,7 +3337,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1009 + // line internal/php7/php7.y:1007 { yyVAL.node = &ast.StmtStatic{ast.Node{}, yyDollar[2].list} @@ -3353,7 +3351,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1021 + // line internal/php7/php7.y:1019 { yyVAL.node = &ast.StmtEcho{ast.Node{}, yyDollar[2].list} @@ -3368,7 +3366,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1034 + // line internal/php7/php7.y:1032 { yyVAL.node = &ast.StmtInlineHtml{ast.Node{}, yyDollar[1].token.Value} @@ -3380,7 +3378,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1044 + // line internal/php7/php7.y:1042 { yyVAL.node = &ast.StmtExpression{ast.Node{}, yyDollar[1].node} @@ -3394,7 +3392,7 @@ yydefault: } case 147: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:1056 + // line internal/php7/php7.y:1054 { yyVAL.node = &ast.StmtUnset{ast.Node{}, yyDollar[3].list} @@ -3414,7 +3412,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-7 : yypt+1] -// line internal/php7/php7.y:1074 + // line internal/php7/php7.y:1072 { switch n := yyDollar[7].node.(type) { case *ast.StmtForeach: @@ -3438,7 +3436,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php7/php7.y:1096 + // line internal/php7/php7.y:1094 { switch n := yyDollar[9].node.(type) { case *ast.StmtForeach: @@ -3465,7 +3463,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:1121 + // line internal/php7/php7.y:1119 { yyVAL.node = yyDollar[5].node yyVAL.node.(*ast.StmtDeclare).Consts = yyDollar[3].list @@ -3480,7 +3478,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1134 + // line internal/php7/php7.y:1132 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -3493,7 +3491,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:1145 + // line internal/php7/php7.y:1143 { if yyDollar[6].node == nil { yyVAL.node = &ast.StmtTry{ast.Node{}, yyDollar[3].list, yyDollar[5].list, yyDollar[6].node} @@ -3510,7 +3508,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1160 + // line internal/php7/php7.y:1158 { yyVAL.node = &ast.StmtThrow{ast.Node{}, yyDollar[2].node} @@ -3524,7 +3522,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1172 + // line internal/php7/php7.y:1170 { label := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.StmtGoto{ast.Node{}, label} @@ -3541,7 +3539,7 @@ yydefault: } case 155: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1187 + // line internal/php7/php7.y:1185 { label := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtLabel{ast.Node{}, label} @@ -3556,13 +3554,13 @@ yydefault: } case 156: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1202 + // line internal/php7/php7.y:1200 { yyVAL.list = []ast.Vertex{} } case 157: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php7/php7.y:1206 + // line internal/php7/php7.y:1204 { identifier := &ast.Identifier{ast.Node{}, yyDollar[5].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -3584,13 +3582,13 @@ yydefault: } case 158: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1228 + // line internal/php7/php7.y:1226 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 159: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1232 + // line internal/php7/php7.y:1230 { switch n := lastNode(yyDollar[1].list).(type) { case *ast.NameName: @@ -3604,13 +3602,13 @@ yydefault: } case 160: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1244 + // line internal/php7/php7.y:1242 { yyVAL.node = nil } case 161: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1248 + // line internal/php7/php7.y:1246 { yyVAL.node = &ast.StmtFinally{ast.Node{}, yyDollar[3].list} @@ -3624,13 +3622,13 @@ yydefault: } case 162: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1263 + // line internal/php7/php7.y:1261 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 163: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1267 + // line internal/php7/php7.y:1265 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3639,13 +3637,13 @@ yydefault: } case 164: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1277 + // line internal/php7/php7.y:1275 { yyVAL.node = yyDollar[1].node } case 165: yyDollar = yyS[yypt-11 : yypt+1] -// line internal/php7/php7.y:1284 + // line internal/php7/php7.y:1282 { name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtFunction{ast.Node{}, yyDollar[2].token != nil, name, yyDollar[6].list, yyDollar[8].node, yyDollar[10].list} @@ -3675,31 +3673,31 @@ yydefault: } case 166: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1315 + // line internal/php7/php7.y:1313 { yyVAL.token = nil } case 167: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1319 + // line internal/php7/php7.y:1317 { yyVAL.token = yyDollar[1].token } case 168: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1326 + // line internal/php7/php7.y:1324 { yyVAL.token = nil } case 169: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1330 + // line internal/php7/php7.y:1328 { yyVAL.token = yyDollar[1].token } case 170: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php7/php7.y:1337 + // line internal/php7/php7.y:1335 { name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtClass{ast.Node{}, name, yyDollar[1].list, nil, yyDollar[4].ClassExtends, yyDollar[5].ClassImplements, yyDollar[8].list} @@ -3717,7 +3715,7 @@ yydefault: } case 171: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php7/php7.y:1353 + // line internal/php7/php7.y:1351 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.StmtClass{ast.Node{}, name, nil, nil, yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list} @@ -3734,19 +3732,19 @@ yydefault: } case 172: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1371 + // line internal/php7/php7.y:1369 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 173: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1375 + // line internal/php7/php7.y:1373 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 174: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1382 + // line internal/php7/php7.y:1380 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -3758,7 +3756,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1392 + // line internal/php7/php7.y:1390 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -3770,7 +3768,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:1405 + // line internal/php7/php7.y:1403 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.StmtTrait{ast.Node{}, name, yyDollar[5].list} @@ -3787,7 +3785,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-7 : yypt+1] -// line internal/php7/php7.y:1423 + // line internal/php7/php7.y:1421 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.StmtInterface{ast.Node{}, name, yyDollar[3].InterfaceExtends, yyDollar[6].list} @@ -3804,13 +3802,13 @@ yydefault: } case 178: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1441 + // line internal/php7/php7.y:1439 { yyVAL.ClassExtends = nil } case 179: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1445 + // line internal/php7/php7.y:1443 { yyVAL.ClassExtends = &ast.StmtClassExtends{ast.Node{}, yyDollar[2].node} @@ -3822,13 +3820,13 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1458 + // line internal/php7/php7.y:1456 { yyVAL.InterfaceExtends = nil } case 181: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1462 + // line internal/php7/php7.y:1460 { yyVAL.InterfaceExtends = &ast.StmtInterfaceExtends{ast.Node{}, yyDollar[2].list} @@ -3840,13 +3838,13 @@ yydefault: } case 182: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1475 + // line internal/php7/php7.y:1473 { yyVAL.ClassImplements = nil } case 183: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1479 + // line internal/php7/php7.y:1477 { yyVAL.ClassImplements = &ast.StmtClassImplements{ast.Node{}, yyDollar[2].list} @@ -3858,13 +3856,13 @@ yydefault: } case 184: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1492 + // line internal/php7/php7.y:1490 { yyVAL.node = yyDollar[1].node } case 185: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1496 + // line internal/php7/php7.y:1494 { yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node} @@ -3876,7 +3874,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1506 + // line internal/php7/php7.y:1504 { yyVAL.node = &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -3890,7 +3888,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1518 + // line internal/php7/php7.y:1516 { yyVAL.node = &ast.ExprShortList{ast.Node{}, yyDollar[2].list} @@ -3903,7 +3901,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1532 + // line internal/php7/php7.y:1530 { yyVAL.node = &ast.StmtFor{ast.Node{}, nil, nil, nil, yyDollar[1].node} @@ -3912,7 +3910,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1539 + // line internal/php7/php7.y:1537 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltFor{ast.Node{}, nil, nil, nil, stmtList} @@ -3929,7 +3927,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1557 + // line internal/php7/php7.y:1555 { yyVAL.node = &ast.StmtForeach{ast.Node{}, nil, nil, nil, yyDollar[1].node} @@ -3938,7 +3936,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1564 + // line internal/php7/php7.y:1562 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltForeach{ast.Node{}, nil, nil, nil, stmtList} @@ -3955,7 +3953,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1582 + // line internal/php7/php7.y:1580 { yyVAL.node = &ast.StmtDeclare{ast.Node{}, false, nil, yyDollar[1].node} @@ -3964,7 +3962,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1589 + // line internal/php7/php7.y:1587 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtDeclare{ast.Node{}, true, nil, stmtList} @@ -3981,7 +3979,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1607 + // line internal/php7/php7.y:1605 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList} @@ -3996,7 +3994,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1620 + // line internal/php7/php7.y:1618 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList} @@ -4012,7 +4010,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1634 + // line internal/php7/php7.y:1632 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltSwitch{ast.Node{}, nil, caseList} @@ -4029,7 +4027,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:1649 + // line internal/php7/php7.y:1647 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list} @@ -4048,13 +4046,13 @@ yydefault: } case 198: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1669 + // line internal/php7/php7.y:1667 { yyVAL.list = []ast.Vertex{} } case 199: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:1673 + // line internal/php7/php7.y:1671 { _case := &ast.StmtCase{ast.Node{}, yyDollar[3].node, yyDollar[5].list} yyVAL.list = append(yyDollar[1].list, _case) @@ -4069,7 +4067,7 @@ yydefault: } case 200: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1686 + // line internal/php7/php7.y:1684 { _default := &ast.StmtDefault{ast.Node{}, yyDollar[4].list} yyVAL.list = append(yyDollar[1].list, _default) @@ -4084,19 +4082,19 @@ yydefault: } case 201: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1702 + // line internal/php7/php7.y:1700 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1706 + // line internal/php7/php7.y:1704 { yyVAL.token = yyDollar[1].token } case 203: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1713 + // line internal/php7/php7.y:1711 { yyVAL.node = &ast.StmtWhile{ast.Node{}, nil, yyDollar[1].node} @@ -4105,7 +4103,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1720 + // line internal/php7/php7.y:1718 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltWhile{ast.Node{}, nil, stmtList} @@ -4122,7 +4120,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:1738 + // line internal/php7/php7.y:1736 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} yyVAL.node = &ast.StmtIf{ast.Node{}, exprBrackets, yyDollar[5].node, nil, nil} @@ -4138,7 +4136,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:1752 + // line internal/php7/php7.y:1750 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[4].node} _elseIf := &ast.StmtElseIf{ast.Node{}, exprBrackets, yyDollar[6].node} @@ -4158,13 +4156,13 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1773 + // line internal/php7/php7.y:1771 { yyVAL.node = yyDollar[1].node } case 208: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1777 + // line internal/php7/php7.y:1775 { _else := &ast.StmtElse{ast.Node{}, yyDollar[3].node} yyDollar[1].node.(*ast.StmtIf).Else = _else @@ -4180,7 +4178,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:1794 + // line internal/php7/php7.y:1792 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[6].list} @@ -4201,7 +4199,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-7 : yypt+1] -// line internal/php7/php7.y:1813 + // line internal/php7/php7.y:1811 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[4].node} stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[7].list} @@ -4225,7 +4223,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1838 + // line internal/php7/php7.y:1836 { yyVAL.node = yyDollar[1].node @@ -4243,7 +4241,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:1854 + // line internal/php7/php7.y:1852 { stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[4].list} stmtsBrackets := &ast.ParserBrackets{ast.Node{}, stmts} @@ -4266,25 +4264,25 @@ yydefault: } case 213: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1878 + // line internal/php7/php7.y:1876 { yyVAL.list = yyDollar[1].list } case 214: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1882 + // line internal/php7/php7.y:1880 { yyVAL.list = nil } case 215: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1889 + // line internal/php7/php7.y:1887 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 216: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:1893 + // line internal/php7/php7.y:1891 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4293,7 +4291,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:1903 + // line internal/php7/php7.y:1901 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) @@ -4329,7 +4327,7 @@ yydefault: } case 218: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:1937 + // line internal/php7/php7.y:1935 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) @@ -4366,25 +4364,25 @@ yydefault: } case 219: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:1975 + // line internal/php7/php7.y:1973 { yyVAL.node = nil } case 220: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1979 + // line internal/php7/php7.y:1977 { yyVAL.node = yyDollar[1].node } case 221: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:1986 + // line internal/php7/php7.y:1984 { yyVAL.node = yyDollar[1].node } case 222: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:1990 + // line internal/php7/php7.y:1988 { yyVAL.node = &ast.Nullable{ast.Node{}, yyDollar[2].node} @@ -4396,7 +4394,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2003 + // line internal/php7/php7.y:2001 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4408,7 +4406,7 @@ yydefault: } case 224: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2013 + // line internal/php7/php7.y:2011 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4420,19 +4418,19 @@ yydefault: } case 225: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2023 + // line internal/php7/php7.y:2021 { yyVAL.node = yyDollar[1].node } case 226: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:2030 + // line internal/php7/php7.y:2028 { yyVAL.node = nil } case 227: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2034 + // line internal/php7/php7.y:2032 { yyVAL.node = yyDollar[2].node @@ -4441,7 +4439,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2044 + // line internal/php7/php7.y:2042 { yyVAL.node = &ast.ArgumentList{ast.Node{}, nil} @@ -4454,7 +4452,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2055 + // line internal/php7/php7.y:2053 { yyVAL.node = &ast.ArgumentList{ast.Node{}, yyDollar[2].list} @@ -4471,13 +4469,13 @@ yydefault: } case 230: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2073 + // line internal/php7/php7.y:2071 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 231: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2077 + // line internal/php7/php7.y:2075 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4486,7 +4484,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2087 + // line internal/php7/php7.y:2085 { yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node} @@ -4498,7 +4496,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2097 + // line internal/php7/php7.y:2095 { yyVAL.node = &ast.Argument{ast.Node{}, true, false, yyDollar[2].node} @@ -4510,7 +4508,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2110 + // line internal/php7/php7.y:2108 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4519,19 +4517,19 @@ yydefault: } case 235: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2117 + // line internal/php7/php7.y:2115 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 236: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2124 + // line internal/php7/php7.y:2122 { yyVAL.node = yyDollar[1].node } case 237: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2131 + // line internal/php7/php7.y:2129 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4540,13 +4538,13 @@ yydefault: } case 238: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2138 + // line internal/php7/php7.y:2136 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 239: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2145 + // line internal/php7/php7.y:2143 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4562,7 +4560,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2159 + // line internal/php7/php7.y:2157 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4579,19 +4577,19 @@ yydefault: } case 241: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2177 + // line internal/php7/php7.y:2175 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 242: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:2181 + // line internal/php7/php7.y:2179 { yyVAL.list = []ast.Vertex{} } case 243: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2188 + // line internal/php7/php7.y:2186 { yyVAL.node = &ast.StmtPropertyList{ast.Node{}, yyDollar[1].list, yyDollar[2].node, yyDollar[3].list} @@ -4605,26 +4603,21 @@ yydefault: } case 244: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2200 + // line internal/php7/php7.y:2198 { - yyVAL.node = &ast.StmtClassConstList{ast.Node{}, yyDollar[1].list, yyDollar[3].list} - - // save position - yyVAL.node.GetNode().Position = position.NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[4].token) - - // 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.StmtClassConstList{ + Node: ast.Node{ + Position: position.NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[4].token), + }, + Modifiers: yyDollar[1].list, + ConstTkn: yyDollar[2].token, + Consts: yyDollar[3].list, + SemiColonTkn: yyDollar[4].token, } - yylex.(*Parser).setFreeFloating(yyVAL.node, token.ConstList, yyDollar[4].token.SkippedTokens) - yylex.(*Parser).setToken(yyVAL.node, token.SemiColon, yyDollar[4].token.SkippedTokens) } case 245: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2217 + // line internal/php7/php7.y:2210 { yyVAL.node = &ast.StmtTraitUse{ast.Node{}, yyDollar[2].list, yyDollar[3].node} @@ -4636,7 +4629,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-10 : yypt+1] -// line internal/php7/php7.y:2227 + // line internal/php7/php7.y:2220 { name := &ast.Identifier{ast.Node{}, 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} @@ -4667,13 +4660,13 @@ yydefault: } case 247: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2259 + // line internal/php7/php7.y:2252 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 248: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2263 + // line internal/php7/php7.y:2256 { switch n := lastNode(yyDollar[1].list).(type) { case *ast.NameName: @@ -4687,7 +4680,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2275 + // line internal/php7/php7.y:2268 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -4699,7 +4692,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2285 + // line internal/php7/php7.y:2278 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, nil} @@ -4711,7 +4704,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2295 + // line internal/php7/php7.y:2288 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, yyDollar[2].list} @@ -4723,19 +4716,19 @@ yydefault: } case 252: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2308 + // line internal/php7/php7.y:2301 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 253: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2312 + // line internal/php7/php7.y:2305 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 254: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2319 + // line internal/php7/php7.y:2312 { yyVAL.node = yyDollar[1].node @@ -4745,7 +4738,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2327 + // line internal/php7/php7.y:2320 { yyVAL.node = yyDollar[1].node @@ -4755,7 +4748,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2338 + // line internal/php7/php7.y:2331 { yyVAL.node = &ast.StmtTraitUsePrecedence{ast.Node{}, yyDollar[1].node, yyDollar[3].list} @@ -4768,7 +4761,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2352 + // line internal/php7/php7.y:2345 { alias := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, nil, alias} @@ -4784,7 +4777,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2366 + // line internal/php7/php7.y:2359 { alias := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, nil, alias} @@ -4800,7 +4793,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2380 + // line internal/php7/php7.y:2373 { alias := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, alias} @@ -4816,7 +4809,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2394 + // line internal/php7/php7.y:2387 { yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, nil} @@ -4829,7 +4822,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2408 + // line internal/php7/php7.y:2401 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, nil, name} @@ -4843,13 +4836,13 @@ yydefault: } case 262: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2420 + // line internal/php7/php7.y:2413 { yyVAL.node = yyDollar[1].node } case 263: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2427 + // line internal/php7/php7.y:2420 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, yyDollar[1].node, target} @@ -4865,7 +4858,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2444 + // line internal/php7/php7.y:2437 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -4878,7 +4871,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2455 + // line internal/php7/php7.y:2448 { yyVAL.node = &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} @@ -4891,13 +4884,13 @@ yydefault: } case 266: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2469 + // line internal/php7/php7.y:2462 { yyVAL.list = yyDollar[1].list } case 267: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2473 + // line internal/php7/php7.y:2466 { modifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{modifier} @@ -4910,31 +4903,31 @@ yydefault: } case 268: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:2487 + // line internal/php7/php7.y:2480 { yyVAL.list = nil } case 269: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2491 + // line internal/php7/php7.y:2484 { yyVAL.list = yyDollar[1].list } case 270: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2498 + // line internal/php7/php7.y:2491 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 271: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2502 + // line internal/php7/php7.y:2495 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 272: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2509 + // line internal/php7/php7.y:2502 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4946,7 +4939,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2519 + // line internal/php7/php7.y:2512 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4958,7 +4951,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2529 + // line internal/php7/php7.y:2522 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4970,7 +4963,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2539 + // line internal/php7/php7.y:2532 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4982,7 +4975,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2549 + // line internal/php7/php7.y:2542 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4994,7 +4987,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2559 + // line internal/php7/php7.y:2552 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -5006,7 +4999,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2572 + // line internal/php7/php7.y:2565 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5015,13 +5008,13 @@ yydefault: } case 279: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2579 + // line internal/php7/php7.y:2572 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 280: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2586 + // line internal/php7/php7.y:2579 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -5037,7 +5030,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2600 + // line internal/php7/php7.y:2593 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -5054,52 +5047,61 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2618 + // line internal/php7/php7.y:2611 { - yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + lastNode(yyDollar[1].list).(*ast.StmtConstant).CommaTkn = yyDollar[2].token - // save comments - yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.SkippedTokens) + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 283: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2625 + // line internal/php7/php7.y:2617 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 284: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2632 + // line internal/php7/php7.y:2624 { - name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - yyVAL.node = &ast.StmtConstant{ast.Node{}, name, yyDollar[3].node} + yyVAL.node = &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + Value: yyDollar[1].token.Value, + }, + EqualTkn: yyDollar[2].token, + Expr: yyDollar[3].node, + } - // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) + yylex.(*Parser).setFreeFloating(yyVAL.node.(*ast.StmtConstant).Name, token.Start, yyDollar[1].token.SkippedTokens) } case 285: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2648 + // line internal/php7/php7.y:2645 { - name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - yyVAL.node = &ast.StmtConstant{ast.Node{}, name, yyDollar[3].node} + yyVAL.node = &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + Value: yyDollar[1].token.Value, + }, + EqualTkn: yyDollar[2].token, + Expr: yyDollar[3].node, + } - // save position - name.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.SkippedTokens) + yylex.(*Parser).setFreeFloating(yyVAL.node.(*ast.StmtConstant).Name, token.Start, yyDollar[1].token.SkippedTokens) } case 286: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2664 + // line internal/php7/php7.y:2666 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5108,31 +5110,31 @@ yydefault: } case 287: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2671 + // line internal/php7/php7.y:2673 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 288: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2678 + // line internal/php7/php7.y:2680 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:2685 + // line internal/php7/php7.y:2687 { yyVAL.list = nil } case 290: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2689 + // line internal/php7/php7.y:2691 { yyVAL.list = yyDollar[1].list } case 291: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2696 + // line internal/php7/php7.y:2698 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5141,13 +5143,13 @@ yydefault: } case 292: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:2703 + // line internal/php7/php7.y:2705 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 293: yyDollar = yyS[yypt-8 : yypt+1] -// line internal/php7/php7.y:2710 + // line internal/php7/php7.y:2712 { if yyDollar[2].node != nil { yyVAL.node = &ast.StmtClass{ast.Node{}, nil, nil, yyDollar[2].node.(*ast.ArgumentList), yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list} @@ -5165,7 +5167,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2729 + // line internal/php7/php7.y:2731 { if yyDollar[3].node != nil { yyVAL.node = &ast.ExprNew{ast.Node{}, yyDollar[2].node, yyDollar[3].node.(*ast.ArgumentList)} @@ -5180,7 +5182,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2742 + // line internal/php7/php7.y:2744 { yyVAL.node = &ast.ExprNew{ast.Node{}, yyDollar[2].node, nil} @@ -5192,7 +5194,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:2755 + // line internal/php7/php7.y:2757 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, listNode, yyDollar[6].node} @@ -5209,7 +5211,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:2770 + // line internal/php7/php7.y:2772 { shortList := &ast.ExprShortList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, shortList, yyDollar[5].node} @@ -5225,7 +5227,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2784 + // line internal/php7/php7.y:2786 { yyVAL.node = &ast.ExprAssign{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5238,7 +5240,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:2795 + // line internal/php7/php7.y:2797 { yyVAL.node = &ast.ExprAssignReference{ast.Node{}, yyDollar[1].node, yyDollar[4].node} @@ -5252,7 +5254,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2807 + // line internal/php7/php7.y:2809 { yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node} @@ -5264,7 +5266,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2817 + // line internal/php7/php7.y:2819 { yyVAL.node = &ast.ExprAssignPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5277,7 +5279,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2828 + // line internal/php7/php7.y:2830 { yyVAL.node = &ast.ExprAssignMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5290,7 +5292,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2839 + // line internal/php7/php7.y:2841 { yyVAL.node = &ast.ExprAssignMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5303,7 +5305,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2850 + // line internal/php7/php7.y:2852 { yyVAL.node = &ast.ExprAssignPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5316,7 +5318,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2861 + // line internal/php7/php7.y:2863 { yyVAL.node = &ast.ExprAssignDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5329,7 +5331,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2872 + // line internal/php7/php7.y:2874 { yyVAL.node = &ast.ExprAssignConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5342,7 +5344,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2883 + // line internal/php7/php7.y:2885 { yyVAL.node = &ast.ExprAssignMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5355,7 +5357,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2894 + // line internal/php7/php7.y:2896 { yyVAL.node = &ast.ExprAssignBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5368,7 +5370,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2905 + // line internal/php7/php7.y:2907 { yyVAL.node = &ast.ExprAssignBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5381,7 +5383,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2916 + // line internal/php7/php7.y:2918 { yyVAL.node = &ast.ExprAssignBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5394,7 +5396,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2927 + // line internal/php7/php7.y:2929 { yyVAL.node = &ast.ExprAssignShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5407,7 +5409,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2938 + // line internal/php7/php7.y:2940 { yyVAL.node = &ast.ExprAssignShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5420,7 +5422,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:2949 + // line internal/php7/php7.y:2951 { yyVAL.node = &ast.ExprAssignCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5433,7 +5435,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2960 + // line internal/php7/php7.y:2962 { yyVAL.node = &ast.ExprPostInc{ast.Node{}, yyDollar[1].node} @@ -5446,7 +5448,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2971 + // line internal/php7/php7.y:2973 { yyVAL.node = &ast.ExprPreInc{ast.Node{}, yyDollar[2].node} @@ -5458,7 +5460,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2981 + // line internal/php7/php7.y:2983 { yyVAL.node = &ast.ExprPostDec{ast.Node{}, yyDollar[1].node} @@ -5471,7 +5473,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:2992 + // line internal/php7/php7.y:2994 { yyVAL.node = &ast.ExprPreDec{ast.Node{}, yyDollar[2].node} @@ -5483,7 +5485,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3002 + // line internal/php7/php7.y:3004 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5496,7 +5498,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3013 + // line internal/php7/php7.y:3015 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5509,7 +5511,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3024 + // line internal/php7/php7.y:3026 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5522,7 +5524,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3035 + // line internal/php7/php7.y:3037 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5535,7 +5537,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3046 + // line internal/php7/php7.y:3048 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5548,7 +5550,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3057 + // line internal/php7/php7.y:3059 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5561,7 +5563,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3068 + // line internal/php7/php7.y:3070 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5574,7 +5576,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3079 + // line internal/php7/php7.y:3081 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5587,7 +5589,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3090 + // line internal/php7/php7.y:3092 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5600,7 +5602,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3101 + // line internal/php7/php7.y:3103 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5613,7 +5615,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3112 + // line internal/php7/php7.y:3114 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5626,7 +5628,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3123 + // line internal/php7/php7.y:3125 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5639,7 +5641,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3134 + // line internal/php7/php7.y:3136 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5652,7 +5654,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3145 + // line internal/php7/php7.y:3147 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5665,7 +5667,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3156 + // line internal/php7/php7.y:3158 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5678,7 +5680,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3167 + // line internal/php7/php7.y:3169 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5691,7 +5693,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3178 + // line internal/php7/php7.y:3180 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5704,7 +5706,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3189 + // line internal/php7/php7.y:3191 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -5716,7 +5718,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3199 + // line internal/php7/php7.y:3201 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -5728,7 +5730,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3209 + // line internal/php7/php7.y:3211 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -5740,7 +5742,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3219 + // line internal/php7/php7.y:3221 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -5752,7 +5754,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3229 + // line internal/php7/php7.y:3231 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5765,7 +5767,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3240 + // line internal/php7/php7.y:3242 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5778,7 +5780,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3251 + // line internal/php7/php7.y:3253 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5791,7 +5793,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3262 + // line internal/php7/php7.y:3264 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5805,7 +5807,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3274 + // line internal/php7/php7.y:3276 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5818,7 +5820,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3285 + // line internal/php7/php7.y:3287 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5831,7 +5833,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3296 + // line internal/php7/php7.y:3298 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5844,7 +5846,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3307 + // line internal/php7/php7.y:3309 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5857,7 +5859,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3318 + // line internal/php7/php7.y:3320 { yyVAL.node = &ast.ExprBinarySpaceship{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5870,7 +5872,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3329 + // line internal/php7/php7.y:3331 { yyVAL.node = &ast.ExprInstanceOf{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5883,7 +5885,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3340 + // line internal/php7/php7.y:3342 { yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} @@ -5896,13 +5898,13 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3351 + // line internal/php7/php7.y:3353 { yyVAL.node = yyDollar[1].node } case 351: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:3355 + // line internal/php7/php7.y:3357 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -5916,7 +5918,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3367 + // line internal/php7/php7.y:3369 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -5930,7 +5932,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3379 + // line internal/php7/php7.y:3381 { yyVAL.node = &ast.ExprBinaryCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5943,13 +5945,13 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3390 + // line internal/php7/php7.y:3392 { yyVAL.node = yyDollar[1].node } case 355: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3394 + // line internal/php7/php7.y:3396 { yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node} @@ -5962,7 +5964,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3405 + // line internal/php7/php7.y:3407 { yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node} @@ -5975,7 +5977,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3416 + // line internal/php7/php7.y:3418 { yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node} @@ -5988,7 +5990,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3427 + // line internal/php7/php7.y:3429 { yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node} @@ -6001,7 +6003,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3438 + // line internal/php7/php7.y:3440 { yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node} @@ -6014,7 +6016,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3449 + // line internal/php7/php7.y:3451 { yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node} @@ -6027,7 +6029,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3460 + // line internal/php7/php7.y:3462 { yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node} @@ -6040,7 +6042,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3471 + // line internal/php7/php7.y:3473 { yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[2].node} @@ -6060,7 +6062,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3489 + // line internal/php7/php7.y:3491 { yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node} @@ -6072,13 +6074,13 @@ yydefault: } case 364: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3499 + // line internal/php7/php7.y:3501 { yyVAL.node = yyDollar[1].node } case 365: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3503 + // line internal/php7/php7.y:3505 { yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list} @@ -6090,7 +6092,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3513 + // line internal/php7/php7.y:3515 { yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} @@ -6102,7 +6104,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3523 + // line internal/php7/php7.y:3525 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil} @@ -6114,7 +6116,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3533 + // line internal/php7/php7.y:3535 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6126,7 +6128,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3543 + // line internal/php7/php7.y:3545 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6139,7 +6141,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3554 + // line internal/php7/php7.y:3556 { yyVAL.node = &ast.ExprYieldFrom{ast.Node{}, yyDollar[2].node} @@ -6151,13 +6153,13 @@ yydefault: } case 371: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3564 + // line internal/php7/php7.y:3566 { yyVAL.node = yyDollar[1].node } case 372: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3568 + // line internal/php7/php7.y:3570 { yyVAL.node = yyDollar[2].node @@ -6178,7 +6180,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-11 : yypt+1] -// line internal/php7/php7.y:3589 + // line internal/php7/php7.y:3591 { yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list} @@ -6209,7 +6211,7 @@ yydefault: } case 374: yyDollar = yyS[yypt-9 : yypt+1] -// line internal/php7/php7.y:3616 + // line internal/php7/php7.y:3618 { yyVAL.node = &ast.ExprArrowFunction{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[4].list, yyDollar[6].node, yyDollar[9].node} @@ -6235,25 +6237,25 @@ yydefault: } case 376: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3646 + // line internal/php7/php7.y:3648 { yyVAL.token = nil } case 377: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3650 + // line internal/php7/php7.y:3652 { yyVAL.token = yyDollar[1].token } case 378: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3657 + // line internal/php7/php7.y:3659 { yyVAL.ClosureUse = nil } case 379: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3661 + // line internal/php7/php7.y:3663 { yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list} @@ -6267,7 +6269,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3676 + // line internal/php7/php7.y:3678 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6276,13 +6278,13 @@ yydefault: } case 381: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3683 + // line internal/php7/php7.y:3685 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 382: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3690 + // line internal/php7/php7.y:3692 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier} @@ -6296,7 +6298,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3702 + // line internal/php7/php7.y:3704 { identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -6313,7 +6315,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3720 + // line internal/php7/php7.y:3722 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6325,7 +6327,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3730 + // line internal/php7/php7.y:3732 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6338,7 +6340,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3741 + // line internal/php7/php7.y:3743 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6351,7 +6353,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3752 + // line internal/php7/php7.y:3754 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6363,7 +6365,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3765 + // line internal/php7/php7.y:3767 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -6375,31 +6377,31 @@ yydefault: } case 389: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3775 + // line internal/php7/php7.y:3777 { yyVAL.node = yyDollar[1].node } case 390: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3782 + // line internal/php7/php7.y:3784 { yyVAL.node = yyDollar[1].node } case 391: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3786 + // line internal/php7/php7.y:3788 { yyVAL.node = yyDollar[1].node } case 392: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3793 + // line internal/php7/php7.y:3795 { yyVAL.node = nil } case 393: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3797 + // line internal/php7/php7.y:3799 { yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} @@ -6412,13 +6414,13 @@ yydefault: } case 394: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3811 + // line internal/php7/php7.y:3813 { yyVAL.list = []ast.Vertex{} } case 395: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3815 + // line internal/php7/php7.y:3817 { part := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{part} @@ -6428,25 +6430,25 @@ yydefault: } case 396: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3823 + // line internal/php7/php7.y:3825 { yyVAL.list = yyDollar[1].list } case 397: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3830 + // line internal/php7/php7.y:3832 { yyVAL.node = nil } case 398: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3834 + // line internal/php7/php7.y:3836 { yyVAL.node = yyDollar[1].node } case 399: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3841 + // line internal/php7/php7.y:3843 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -6460,7 +6462,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3853 + // line internal/php7/php7.y:3855 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -6473,7 +6475,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3864 + // line internal/php7/php7.y:3866 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -6485,7 +6487,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3877 + // line internal/php7/php7.y:3879 { yyVAL.node = &ast.ScalarLnumber{ast.Node{}, yyDollar[1].token.Value} @@ -6497,7 +6499,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3887 + // line internal/php7/php7.y:3889 { yyVAL.node = &ast.ScalarDnumber{ast.Node{}, yyDollar[1].token.Value} @@ -6509,7 +6511,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3897 + // line internal/php7/php7.y:3899 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6521,7 +6523,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3907 + // line internal/php7/php7.y:3909 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6533,7 +6535,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3917 + // line internal/php7/php7.y:3919 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6545,7 +6547,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3927 + // line internal/php7/php7.y:3929 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6557,7 +6559,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3937 + // line internal/php7/php7.y:3939 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6569,7 +6571,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3947 + // line internal/php7/php7.y:3949 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6581,7 +6583,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3957 + // line internal/php7/php7.y:3959 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6593,7 +6595,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3967 + // line internal/php7/php7.y:3969 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6605,7 +6607,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3977 + // line internal/php7/php7.y:3979 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, []ast.Vertex{encapsed}} @@ -6619,7 +6621,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3989 + // line internal/php7/php7.y:3991 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, nil} @@ -6631,7 +6633,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3999 + // line internal/php7/php7.y:4001 { yyVAL.node = &ast.ScalarEncapsed{ast.Node{}, yyDollar[2].list} @@ -6643,7 +6645,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4009 + // line internal/php7/php7.y:4011 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, yyDollar[2].list} @@ -6655,19 +6657,19 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4019 + // line internal/php7/php7.y:4021 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4023 + // line internal/php7/php7.y:4025 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4030 + // line internal/php7/php7.y:4032 { yyVAL.node = &ast.ExprConstFetch{ast.Node{}, yyDollar[1].node} @@ -6679,7 +6681,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4040 + // line internal/php7/php7.y:4042 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -6695,7 +6697,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4054 + // line internal/php7/php7.y:4056 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -6711,43 +6713,43 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4071 + // line internal/php7/php7.y:4073 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4075 + // line internal/php7/php7.y:4077 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:4082 + // line internal/php7/php7.y:4084 { yyVAL.node = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4086 + // line internal/php7/php7.y:4088 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4093 + // line internal/php7/php7.y:4095 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4100 + // line internal/php7/php7.y:4102 { yyVAL.node = yyDollar[1].node } case 427: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4104 + // line internal/php7/php7.y:4106 { yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} @@ -6760,19 +6762,19 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4115 + // line internal/php7/php7.y:4117 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4122 + // line internal/php7/php7.y:4124 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4126 + // line internal/php7/php7.y:4128 { yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} @@ -6785,19 +6787,19 @@ yydefault: } case 431: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4137 + // line internal/php7/php7.y:4139 { yyVAL.node = yyDollar[1].node } case 432: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4144 + // line internal/php7/php7.y:4146 { yyVAL.node = yyDollar[1].node } case 433: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4148 + // line internal/php7/php7.y:4150 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6810,7 +6812,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4159 + // line internal/php7/php7.y:4161 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6823,7 +6825,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4170 + // line internal/php7/php7.y:4172 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6836,7 +6838,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4181 + // line internal/php7/php7.y:4183 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6849,25 +6851,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4192 + // line internal/php7/php7.y:4194 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4199 + // line internal/php7/php7.y:4201 { yyVAL.node = yyDollar[1].node } case 439: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4203 + // line internal/php7/php7.y:4205 { yyVAL.node = yyDollar[1].node } case 440: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4207 + // line internal/php7/php7.y:4209 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6880,7 +6882,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4221 + // line internal/php7/php7.y:4223 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -6894,7 +6896,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4233 + // line internal/php7/php7.y:4235 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -6908,7 +6910,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4245 + // line internal/php7/php7.y:4247 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -6920,7 +6922,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4258 + // line internal/php7/php7.y:4260 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6933,7 +6935,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4269 + // line internal/php7/php7.y:4271 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6946,13 +6948,13 @@ yydefault: } case 446: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4283 + // line internal/php7/php7.y:4285 { yyVAL.node = yyDollar[1].node } case 447: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4287 + // line internal/php7/php7.y:4289 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6965,7 +6967,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4298 + // line internal/php7/php7.y:4300 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6978,7 +6980,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4309 + // line internal/php7/php7.y:4311 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6991,7 +6993,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4320 + // line internal/php7/php7.y:4322 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7004,7 +7006,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4331 + // line internal/php7/php7.y:4333 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7017,7 +7019,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4345 + // line internal/php7/php7.y:4347 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -7029,7 +7031,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4355 + // line internal/php7/php7.y:4357 { yyVAL.node = yyDollar[2].node @@ -7039,13 +7041,13 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4363 + // line internal/php7/php7.y:4365 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4370 + // line internal/php7/php7.y:4372 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -7057,7 +7059,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4380 + // line internal/php7/php7.y:4382 { yyVAL.node = yyDollar[2].node @@ -7067,31 +7069,31 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4388 + // line internal/php7/php7.y:4390 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4395 + // line internal/php7/php7.y:4397 { yyVAL.list = yyDollar[1].list } case 459: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:4402 + // line internal/php7/php7.y:4404 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} } case 460: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4406 + // line internal/php7/php7.y:4408 { yyVAL.node = yyDollar[1].node } case 461: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4413 + // line internal/php7/php7.y:4415 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}} @@ -7104,7 +7106,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4424 + // line internal/php7/php7.y:4426 { if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil { yyVAL.list = []ast.Vertex{} @@ -7114,7 +7116,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4435 + // line internal/php7/php7.y:4437 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} @@ -7127,7 +7129,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4446 + // line internal/php7/php7.y:4448 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} @@ -7139,7 +7141,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4456 + // line internal/php7/php7.y:4458 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference} @@ -7155,7 +7157,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4470 + // line internal/php7/php7.y:4472 { reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -7169,7 +7171,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4482 + // line internal/php7/php7.y:4484 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, true, nil, yyDollar[2].node} @@ -7181,7 +7183,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:4492 + // line internal/php7/php7.y:4494 { // TODO: Cannot use list() as standalone expression listNode := &ast.ExprList{ast.Node{}, yyDollar[5].list} @@ -7200,7 +7202,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4509 + // line internal/php7/php7.y:4511 { // TODO: Cannot use list() as standalone expression listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -7217,13 +7219,13 @@ yydefault: } case 470: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4527 + // line internal/php7/php7.y:4529 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 471: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4531 + // line internal/php7/php7.y:4533 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.list = append(yyDollar[1].list, encapsed) @@ -7236,13 +7238,13 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4542 + // line internal/php7/php7.y:4544 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 473: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4546 + // line internal/php7/php7.y:4548 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{encapsed, yyDollar[2].node} @@ -7255,7 +7257,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4560 + // line internal/php7/php7.y:4562 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -7269,7 +7271,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4572 + // line internal/php7/php7.y:4574 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -7286,7 +7288,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4587 + // line internal/php7/php7.y:4589 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -7305,7 +7307,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4604 + // line internal/php7/php7.y:4606 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7320,7 +7322,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4617 + // line internal/php7/php7.y:4619 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, name} @@ -7337,7 +7339,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:4632 + // line internal/php7/php7.y:4634 { identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -7356,7 +7358,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4649 + // line internal/php7/php7.y:4651 { yyVAL.node = yyDollar[2].node @@ -7366,7 +7368,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4660 + // line internal/php7/php7.y:4662 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -7378,7 +7380,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4670 + // line internal/php7/php7.y:4672 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -7395,7 +7397,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4685 + // line internal/php7/php7.y:4687 { var lnumber *ast.ScalarLnumber // TODO: add option to handle 64 bit integer @@ -7421,7 +7423,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4709 + // line internal/php7/php7.y:4711 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier} @@ -7435,7 +7437,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:4724 + // line internal/php7/php7.y:4726 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -7453,7 +7455,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4740 + // line internal/php7/php7.y:4742 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} yyVAL.node = &ast.ExprEmpty{ast.Node{}, exprBrackets} @@ -7469,7 +7471,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4754 + // line internal/php7/php7.y:4756 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -7481,7 +7483,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4764 + // line internal/php7/php7.y:4766 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -7493,7 +7495,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4774 + // line internal/php7/php7.y:4776 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} yyVAL.node = &ast.ExprEval{ast.Node{}, exprBrackets} @@ -7509,7 +7511,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4788 + // line internal/php7/php7.y:4790 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -7521,7 +7523,7 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4798 + // line internal/php7/php7.y:4800 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -7533,13 +7535,13 @@ yydefault: } case 492: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4811 + // line internal/php7/php7.y:4813 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 493: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4815 + // line internal/php7/php7.y:4817 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -7548,7 +7550,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4825 + // line internal/php7/php7.y:4827 { yyVAL.node = yyDollar[1].node } diff --git a/internal/php7/php7.y b/internal/php7/php7.y index 3013dfd..ab3d550 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -536,15 +536,14 @@ top_statement: } | T_CONST const_list ';' { - $$ = &ast.StmtConstList{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $3.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $3.SkippedTokens) + $$ = &ast.StmtConstList{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + ConstTkn: $1, + Consts: $2, + SemiColonTkn: $3, + } } ; @@ -782,10 +781,9 @@ use_declaration: const_list: const_list ',' const_decl { - $$ = append($1, $3) + lastNode($1).(*ast.StmtConstant).CommaTkn = $2 - // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.SkippedTokens) + $$ = append($1, $3) } | const_decl { @@ -2198,20 +2196,15 @@ class_statement: } | method_modifiers T_CONST class_const_list ';' { - $$ = &ast.StmtClassConstList{ast.Node{}, $1, $3} - - // save position - $$.GetNode().Position = position.NewOptionalListTokensPosition($1, $2, $4) - - // 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.StmtClassConstList{ + Node: ast.Node{ + Position: position.NewOptionalListTokensPosition($1, $2, $4), + }, + Modifiers: $1, + ConstTkn: $2, + Consts: $3, + SemiColonTkn: $4, } - yylex.(*Parser).setFreeFloating($$, token.ConstList, $4.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $4.SkippedTokens) } | T_USE name_list trait_adaptations { @@ -2616,10 +2609,9 @@ property: class_const_list: class_const_list ',' class_const_decl { - $$ = append($1, $3) + lastNode($1).(*ast.StmtConstant).CommaTkn = $2 - // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.SkippedTokens) + $$ = append($1, $3) } | class_const_decl { @@ -2630,32 +2622,42 @@ class_const_list: class_const_decl: identifier '=' expr backup_doc_comment { - name := &ast.Identifier{ast.Node{}, $1.Value} - $$ = &ast.StmtConstant{ast.Node{}, name, $3} + $$ = &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $3), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + Value: $1.Value, + }, + EqualTkn: $2, + Expr: $3, + } - // save position - name.GetNode().Position = position.NewTokenPosition($1) - $$.GetNode().Position = position.NewTokenNodePosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) + yylex.(*Parser).setFreeFloating($$.(*ast.StmtConstant).Name, token.Start, $1.SkippedTokens) } ; const_decl: T_STRING '=' expr backup_doc_comment { - name := &ast.Identifier{ast.Node{}, $1.Value} - $$ = &ast.StmtConstant{ast.Node{}, name, $3} + $$ = &ast.StmtConstant{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $3), + }, + Name: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + Value: $1.Value, + }, + EqualTkn: $2, + Expr: $3, + } - // save position - name.GetNode().Position = position.NewTokenPosition($1) - $$.GetNode().Position = position.NewTokenNodePosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens) + yylex.(*Parser).setFreeFloating($$.(*ast.StmtConstant).Name, token.Start, $1.SkippedTokens) } ; diff --git a/internal/php7/php7_test.go b/internal/php7/php7_test.go index d717743..8f474fa 100644 --- a/internal/php7/php7_test.go +++ b/internal/php7/php7_test.go @@ -3919,7 +3919,7 @@ func TestPhp7(t *testing.T) { EndPos: 1322, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 70, @@ -3951,7 +3951,7 @@ func TestPhp7(t *testing.T) { EndPos: 1331, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 70, @@ -4018,7 +4018,7 @@ func TestPhp7(t *testing.T) { EndPos: 1359, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 71, @@ -4050,7 +4050,7 @@ func TestPhp7(t *testing.T) { EndPos: 1368, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 71, @@ -4732,7 +4732,7 @@ func TestPhp7(t *testing.T) { EndPos: 1693, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 81, @@ -4764,7 +4764,7 @@ func TestPhp7(t *testing.T) { EndPos: 1702, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 81, @@ -4959,7 +4959,7 @@ func TestPhp7(t *testing.T) { EndPos: 1796, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 85, @@ -5013,7 +5013,7 @@ func TestPhp7(t *testing.T) { EndPos: 1814, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 86, @@ -5069,7 +5069,7 @@ func TestPhp7(t *testing.T) { EndPos: 1834, }, }, - ConstantName: &ast.Identifier{ + Name: &ast.Identifier{ Node: ast.Node{ Position: &position.Position{ StartLine: 87, diff --git a/pkg/ast/node.go b/pkg/ast/node.go index 4b633fe..038dc46 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -318,8 +318,10 @@ func (n *StmtClass) Accept(v NodeVisitor) { // StmtClassConstList node type StmtClassConstList struct { Node - Modifiers []Vertex - Consts []Vertex + Modifiers []Vertex + ConstTkn *token.Token + Consts []Vertex + SemiColonTkn *token.Token } func (n *StmtClassConstList) Accept(v NodeVisitor) { @@ -364,7 +366,9 @@ func (n *StmtClassMethod) Accept(v NodeVisitor) { // StmtConstList node type StmtConstList struct { Node - Consts []Vertex + ConstTkn *token.Token + Consts []Vertex + SemiColonTkn *token.Token } func (n *StmtConstList) Accept(v NodeVisitor) { @@ -374,8 +378,10 @@ func (n *StmtConstList) Accept(v NodeVisitor) { // StmtConstant node type StmtConstant struct { Node - ConstantName Vertex - Expr Vertex + Name Vertex + EqualTkn *token.Token + Expr Vertex + CommaTkn *token.Token } func (n *StmtConstant) Accept(v NodeVisitor) { diff --git a/pkg/ast/traverser/dfs.go b/pkg/ast/traverser/dfs.go index 7e41a44..3d9d5a5 100644 --- a/pkg/ast/traverser/dfs.go +++ b/pkg/ast/traverser/dfs.go @@ -487,10 +487,10 @@ func (t *DFS) Traverse(n ast.Vertex) { if !t.visitor.EnterNode(nn) { return } - if nn.ConstantName != nil { - t.visitor.Enter("ConstantName", true) - t.Traverse(nn.ConstantName) - t.visitor.Leave("ConstantName", true) + if nn.Name != nil { + t.visitor.Enter("Name", true) + t.Traverse(nn.Name) + t.visitor.Leave("Name", true) } if nn.Expr != nil { t.visitor.Enter("Expr", true) @@ -1334,9 +1334,9 @@ func (t *DFS) Traverse(n ast.Vertex) { t.visitor.Leave("Class", true) } if nn.ConstantName != nil { - t.visitor.Enter("ConstantName", true) + t.visitor.Enter("Name", true) t.Traverse(nn.ConstantName) - t.visitor.Leave("ConstantName", true) + t.visitor.Leave("Name", true) } case *ast.ExprClone: if nn == nil { diff --git a/pkg/ast/visitor/filter_tokens.go b/pkg/ast/visitor/filter_tokens.go index ff7f336..5cd2215 100644 --- a/pkg/ast/visitor/filter_tokens.go +++ b/pkg/ast/visitor/filter_tokens.go @@ -67,3 +67,18 @@ func (v *FilterTokens) StmtHaltCompiler(n *ast.StmtHaltCompiler) { n.CloseParenthesisTkn = nil n.SemiColonTkn = nil } + +func (v *FilterTokens) StmtConstList(n *ast.StmtConstList) { + n.ConstTkn = nil + n.SemiColonTkn = nil +} + +func (v *FilterTokens) StmtClassConstList(n *ast.StmtClassConstList) { + n.ConstTkn = nil + n.SemiColonTkn = nil +} + +func (v *FilterTokens) StmtConstant(n *ast.StmtConstant) { + n.EqualTkn = nil + n.CommaTkn = nil +} diff --git a/pkg/ast/visitor/namespace_resolver.go b/pkg/ast/visitor/namespace_resolver.go index fb5659d..3eac4a1 100644 --- a/pkg/ast/visitor/namespace_resolver.go +++ b/pkg/ast/visitor/namespace_resolver.go @@ -141,7 +141,7 @@ func (nsr *NamespaceResolver) StmtPropertyList(n *ast.StmtPropertyList) { func (nsr *NamespaceResolver) StmtConstList(n *ast.StmtConstList) { for _, constant := range n.Consts { - nsr.AddNamespacedName(constant, string(constant.(*ast.StmtConstant).ConstantName.(*ast.Identifier).Value)) + nsr.AddNamespacedName(constant, string(constant.(*ast.StmtConstant).Name.(*ast.Identifier).Value)) } } diff --git a/pkg/ast/visitor/namespace_resolver_test.go b/pkg/ast/visitor/namespace_resolver_test.go index 5b01ecc..8e84e88 100644 --- a/pkg/ast/visitor/namespace_resolver_test.go +++ b/pkg/ast/visitor/namespace_resolver_test.go @@ -594,12 +594,12 @@ func TestResolveConstantsName(t *testing.T) { nameAB := &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("A")}, &ast.NameNamePart{Value: []byte("B")}}} constantB := &ast.StmtConstant{ - ConstantName: &ast.Identifier{Value: []byte("B")}, - Expr: &ast.ScalarLnumber{Value: []byte("1")}, + Name: &ast.Identifier{Value: []byte("B")}, + Expr: &ast.ScalarLnumber{Value: []byte("1")}, } constantC := &ast.StmtConstant{ - ConstantName: &ast.Identifier{Value: []byte("C")}, - Expr: &ast.ScalarLnumber{Value: []byte("1")}, + Name: &ast.Identifier{Value: []byte("C")}, + Expr: &ast.ScalarLnumber{Value: []byte("1")}, } stxTree := &ast.StmtStmtList{ @@ -638,12 +638,12 @@ func TestResolveNamespaces(t *testing.T) { relativeNameCE := &ast.NameRelative{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("C")}, &ast.NameNamePart{Value: []byte("E")}}} constantB := &ast.StmtConstant{ - ConstantName: &ast.Identifier{Value: []byte("B")}, - Expr: &ast.ScalarLnumber{Value: []byte("1")}, + Name: &ast.Identifier{Value: []byte("B")}, + Expr: &ast.ScalarLnumber{Value: []byte("1")}, } constantC := &ast.StmtConstant{ - ConstantName: &ast.Identifier{Value: []byte("C")}, - Expr: &ast.ScalarLnumber{Value: []byte("1")}, + Name: &ast.Identifier{Value: []byte("C")}, + Expr: &ast.ScalarLnumber{Value: []byte("1")}, } stxTree := &ast.StmtStmtList{ diff --git a/pkg/printer/pretty_printer.go b/pkg/printer/pretty_printer.go index fca19fd..cd5d20f 100644 --- a/pkg/printer/pretty_printer.go +++ b/pkg/printer/pretty_printer.go @@ -1603,7 +1603,7 @@ func (p *PrettyPrinter) printStmtClassConstList(n ast.Vertex) { func (p *PrettyPrinter) printStmtConstant(n ast.Vertex) { nn := n.(*ast.StmtConstant) - p.Print(nn.ConstantName) + p.Print(nn.Name) io.WriteString(p.w, " = ") p.Print(nn.Expr) } diff --git a/pkg/printer/pretty_printer_test.go b/pkg/printer/pretty_printer_test.go index c457cb8..343703b 100644 --- a/pkg/printer/pretty_printer_test.go +++ b/pkg/printer/pretty_printer_test.go @@ -2530,8 +2530,8 @@ func TestPrintStmtClass(t *testing.T) { Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("public")}}, Consts: []ast.Vertex{ &ast.StmtConstant{ - ConstantName: &ast.Identifier{Value: []byte("FOO")}, - Expr: &ast.ScalarString{Value: []byte("'bar'")}, + Name: &ast.Identifier{Value: []byte("FOO")}, + Expr: &ast.ScalarString{Value: []byte("'bar'")}, }, }, }, @@ -2585,8 +2585,8 @@ func TestPrintStmtAnonymousClass(t *testing.T) { Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("public")}}, Consts: []ast.Vertex{ &ast.StmtConstant{ - ConstantName: &ast.Identifier{Value: []byte("FOO")}, - Expr: &ast.ScalarString{Value: []byte("'bar'")}, + Name: &ast.Identifier{Value: []byte("FOO")}, + Expr: &ast.ScalarString{Value: []byte("'bar'")}, }, }, }, @@ -2616,12 +2616,12 @@ func TestPrintStmtClassConstList(t *testing.T) { Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("public")}}, Consts: []ast.Vertex{ &ast.StmtConstant{ - ConstantName: &ast.Identifier{Value: []byte("FOO")}, - Expr: &ast.ScalarString{Value: []byte("'a'")}, + Name: &ast.Identifier{Value: []byte("FOO")}, + Expr: &ast.ScalarString{Value: []byte("'a'")}, }, &ast.StmtConstant{ - ConstantName: &ast.Identifier{Value: []byte("BAR")}, - Expr: &ast.ScalarString{Value: []byte("'b'")}, + Name: &ast.Identifier{Value: []byte("BAR")}, + Expr: &ast.ScalarString{Value: []byte("'b'")}, }, }, }) @@ -2639,8 +2639,8 @@ func TestPrintStmtConstant(t *testing.T) { p := printer.NewPrettyPrinter(o, " ") p.Print(&ast.StmtConstant{ - ConstantName: &ast.Identifier{Value: []byte("FOO")}, - Expr: &ast.ScalarString{Value: []byte("'BAR'")}, + Name: &ast.Identifier{Value: []byte("FOO")}, + Expr: &ast.ScalarString{Value: []byte("'BAR'")}, }) expected := "FOO = 'BAR'" @@ -2676,8 +2676,8 @@ func TestPrintStmtDeclareStmts(t *testing.T) { &ast.StmtDeclare{ Consts: []ast.Vertex{ &ast.StmtConstant{ - ConstantName: &ast.Identifier{Value: []byte("FOO")}, - Expr: &ast.ScalarString{Value: []byte("'bar'")}, + Name: &ast.Identifier{Value: []byte("FOO")}, + Expr: &ast.ScalarString{Value: []byte("'bar'")}, }, }, Stmt: &ast.StmtStmtList{ @@ -2710,8 +2710,8 @@ func TestPrintStmtDeclareExpr(t *testing.T) { &ast.StmtDeclare{ Consts: []ast.Vertex{ &ast.StmtConstant{ - ConstantName: &ast.Identifier{Value: []byte("FOO")}, - Expr: &ast.ScalarString{Value: []byte("'bar'")}, + Name: &ast.Identifier{Value: []byte("FOO")}, + Expr: &ast.ScalarString{Value: []byte("'bar'")}, }, }, Stmt: &ast.StmtExpression{Expr: &ast.ScalarString{Value: []byte("'bar'")}}, @@ -2737,8 +2737,8 @@ func TestPrintStmtDeclareNop(t *testing.T) { p.Print(&ast.StmtDeclare{ Consts: []ast.Vertex{ &ast.StmtConstant{ - ConstantName: &ast.Identifier{Value: []byte("FOO")}, - Expr: &ast.ScalarString{Value: []byte("'bar'")}, + Name: &ast.Identifier{Value: []byte("FOO")}, + Expr: &ast.ScalarString{Value: []byte("'bar'")}, }, }, Stmt: &ast.StmtNop{}, diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index 450f928..f87cd9b 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -2421,69 +2421,27 @@ func (p *Printer) printStmtClass(n ast.Vertex) { p.printFreeFloating(nn, token.End) } -func (p *Printer) printStmtClassConstList(n ast.Vertex) { - nn := n.(*ast.StmtClassConstList) - p.printFreeFloating(nn, token.Start) - - if nn.Modifiers != nil { - for k, m := range nn.Modifiers { - if k > 0 && m.GetNode().Tokens.IsEmpty() { - io.WriteString(p.w, " ") - } - p.Print(m) - } - - if nn.GetNode().Tokens.IsEmpty() { - io.WriteString(p.w, " ") - } - } - p.printFreeFloating(nn, token.ModifierList) - io.WriteString(p.w, "const") - - if nn.Consts[0].GetNode().Tokens.IsEmpty() { - io.WriteString(p.w, " ") - } - p.joinPrint(",", nn.Consts) - p.printFreeFloating(nn, token.ConstList) - - p.printFreeFloating(nn, token.SemiColon) - if nn.GetNode().Tokens.IsEmpty() { - io.WriteString(p.w, ";") - } - - p.printFreeFloating(nn, token.End) +func (p *Printer) printStmtClassConstList(n *ast.StmtClassConstList) { + p.joinPrintRefactored(" ", n.Modifiers) + p.bufStart = " " + p.printToken(n.ConstTkn, "const") + p.bufStart = " " + p.joinPrintRefactored(",", n.Consts) + p.printToken(n.SemiColonTkn, ";") } -func (p *Printer) printStmtConstList(n ast.Vertex) { - nn := n.(*ast.StmtConstList) - p.printFreeFloating(nn, token.Start) - - io.WriteString(p.w, "const") - - if nn.Consts[0].GetNode().Tokens.IsEmpty() { - io.WriteString(p.w, " ") - } - p.joinPrint(",", nn.Consts) - p.printFreeFloating(nn, token.Stmts) - - p.printFreeFloating(nn, token.SemiColon) - if nn.GetNode().Tokens.IsEmpty() { - io.WriteString(p.w, ";") - } - - p.printFreeFloating(nn, token.End) +func (p *Printer) printStmtConstList(n *ast.StmtConstList) { + p.printToken(n.ConstTkn, "const") + p.bufStart = " " + p.joinPrintRefactored(",", n.Consts) + p.printToken(n.SemiColonTkn, ";") } -func (p *Printer) printStmtConstant(n ast.Vertex) { - nn := n.(*ast.StmtConstant) - p.printFreeFloating(nn, token.Start) - - p.Print(nn.ConstantName) - p.printFreeFloating(nn, token.Name) - io.WriteString(p.w, "=") - p.Print(nn.Expr) - - p.printFreeFloating(nn, token.End) +func (p *Printer) printStmtConstant(n *ast.StmtConstant) { + p.Print(n.Name) + p.printToken(n.EqualTkn, "=") + p.Print(n.Expr) + p.printToken(n.CommaTkn, "") } func (p *Printer) printStmtContinue(n ast.Vertex) { @@ -2515,7 +2473,7 @@ func (p *Printer) printStmtDeclare(n ast.Vertex) { io.WriteString(p.w, "declare") p.printFreeFloating(nn, token.Declare) io.WriteString(p.w, "(") - p.joinPrint(",", nn.Consts) + p.joinPrintRefactored(",", nn.Consts) p.printFreeFloating(nn, token.ConstList) io.WriteString(p.w, ")") diff --git a/pkg/printer/printer_parsed_php5_test.go b/pkg/printer/printer_parsed_php5_test.go index a65bd6b..5c14c0f 100644 --- a/pkg/printer/printer_parsed_php5_test.go +++ b/pkg/printer/printer_parsed_php5_test.go @@ -896,7 +896,8 @@ func TestParseAndPrintPhp5ClassConstList(t *testing.T) { } func TestParseAndPrintPhp5ConstList(t *testing.T) { - src := `