diff --git a/internal/php5/parser_test.go b/internal/php5/parser_test.go index 6ab5b7a..ab1446d 100644 --- a/internal/php5/parser_test.go +++ b/internal/php5/parser_test.go @@ -8546,7 +8546,7 @@ func TestStmtNamespace(t *testing.T) { EndPos: 17, }, }, - NamespaceName: &ast.NameName{ + Name: &ast.NameName{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -8604,7 +8604,7 @@ func TestStmtNamespace_Stmts(t *testing.T) { EndPos: 19, }, }, - NamespaceName: &ast.NameName{ + Name: &ast.NameName{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, diff --git a/internal/php5/php5.go b/internal/php5/php5.go index a1be3c0..b074c96 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:6088 +// line internal/php5/php5.y:6126 type simpleIndirectReference struct { all []*ast.ExprVariable @@ -2315,7 +2315,7 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:275 +// line internal/php5/php5.y:275 { yylex.(*Parser).rootNode = &ast.Root{ast.Node{}, yyDollar[1].list} yylex.(*Parser).rootNode.GetNode().Position = position.NewNodeListPosition(yyDollar[1].list) @@ -2324,7 +2324,7 @@ yydefault: } case 2: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:285 +// line internal/php5/php5.y:285 { if inlineHtmlNode, ok := yyDollar[2].node.(*ast.StmtInlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) @@ -2337,65 +2337,65 @@ yydefault: } case 3: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:296 +// line internal/php5/php5.y:296 { yyVAL.list = []ast.Vertex{} } case 4: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:303 +// line internal/php5/php5.y:303 { - namePart := &ast.NameNamePart{ast.Node{}, yyDollar[1].token.Value} - yyVAL.list = []ast.Vertex{namePart} - - // save position - namePart.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(namePart, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.list = []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + StringTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, + } } case 5: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:314 +// line internal/php5/php5.y:315 { - namePart := &ast.NameNamePart{ast.Node{}, yyDollar[3].token.Value} - yyVAL.list = append(yyDollar[1].list, namePart) - - // save position - namePart.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) - - // save comments - yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(namePart, token.Start, yyDollar[3].token.SkippedTokens) + yyVAL.list = append(yyDollar[1].list, &ast.NameNamePart{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[2].token, yyDollar[3].token), + }, + NsSeparatorTkn: yyDollar[2].token, + StringTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + }) } case 6: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:329 +// line internal/php5/php5.y:329 { // error yyVAL.node = nil } case 7: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:334 +// line internal/php5/php5.y:334 { yyVAL.node = yyDollar[1].node } case 8: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:338 +// line internal/php5/php5.y:338 { yyVAL.node = yyDollar[1].node } case 9: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:342 +// line internal/php5/php5.y:342 { yyVAL.node = yyDollar[1].node } case 10: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:346 +// line internal/php5/php5.y:346 { yyVAL.node = &ast.StmtHaltCompiler{ast.Node{}} @@ -2408,53 +2408,59 @@ yydefault: } case 11: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:357 +// line internal/php5/php5.y:357 { - name := &ast.NameName{ast.Node{}, yyDollar[2].list} - yyVAL.node = &ast.StmtNamespace{ast.Node{}, name, nil} - - // save position - name.GetNode().Position = position.NewNodeListPosition(yyDollar[2].list) - 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(name, token.End, yyDollar[3].token.SkippedTokens) - yylex.(*Parser).setToken(yyVAL.node, token.SemiColon, yyDollar[3].token.SkippedTokens) + yyVAL.node = &ast.StmtNamespace{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), + }, + NsTkn: yyDollar[1].token, + Name: &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition(yyDollar[2].list), + }, + Parts: yyDollar[2].list, + }, + SemiColonTkn: yyDollar[3].token, + } } case 12: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:371 +// line internal/php5/php5.y:373 { - name := &ast.NameName{ast.Node{}, yyDollar[2].list} - yyVAL.node = &ast.StmtNamespace{ast.Node{}, name, yyDollar[4].list} - - // save position - name.GetNode().Position = position.NewNodeListPosition(yyDollar[2].list) - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[5].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.End, yyDollar[3].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[5].token.SkippedTokens) + yyVAL.node = &ast.StmtNamespace{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[5].token), + }, + NsTkn: yyDollar[1].token, + Name: &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition(yyDollar[2].list), + }, + Parts: yyDollar[2].list, + }, + OpenCurlyBracket: yyDollar[3].token, + Stmts: yyDollar[4].list, + CloseCurlyBracket: yyDollar[5].token, + } } case 13: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:385 +// line internal/php5/php5.y:391 { - yyVAL.node = &ast.StmtNamespace{ast.Node{}, nil, yyDollar[3].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Namespace, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.StmtNamespace{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), + }, + NsTkn: yyDollar[1].token, + OpenCurlyBracket: yyDollar[2].token, + Stmts: yyDollar[3].list, + CloseCurlyBracket: yyDollar[4].token, + } } case 14: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:397 +// line internal/php5/php5.y:403 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2467,7 +2473,7 @@ yydefault: } case 15: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:408 +// line internal/php5/php5.y:414 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2486,7 +2492,7 @@ yydefault: } case 16: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:425 +// line internal/php5/php5.y:431 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2505,7 +2511,7 @@ yydefault: } case 17: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:442 +// line internal/php5/php5.y:448 { yyVAL.node = yyDollar[1].node @@ -2518,7 +2524,7 @@ yydefault: } case 18: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:456 +// line internal/php5/php5.y:462 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2526,13 +2532,13 @@ yydefault: } case 19: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:462 +// line internal/php5/php5.y:468 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 20: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:469 +// line internal/php5/php5.y:475 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2548,7 +2554,7 @@ yydefault: } case 21: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:483 +// line internal/php5/php5.y:489 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2571,7 +2577,7 @@ yydefault: } case 22: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:504 +// line internal/php5/php5.y:510 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2588,7 +2594,7 @@ yydefault: } case 23: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:519 +// line internal/php5/php5.y:525 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2612,7 +2618,7 @@ yydefault: } case 24: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:544 +// line internal/php5/php5.y:550 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2620,13 +2626,13 @@ yydefault: } case 25: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:550 +// line internal/php5/php5.y:556 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 26: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:557 +// line internal/php5/php5.y:563 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2642,7 +2648,7 @@ yydefault: } case 27: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:571 +// line internal/php5/php5.y:577 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2665,7 +2671,7 @@ yydefault: } case 28: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:592 +// line internal/php5/php5.y:598 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2682,7 +2688,7 @@ yydefault: } case 29: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:607 +// line internal/php5/php5.y:613 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2706,7 +2712,7 @@ yydefault: } case 30: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:632 +// line internal/php5/php5.y:638 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2714,13 +2720,13 @@ yydefault: } case 31: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:638 +// line internal/php5/php5.y:644 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 32: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:645 +// line internal/php5/php5.y:651 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2736,7 +2742,7 @@ yydefault: } case 33: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:659 +// line internal/php5/php5.y:665 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2759,7 +2765,7 @@ yydefault: } case 34: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:680 +// line internal/php5/php5.y:686 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2776,7 +2782,7 @@ yydefault: } case 35: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:695 +// line internal/php5/php5.y:701 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -2800,7 +2806,7 @@ yydefault: } case 36: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:720 +// line internal/php5/php5.y:726 { name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[5].node} @@ -2821,7 +2827,7 @@ yydefault: } case 37: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:739 +// line internal/php5/php5.y:745 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[4].node} @@ -2840,7 +2846,7 @@ yydefault: } case 38: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:759 +// line internal/php5/php5.y:765 { if inlineHtmlNode, ok := yyDollar[2].node.(*ast.StmtInlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) @@ -2853,38 +2859,38 @@ yydefault: } case 39: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:770 +// line internal/php5/php5.y:776 { yyVAL.list = []ast.Vertex{} } case 40: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:778 +// line internal/php5/php5.y:784 { // error yyVAL.node = nil } case 41: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:783 +// line internal/php5/php5.y:789 { yyVAL.node = yyDollar[1].node } case 42: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:787 +// line internal/php5/php5.y:793 { yyVAL.node = yyDollar[1].node } case 43: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:791 +// line internal/php5/php5.y:797 { yyVAL.node = yyDollar[1].node } case 44: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:795 +// line internal/php5/php5.y:801 { yyVAL.node = &ast.StmtHaltCompiler{ast.Node{}} @@ -2897,13 +2903,13 @@ yydefault: } case 45: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:810 +// line internal/php5/php5.y:816 { yyVAL.node = yyDollar[1].node } case 46: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:814 +// line internal/php5/php5.y:820 { label := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtLabel{ast.Node{}, label} @@ -2918,7 +2924,7 @@ yydefault: } case 47: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:830 +// line internal/php5/php5.y:836 { yyVAL.node = &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} @@ -2931,7 +2937,7 @@ yydefault: } case 48: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:841 +// line internal/php5/php5.y:847 { yyVAL.node = &ast.StmtIf{ast.Node{}, yyDollar[2].node, yyDollar[3].node, yyDollar[4].list, yyDollar[5].node} @@ -2949,7 +2955,7 @@ yydefault: } case 49: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php5/php5.y:857 +// line internal/php5/php5.y:863 { stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[4].list} stmtsBrackets := &ast.ParserBrackets{ast.Node{}, stmts} @@ -2974,7 +2980,7 @@ yydefault: } case 50: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:880 +// line internal/php5/php5.y:886 { switch n := yyDollar[3].node.(type) { case *ast.StmtWhile: @@ -2993,7 +2999,7 @@ yydefault: } case 51: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:897 +// line internal/php5/php5.y:903 { yyVAL.node = &ast.StmtDo{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -3008,7 +3014,7 @@ yydefault: } case 52: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php5/php5.y:910 +// line internal/php5/php5.y:916 { switch n := yyDollar[9].node.(type) { case *ast.StmtFor: @@ -3035,7 +3041,7 @@ yydefault: } case 53: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:935 +// line internal/php5/php5.y:941 { switch n := yyDollar[3].node.(type) { case *ast.StmtSwitch: @@ -3056,7 +3062,7 @@ yydefault: } case 54: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:954 +// line internal/php5/php5.y:960 { yyVAL.node = &ast.StmtBreak{ast.Node{}, nil} @@ -3070,7 +3076,7 @@ yydefault: } case 55: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:966 +// line internal/php5/php5.y:972 { yyVAL.node = &ast.StmtBreak{ast.Node{}, yyDollar[2].node} @@ -3084,7 +3090,7 @@ yydefault: } case 56: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:978 +// line internal/php5/php5.y:984 { yyVAL.node = &ast.StmtContinue{ast.Node{}, nil} @@ -3098,7 +3104,7 @@ yydefault: } case 57: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:990 +// line internal/php5/php5.y:996 { yyVAL.node = &ast.StmtContinue{ast.Node{}, yyDollar[2].node} @@ -3112,7 +3118,7 @@ yydefault: } case 58: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1002 +// line internal/php5/php5.y:1008 { yyVAL.node = &ast.StmtReturn{ast.Node{}, nil} @@ -3126,7 +3132,7 @@ yydefault: } case 59: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1014 +// line internal/php5/php5.y:1020 { yyVAL.node = &ast.StmtReturn{ast.Node{}, yyDollar[2].node} @@ -3140,7 +3146,7 @@ yydefault: } case 60: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1026 +// line internal/php5/php5.y:1032 { yyVAL.node = &ast.StmtReturn{ast.Node{}, yyDollar[2].node} @@ -3154,7 +3160,7 @@ yydefault: } case 61: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1038 +// line internal/php5/php5.y:1044 { yyVAL.node = &ast.StmtExpression{ast.Node{}, yyDollar[1].node} @@ -3168,7 +3174,7 @@ yydefault: } case 62: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1050 +// line internal/php5/php5.y:1056 { yyVAL.node = &ast.StmtGlobal{ast.Node{}, yyDollar[2].list} @@ -3182,7 +3188,7 @@ yydefault: } case 63: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1062 +// line internal/php5/php5.y:1068 { yyVAL.node = &ast.StmtStatic{ast.Node{}, yyDollar[2].list} @@ -3196,7 +3202,7 @@ yydefault: } case 64: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1074 +// line internal/php5/php5.y:1080 { yyVAL.node = &ast.StmtEcho{ast.Node{}, yyDollar[2].list} @@ -3211,7 +3217,7 @@ yydefault: } case 65: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1087 +// line internal/php5/php5.y:1093 { yyVAL.node = &ast.StmtInlineHtml{ast.Node{}, yyDollar[1].token.Value} @@ -3223,7 +3229,7 @@ yydefault: } case 66: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1097 +// line internal/php5/php5.y:1103 { yyVAL.node = &ast.StmtExpression{ast.Node{}, yyDollar[1].node} @@ -3237,7 +3243,7 @@ yydefault: } case 67: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:1109 +// line internal/php5/php5.y:1115 { yyVAL.node = &ast.StmtUnset{ast.Node{}, yyDollar[3].list} @@ -3253,7 +3259,7 @@ yydefault: } case 68: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php5/php5.y:1123 +// line internal/php5/php5.y:1129 { if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { @@ -3294,7 +3300,7 @@ yydefault: } case 69: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php5/php5.y:1161 +// line internal/php5/php5.y:1167 { if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { @@ -3335,7 +3341,7 @@ yydefault: } case 70: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:1199 +// line internal/php5/php5.y:1205 { yyVAL.node = yyDollar[5].node yyVAL.node.(*ast.StmtDeclare).Consts = yyDollar[3].list @@ -3350,7 +3356,7 @@ yydefault: } case 71: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1212 +// line internal/php5/php5.y:1218 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -3363,7 +3369,7 @@ yydefault: } case 72: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:1223 +// line internal/php5/php5.y:1229 { yyVAL.node = &ast.StmtTry{ast.Node{}, yyDollar[3].list, yyDollar[5].list, yyDollar[6].node} @@ -3381,7 +3387,7 @@ yydefault: } case 73: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1239 +// line internal/php5/php5.y:1245 { yyVAL.node = &ast.StmtThrow{ast.Node{}, yyDollar[2].node} @@ -3395,7 +3401,7 @@ yydefault: } case 74: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1251 +// line internal/php5/php5.y:1257 { label := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.StmtGoto{ast.Node{}, label} @@ -3412,13 +3418,13 @@ yydefault: } case 75: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1269 +// line internal/php5/php5.y:1275 { yyVAL.list = []ast.Vertex{} } case 76: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php5/php5.y:1273 +// line internal/php5/php5.y:1279 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -3440,13 +3446,13 @@ yydefault: } case 77: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1296 +// line internal/php5/php5.y:1302 { yyVAL.node = nil } case 78: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1300 +// line internal/php5/php5.y:1306 { yyVAL.node = &ast.StmtFinally{ast.Node{}, yyDollar[3].list} @@ -3460,31 +3466,31 @@ yydefault: } case 79: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1315 +// line internal/php5/php5.y:1321 { yyVAL.list = yyDollar[1].list } case 80: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1319 +// line internal/php5/php5.y:1325 { yyVAL.list = []ast.Vertex{} } case 81: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1326 +// line internal/php5/php5.y:1332 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 82: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1330 +// line internal/php5/php5.y:1336 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 83: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php5/php5.y:1337 +// line internal/php5/php5.y:1343 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -3505,13 +3511,13 @@ yydefault: } case 84: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1359 +// line internal/php5/php5.y:1365 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 85: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1363 +// line internal/php5/php5.y:1369 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3520,49 +3526,49 @@ yydefault: } case 86: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1373 +// line internal/php5/php5.y:1379 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1380 +// line internal/php5/php5.y:1386 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1387 +// line internal/php5/php5.y:1393 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1394 +// line internal/php5/php5.y:1400 { yyVAL.token = nil } case 90: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1398 +// line internal/php5/php5.y:1404 { yyVAL.token = yyDollar[1].token } case 91: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1405 +// line internal/php5/php5.y:1411 { yyVAL.token = nil } case 92: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1409 +// line internal/php5/php5.y:1415 { yyVAL.token = yyDollar[1].token } case 93: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php5/php5.y:1416 +// line internal/php5/php5.y:1422 { 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} @@ -3586,7 +3592,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php5/php5.y:1441 +// line internal/php5/php5.y:1447 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} switch n := yyDollar[1].node.(type) { @@ -3614,7 +3620,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:1467 +// line internal/php5/php5.y:1473 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.StmtInterface{ast.Node{}, name, yyDollar[3].InterfaceExtends, yyDollar[5].list} @@ -3631,7 +3637,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1486 +// line internal/php5/php5.y:1492 { yyVAL.node = &ast.StmtClass{ast.Node{}, nil, nil, nil, nil, nil, nil} @@ -3643,7 +3649,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1496 +// line internal/php5/php5.y:1502 { classModifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil} @@ -3658,7 +3664,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1509 +// line internal/php5/php5.y:1515 { yyVAL.node = &ast.StmtTrait{ast.Node{}, nil, nil} @@ -3670,7 +3676,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1519 +// line internal/php5/php5.y:1525 { classModifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil} @@ -3685,13 +3691,13 @@ yydefault: } case 100: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1535 +// line internal/php5/php5.y:1541 { yyVAL.ClassExtends = nil } case 101: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1539 +// line internal/php5/php5.y:1545 { yyVAL.ClassExtends = &ast.StmtClassExtends{ast.Node{}, yyDollar[2].node} @@ -3703,19 +3709,19 @@ yydefault: } case 102: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1552 +// line internal/php5/php5.y:1558 { yyVAL.token = yyDollar[1].token } case 103: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1559 +// line internal/php5/php5.y:1565 { yyVAL.InterfaceExtends = nil } case 104: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1563 +// line internal/php5/php5.y:1569 { yyVAL.InterfaceExtends = &ast.StmtInterfaceExtends{ast.Node{}, yyDollar[2].list} @@ -3727,13 +3733,13 @@ yydefault: } case 105: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1576 +// line internal/php5/php5.y:1582 { yyVAL.ClassImplements = nil } case 106: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1580 +// line internal/php5/php5.y:1586 { yyVAL.ClassImplements = &ast.StmtClassImplements{ast.Node{}, yyDollar[2].list} @@ -3745,28 +3751,33 @@ yydefault: } case 107: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1593 +// line internal/php5/php5.y:1599 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 108: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1597 +// line internal/php5/php5.y:1603 { + switch n := lastNode(yyDollar[1].list).(type) { + case *ast.NameName: + n.ListSeparatorTkn = yyDollar[2].token + case *ast.NameFullyQualified: + n.ListSeparatorTkn = yyDollar[2].token + case *ast.NameRelative: + n.ListSeparatorTkn = yyDollar[2].token + } yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) - - // save comments - yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.SkippedTokens) } case 109: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1607 +// line internal/php5/php5.y:1615 { yyVAL.node = nil } case 110: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1611 +// line internal/php5/php5.y:1619 { yyVAL.node = yyDollar[2].node @@ -3775,13 +3786,13 @@ yydefault: } case 111: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1621 +// line internal/php5/php5.y:1629 { yyVAL.node = yyDollar[1].node } case 112: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1625 +// line internal/php5/php5.y:1633 { yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node} @@ -3793,7 +3804,7 @@ yydefault: } case 113: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1635 +// line internal/php5/php5.y:1643 { yyVAL.node = &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -3807,7 +3818,7 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1650 +// line internal/php5/php5.y:1658 { yyVAL.node = &ast.StmtFor{ast.Node{}, nil, nil, nil, yyDollar[1].node} @@ -3816,7 +3827,7 @@ yydefault: } case 115: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1657 +// line internal/php5/php5.y:1665 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltFor{ast.Node{}, nil, nil, nil, stmtList} @@ -3833,7 +3844,7 @@ yydefault: } case 116: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1675 +// line internal/php5/php5.y:1683 { yyVAL.node = &ast.StmtForeach{ast.Node{}, nil, nil, nil, yyDollar[1].node} @@ -3842,7 +3853,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1682 +// line internal/php5/php5.y:1690 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltForeach{ast.Node{}, nil, nil, nil, stmtList} @@ -3859,7 +3870,7 @@ yydefault: } case 118: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1701 +// line internal/php5/php5.y:1709 { yyVAL.node = &ast.StmtDeclare{ast.Node{}, false, nil, yyDollar[1].node} @@ -3868,7 +3879,7 @@ yydefault: } case 119: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1708 +// line internal/php5/php5.y:1716 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtDeclare{ast.Node{}, true, nil, stmtList} @@ -3885,7 +3896,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1727 +// line internal/php5/php5.y:1735 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[3].node} @@ -3901,7 +3912,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:1741 +// line internal/php5/php5.y:1749 { name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[5].node} @@ -3918,7 +3929,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1760 +// line internal/php5/php5.y:1768 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList} @@ -3933,7 +3944,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1773 +// line internal/php5/php5.y:1781 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList} @@ -3949,7 +3960,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1787 +// line internal/php5/php5.y:1795 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltSwitch{ast.Node{}, nil, caseList} @@ -3966,7 +3977,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:1802 +// line internal/php5/php5.y:1810 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list} @@ -3985,13 +3996,13 @@ yydefault: } case 126: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1823 +// line internal/php5/php5.y:1831 { yyVAL.list = []ast.Vertex{} } case 127: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:1827 +// line internal/php5/php5.y:1835 { _case := &ast.StmtCase{ast.Node{}, yyDollar[3].node, yyDollar[5].list} yyVAL.list = append(yyDollar[1].list, _case) @@ -4006,7 +4017,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1840 +// line internal/php5/php5.y:1848 { _default := &ast.StmtDefault{ast.Node{}, yyDollar[4].list} yyVAL.list = append(yyDollar[1].list, _default) @@ -4021,19 +4032,19 @@ yydefault: } case 129: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1857 +// line internal/php5/php5.y:1865 { yyVAL.token = yyDollar[1].token } case 130: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1861 +// line internal/php5/php5.y:1869 { yyVAL.token = yyDollar[1].token } case 131: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1869 +// line internal/php5/php5.y:1877 { yyVAL.node = &ast.StmtWhile{ast.Node{}, nil, yyDollar[1].node} @@ -4042,7 +4053,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1876 +// line internal/php5/php5.y:1884 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltWhile{ast.Node{}, nil, stmtList} @@ -4059,13 +4070,13 @@ yydefault: } case 133: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1896 +// line internal/php5/php5.y:1904 { yyVAL.list = nil } case 134: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1900 +// line internal/php5/php5.y:1908 { _elseIf := &ast.StmtElseIf{ast.Node{}, yyDollar[3].node, yyDollar[4].node} yyVAL.list = append(yyDollar[1].list, _elseIf) @@ -4078,13 +4089,13 @@ yydefault: } case 135: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1915 +// line internal/php5/php5.y:1923 { yyVAL.list = nil } case 136: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:1919 +// line internal/php5/php5.y:1927 { stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[5].list} stmtsBrackets := &ast.ParserBrackets{ast.Node{}, stmts} @@ -4102,13 +4113,13 @@ yydefault: } case 137: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1939 +// line internal/php5/php5.y:1947 { yyVAL.node = nil } case 138: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1943 +// line internal/php5/php5.y:1951 { yyVAL.node = &ast.StmtElse{ast.Node{}, yyDollar[2].node} @@ -4120,13 +4131,13 @@ yydefault: } case 139: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1957 +// line internal/php5/php5.y:1965 { yyVAL.node = nil } case 140: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1961 +// line internal/php5/php5.y:1969 { stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[3].list} stmtsBrackets := &ast.ParserBrackets{ast.Node{}, stmts} @@ -4143,25 +4154,25 @@ yydefault: } case 141: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1980 +// line internal/php5/php5.y:1988 { yyVAL.list = yyDollar[1].list } case 142: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1984 +// line internal/php5/php5.y:1992 { yyVAL.list = nil } case 143: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1991 +// line internal/php5/php5.y:1999 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 144: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1995 +// line internal/php5/php5.y:2003 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4170,7 +4181,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2005 +// line internal/php5/php5.y:2013 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) @@ -4206,7 +4217,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:2039 +// line internal/php5/php5.y:2047 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) @@ -4243,13 +4254,13 @@ yydefault: } case 147: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2078 +// line internal/php5/php5.y:2086 { yyVAL.node = nil } case 148: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2082 +// line internal/php5/php5.y:2090 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4261,7 +4272,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2092 +// line internal/php5/php5.y:2100 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4273,13 +4284,13 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2102 +// line internal/php5/php5.y:2110 { yyVAL.node = yyDollar[1].node } case 151: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2110 +// line internal/php5/php5.y:2118 { yyVAL.node = &ast.ArgumentList{ast.Node{}, nil} @@ -4292,7 +4303,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2121 +// line internal/php5/php5.y:2129 { yyVAL.node = &ast.ArgumentList{ast.Node{}, yyDollar[2].list} @@ -4305,7 +4316,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2132 +// line internal/php5/php5.y:2140 { arg := &ast.Argument{ast.Node{}, false, false, yyDollar[2].node} yyVAL.node = &ast.ArgumentList{ast.Node{}, []ast.Vertex{arg}} @@ -4320,13 +4331,13 @@ yydefault: } case 154: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2149 +// line internal/php5/php5.y:2157 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 155: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2153 +// line internal/php5/php5.y:2161 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4335,7 +4346,7 @@ yydefault: } case 156: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2163 +// line internal/php5/php5.y:2171 { yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node} @@ -4347,7 +4358,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2173 +// line internal/php5/php5.y:2181 { yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node} @@ -4359,7 +4370,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2183 +// line internal/php5/php5.y:2191 { yyVAL.node = &ast.Argument{ast.Node{}, false, true, yyDollar[2].node} @@ -4371,7 +4382,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2193 +// line internal/php5/php5.y:2201 { yyVAL.node = &ast.Argument{ast.Node{}, true, false, yyDollar[2].node} @@ -4383,7 +4394,7 @@ yydefault: } case 160: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2206 +// line internal/php5/php5.y:2214 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4392,13 +4403,13 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2213 +// line internal/php5/php5.y:2221 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 162: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2221 +// line internal/php5/php5.y:2229 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -4412,7 +4423,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2233 +// line internal/php5/php5.y:2241 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -4424,7 +4435,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2243 +// line internal/php5/php5.y:2251 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -4438,7 +4449,7 @@ yydefault: } case 165: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2259 +// line internal/php5/php5.y:2267 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4456,7 +4467,7 @@ yydefault: } case 166: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:2275 +// line internal/php5/php5.y:2283 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4475,7 +4486,7 @@ yydefault: } case 167: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2292 +// line internal/php5/php5.y:2300 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4492,7 +4503,7 @@ yydefault: } case 168: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2307 +// line internal/php5/php5.y:2315 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4510,19 +4521,19 @@ yydefault: } case 169: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2327 +// line internal/php5/php5.y:2335 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 170: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2331 +// line internal/php5/php5.y:2339 { yyVAL.list = []ast.Vertex{} } case 171: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2339 +// line internal/php5/php5.y:2347 { yyVAL.node = &ast.StmtPropertyList{ast.Node{}, yyDollar[1].list, nil, yyDollar[2].list} @@ -4536,7 +4547,7 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2351 +// line internal/php5/php5.y:2359 { yyVAL.node = yyDollar[1].node @@ -4549,13 +4560,13 @@ yydefault: } case 173: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2362 +// line internal/php5/php5.y:2370 { yyVAL.node = yyDollar[1].node } case 174: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php5/php5.y:2366 +// line internal/php5/php5.y:2374 { 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} @@ -4586,7 +4597,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2398 +// line internal/php5/php5.y:2406 { yyVAL.node = &ast.StmtTraitUse{ast.Node{}, yyDollar[2].list, yyDollar[3].node} @@ -4598,22 +4609,27 @@ yydefault: } case 176: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2411 +// line internal/php5/php5.y:2419 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 177: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2415 +// line internal/php5/php5.y:2423 { + switch n := lastNode(yyDollar[1].list).(type) { + case *ast.NameName: + n.ListSeparatorTkn = yyDollar[2].token + case *ast.NameFullyQualified: + n.ListSeparatorTkn = yyDollar[2].token + case *ast.NameRelative: + n.ListSeparatorTkn = yyDollar[2].token + } yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) - - // save comments - yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.SkippedTokens) } case 178: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2425 +// line internal/php5/php5.y:2435 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -4625,7 +4641,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2435 +// line internal/php5/php5.y:2445 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, yyDollar[2].list} @@ -4637,31 +4653,31 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2448 +// line internal/php5/php5.y:2458 { yyVAL.list = nil } case 181: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2452 +// line internal/php5/php5.y:2462 { yyVAL.list = yyDollar[1].list } case 182: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2459 +// line internal/php5/php5.y:2469 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 183: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2463 +// line internal/php5/php5.y:2473 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 184: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2470 +// line internal/php5/php5.y:2480 { yyVAL.node = yyDollar[1].node @@ -4671,7 +4687,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2478 +// line internal/php5/php5.y:2488 { yyVAL.node = yyDollar[1].node @@ -4681,7 +4697,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2489 +// line internal/php5/php5.y:2499 { yyVAL.node = &ast.StmtTraitUsePrecedence{ast.Node{}, yyDollar[1].node, yyDollar[3].list} @@ -4694,13 +4710,13 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2503 +// line internal/php5/php5.y:2513 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 188: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2507 +// line internal/php5/php5.y:2517 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4709,7 +4725,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2517 +// line internal/php5/php5.y:2527 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, nil, name} @@ -4723,13 +4739,13 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2529 +// line internal/php5/php5.y:2539 { yyVAL.node = yyDollar[1].node } case 191: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2536 +// line internal/php5/php5.y:2546 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, yyDollar[1].node, target} @@ -4745,7 +4761,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2553 +// line internal/php5/php5.y:2563 { alias := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, alias} @@ -4761,7 +4777,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2567 +// line internal/php5/php5.y:2577 { yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, nil} @@ -4774,19 +4790,19 @@ yydefault: } case 194: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2581 +// line internal/php5/php5.y:2591 { yyVAL.node = nil } case 195: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2585 +// line internal/php5/php5.y:2595 { yyVAL.node = yyDollar[1].node } case 196: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2592 +// line internal/php5/php5.y:2602 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -4799,7 +4815,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2603 +// line internal/php5/php5.y:2613 { yyVAL.node = &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} @@ -4812,13 +4828,13 @@ yydefault: } case 198: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2617 +// line internal/php5/php5.y:2627 { yyVAL.list = yyDollar[1].list } case 199: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2621 +// line internal/php5/php5.y:2631 { modifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{modifier} @@ -4831,31 +4847,31 @@ yydefault: } case 200: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2635 +// line internal/php5/php5.y:2645 { yyVAL.list = nil } case 201: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2639 +// line internal/php5/php5.y:2649 { yyVAL.list = yyDollar[1].list } case 202: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2646 +// line internal/php5/php5.y:2656 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 203: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2650 +// line internal/php5/php5.y:2660 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 204: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2657 +// line internal/php5/php5.y:2667 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4867,7 +4883,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2667 +// line internal/php5/php5.y:2677 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4879,7 +4895,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2677 +// line internal/php5/php5.y:2687 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4891,7 +4907,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2687 +// line internal/php5/php5.y:2697 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4903,7 +4919,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2697 +// line internal/php5/php5.y:2707 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4915,7 +4931,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2707 +// line internal/php5/php5.y:2717 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4927,7 +4943,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2720 +// line internal/php5/php5.y:2730 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4945,7 +4961,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:2736 +// line internal/php5/php5.y:2746 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4964,7 +4980,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2753 +// line internal/php5/php5.y:2763 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4981,7 +4997,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2768 +// line internal/php5/php5.y:2778 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4999,7 +5015,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:2787 +// line internal/php5/php5.y:2797 { name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[5].node} @@ -5020,7 +5036,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2806 +// line internal/php5/php5.y:2816 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[4].node} @@ -5038,7 +5054,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2825 +// line internal/php5/php5.y:2835 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5047,25 +5063,25 @@ yydefault: } case 217: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2832 +// line internal/php5/php5.y:2842 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 218: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2840 +// line internal/php5/php5.y:2850 { yyVAL.list = nil } case 219: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2844 +// line internal/php5/php5.y:2854 { yyVAL.list = yyDollar[1].list } case 220: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2851 +// line internal/php5/php5.y:2861 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5074,25 +5090,25 @@ yydefault: } case 221: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2858 +// line internal/php5/php5.y:2868 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 222: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2865 +// line internal/php5/php5.y:2875 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 223: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2869 +// line internal/php5/php5.y:2879 { yyVAL.list = yyDollar[1].list } case 224: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2876 +// line internal/php5/php5.y:2886 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -5106,7 +5122,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2888 +// line internal/php5/php5.y:2898 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[2].node} yyVAL.list = []ast.Vertex{fetch} @@ -5120,37 +5136,37 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2903 +// line internal/php5/php5.y:2913 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 227: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2907 +// line internal/php5/php5.y:2917 { yyVAL.list = yyDollar[1].list } case 228: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2911 +// line internal/php5/php5.y:2921 { yyVAL.list = yyDollar[1].list } case 229: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2918 +// line internal/php5/php5.y:2928 { yyVAL.list = nil } case 230: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2922 +// line internal/php5/php5.y:2932 { yyVAL.list = yyDollar[1].list } case 231: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2929 +// line internal/php5/php5.y:2939 { if yyDollar[3].node != nil { @@ -5166,7 +5182,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:2946 +// line internal/php5/php5.y:2956 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, listNode, yyDollar[6].node} @@ -5183,7 +5199,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2961 +// line internal/php5/php5.y:2971 { yyVAL.node = &ast.ExprAssign{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5196,7 +5212,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2972 +// line internal/php5/php5.y:2982 { yyVAL.node = &ast.ExprAssignReference{ast.Node{}, yyDollar[1].node, yyDollar[4].node} @@ -5210,7 +5226,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:2984 +// line internal/php5/php5.y:2994 { var _new *ast.ExprNew @@ -5237,7 +5253,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3009 +// line internal/php5/php5.y:3019 { yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node} @@ -5249,7 +5265,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3019 +// line internal/php5/php5.y:3029 { yyVAL.node = &ast.ExprAssignPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5261,7 +5277,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3029 +// line internal/php5/php5.y:3039 { yyVAL.node = &ast.ExprAssignMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5274,7 +5290,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3040 +// line internal/php5/php5.y:3050 { yyVAL.node = &ast.ExprAssignMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5287,7 +5303,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3051 +// line internal/php5/php5.y:3061 { yyVAL.node = &ast.ExprAssignPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5300,7 +5316,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3062 +// line internal/php5/php5.y:3072 { yyVAL.node = &ast.ExprAssignDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5313,7 +5329,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3073 +// line internal/php5/php5.y:3083 { yyVAL.node = &ast.ExprAssignConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5326,7 +5342,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3084 +// line internal/php5/php5.y:3094 { yyVAL.node = &ast.ExprAssignMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5339,7 +5355,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3095 +// line internal/php5/php5.y:3105 { yyVAL.node = &ast.ExprAssignBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5352,7 +5368,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3106 +// line internal/php5/php5.y:3116 { yyVAL.node = &ast.ExprAssignBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5365,7 +5381,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3117 +// line internal/php5/php5.y:3127 { yyVAL.node = &ast.ExprAssignBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5378,7 +5394,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3128 +// line internal/php5/php5.y:3138 { yyVAL.node = &ast.ExprAssignShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5391,7 +5407,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3139 +// line internal/php5/php5.y:3149 { yyVAL.node = &ast.ExprAssignShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5404,7 +5420,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3150 +// line internal/php5/php5.y:3160 { yyVAL.node = &ast.ExprPostInc{ast.Node{}, yyDollar[1].node} @@ -5417,7 +5433,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3161 +// line internal/php5/php5.y:3171 { yyVAL.node = &ast.ExprPreInc{ast.Node{}, yyDollar[2].node} @@ -5429,7 +5445,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3171 +// line internal/php5/php5.y:3181 { yyVAL.node = &ast.ExprPostDec{ast.Node{}, yyDollar[1].node} @@ -5442,7 +5458,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3182 +// line internal/php5/php5.y:3192 { yyVAL.node = &ast.ExprPreDec{ast.Node{}, yyDollar[2].node} @@ -5454,7 +5470,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3192 +// line internal/php5/php5.y:3202 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5467,7 +5483,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3203 +// line internal/php5/php5.y:3213 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5480,7 +5496,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3214 +// line internal/php5/php5.y:3224 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5493,7 +5509,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3225 +// line internal/php5/php5.y:3235 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5506,7 +5522,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3236 +// line internal/php5/php5.y:3246 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5519,7 +5535,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3247 +// line internal/php5/php5.y:3257 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5532,7 +5548,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3258 +// line internal/php5/php5.y:3268 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5545,7 +5561,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3269 +// line internal/php5/php5.y:3279 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5558,7 +5574,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3280 +// line internal/php5/php5.y:3290 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5571,7 +5587,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3291 +// line internal/php5/php5.y:3301 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5584,7 +5600,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3302 +// line internal/php5/php5.y:3312 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5597,7 +5613,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3313 +// line internal/php5/php5.y:3323 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5610,7 +5626,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3324 +// line internal/php5/php5.y:3334 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5623,7 +5639,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3335 +// line internal/php5/php5.y:3345 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5636,7 +5652,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3346 +// line internal/php5/php5.y:3356 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5649,7 +5665,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3357 +// line internal/php5/php5.y:3367 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5662,7 +5678,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3368 +// line internal/php5/php5.y:3378 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5675,7 +5691,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3379 +// line internal/php5/php5.y:3389 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -5687,7 +5703,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3389 +// line internal/php5/php5.y:3399 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -5699,7 +5715,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3399 +// line internal/php5/php5.y:3409 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -5711,7 +5727,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3409 +// line internal/php5/php5.y:3419 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -5723,7 +5739,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3419 +// line internal/php5/php5.y:3429 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5736,7 +5752,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3430 +// line internal/php5/php5.y:3440 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5749,7 +5765,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3441 +// line internal/php5/php5.y:3451 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5762,7 +5778,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3452 +// line internal/php5/php5.y:3462 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5776,7 +5792,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3464 +// line internal/php5/php5.y:3474 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5789,7 +5805,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3475 +// line internal/php5/php5.y:3485 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5802,7 +5818,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3486 +// line internal/php5/php5.y:3496 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5815,7 +5831,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3497 +// line internal/php5/php5.y:3507 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5828,7 +5844,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3508 +// line internal/php5/php5.y:3518 { yyVAL.node = &ast.ExprInstanceOf{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5841,19 +5857,19 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3519 +// line internal/php5/php5.y:3529 { yyVAL.node = yyDollar[1].node } case 284: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3523 +// line internal/php5/php5.y:3533 { yyVAL.node = yyDollar[1].node } case 285: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3527 +// line internal/php5/php5.y:3537 { yyVAL.node = yyDollar[2].node @@ -5885,7 +5901,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:3557 +// line internal/php5/php5.y:3567 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -5899,7 +5915,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3569 +// line internal/php5/php5.y:3579 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -5913,13 +5929,13 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3581 +// line internal/php5/php5.y:3591 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3585 +// line internal/php5/php5.y:3595 { yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node} @@ -5932,7 +5948,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3596 +// line internal/php5/php5.y:3606 { yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node} @@ -5945,7 +5961,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3607 +// line internal/php5/php5.y:3617 { yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node} @@ -5958,7 +5974,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3618 +// line internal/php5/php5.y:3628 { yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node} @@ -5971,7 +5987,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3629 +// line internal/php5/php5.y:3639 { yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node} @@ -5984,7 +6000,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3640 +// line internal/php5/php5.y:3650 { yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node} @@ -5997,7 +6013,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3651 +// line internal/php5/php5.y:3661 { yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node} @@ -6010,7 +6026,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3662 +// line internal/php5/php5.y:3672 { yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[2].node} @@ -6030,7 +6046,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3680 +// line internal/php5/php5.y:3690 { yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node} @@ -6042,25 +6058,25 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3690 +// line internal/php5/php5.y:3700 { yyVAL.node = yyDollar[1].node } case 299: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3694 +// line internal/php5/php5.y:3704 { yyVAL.node = yyDollar[1].node } case 300: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3698 +// line internal/php5/php5.y:3708 { yyVAL.node = yyDollar[1].node } case 301: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3702 +// line internal/php5/php5.y:3712 { yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list} @@ -6072,7 +6088,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3712 +// line internal/php5/php5.y:3722 { yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} @@ -6084,7 +6100,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3722 +// line internal/php5/php5.y:3732 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil} @@ -6096,7 +6112,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php5/php5.y:3732 +// line internal/php5/php5.y:3742 { yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[4].list, yyDollar[6].ClosureUse, nil, yyDollar[8].list} @@ -6123,7 +6139,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] - // line internal/php5/php5.y:3756 +// line internal/php5/php5.y:3766 { yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[3].token != nil, true, yyDollar[5].list, yyDollar[7].ClosureUse, nil, yyDollar[9].list} @@ -6151,7 +6167,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3784 +// line internal/php5/php5.y:3794 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6163,7 +6179,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3794 +// line internal/php5/php5.y:3804 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6175,7 +6191,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3804 +// line internal/php5/php5.y:3814 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6188,7 +6204,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3815 +// line internal/php5/php5.y:3825 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6201,7 +6217,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3829 +// line internal/php5/php5.y:3839 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6214,7 +6230,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3840 +// line internal/php5/php5.y:3850 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6227,7 +6243,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3851 +// line internal/php5/php5.y:3861 { str := &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, str, yyDollar[3].node} @@ -6243,7 +6259,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3865 +// line internal/php5/php5.y:3875 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6256,7 +6272,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3879 +// line internal/php5/php5.y:3889 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -6270,7 +6286,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3891 +// line internal/php5/php5.y:3901 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -6283,19 +6299,19 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3905 +// line internal/php5/php5.y:3915 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:3912 +// line internal/php5/php5.y:3922 { yyVAL.ClosureUse = nil } case 318: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3916 +// line internal/php5/php5.y:3926 { yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list} @@ -6309,7 +6325,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3931 +// line internal/php5/php5.y:3941 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -6325,7 +6341,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3945 +// line internal/php5/php5.y:3955 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -6344,7 +6360,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3962 +// line internal/php5/php5.y:3972 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -6359,7 +6375,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3975 +// line internal/php5/php5.y:3985 { identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -6377,47 +6393,55 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3994 +// line internal/php5/php5.y:4004 { - name := &ast.NameName{ast.Node{}, yyDollar[1].list} + name := &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition(yyDollar[1].list), + }, + Parts: yyDollar[1].list, + } yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, name, yyDollar[2].node.(*ast.ArgumentList)} // save position - name.GetNode().Position = position.NewNodeListPosition(yyDollar[1].list) yyVAL.node.GetNode().Position = position.NewNodesPosition(name, yyDollar[2].node) } case 324: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4003 +// line internal/php5/php5.y:4017 { - funcName := &ast.NameRelative{ast.Node{}, yyDollar[3].list} - yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, funcName, yyDollar[4].node.(*ast.ArgumentList)} + name := &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list), + }, + NsTkn: yyDollar[1].token, + NsSeparatorTkn: yyDollar[2].token, + Parts: yyDollar[3].list, + } + yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, name, yyDollar[4].node.(*ast.ArgumentList)} // save position - funcName.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list) - yyVAL.node.GetNode().Position = position.NewNodesPosition(funcName, yyDollar[4].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(funcName, token.Namespace, yyDollar[2].token.SkippedTokens) + yyVAL.node.GetNode().Position = position.NewNodesPosition(name, yyDollar[4].node) } case 325: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4016 +// line internal/php5/php5.y:4032 { - funcName := &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list} - yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, funcName, yyDollar[3].node.(*ast.ArgumentList)} + name := &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list), + }, + NsSeparatorTkn: yyDollar[1].token, + Parts: yyDollar[2].list, + } + yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, name, yyDollar[3].node.(*ast.ArgumentList)} // save position - funcName.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list) - yyVAL.node.GetNode().Position = position.NewNodesPosition(funcName, yyDollar[3].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node.GetNode().Position = position.NewNodesPosition(name, yyDollar[3].node) } case 326: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4028 +// line internal/php5/php5.y:4046 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6430,7 +6454,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4039 +// line internal/php5/php5.y:4057 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6443,7 +6467,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4050 +// line internal/php5/php5.y:4068 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6456,7 +6480,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4061 +// line internal/php5/php5.y:4079 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6469,7 +6493,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4072 +// line internal/php5/php5.y:4090 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6481,7 +6505,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4085 +// line internal/php5/php5.y:4103 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -6493,87 +6517,91 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4095 +// line internal/php5/php5.y:4113 { - yyVAL.node = &ast.NameName{ast.Node{}, yyDollar[1].list} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeListPosition(yyDollar[1].list) + yyVAL.node = &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition(yyDollar[1].list), + }, + Parts: yyDollar[1].list, + } } case 333: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4102 +// line internal/php5/php5.y:4122 { - yyVAL.node = &ast.NameRelative{ast.Node{}, yyDollar[3].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Namespace, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list), + }, + NsTkn: yyDollar[1].token, + NsSeparatorTkn: yyDollar[2].token, + Parts: yyDollar[3].list, + } } case 334: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4113 +// line internal/php5/php5.y:4133 { - yyVAL.node = &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list), + }, + NsSeparatorTkn: yyDollar[1].token, + Parts: yyDollar[2].list, + } } case 335: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4126 +// line internal/php5/php5.y:4146 { - yyVAL.node = &ast.NameName{ast.Node{}, yyDollar[1].list} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeListPosition(yyDollar[1].list) + yyVAL.node = &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition(yyDollar[1].list), + }, + Parts: yyDollar[1].list, + } } case 336: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4133 +// line internal/php5/php5.y:4155 { - yyVAL.node = &ast.NameRelative{ast.Node{}, yyDollar[3].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Namespace, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list), + }, + NsTkn: yyDollar[1].token, + NsSeparatorTkn: yyDollar[2].token, + Parts: yyDollar[3].list, + } } case 337: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4144 +// line internal/php5/php5.y:4166 { - yyVAL.node = &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list), + }, + NsSeparatorTkn: yyDollar[1].token, + Parts: yyDollar[2].list, + } } case 338: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4157 +// line internal/php5/php5.y:4179 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4161 +// line internal/php5/php5.y:4183 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4168 +// line internal/php5/php5.y:4190 { yyVAL.node = yyDollar[1].node @@ -6614,25 +6642,25 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4207 +// line internal/php5/php5.y:4229 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4215 +// line internal/php5/php5.y:4237 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4219 +// line internal/php5/php5.y:4241 { yyVAL.list = []ast.Vertex{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4227 +// line internal/php5/php5.y:4249 { yyVAL.list = yyDollar[2].list @@ -6641,13 +6669,13 @@ yydefault: } case 345: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4237 +// line internal/php5/php5.y:4259 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4241 +// line internal/php5/php5.y:4263 { yyVAL.node = &ast.ParserBrackets{ast.Node{}, nil} @@ -6660,19 +6688,19 @@ yydefault: } case 347: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4252 +// line internal/php5/php5.y:4274 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4259 +// line internal/php5/php5.y:4281 { yyVAL.list = []ast.Vertex{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4263 +// line internal/php5/php5.y:4285 { part := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{part} @@ -6682,25 +6710,25 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4271 +// line internal/php5/php5.y:4293 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4278 +// line internal/php5/php5.y:4300 { yyVAL.node = nil } case 352: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4282 +// line internal/php5/php5.y:4304 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4289 +// line internal/php5/php5.y:4311 { yyVAL.node = &ast.ScalarLnumber{ast.Node{}, yyDollar[1].token.Value} @@ -6712,7 +6740,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4299 +// line internal/php5/php5.y:4321 { yyVAL.node = &ast.ScalarDnumber{ast.Node{}, yyDollar[1].token.Value} @@ -6724,7 +6752,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4309 +// line internal/php5/php5.y:4331 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -6736,7 +6764,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4319 +// line internal/php5/php5.y:4341 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6748,7 +6776,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4329 +// line internal/php5/php5.y:4351 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6760,7 +6788,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4339 +// line internal/php5/php5.y:4361 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6772,7 +6800,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4349 +// line internal/php5/php5.y:4371 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6784,7 +6812,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4359 +// line internal/php5/php5.y:4381 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6796,7 +6824,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4369 +// line internal/php5/php5.y:4391 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6808,7 +6836,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4379 +// line internal/php5/php5.y:4401 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6820,7 +6848,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4389 +// line internal/php5/php5.y:4411 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, []ast.Vertex{encapsed}} @@ -6834,7 +6862,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4401 +// line internal/php5/php5.y:4423 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, nil} @@ -6846,7 +6874,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4414 +// line internal/php5/php5.y:4436 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -6862,65 +6890,73 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4431 +// line internal/php5/php5.y:4453 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4438 +// line internal/php5/php5.y:4460 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4442 +// line internal/php5/php5.y:4464 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4446 +// line internal/php5/php5.y:4468 { - name := &ast.NameName{ast.Node{}, yyDollar[1].list} + name := &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition(yyDollar[1].list), + }, + Parts: yyDollar[1].list, + } yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.GetNode().Position = position.NewNodeListPosition(yyDollar[1].list) yyVAL.node.GetNode().Position = position.NewNodePosition(name) } case 370: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4455 +// line internal/php5/php5.y:4481 { - name := &ast.NameRelative{ast.Node{}, yyDollar[3].list} + name := &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list), + }, + NsTkn: yyDollar[1].token, + NsSeparatorTkn: yyDollar[2].token, + Parts: yyDollar[3].list, + } yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list) yyVAL.node.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Namespace, yyDollar[2].token.SkippedTokens) } case 371: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4468 +// line internal/php5/php5.y:4496 { - name := &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list} + name := &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list), + }, + NsSeparatorTkn: yyDollar[1].token, + Parts: yyDollar[2].list, + } yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list) yyVAL.node.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) } case 372: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4480 +// line internal/php5/php5.y:4510 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -6934,7 +6970,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4492 +// line internal/php5/php5.y:4522 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -6947,13 +6983,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4503 +// line internal/php5/php5.y:4533 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4507 +// line internal/php5/php5.y:4537 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6965,13 +7001,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4517 +// line internal/php5/php5.y:4547 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4524 +// line internal/php5/php5.y:4554 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6984,7 +7020,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4535 +// line internal/php5/php5.y:4565 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6997,7 +7033,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4546 +// line internal/php5/php5.y:4576 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7010,7 +7046,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4557 +// line internal/php5/php5.y:4587 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7023,7 +7059,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4568 +// line internal/php5/php5.y:4598 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7036,7 +7072,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4579 +// line internal/php5/php5.y:4609 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7049,7 +7085,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4590 +// line internal/php5/php5.y:4620 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7062,7 +7098,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4601 +// line internal/php5/php5.y:4631 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -7074,7 +7110,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4611 +// line internal/php5/php5.y:4641 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -7086,7 +7122,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4621 +// line internal/php5/php5.y:4651 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7099,7 +7135,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4632 +// line internal/php5/php5.y:4662 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7112,7 +7148,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4643 +// line internal/php5/php5.y:4673 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7125,7 +7161,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4654 +// line internal/php5/php5.y:4684 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7138,7 +7174,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4665 +// line internal/php5/php5.y:4695 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7151,7 +7187,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4676 +// line internal/php5/php5.y:4706 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7164,7 +7200,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4687 +// line internal/php5/php5.y:4717 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7177,7 +7213,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4698 +// line internal/php5/php5.y:4728 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7190,7 +7226,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4709 +// line internal/php5/php5.y:4739 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7203,7 +7239,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4720 +// line internal/php5/php5.y:4750 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7216,7 +7252,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4731 +// line internal/php5/php5.y:4761 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7229,7 +7265,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4742 +// line internal/php5/php5.y:4772 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7242,7 +7278,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4753 +// line internal/php5/php5.y:4783 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7255,7 +7291,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4764 +// line internal/php5/php5.y:4794 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7268,7 +7304,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4775 +// line internal/php5/php5.y:4805 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7282,7 +7318,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4787 +// line internal/php5/php5.y:4817 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7295,7 +7331,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4798 +// line internal/php5/php5.y:4828 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7308,7 +7344,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4809 +// line internal/php5/php5.y:4839 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7321,7 +7357,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4820 +// line internal/php5/php5.y:4850 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7334,7 +7370,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4831 +// line internal/php5/php5.y:4861 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -7348,7 +7384,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:4843 +// line internal/php5/php5.y:4873 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -7362,7 +7398,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4855 +// line internal/php5/php5.y:4885 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -7374,7 +7410,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4865 +// line internal/php5/php5.y:4895 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -7386,7 +7422,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4875 +// line internal/php5/php5.y:4905 { yyVAL.node = yyDollar[2].node @@ -7396,53 +7432,61 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4886 +// line internal/php5/php5.y:4916 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4890 +// line internal/php5/php5.y:4920 { - name := &ast.NameName{ast.Node{}, yyDollar[1].list} + name := &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition(yyDollar[1].list), + }, + Parts: yyDollar[1].list, + } yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.GetNode().Position = position.NewNodeListPosition(yyDollar[1].list) yyVAL.node.GetNode().Position = position.NewNodePosition(name) } case 412: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4899 +// line internal/php5/php5.y:4933 { - name := &ast.NameRelative{ast.Node{}, yyDollar[3].list} + name := &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list), + }, + NsTkn: yyDollar[1].token, + NsSeparatorTkn: yyDollar[2].token, + Parts: yyDollar[3].list, + } yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list) yyVAL.node.GetNode().Position = position.NewNodePosition(name) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Namespace, yyDollar[2].token.SkippedTokens) } case 413: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4912 +// line internal/php5/php5.y:4948 { - name := &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list} + name := &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list), + }, + NsSeparatorTkn: yyDollar[1].token, + Parts: yyDollar[2].list, + } yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list) yyVAL.node.GetNode().Position = position.NewNodePosition(name) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) } case 414: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4927 +// line internal/php5/php5.y:4965 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -7456,25 +7500,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4939 +// line internal/php5/php5.y:4977 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4943 +// line internal/php5/php5.y:4981 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4947 +// line internal/php5/php5.y:4985 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4951 +// line internal/php5/php5.y:4989 { yyVAL.node = &ast.ScalarEncapsed{ast.Node{}, yyDollar[2].list} @@ -7486,7 +7530,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4961 +// line internal/php5/php5.y:4999 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, yyDollar[2].list} @@ -7498,7 +7542,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4971 +// line internal/php5/php5.y:5009 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7510,13 +7554,13 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4984 +// line internal/php5/php5.y:5022 { yyVAL.list = nil } case 422: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4988 +// line internal/php5/php5.y:5026 { yyVAL.list = yyDollar[1].list @@ -7527,19 +7571,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5000 +// line internal/php5/php5.y:5038 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5004 +// line internal/php5/php5.y:5042 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5011 +// line internal/php5/php5.y:5049 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -7554,7 +7598,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5024 +// line internal/php5/php5.y:5062 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -7568,7 +7612,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5036 +// line internal/php5/php5.y:5074 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -7582,7 +7626,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5048 +// line internal/php5/php5.y:5086 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -7595,19 +7639,19 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5062 +// line internal/php5/php5.y:5100 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5066 +// line internal/php5/php5.y:5104 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5073 +// line internal/php5/php5.y:5111 { yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} @@ -7620,7 +7664,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5084 +// line internal/php5/php5.y:5122 { yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} @@ -7633,25 +7677,25 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5099 +// line internal/php5/php5.y:5137 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5107 +// line internal/php5/php5.y:5145 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5114 +// line internal/php5/php5.y:5152 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5121 +// line internal/php5/php5.y:5159 { yyVAL.node = yyDollar[1].node @@ -7709,25 +7753,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5177 +// line internal/php5/php5.y:5215 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5184 +// line internal/php5/php5.y:5222 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5188 +// line internal/php5/php5.y:5226 { yyVAL.list = []ast.Vertex{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5196 +// line internal/php5/php5.y:5234 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*ast.ExprMethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*ast.ExprPropertyFetch).Property @@ -7741,7 +7785,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5211 +// line internal/php5/php5.y:5249 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -7755,7 +7799,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5223 +// line internal/php5/php5.y:5261 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = []ast.Vertex{yyDollar[1].node, fetch} @@ -7769,7 +7813,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5238 +// line internal/php5/php5.y:5276 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, nil, nil, yyDollar[1].node.(*ast.ArgumentList)} @@ -7778,31 +7822,31 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5248 +// line internal/php5/php5.y:5286 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5252 +// line internal/php5/php5.y:5290 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5256 +// line internal/php5/php5.y:5294 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5263 +// line internal/php5/php5.y:5301 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5267 +// line internal/php5/php5.y:5305 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -7814,7 +7858,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5280 +// line internal/php5/php5.y:5318 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7827,7 +7871,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5291 +// line internal/php5/php5.y:5329 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7840,13 +7884,13 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5305 +// line internal/php5/php5.y:5343 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5312 +// line internal/php5/php5.y:5350 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7859,7 +7903,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5323 +// line internal/php5/php5.y:5361 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7872,31 +7916,31 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5337 +// line internal/php5/php5.y:5375 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5341 +// line internal/php5/php5.y:5379 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5345 +// line internal/php5/php5.y:5383 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5353 +// line internal/php5/php5.y:5391 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5357 +// line internal/php5/php5.y:5395 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -7908,13 +7952,13 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5367 +// line internal/php5/php5.y:5405 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5374 +// line internal/php5/php5.y:5412 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7927,7 +7971,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5385 +// line internal/php5/php5.y:5423 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7940,13 +7984,13 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5396 +// line internal/php5/php5.y:5434 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5404 +// line internal/php5/php5.y:5442 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -7960,7 +8004,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5416 +// line internal/php5/php5.y:5454 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -7974,25 +8018,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5431 +// line internal/php5/php5.y:5469 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5435 +// line internal/php5/php5.y:5473 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5443 +// line internal/php5/php5.y:5481 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5447 +// line internal/php5/php5.y:5485 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8002,7 +8046,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5458 +// line internal/php5/php5.y:5496 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -8016,7 +8060,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5470 +// line internal/php5/php5.y:5508 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -8030,7 +8074,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5482 +// line internal/php5/php5.y:5520 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8040,7 +8084,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5493 +// line internal/php5/php5.y:5531 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -8052,7 +8096,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5503 +// line internal/php5/php5.y:5541 { yyVAL.node = yyDollar[2].node @@ -8065,7 +8109,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5517 +// line internal/php5/php5.y:5555 { n := &ast.ExprVariable{ast.Node{}, nil} yyVAL.simpleIndirectReference = simpleIndirectReference{[]*ast.ExprVariable{n}, n} @@ -8078,7 +8122,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5528 +// line internal/php5/php5.y:5566 { n := &ast.ExprVariable{ast.Node{}, nil} @@ -8095,7 +8139,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5546 +// line internal/php5/php5.y:5584 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}} @@ -8108,7 +8152,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5557 +// line internal/php5/php5.y:5595 { if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil { yyVAL.list = []ast.Vertex{} @@ -8118,7 +8162,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5569 +// line internal/php5/php5.y:5607 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} @@ -8130,7 +8174,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5579 +// line internal/php5/php5.y:5617 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, listNode} @@ -8146,19 +8190,19 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5593 +// line internal/php5/php5.y:5631 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} } case 481: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5601 +// line internal/php5/php5.y:5639 { yyVAL.list = []ast.Vertex{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5605 +// line internal/php5/php5.y:5643 { yyVAL.list = yyDollar[1].list @@ -8173,7 +8217,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5621 +// line internal/php5/php5.y:5659 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8188,7 +8232,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5634 +// line internal/php5/php5.y:5672 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8202,7 +8246,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5646 +// line internal/php5/php5.y:5684 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -8216,7 +8260,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5658 +// line internal/php5/php5.y:5696 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -8229,7 +8273,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:5669 +// line internal/php5/php5.y:5707 { reference := &ast.ExprReference{ast.Node{}, yyDollar[6].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, reference} @@ -8247,7 +8291,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5685 +// line internal/php5/php5.y:5723 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -8263,7 +8307,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5699 +// line internal/php5/php5.y:5737 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference} @@ -8280,7 +8324,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5714 +// line internal/php5/php5.y:5752 { reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -8295,13 +8339,13 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5730 +// line internal/php5/php5.y:5768 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5734 +// line internal/php5/php5.y:5772 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.list = append(yyDollar[1].list, encapsed) @@ -8314,13 +8358,13 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5745 +// line internal/php5/php5.y:5783 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5749 +// line internal/php5/php5.y:5787 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{encapsed, yyDollar[2].node} @@ -8333,7 +8377,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5763 +// line internal/php5/php5.y:5801 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -8347,7 +8391,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5775 +// line internal/php5/php5.y:5813 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -8364,7 +8408,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5790 +// line internal/php5/php5.y:5828 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -8383,7 +8427,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5807 +// line internal/php5/php5.y:5845 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -8398,7 +8442,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5820 +// line internal/php5/php5.y:5858 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, name} @@ -8415,7 +8459,7 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:5835 +// line internal/php5/php5.y:5873 { identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -8434,7 +8478,7 @@ yydefault: } case 501: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5852 +// line internal/php5/php5.y:5890 { yyVAL.node = yyDollar[2].node @@ -8444,7 +8488,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5863 +// line internal/php5/php5.y:5901 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -8456,7 +8500,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5873 +// line internal/php5/php5.y:5911 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -8473,7 +8517,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5888 +// line internal/php5/php5.y:5926 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier} @@ -8487,7 +8531,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5903 +// line internal/php5/php5.y:5941 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -8501,7 +8545,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5915 +// line internal/php5/php5.y:5953 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} yyVAL.node = &ast.ExprEmpty{ast.Node{}, exprBrackets} @@ -8517,7 +8561,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5929 +// line internal/php5/php5.y:5967 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} yyVAL.node = &ast.ExprEmpty{ast.Node{}, exprBrackets} @@ -8533,7 +8577,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5943 +// line internal/php5/php5.y:5981 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -8545,7 +8589,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5953 +// line internal/php5/php5.y:5991 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -8557,7 +8601,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5963 +// line internal/php5/php5.y:6001 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} yyVAL.node = &ast.ExprEval{ast.Node{}, exprBrackets} @@ -8573,7 +8617,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5977 +// line internal/php5/php5.y:6015 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -8585,7 +8629,7 @@ yydefault: } case 512: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5987 +// line internal/php5/php5.y:6025 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -8597,13 +8641,13 @@ yydefault: } case 513: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6000 +// line internal/php5/php5.y:6038 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 514: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6004 +// line internal/php5/php5.y:6042 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -8612,19 +8656,19 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6014 +// line internal/php5/php5.y:6052 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6018 +// line internal/php5/php5.y:6056 { yyVAL.node = yyDollar[1].node } case 517: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6025 +// line internal/php5/php5.y:6063 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -8640,7 +8684,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6039 +// line internal/php5/php5.y:6077 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -8656,7 +8700,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6056 +// line internal/php5/php5.y:6094 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -8672,7 +8716,7 @@ yydefault: } case 520: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6073 +// line internal/php5/php5.y:6111 { 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 a462f00..668b080 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -301,26 +301,26 @@ top_statement_list: namespace_name: T_STRING { - namePart := &ast.NameNamePart{ast.Node{}, $1.Value} - $$ = []ast.Vertex{namePart} - - // save position - namePart.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating(namePart, token.Start, $1.SkippedTokens) + $$ = []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + StringTkn: $1, + Value: $1.Value, + }, + } } | namespace_name T_NS_SEPARATOR T_STRING { - namePart := &ast.NameNamePart{ast.Node{}, $3.Value} - $$ = append($1, namePart) - - // save position - namePart.GetNode().Position = position.NewTokenPosition($3) - - // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(namePart, token.Start, $3.SkippedTokens) + $$ = append($1, &ast.NameNamePart{ + Node: ast.Node{ + Position: position.NewTokensPosition($2, $3), + }, + NsSeparatorTkn: $2, + StringTkn: $3, + Value: $3.Value, + }) } ; @@ -355,43 +355,49 @@ top_statement: } | T_NAMESPACE namespace_name ';' { - name := &ast.NameName{ast.Node{}, $2} - $$ = &ast.StmtNamespace{ast.Node{}, name, nil} - - // save position - name.GetNode().Position = position.NewNodeListPosition($2) - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.End, $3.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $3.SkippedTokens) + $$ = &ast.StmtNamespace{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + NsTkn: $1, + Name: &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition($2), + }, + Parts: $2, + }, + SemiColonTkn: $3, + } } | T_NAMESPACE namespace_name '{' top_statement_list '}' { - name := &ast.NameName{ast.Node{}, $2} - $$ = &ast.StmtNamespace{ast.Node{}, name, $4} - - // save position - name.GetNode().Position = position.NewNodeListPosition($2) - $$.GetNode().Position = position.NewTokensPosition($1, $5) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.End, $3.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $5.SkippedTokens) + $$ = &ast.StmtNamespace{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $5), + }, + NsTkn: $1, + Name: &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition($2), + }, + Parts: $2, + }, + OpenCurlyBracket: $3, + Stmts: $4, + CloseCurlyBracket: $5, + } } | T_NAMESPACE '{' top_statement_list '}' { - $$ = &ast.StmtNamespace{ast.Node{}, nil, $3} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Namespace, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $4.SkippedTokens) + $$ = &ast.StmtNamespace{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $4), + }, + NsTkn: $1, + OpenCurlyBracket: $2, + Stmts: $3, + CloseCurlyBracket: $4, + } } | T_USE use_declarations ';' { @@ -1595,10 +1601,12 @@ interface_list: } | interface_list ',' fully_qualified_class_name { + switch n := lastNode($1).(type) { + case *ast.NameName: n.ListSeparatorTkn = $2 + case *ast.NameFullyQualified: n.ListSeparatorTkn = $2 + case *ast.NameRelative: n.ListSeparatorTkn = $2 + } $$ = append($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.SkippedTokens) } ; @@ -2413,10 +2421,12 @@ trait_list: } | trait_list ',' fully_qualified_class_name { + switch n := lastNode($1).(type) { + case *ast.NameName: n.ListSeparatorTkn = $2 + case *ast.NameFullyQualified: n.ListSeparatorTkn = $2 + case *ast.NameRelative: n.ListSeparatorTkn = $2 + } $$ = append($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.SkippedTokens) } ; @@ -3992,37 +4002,45 @@ lexical_var_list: function_call: namespace_name function_call_parameter_list { - name := &ast.NameName{ast.Node{}, $1} + name := &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition($1), + }, + Parts: $1, + } $$ = &ast.ExprFunctionCall{ast.Node{}, name, $2.(*ast.ArgumentList)} // save position - name.GetNode().Position = position.NewNodeListPosition($1) $$.GetNode().Position = position.NewNodesPosition(name, $2) } | T_NAMESPACE T_NS_SEPARATOR namespace_name function_call_parameter_list { - funcName := &ast.NameRelative{ast.Node{}, $3} - $$ = &ast.ExprFunctionCall{ast.Node{}, funcName, $4.(*ast.ArgumentList)} + name := &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $3), + }, + NsTkn: $1, + NsSeparatorTkn: $2, + Parts: $3, + } + $$ = &ast.ExprFunctionCall{ast.Node{}, name, $4.(*ast.ArgumentList)} // save position - funcName.GetNode().Position = position.NewTokenNodeListPosition($1, $3) - $$.GetNode().Position = position.NewNodesPosition(funcName, $4) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating(funcName, token.Namespace, $2.SkippedTokens) + $$.GetNode().Position = position.NewNodesPosition(name, $4) } | T_NS_SEPARATOR namespace_name function_call_parameter_list { - funcName := &ast.NameFullyQualified{ast.Node{}, $2} - $$ = &ast.ExprFunctionCall{ast.Node{}, funcName, $3.(*ast.ArgumentList)} + name := &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $2), + }, + NsSeparatorTkn: $1, + Parts: $2, + } + $$ = &ast.ExprFunctionCall{ast.Node{}, name, $3.(*ast.ArgumentList)} // save position - funcName.GetNode().Position = position.NewTokenNodeListPosition($1, $2) - $$.GetNode().Position = position.NewNodesPosition(funcName, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$.GetNode().Position = position.NewNodesPosition(name, $3) } | class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list { @@ -4093,62 +4111,66 @@ class_name: } | namespace_name { - $$ = &ast.NameName{ast.Node{}, $1} - - // save position - $$.GetNode().Position = position.NewNodeListPosition($1) + $$ = &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition($1), + }, + Parts: $1, + } } | T_NAMESPACE T_NS_SEPARATOR namespace_name { - $$ = &ast.NameRelative{ast.Node{}, $3} - - // save position - $$.GetNode().Position = position.NewTokenNodeListPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Namespace, $2.SkippedTokens) + $$ = &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $3), + }, + NsTkn: $1, + NsSeparatorTkn: $2, + Parts: $3, + } } | T_NS_SEPARATOR namespace_name { - $$ = &ast.NameFullyQualified{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodeListPosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $2), + }, + NsSeparatorTkn: $1, + Parts: $2, + } } ; fully_qualified_class_name: namespace_name { - $$ = &ast.NameName{ast.Node{}, $1} - - // save position - $$.GetNode().Position = position.NewNodeListPosition($1) + $$ = &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition($1), + }, + Parts: $1, + } } | T_NAMESPACE T_NS_SEPARATOR namespace_name { - $$ = &ast.NameRelative{ast.Node{}, $3} - - // save position - $$.GetNode().Position = position.NewTokenNodeListPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Namespace, $2.SkippedTokens) + $$ = &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $3), + }, + NsTkn: $1, + NsSeparatorTkn: $2, + Parts: $3, + } } | T_NS_SEPARATOR namespace_name { - $$ = &ast.NameFullyQualified{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodeListPosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $2), + }, + NsSeparatorTkn: $1, + Parts: $2, + } } ; @@ -4444,37 +4466,45 @@ static_scalar_value: } | namespace_name { - name := &ast.NameName{ast.Node{}, $1} + name := &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition($1), + }, + Parts: $1, + } $$ = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.GetNode().Position = position.NewNodeListPosition($1) $$.GetNode().Position = position.NewNodePosition(name) } | T_NAMESPACE T_NS_SEPARATOR namespace_name { - name := &ast.NameRelative{ast.Node{}, $3} + name := &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $3), + }, + NsTkn: $1, + NsSeparatorTkn: $2, + Parts: $3, + } $$ = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenNodeListPosition($1, $3) $$.GetNode().Position = position.NewTokenNodeListPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Namespace, $2.SkippedTokens) } | T_NS_SEPARATOR namespace_name { - name := &ast.NameFullyQualified{ast.Node{}, $2} + name := &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $2), + }, + NsSeparatorTkn: $1, + Parts: $2, + } $$ = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenNodeListPosition($1, $2) $$.GetNode().Position = position.NewTokenNodeListPosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) } | T_ARRAY '(' static_array_pair_list ')' { @@ -4888,37 +4918,45 @@ general_constant: } | namespace_name { - name := &ast.NameName{ast.Node{}, $1} + name := &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition($1), + }, + Parts: $1, + } $$ = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.GetNode().Position = position.NewNodeListPosition($1) $$.GetNode().Position = position.NewNodePosition(name) } | T_NAMESPACE T_NS_SEPARATOR namespace_name { - name := &ast.NameRelative{ast.Node{}, $3} + name := &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $3), + }, + NsTkn: $1, + NsSeparatorTkn: $2, + Parts: $3, + } $$ = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenNodeListPosition($1, $3) $$.GetNode().Position = position.NewNodePosition(name) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating(name, token.Namespace, $2.SkippedTokens) } | T_NS_SEPARATOR namespace_name { - name := &ast.NameFullyQualified{ast.Node{}, $2} + name := &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $2), + }, + NsSeparatorTkn: $1, + Parts: $2, + } $$ = &ast.ExprConstFetch{ast.Node{}, name} // save position - name.GetNode().Position = position.NewTokenNodeListPosition($1, $2) $$.GetNode().Position = position.NewNodePosition(name) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) } ; diff --git a/internal/php5/php5_test.go b/internal/php5/php5_test.go index d802b19..a8b3fcb 100644 --- a/internal/php5/php5_test.go +++ b/internal/php5/php5_test.go @@ -6290,7 +6290,7 @@ func TestPhp5(t *testing.T) { EndPos: 2376, }, }, - NamespaceName: &ast.NameName{ + Name: &ast.NameName{ Node: ast.Node{ Position: &position.Position{ StartLine: 109, @@ -6323,7 +6323,7 @@ func TestPhp5(t *testing.T) { EndPos: 2397, }, }, - NamespaceName: &ast.NameName{ + Name: &ast.NameName{ Node: ast.Node{ Position: &position.Position{ StartLine: 110, @@ -6349,7 +6349,7 @@ func TestPhp5(t *testing.T) { Position: &position.Position{ StartLine: 110, EndLine: 110, - StartPos: 2391, + StartPos: 2390, EndPos: 2394, }, }, diff --git a/internal/php7/parser_test.go b/internal/php7/parser_test.go index b33e201..4cb66c8 100644 --- a/internal/php7/parser_test.go +++ b/internal/php7/parser_test.go @@ -9214,7 +9214,7 @@ func TestStmtNamespace(t *testing.T) { EndPos: 17, }, }, - NamespaceName: &ast.NameName{ + Name: &ast.NameName{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, @@ -9272,7 +9272,7 @@ func TestStmtNamespace_Stmts(t *testing.T) { EndPos: 19, }, }, - NamespaceName: &ast.NameName{ + Name: &ast.NameName{ Node: ast.Node{ Position: &position.Position{ StartLine: 1, diff --git a/internal/php7/php7.go b/internal/php7/php7.go index 2e0a57b..e818e2c 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:4820 +// line internal/php7/php7.y:4830 // line yacctab:1 var yyExca = [...]int{ @@ -2607,103 +2607,105 @@ yydefault: yyDollar = yyS[yypt-1 : yypt+1] // line internal/php7/php7.y:352 { - namePart := &ast.NameNamePart{ast.Node{}, yyDollar[1].token.Value} - yyVAL.list = []ast.Vertex{namePart} - - // save position - namePart.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(namePart, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.list = []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + StringTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, + } } case 82: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:363 + // line internal/php7/php7.y:364 { - namePart := &ast.NameNamePart{ast.Node{}, yyDollar[3].token.Value} - yyVAL.list = append(yyDollar[1].list, namePart) - - // save position - namePart.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) - - // save comments - yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(namePart, token.Start, yyDollar[3].token.SkippedTokens) + yyVAL.list = append(yyDollar[1].list, &ast.NameNamePart{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[2].token, yyDollar[3].token), + }, + NsSeparatorTkn: yyDollar[2].token, + StringTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + }) } case 83: yyDollar = yyS[yypt-1 : yypt+1] // line internal/php7/php7.y:378 { - yyVAL.node = &ast.NameName{ast.Node{}, yyDollar[1].list} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeListPosition(yyDollar[1].list) + yyVAL.node = &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition(yyDollar[1].list), + }, + Parts: yyDollar[1].list, + } } case 84: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:385 + // line internal/php7/php7.y:387 { - yyVAL.node = &ast.NameRelative{ast.Node{}, yyDollar[3].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Namespace, yyDollar[2].token.SkippedTokens) + yyVAL.node = &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list), + }, + NsTkn: yyDollar[1].token, + NsSeparatorTkn: yyDollar[2].token, + Parts: yyDollar[3].list, + } } case 85: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:396 + // line internal/php7/php7.y:398 { - yyVAL.node = &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list), + }, + NsSeparatorTkn: yyDollar[1].token, + Parts: yyDollar[2].list, + } } case 86: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:409 + // line internal/php7/php7.y:411 { // error yyVAL.node = nil } case 87: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:414 + // line internal/php7/php7.y:416 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:418 + // line internal/php7/php7.y:420 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:422 + // line internal/php7/php7.y:424 { yyVAL.node = yyDollar[1].node } case 90: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:426 + // line internal/php7/php7.y:428 { yyVAL.node = yyDollar[1].node } case 91: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:430 + // line internal/php7/php7.y:432 { yyVAL.node = yyDollar[1].node } case 92: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:434 + // line internal/php7/php7.y:436 { yyVAL.node = &ast.StmtHaltCompiler{ast.Node{}} @@ -2716,55 +2718,59 @@ yydefault: } case 93: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:445 + // line internal/php7/php7.y:447 { - name := &ast.NameName{ast.Node{}, yyDollar[2].list} - yyVAL.node = &ast.StmtNamespace{ast.Node{}, name, nil} - - // save position - name.GetNode().Position = position.NewNodeListPosition(yyDollar[2].list) - 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).MoveFreeFloating(yyDollar[2].list[0], name) - yylex.(*Parser).setFreeFloating(name, token.End, yyDollar[3].token.SkippedTokens) - yylex.(*Parser).setToken(yyVAL.node, token.SemiColon, yyDollar[3].token.SkippedTokens) + yyVAL.node = &ast.StmtNamespace{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), + }, + NsTkn: yyDollar[1].token, + Name: &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition(yyDollar[2].list), + }, + Parts: yyDollar[2].list, + }, + SemiColonTkn: yyDollar[3].token, + } } case 94: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:460 + // line internal/php7/php7.y:463 { - name := &ast.NameName{ast.Node{}, yyDollar[2].list} - yyVAL.node = &ast.StmtNamespace{ast.Node{}, name, yyDollar[4].list} - - // save position - name.GetNode().Position = position.NewNodeListPosition(yyDollar[2].list) - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[5].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).MoveFreeFloating(yyDollar[2].list[0], name) - yylex.(*Parser).setFreeFloating(name, token.End, yyDollar[3].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[5].token.SkippedTokens) + yyVAL.node = &ast.StmtNamespace{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[5].token), + }, + NsTkn: yyDollar[1].token, + Name: &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition(yyDollar[2].list), + }, + Parts: yyDollar[2].list, + }, + OpenCurlyBracket: yyDollar[3].token, + Stmts: yyDollar[4].list, + CloseCurlyBracket: yyDollar[5].token, + } } case 95: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:475 + // line internal/php7/php7.y:481 { - yyVAL.node = &ast.StmtNamespace{ast.Node{}, nil, yyDollar[3].list} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Namespace, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[4].token.SkippedTokens) + yyVAL.node = &ast.StmtNamespace{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), + }, + NsTkn: yyDollar[1].token, + OpenCurlyBracket: yyDollar[2].token, + Stmts: yyDollar[3].list, + CloseCurlyBracket: yyDollar[4].token, + } } case 96: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:487 + // line internal/php7/php7.y:493 { use := yyDollar[2].node.(*ast.StmtGroupUse) @@ -2776,7 +2782,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:497 + // line internal/php7/php7.y:503 { use := yyDollar[3].node.(*ast.StmtGroupUse) @@ -2789,7 +2795,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:508 + // line internal/php7/php7.y:514 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2802,7 +2808,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:519 + // line internal/php7/php7.y:525 { yyVAL.node = &ast.StmtUse{ Node: ast.Node{ @@ -2816,7 +2822,7 @@ yydefault: } case 100: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:531 + // line internal/php7/php7.y:537 { yyVAL.node = &ast.StmtConstList{ast.Node{}, yyDollar[2].list} @@ -2830,7 +2836,7 @@ yydefault: } case 101: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:546 + // line internal/php7/php7.y:552 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -2842,7 +2848,7 @@ yydefault: } case 102: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:556 + // line internal/php7/php7.y:562 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -2854,7 +2860,7 @@ yydefault: } case 103: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:569 + // 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 @@ -2878,7 +2884,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:591 + // line internal/php7/php7.y:597 { yyDollar[5].list[len(yyDollar[5].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[6].token @@ -2901,7 +2907,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:615 + // line internal/php7/php7.y:621 { yyDollar[4].list[len(yyDollar[4].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[5].token @@ -2923,7 +2929,7 @@ yydefault: } case 106: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:635 + // line internal/php7/php7.y:641 { yyDollar[5].list[len(yyDollar[5].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[6].token @@ -2946,19 +2952,19 @@ yydefault: } case 107: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:659 + // line internal/php7/php7.y:665 { yyVAL.token = nil } case 108: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:663 + // line internal/php7/php7.y:669 { yyVAL.token = yyDollar[1].token } case 109: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:670 + // line internal/php7/php7.y:676 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2966,13 +2972,13 @@ yydefault: } case 110: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:676 + // 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:683 + // line internal/php7/php7.y:689 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2980,13 +2986,13 @@ yydefault: } case 112: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:689 + // 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:696 + // line internal/php7/php7.y:702 { yyDollar[1].list[len(yyDollar[1].list)-1].(*ast.StmtUseDeclaration).CommaTkn = yyDollar[2].token @@ -2994,19 +3000,19 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:702 + // 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:709 + // line internal/php7/php7.y:715 { yyVAL.node = yyDollar[1].node } case 116: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:713 + // line internal/php7/php7.y:719 { decl := yyDollar[2].node.(*ast.StmtUseDeclaration) decl.Type = yyDollar[1].node @@ -3016,7 +3022,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:724 + // line internal/php7/php7.y:730 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -3032,7 +3038,7 @@ yydefault: } case 118: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:738 + // line internal/php7/php7.y:744 { yyVAL.node = &ast.StmtUseDeclaration{ Node: ast.Node{ @@ -3055,13 +3061,13 @@ yydefault: } case 119: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:762 + // line internal/php7/php7.y:768 { yyVAL.node = yyDollar[1].node } case 120: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:766 + // line internal/php7/php7.y:772 { decl := yyDollar[2].node.(*ast.StmtUseDeclaration) decl.NsSeparatorTkn = yyDollar[1].token @@ -3071,7 +3077,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:777 + // line internal/php7/php7.y:783 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3080,13 +3086,13 @@ yydefault: } case 122: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:784 + // line internal/php7/php7.y:790 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 123: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:791 + // line internal/php7/php7.y:797 { if inlineHtmlNode, ok := yyDollar[2].node.(*ast.StmtInlineHtml); ok && len(yyDollar[1].list) > 0 { prevNode := lastNode(yyDollar[1].list) @@ -3099,50 +3105,50 @@ yydefault: } case 124: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:802 + // line internal/php7/php7.y:808 { yyVAL.list = []ast.Vertex{} } case 125: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:809 + // line internal/php7/php7.y:815 { // error yyVAL.node = nil } case 126: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:814 + // line internal/php7/php7.y:820 { yyVAL.node = yyDollar[1].node } case 127: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:818 + // line internal/php7/php7.y:824 { yyVAL.node = yyDollar[1].node } case 128: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:822 + // line internal/php7/php7.y:828 { yyVAL.node = yyDollar[1].node } case 129: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:826 + // line internal/php7/php7.y:832 { yyVAL.node = yyDollar[1].node } case 130: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:830 + // line internal/php7/php7.y:836 { yyVAL.node = yyDollar[1].node } case 131: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:834 + // line internal/php7/php7.y:840 { yyVAL.node = &ast.StmtHaltCompiler{ast.Node{}} @@ -3155,7 +3161,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:847 + // line internal/php7/php7.y:853 { yyVAL.node = &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} @@ -3168,19 +3174,19 @@ yydefault: } case 133: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:858 + // line internal/php7/php7.y:864 { yyVAL.node = yyDollar[1].node } case 134: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:862 + // line internal/php7/php7.y:868 { yyVAL.node = yyDollar[1].node } case 135: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:866 + // line internal/php7/php7.y:872 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} @@ -3204,7 +3210,7 @@ yydefault: } case 136: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:888 + // line internal/php7/php7.y:894 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[5].node} yyVAL.node = &ast.StmtDo{ast.Node{}, yyDollar[2].node, exprBrackets} @@ -3222,7 +3228,7 @@ yydefault: } case 137: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:904 + // line internal/php7/php7.y:910 { switch n := yyDollar[9].node.(type) { case *ast.StmtFor: @@ -3249,7 +3255,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:929 + // line internal/php7/php7.y:935 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} @@ -3275,7 +3281,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:953 + // line internal/php7/php7.y:959 { yyVAL.node = &ast.StmtBreak{ast.Node{}, yyDollar[2].node} @@ -3289,7 +3295,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:965 + // line internal/php7/php7.y:971 { yyVAL.node = &ast.StmtContinue{ast.Node{}, yyDollar[2].node} @@ -3303,7 +3309,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:977 + // line internal/php7/php7.y:983 { yyVAL.node = &ast.StmtReturn{ast.Node{}, yyDollar[2].node} @@ -3317,7 +3323,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:989 + // line internal/php7/php7.y:995 { yyVAL.node = &ast.StmtGlobal{ast.Node{}, yyDollar[2].list} @@ -3331,7 +3337,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1001 + // line internal/php7/php7.y:1007 { yyVAL.node = &ast.StmtStatic{ast.Node{}, yyDollar[2].list} @@ -3345,7 +3351,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1013 + // line internal/php7/php7.y:1019 { yyVAL.node = &ast.StmtEcho{ast.Node{}, yyDollar[2].list} @@ -3360,7 +3366,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1026 + // line internal/php7/php7.y:1032 { yyVAL.node = &ast.StmtInlineHtml{ast.Node{}, yyDollar[1].token.Value} @@ -3372,7 +3378,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1036 + // line internal/php7/php7.y:1042 { yyVAL.node = &ast.StmtExpression{ast.Node{}, yyDollar[1].node} @@ -3386,7 +3392,7 @@ yydefault: } case 147: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1048 + // line internal/php7/php7.y:1054 { yyVAL.node = &ast.StmtUnset{ast.Node{}, yyDollar[3].list} @@ -3406,7 +3412,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:1066 + // line internal/php7/php7.y:1072 { switch n := yyDollar[7].node.(type) { case *ast.StmtForeach: @@ -3430,7 +3436,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:1088 + // line internal/php7/php7.y:1094 { switch n := yyDollar[9].node.(type) { case *ast.StmtForeach: @@ -3457,7 +3463,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1113 + // line internal/php7/php7.y:1119 { yyVAL.node = yyDollar[5].node yyVAL.node.(*ast.StmtDeclare).Consts = yyDollar[3].list @@ -3472,7 +3478,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1126 + // line internal/php7/php7.y:1132 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -3485,7 +3491,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1137 + // 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} @@ -3502,7 +3508,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1152 + // line internal/php7/php7.y:1158 { yyVAL.node = &ast.StmtThrow{ast.Node{}, yyDollar[2].node} @@ -3516,7 +3522,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1164 + // line internal/php7/php7.y:1170 { label := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.StmtGoto{ast.Node{}, label} @@ -3533,7 +3539,7 @@ yydefault: } case 155: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1179 + // line internal/php7/php7.y:1185 { label := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtLabel{ast.Node{}, label} @@ -3548,13 +3554,13 @@ yydefault: } case 156: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1194 + // line internal/php7/php7.y:1200 { yyVAL.list = []ast.Vertex{} } case 157: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:1198 + // line internal/php7/php7.y:1204 { identifier := &ast.Identifier{ast.Node{}, yyDollar[5].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -3576,28 +3582,33 @@ yydefault: } case 158: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1220 + // 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:1224 + // line internal/php7/php7.y:1230 { + switch n := lastNode(yyDollar[1].list).(type) { + case *ast.NameName: + n.ListSeparatorTkn = yyDollar[2].token + case *ast.NameFullyQualified: + n.ListSeparatorTkn = yyDollar[2].token + case *ast.NameRelative: + n.ListSeparatorTkn = yyDollar[2].token + } yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) - - // save comments - yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.SkippedTokens) } case 160: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1234 + // line internal/php7/php7.y:1242 { yyVAL.node = nil } case 161: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1238 + // line internal/php7/php7.y:1246 { yyVAL.node = &ast.StmtFinally{ast.Node{}, yyDollar[3].list} @@ -3611,13 +3622,13 @@ yydefault: } case 162: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1253 + // 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:1257 + // line internal/php7/php7.y:1265 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3626,13 +3637,13 @@ yydefault: } case 164: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1267 + // line internal/php7/php7.y:1275 { yyVAL.node = yyDollar[1].node } case 165: yyDollar = yyS[yypt-11 : yypt+1] - // line internal/php7/php7.y:1274 + // 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} @@ -3662,31 +3673,31 @@ yydefault: } case 166: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1305 + // line internal/php7/php7.y:1313 { yyVAL.token = nil } case 167: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1309 + // line internal/php7/php7.y:1317 { yyVAL.token = yyDollar[1].token } case 168: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1316 + // line internal/php7/php7.y:1324 { yyVAL.token = nil } case 169: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1320 + // line internal/php7/php7.y:1328 { yyVAL.token = yyDollar[1].token } case 170: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:1327 + // 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} @@ -3704,7 +3715,7 @@ yydefault: } case 171: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php7/php7.y:1343 + // 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} @@ -3721,19 +3732,19 @@ yydefault: } case 172: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1361 + // 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:1365 + // 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:1372 + // line internal/php7/php7.y:1380 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -3745,7 +3756,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1382 + // line internal/php7/php7.y:1390 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -3757,7 +3768,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1395 + // 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} @@ -3774,7 +3785,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:1413 + // 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} @@ -3791,13 +3802,13 @@ yydefault: } case 178: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1431 + // line internal/php7/php7.y:1439 { yyVAL.ClassExtends = nil } case 179: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1435 + // line internal/php7/php7.y:1443 { yyVAL.ClassExtends = &ast.StmtClassExtends{ast.Node{}, yyDollar[2].node} @@ -3809,13 +3820,13 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1448 + // line internal/php7/php7.y:1456 { yyVAL.InterfaceExtends = nil } case 181: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1452 + // line internal/php7/php7.y:1460 { yyVAL.InterfaceExtends = &ast.StmtInterfaceExtends{ast.Node{}, yyDollar[2].list} @@ -3827,13 +3838,13 @@ yydefault: } case 182: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1465 + // line internal/php7/php7.y:1473 { yyVAL.ClassImplements = nil } case 183: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1469 + // line internal/php7/php7.y:1477 { yyVAL.ClassImplements = &ast.StmtClassImplements{ast.Node{}, yyDollar[2].list} @@ -3845,13 +3856,13 @@ yydefault: } case 184: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1482 + // line internal/php7/php7.y:1490 { yyVAL.node = yyDollar[1].node } case 185: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1486 + // line internal/php7/php7.y:1494 { yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node} @@ -3863,7 +3874,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1496 + // line internal/php7/php7.y:1504 { yyVAL.node = &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -3877,7 +3888,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1508 + // line internal/php7/php7.y:1516 { yyVAL.node = &ast.ExprShortList{ast.Node{}, yyDollar[2].list} @@ -3890,7 +3901,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1522 + // line internal/php7/php7.y:1530 { yyVAL.node = &ast.StmtFor{ast.Node{}, nil, nil, nil, yyDollar[1].node} @@ -3899,7 +3910,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1529 + // line internal/php7/php7.y:1537 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltFor{ast.Node{}, nil, nil, nil, stmtList} @@ -3916,7 +3927,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1547 + // line internal/php7/php7.y:1555 { yyVAL.node = &ast.StmtForeach{ast.Node{}, nil, nil, nil, yyDollar[1].node} @@ -3925,7 +3936,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1554 + // line internal/php7/php7.y:1562 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltForeach{ast.Node{}, nil, nil, nil, stmtList} @@ -3942,7 +3953,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1572 + // line internal/php7/php7.y:1580 { yyVAL.node = &ast.StmtDeclare{ast.Node{}, false, nil, yyDollar[1].node} @@ -3951,7 +3962,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1579 + // line internal/php7/php7.y:1587 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtDeclare{ast.Node{}, true, nil, stmtList} @@ -3968,7 +3979,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1597 + // line internal/php7/php7.y:1605 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList} @@ -3983,7 +3994,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1610 + // line internal/php7/php7.y:1618 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList} @@ -3999,7 +4010,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1624 + // line internal/php7/php7.y:1632 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltSwitch{ast.Node{}, nil, caseList} @@ -4016,7 +4027,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1639 + // line internal/php7/php7.y:1647 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list} @@ -4035,13 +4046,13 @@ yydefault: } case 198: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1659 + // line internal/php7/php7.y:1667 { yyVAL.list = []ast.Vertex{} } case 199: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1663 + // line internal/php7/php7.y:1671 { _case := &ast.StmtCase{ast.Node{}, yyDollar[3].node, yyDollar[5].list} yyVAL.list = append(yyDollar[1].list, _case) @@ -4056,7 +4067,7 @@ yydefault: } case 200: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1676 + // line internal/php7/php7.y:1684 { _default := &ast.StmtDefault{ast.Node{}, yyDollar[4].list} yyVAL.list = append(yyDollar[1].list, _default) @@ -4071,19 +4082,19 @@ yydefault: } case 201: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1692 + // line internal/php7/php7.y:1700 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1696 + // line internal/php7/php7.y:1704 { yyVAL.token = yyDollar[1].token } case 203: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1703 + // line internal/php7/php7.y:1711 { yyVAL.node = &ast.StmtWhile{ast.Node{}, nil, yyDollar[1].node} @@ -4092,7 +4103,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1710 + // line internal/php7/php7.y:1718 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltWhile{ast.Node{}, nil, stmtList} @@ -4109,7 +4120,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1728 + // 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} @@ -4125,7 +4136,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1742 + // line internal/php7/php7.y:1750 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[4].node} _elseIf := &ast.StmtElseIf{ast.Node{}, exprBrackets, yyDollar[6].node} @@ -4145,13 +4156,13 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1763 + // line internal/php7/php7.y:1771 { yyVAL.node = yyDollar[1].node } case 208: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1767 + // line internal/php7/php7.y:1775 { _else := &ast.StmtElse{ast.Node{}, yyDollar[3].node} yyDollar[1].node.(*ast.StmtIf).Else = _else @@ -4167,7 +4178,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1784 + // line internal/php7/php7.y:1792 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[6].list} @@ -4188,7 +4199,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:1803 + // line internal/php7/php7.y:1811 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[4].node} stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[7].list} @@ -4212,7 +4223,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1828 + // line internal/php7/php7.y:1836 { yyVAL.node = yyDollar[1].node @@ -4230,7 +4241,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1844 + // line internal/php7/php7.y:1852 { stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[4].list} stmtsBrackets := &ast.ParserBrackets{ast.Node{}, stmts} @@ -4253,25 +4264,25 @@ yydefault: } case 213: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1868 + // line internal/php7/php7.y:1876 { yyVAL.list = yyDollar[1].list } case 214: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1872 + // line internal/php7/php7.y:1880 { yyVAL.list = nil } case 215: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1879 + // 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:1883 + // line internal/php7/php7.y:1891 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4280,7 +4291,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1893 + // line internal/php7/php7.y:1901 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) @@ -4316,7 +4327,7 @@ yydefault: } case 218: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1927 + // line internal/php7/php7.y:1935 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) @@ -4353,25 +4364,25 @@ yydefault: } case 219: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1965 + // line internal/php7/php7.y:1973 { yyVAL.node = nil } case 220: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1969 + // line internal/php7/php7.y:1977 { yyVAL.node = yyDollar[1].node } case 221: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1976 + // line internal/php7/php7.y:1984 { yyVAL.node = yyDollar[1].node } case 222: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1980 + // line internal/php7/php7.y:1988 { yyVAL.node = &ast.Nullable{ast.Node{}, yyDollar[2].node} @@ -4383,7 +4394,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1993 + // line internal/php7/php7.y:2001 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4395,7 +4406,7 @@ yydefault: } case 224: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2003 + // line internal/php7/php7.y:2011 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4407,19 +4418,19 @@ yydefault: } case 225: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2013 + // line internal/php7/php7.y:2021 { yyVAL.node = yyDollar[1].node } case 226: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2020 + // line internal/php7/php7.y:2028 { yyVAL.node = nil } case 227: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2024 + // line internal/php7/php7.y:2032 { yyVAL.node = yyDollar[2].node @@ -4428,7 +4439,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2034 + // line internal/php7/php7.y:2042 { yyVAL.node = &ast.ArgumentList{ast.Node{}, nil} @@ -4441,7 +4452,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2045 + // line internal/php7/php7.y:2053 { yyVAL.node = &ast.ArgumentList{ast.Node{}, yyDollar[2].list} @@ -4458,13 +4469,13 @@ yydefault: } case 230: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2063 + // 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:2067 + // line internal/php7/php7.y:2075 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4473,7 +4484,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2077 + // line internal/php7/php7.y:2085 { yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node} @@ -4485,7 +4496,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2087 + // line internal/php7/php7.y:2095 { yyVAL.node = &ast.Argument{ast.Node{}, true, false, yyDollar[2].node} @@ -4497,7 +4508,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2100 + // line internal/php7/php7.y:2108 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4506,19 +4517,19 @@ yydefault: } case 235: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2107 + // 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:2114 + // line internal/php7/php7.y:2122 { yyVAL.node = yyDollar[1].node } case 237: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2121 + // line internal/php7/php7.y:2129 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4527,13 +4538,13 @@ yydefault: } case 238: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2128 + // 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:2135 + // line internal/php7/php7.y:2143 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4549,7 +4560,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2149 + // line internal/php7/php7.y:2157 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4566,19 +4577,19 @@ yydefault: } case 241: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2167 + // 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:2171 + // line internal/php7/php7.y:2179 { yyVAL.list = []ast.Vertex{} } case 243: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2178 + // line internal/php7/php7.y:2186 { yyVAL.node = &ast.StmtPropertyList{ast.Node{}, yyDollar[1].list, yyDollar[2].node, yyDollar[3].list} @@ -4592,7 +4603,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2190 + // line internal/php7/php7.y:2198 { yyVAL.node = &ast.StmtClassConstList{ast.Node{}, yyDollar[1].list, yyDollar[3].list} @@ -4611,7 +4622,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2207 + // line internal/php7/php7.y:2215 { yyVAL.node = &ast.StmtTraitUse{ast.Node{}, yyDollar[2].list, yyDollar[3].node} @@ -4623,7 +4634,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-10 : yypt+1] - // line internal/php7/php7.y:2217 + // line internal/php7/php7.y:2225 { 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} @@ -4654,22 +4665,27 @@ yydefault: } case 247: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2249 + // line internal/php7/php7.y:2257 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 248: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2253 + // line internal/php7/php7.y:2261 { + switch n := lastNode(yyDollar[1].list).(type) { + case *ast.NameName: + n.ListSeparatorTkn = yyDollar[2].token + case *ast.NameFullyQualified: + n.ListSeparatorTkn = yyDollar[2].token + case *ast.NameRelative: + n.ListSeparatorTkn = yyDollar[2].token + } yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) - - // save comments - yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.SkippedTokens) } case 249: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2263 + // line internal/php7/php7.y:2273 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -4681,7 +4697,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2273 + // line internal/php7/php7.y:2283 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, nil} @@ -4693,7 +4709,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2283 + // line internal/php7/php7.y:2293 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, yyDollar[2].list} @@ -4705,19 +4721,19 @@ yydefault: } case 252: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2296 + // line internal/php7/php7.y:2306 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 253: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2300 + // line internal/php7/php7.y:2310 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 254: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2307 + // line internal/php7/php7.y:2317 { yyVAL.node = yyDollar[1].node @@ -4727,7 +4743,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2315 + // line internal/php7/php7.y:2325 { yyVAL.node = yyDollar[1].node @@ -4737,7 +4753,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2326 + // line internal/php7/php7.y:2336 { yyVAL.node = &ast.StmtTraitUsePrecedence{ast.Node{}, yyDollar[1].node, yyDollar[3].list} @@ -4750,7 +4766,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2340 + // line internal/php7/php7.y:2350 { alias := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, nil, alias} @@ -4766,7 +4782,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2354 + // line internal/php7/php7.y:2364 { alias := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, nil, alias} @@ -4782,7 +4798,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2368 + // line internal/php7/php7.y:2378 { alias := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, alias} @@ -4798,7 +4814,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2382 + // line internal/php7/php7.y:2392 { yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, nil} @@ -4811,7 +4827,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2396 + // line internal/php7/php7.y:2406 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, nil, name} @@ -4825,13 +4841,13 @@ yydefault: } case 262: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2408 + // line internal/php7/php7.y:2418 { yyVAL.node = yyDollar[1].node } case 263: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2415 + // line internal/php7/php7.y:2425 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, yyDollar[1].node, target} @@ -4847,7 +4863,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2432 + // line internal/php7/php7.y:2442 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -4860,7 +4876,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2443 + // line internal/php7/php7.y:2453 { yyVAL.node = &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} @@ -4873,13 +4889,13 @@ yydefault: } case 266: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2457 + // line internal/php7/php7.y:2467 { yyVAL.list = yyDollar[1].list } case 267: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2461 + // line internal/php7/php7.y:2471 { modifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{modifier} @@ -4892,41 +4908,29 @@ yydefault: } case 268: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2475 + // line internal/php7/php7.y:2485 { yyVAL.list = nil } case 269: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2479 + // line internal/php7/php7.y:2489 { yyVAL.list = yyDollar[1].list } case 270: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2486 + // line internal/php7/php7.y:2496 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 271: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2490 + // line internal/php7/php7.y:2500 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 272: - yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2497 - { - yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - } - case 273: yyDollar = yyS[yypt-1 : yypt+1] // line internal/php7/php7.y:2507 { @@ -4938,7 +4942,7 @@ yydefault: // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) } - case 274: + case 273: yyDollar = yyS[yypt-1 : yypt+1] // line internal/php7/php7.y:2517 { @@ -4950,7 +4954,7 @@ yydefault: // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) } - case 275: + case 274: yyDollar = yyS[yypt-1 : yypt+1] // line internal/php7/php7.y:2527 { @@ -4962,7 +4966,7 @@ yydefault: // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) } - case 276: + case 275: yyDollar = yyS[yypt-1 : yypt+1] // line internal/php7/php7.y:2537 { @@ -4974,7 +4978,7 @@ yydefault: // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) } - case 277: + case 276: yyDollar = yyS[yypt-1 : yypt+1] // line internal/php7/php7.y:2547 { @@ -4983,12 +4987,24 @@ yydefault: // save position yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + } + case 277: + yyDollar = yyS[yypt-1 : yypt+1] + // line internal/php7/php7.y:2557 + { + yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} + + // save position + yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) + // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) } case 278: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2560 + // line internal/php7/php7.y:2570 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4997,13 +5013,13 @@ yydefault: } case 279: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2567 + // line internal/php7/php7.y:2577 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 280: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2574 + // line internal/php7/php7.y:2584 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -5019,7 +5035,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2588 + // line internal/php7/php7.y:2598 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -5036,7 +5052,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2606 + // line internal/php7/php7.y:2616 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5045,13 +5061,13 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2613 + // line internal/php7/php7.y:2623 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 284: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2620 + // line internal/php7/php7.y:2630 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtConstant{ast.Node{}, name, yyDollar[3].node} @@ -5066,7 +5082,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2636 + // line internal/php7/php7.y:2646 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtConstant{ast.Node{}, name, yyDollar[3].node} @@ -5081,7 +5097,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2652 + // line internal/php7/php7.y:2662 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5090,31 +5106,31 @@ yydefault: } case 287: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2659 + // line internal/php7/php7.y:2669 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 288: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2666 + // line internal/php7/php7.y:2676 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2673 + // line internal/php7/php7.y:2683 { yyVAL.list = nil } case 290: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2677 + // line internal/php7/php7.y:2687 { yyVAL.list = yyDollar[1].list } case 291: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2684 + // line internal/php7/php7.y:2694 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5123,13 +5139,13 @@ yydefault: } case 292: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2691 + // line internal/php7/php7.y:2701 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 293: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php7/php7.y:2698 + // line internal/php7/php7.y:2708 { 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} @@ -5147,7 +5163,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2717 + // line internal/php7/php7.y:2727 { if yyDollar[3].node != nil { yyVAL.node = &ast.ExprNew{ast.Node{}, yyDollar[2].node, yyDollar[3].node.(*ast.ArgumentList)} @@ -5162,7 +5178,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2730 + // line internal/php7/php7.y:2740 { yyVAL.node = &ast.ExprNew{ast.Node{}, yyDollar[2].node, nil} @@ -5174,7 +5190,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:2743 + // line internal/php7/php7.y:2753 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, listNode, yyDollar[6].node} @@ -5191,7 +5207,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:2758 + // line internal/php7/php7.y:2768 { shortList := &ast.ExprShortList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, shortList, yyDollar[5].node} @@ -5207,7 +5223,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2772 + // line internal/php7/php7.y:2782 { yyVAL.node = &ast.ExprAssign{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5220,7 +5236,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2783 + // line internal/php7/php7.y:2793 { yyVAL.node = &ast.ExprAssignReference{ast.Node{}, yyDollar[1].node, yyDollar[4].node} @@ -5234,7 +5250,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2795 + // line internal/php7/php7.y:2805 { yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node} @@ -5246,7 +5262,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2805 + // line internal/php7/php7.y:2815 { yyVAL.node = &ast.ExprAssignPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5259,7 +5275,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2816 + // line internal/php7/php7.y:2826 { yyVAL.node = &ast.ExprAssignMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5272,7 +5288,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2827 + // line internal/php7/php7.y:2837 { yyVAL.node = &ast.ExprAssignMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5285,7 +5301,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2838 + // line internal/php7/php7.y:2848 { yyVAL.node = &ast.ExprAssignPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5298,7 +5314,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2849 + // line internal/php7/php7.y:2859 { yyVAL.node = &ast.ExprAssignDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5311,7 +5327,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2860 + // line internal/php7/php7.y:2870 { yyVAL.node = &ast.ExprAssignConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5324,7 +5340,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2871 + // line internal/php7/php7.y:2881 { yyVAL.node = &ast.ExprAssignMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5337,7 +5353,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2882 + // line internal/php7/php7.y:2892 { yyVAL.node = &ast.ExprAssignBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5350,7 +5366,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2893 + // line internal/php7/php7.y:2903 { yyVAL.node = &ast.ExprAssignBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5363,7 +5379,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2904 + // line internal/php7/php7.y:2914 { yyVAL.node = &ast.ExprAssignBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5376,7 +5392,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2915 + // line internal/php7/php7.y:2925 { yyVAL.node = &ast.ExprAssignShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5389,7 +5405,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2926 + // line internal/php7/php7.y:2936 { yyVAL.node = &ast.ExprAssignShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5402,7 +5418,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2937 + // line internal/php7/php7.y:2947 { yyVAL.node = &ast.ExprAssignCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5415,7 +5431,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2948 + // line internal/php7/php7.y:2958 { yyVAL.node = &ast.ExprPostInc{ast.Node{}, yyDollar[1].node} @@ -5428,7 +5444,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2959 + // line internal/php7/php7.y:2969 { yyVAL.node = &ast.ExprPreInc{ast.Node{}, yyDollar[2].node} @@ -5440,7 +5456,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2969 + // line internal/php7/php7.y:2979 { yyVAL.node = &ast.ExprPostDec{ast.Node{}, yyDollar[1].node} @@ -5453,7 +5469,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2980 + // line internal/php7/php7.y:2990 { yyVAL.node = &ast.ExprPreDec{ast.Node{}, yyDollar[2].node} @@ -5465,7 +5481,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2990 + // line internal/php7/php7.y:3000 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5478,7 +5494,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3001 + // line internal/php7/php7.y:3011 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5491,7 +5507,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3012 + // line internal/php7/php7.y:3022 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5504,7 +5520,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3023 + // line internal/php7/php7.y:3033 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5517,7 +5533,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3034 + // line internal/php7/php7.y:3044 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5530,7 +5546,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3045 + // line internal/php7/php7.y:3055 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5543,7 +5559,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3056 + // line internal/php7/php7.y:3066 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5556,7 +5572,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3067 + // line internal/php7/php7.y:3077 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5569,7 +5585,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3078 + // line internal/php7/php7.y:3088 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5582,7 +5598,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3089 + // line internal/php7/php7.y:3099 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5595,7 +5611,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3100 + // line internal/php7/php7.y:3110 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5608,7 +5624,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3111 + // line internal/php7/php7.y:3121 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5621,7 +5637,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3122 + // line internal/php7/php7.y:3132 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5634,7 +5650,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3133 + // line internal/php7/php7.y:3143 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5647,7 +5663,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3144 + // line internal/php7/php7.y:3154 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5660,7 +5676,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3155 + // line internal/php7/php7.y:3165 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5673,7 +5689,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3166 + // line internal/php7/php7.y:3176 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5686,7 +5702,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3177 + // line internal/php7/php7.y:3187 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -5698,7 +5714,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3187 + // line internal/php7/php7.y:3197 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -5710,7 +5726,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3197 + // line internal/php7/php7.y:3207 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -5722,7 +5738,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3207 + // line internal/php7/php7.y:3217 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -5734,7 +5750,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3217 + // line internal/php7/php7.y:3227 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5747,7 +5763,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3228 + // line internal/php7/php7.y:3238 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5760,7 +5776,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3239 + // line internal/php7/php7.y:3249 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5773,7 +5789,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3250 + // line internal/php7/php7.y:3260 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5787,7 +5803,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3262 + // line internal/php7/php7.y:3272 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5800,7 +5816,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3273 + // line internal/php7/php7.y:3283 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5813,7 +5829,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3284 + // line internal/php7/php7.y:3294 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5826,7 +5842,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3295 + // line internal/php7/php7.y:3305 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5839,7 +5855,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3306 + // line internal/php7/php7.y:3316 { yyVAL.node = &ast.ExprBinarySpaceship{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5852,7 +5868,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3317 + // line internal/php7/php7.y:3327 { yyVAL.node = &ast.ExprInstanceOf{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5865,7 +5881,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3328 + // line internal/php7/php7.y:3338 { yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} @@ -5878,13 +5894,13 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3339 + // line internal/php7/php7.y:3349 { yyVAL.node = yyDollar[1].node } case 351: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:3343 + // line internal/php7/php7.y:3353 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -5898,7 +5914,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3355 + // line internal/php7/php7.y:3365 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -5912,7 +5928,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3367 + // line internal/php7/php7.y:3377 { yyVAL.node = &ast.ExprBinaryCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5925,13 +5941,13 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3378 + // line internal/php7/php7.y:3388 { yyVAL.node = yyDollar[1].node } case 355: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3382 + // line internal/php7/php7.y:3392 { yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node} @@ -5944,7 +5960,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3393 + // line internal/php7/php7.y:3403 { yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node} @@ -5957,7 +5973,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3404 + // line internal/php7/php7.y:3414 { yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node} @@ -5970,7 +5986,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3415 + // line internal/php7/php7.y:3425 { yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node} @@ -5983,7 +5999,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3426 + // line internal/php7/php7.y:3436 { yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node} @@ -5996,7 +6012,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3437 + // line internal/php7/php7.y:3447 { yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node} @@ -6009,7 +6025,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3448 + // line internal/php7/php7.y:3458 { yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node} @@ -6022,7 +6038,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3459 + // line internal/php7/php7.y:3469 { yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[2].node} @@ -6042,7 +6058,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3477 + // line internal/php7/php7.y:3487 { yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node} @@ -6054,13 +6070,13 @@ yydefault: } case 364: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3487 + // line internal/php7/php7.y:3497 { yyVAL.node = yyDollar[1].node } case 365: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3491 + // line internal/php7/php7.y:3501 { yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list} @@ -6072,7 +6088,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3501 + // line internal/php7/php7.y:3511 { yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} @@ -6084,7 +6100,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3511 + // line internal/php7/php7.y:3521 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil} @@ -6096,7 +6112,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3521 + // line internal/php7/php7.y:3531 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6108,7 +6124,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3531 + // line internal/php7/php7.y:3541 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6121,7 +6137,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3542 + // line internal/php7/php7.y:3552 { yyVAL.node = &ast.ExprYieldFrom{ast.Node{}, yyDollar[2].node} @@ -6133,13 +6149,13 @@ yydefault: } case 371: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3552 + // line internal/php7/php7.y:3562 { yyVAL.node = yyDollar[1].node } case 372: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3556 + // line internal/php7/php7.y:3566 { yyVAL.node = yyDollar[2].node @@ -6160,7 +6176,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-11 : yypt+1] - // line internal/php7/php7.y:3577 + // line internal/php7/php7.y:3587 { yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list} @@ -6191,7 +6207,7 @@ yydefault: } case 374: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:3604 + // line internal/php7/php7.y:3614 { yyVAL.node = &ast.ExprArrowFunction{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[4].list, yyDollar[6].node, yyDollar[9].node} @@ -6217,25 +6233,25 @@ yydefault: } case 376: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3634 + // line internal/php7/php7.y:3644 { yyVAL.token = nil } case 377: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3638 + // line internal/php7/php7.y:3648 { yyVAL.token = yyDollar[1].token } case 378: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3645 + // line internal/php7/php7.y:3655 { yyVAL.ClosureUse = nil } case 379: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3649 + // line internal/php7/php7.y:3659 { yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list} @@ -6249,7 +6265,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3664 + // line internal/php7/php7.y:3674 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6258,13 +6274,13 @@ yydefault: } case 381: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3671 + // line internal/php7/php7.y:3681 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 382: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3678 + // line internal/php7/php7.y:3688 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier} @@ -6278,7 +6294,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3690 + // line internal/php7/php7.y:3700 { identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -6295,7 +6311,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3708 + // line internal/php7/php7.y:3718 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6307,7 +6323,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3718 + // line internal/php7/php7.y:3728 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6320,7 +6336,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3729 + // line internal/php7/php7.y:3739 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6333,7 +6349,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3740 + // line internal/php7/php7.y:3750 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6345,7 +6361,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3753 + // line internal/php7/php7.y:3763 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -6357,31 +6373,31 @@ yydefault: } case 389: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3763 + // line internal/php7/php7.y:3773 { yyVAL.node = yyDollar[1].node } case 390: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3770 + // line internal/php7/php7.y:3780 { yyVAL.node = yyDollar[1].node } case 391: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3774 + // line internal/php7/php7.y:3784 { yyVAL.node = yyDollar[1].node } case 392: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3781 + // line internal/php7/php7.y:3791 { yyVAL.node = nil } case 393: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3785 + // line internal/php7/php7.y:3795 { yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} @@ -6394,13 +6410,13 @@ yydefault: } case 394: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3799 + // line internal/php7/php7.y:3809 { yyVAL.list = []ast.Vertex{} } case 395: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3803 + // line internal/php7/php7.y:3813 { part := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{part} @@ -6410,25 +6426,25 @@ yydefault: } case 396: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3811 + // line internal/php7/php7.y:3821 { yyVAL.list = yyDollar[1].list } case 397: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3818 + // line internal/php7/php7.y:3828 { yyVAL.node = nil } case 398: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3822 + // line internal/php7/php7.y:3832 { yyVAL.node = yyDollar[1].node } case 399: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3829 + // line internal/php7/php7.y:3839 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -6442,7 +6458,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3841 + // line internal/php7/php7.y:3851 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -6455,7 +6471,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3852 + // line internal/php7/php7.y:3862 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -6467,7 +6483,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3865 + // line internal/php7/php7.y:3875 { yyVAL.node = &ast.ScalarLnumber{ast.Node{}, yyDollar[1].token.Value} @@ -6479,7 +6495,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3875 + // line internal/php7/php7.y:3885 { yyVAL.node = &ast.ScalarDnumber{ast.Node{}, yyDollar[1].token.Value} @@ -6491,7 +6507,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3885 + // line internal/php7/php7.y:3895 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6503,7 +6519,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3895 + // line internal/php7/php7.y:3905 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6515,7 +6531,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3905 + // line internal/php7/php7.y:3915 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6527,7 +6543,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3915 + // line internal/php7/php7.y:3925 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6539,7 +6555,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3925 + // line internal/php7/php7.y:3935 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6551,7 +6567,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3935 + // line internal/php7/php7.y:3945 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6563,7 +6579,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3945 + // line internal/php7/php7.y:3955 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6575,7 +6591,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3955 + // line internal/php7/php7.y:3965 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -6587,7 +6603,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3965 + // line internal/php7/php7.y:3975 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, []ast.Vertex{encapsed}} @@ -6601,7 +6617,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3977 + // line internal/php7/php7.y:3987 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, nil} @@ -6613,7 +6629,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3987 + // line internal/php7/php7.y:3997 { yyVAL.node = &ast.ScalarEncapsed{ast.Node{}, yyDollar[2].list} @@ -6625,7 +6641,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3997 + // line internal/php7/php7.y:4007 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, yyDollar[2].list} @@ -6637,19 +6653,19 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4007 + // line internal/php7/php7.y:4017 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4011 + // line internal/php7/php7.y:4021 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4018 + // line internal/php7/php7.y:4028 { yyVAL.node = &ast.ExprConstFetch{ast.Node{}, yyDollar[1].node} @@ -6661,7 +6677,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4028 + // line internal/php7/php7.y:4038 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -6677,7 +6693,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4042 + // line internal/php7/php7.y:4052 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -6693,43 +6709,43 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4059 + // line internal/php7/php7.y:4069 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4063 + // line internal/php7/php7.y:4073 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:4070 + // line internal/php7/php7.y:4080 { yyVAL.node = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4074 + // line internal/php7/php7.y:4084 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4081 + // line internal/php7/php7.y:4091 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4088 + // line internal/php7/php7.y:4098 { yyVAL.node = yyDollar[1].node } case 427: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4092 + // line internal/php7/php7.y:4102 { yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} @@ -6742,19 +6758,19 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4103 + // line internal/php7/php7.y:4113 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4110 + // line internal/php7/php7.y:4120 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4114 + // line internal/php7/php7.y:4124 { yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} @@ -6767,19 +6783,19 @@ yydefault: } case 431: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4125 + // line internal/php7/php7.y:4135 { yyVAL.node = yyDollar[1].node } case 432: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4132 + // line internal/php7/php7.y:4142 { yyVAL.node = yyDollar[1].node } case 433: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4136 + // line internal/php7/php7.y:4146 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6792,7 +6808,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4147 + // line internal/php7/php7.y:4157 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6805,7 +6821,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4158 + // line internal/php7/php7.y:4168 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6818,7 +6834,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4169 + // line internal/php7/php7.y:4179 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6831,25 +6847,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4180 + // line internal/php7/php7.y:4190 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4187 + // line internal/php7/php7.y:4197 { yyVAL.node = yyDollar[1].node } case 439: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4191 + // line internal/php7/php7.y:4201 { yyVAL.node = yyDollar[1].node } case 440: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4195 + // line internal/php7/php7.y:4205 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6862,7 +6878,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4209 + // line internal/php7/php7.y:4219 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -6876,7 +6892,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4221 + // line internal/php7/php7.y:4231 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -6890,7 +6906,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4233 + // line internal/php7/php7.y:4243 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -6902,7 +6918,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4246 + // line internal/php7/php7.y:4256 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6915,7 +6931,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4257 + // line internal/php7/php7.y:4267 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6928,13 +6944,13 @@ yydefault: } case 446: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4271 + // line internal/php7/php7.y:4281 { yyVAL.node = yyDollar[1].node } case 447: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4275 + // line internal/php7/php7.y:4285 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6947,7 +6963,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4286 + // line internal/php7/php7.y:4296 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6960,7 +6976,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4297 + // line internal/php7/php7.y:4307 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6973,7 +6989,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4308 + // line internal/php7/php7.y:4318 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6986,7 +7002,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4319 + // line internal/php7/php7.y:4329 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6999,7 +7015,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4333 + // line internal/php7/php7.y:4343 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -7011,7 +7027,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4343 + // line internal/php7/php7.y:4353 { yyVAL.node = yyDollar[2].node @@ -7021,13 +7037,13 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4351 + // line internal/php7/php7.y:4361 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4358 + // line internal/php7/php7.y:4368 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -7039,7 +7055,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4368 + // line internal/php7/php7.y:4378 { yyVAL.node = yyDollar[2].node @@ -7049,31 +7065,31 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4376 + // line internal/php7/php7.y:4386 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4383 + // line internal/php7/php7.y:4393 { yyVAL.list = yyDollar[1].list } case 459: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:4390 + // line internal/php7/php7.y:4400 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} } case 460: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4394 + // line internal/php7/php7.y:4404 { yyVAL.node = yyDollar[1].node } case 461: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4401 + // line internal/php7/php7.y:4411 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}} @@ -7086,7 +7102,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4412 + // line internal/php7/php7.y:4422 { if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil { yyVAL.list = []ast.Vertex{} @@ -7096,7 +7112,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4423 + // line internal/php7/php7.y:4433 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} @@ -7109,7 +7125,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4434 + // line internal/php7/php7.y:4444 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} @@ -7121,7 +7137,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4444 + // line internal/php7/php7.y:4454 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference} @@ -7137,7 +7153,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4458 + // line internal/php7/php7.y:4468 { reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -7151,7 +7167,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4470 + // line internal/php7/php7.y:4480 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, true, nil, yyDollar[2].node} @@ -7163,7 +7179,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:4480 + // line internal/php7/php7.y:4490 { // TODO: Cannot use list() as standalone expression listNode := &ast.ExprList{ast.Node{}, yyDollar[5].list} @@ -7182,7 +7198,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4497 + // line internal/php7/php7.y:4507 { // TODO: Cannot use list() as standalone expression listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -7199,13 +7215,13 @@ yydefault: } case 470: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4515 + // line internal/php7/php7.y:4525 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 471: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4519 + // line internal/php7/php7.y:4529 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.list = append(yyDollar[1].list, encapsed) @@ -7218,13 +7234,13 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4530 + // line internal/php7/php7.y:4540 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 473: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4534 + // line internal/php7/php7.y:4544 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{encapsed, yyDollar[2].node} @@ -7237,7 +7253,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4548 + // line internal/php7/php7.y:4558 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -7251,7 +7267,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4560 + // line internal/php7/php7.y:4570 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -7268,7 +7284,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4575 + // line internal/php7/php7.y:4585 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -7287,7 +7303,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4592 + // line internal/php7/php7.y:4602 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7302,7 +7318,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4605 + // line internal/php7/php7.y:4615 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, name} @@ -7319,7 +7335,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:4620 + // line internal/php7/php7.y:4630 { identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -7338,7 +7354,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4637 + // line internal/php7/php7.y:4647 { yyVAL.node = yyDollar[2].node @@ -7348,7 +7364,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4648 + // line internal/php7/php7.y:4658 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -7360,7 +7376,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4658 + // line internal/php7/php7.y:4668 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -7377,7 +7393,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4673 + // line internal/php7/php7.y:4683 { var lnumber *ast.ScalarLnumber // TODO: add option to handle 64 bit integer @@ -7403,7 +7419,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4697 + // line internal/php7/php7.y:4707 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier} @@ -7417,7 +7433,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:4712 + // line internal/php7/php7.y:4722 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -7435,7 +7451,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4728 + // line internal/php7/php7.y:4738 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} yyVAL.node = &ast.ExprEmpty{ast.Node{}, exprBrackets} @@ -7451,7 +7467,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4742 + // line internal/php7/php7.y:4752 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -7463,7 +7479,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4752 + // line internal/php7/php7.y:4762 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -7475,7 +7491,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4762 + // line internal/php7/php7.y:4772 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} yyVAL.node = &ast.ExprEval{ast.Node{}, exprBrackets} @@ -7491,7 +7507,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4776 + // line internal/php7/php7.y:4786 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -7503,7 +7519,7 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4786 + // line internal/php7/php7.y:4796 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -7515,13 +7531,13 @@ yydefault: } case 492: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4799 + // line internal/php7/php7.y:4809 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 493: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4803 + // line internal/php7/php7.y:4813 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -7530,7 +7546,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4813 + // line internal/php7/php7.y:4823 { yyVAL.node = yyDollar[1].node } diff --git a/internal/php7/php7.y b/internal/php7/php7.y index f6589cd..33c558c 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -350,57 +350,59 @@ top_statement_list: namespace_name: T_STRING { - namePart := &ast.NameNamePart{ast.Node{}, $1.Value} - $$ = []ast.Vertex{namePart} - - // save position - namePart.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating(namePart, token.Start, $1.SkippedTokens) + $$ = []ast.Vertex{ + &ast.NameNamePart{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + StringTkn: $1, + Value: $1.Value, + }, + } } | namespace_name T_NS_SEPARATOR T_STRING { - namePart := &ast.NameNamePart{ast.Node{}, $3.Value} - $$ = append($1, namePart) - - // save position - namePart.GetNode().Position = position.NewTokenPosition($3) - - // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(namePart, token.Start, $3.SkippedTokens) + $$ = append($1, &ast.NameNamePart{ + Node: ast.Node{ + Position: position.NewTokensPosition($2, $3), + }, + NsSeparatorTkn: $2, + StringTkn: $3, + Value: $3.Value, + }) } ; name: namespace_name { - $$ = &ast.NameName{ast.Node{}, $1} - - // save position - $$.GetNode().Position = position.NewNodeListPosition($1) + $$ = &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition($1), + }, + Parts: $1, + } } - | T_NAMESPACE T_NS_SEPARATOR namespace_name + | T_NAMESPACE T_NS_SEPARATOR namespace_name { - $$ = &ast.NameRelative{ast.Node{}, $3} - - // save position - $$.GetNode().Position = position.NewTokenNodeListPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Namespace, $2.SkippedTokens) + $$ = &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $3), + }, + NsTkn: $1, + NsSeparatorTkn: $2, + Parts: $3, + } } - | T_NS_SEPARATOR namespace_name + | T_NS_SEPARATOR namespace_name { - $$ = &ast.NameFullyQualified{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodeListPosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $2), + }, + NsSeparatorTkn: $1, + Parts: $2, + } } ; @@ -443,45 +445,49 @@ top_statement: } | T_NAMESPACE namespace_name ';' { - name := &ast.NameName{ast.Node{}, $2} - $$ = &ast.StmtNamespace{ast.Node{}, name, nil} - - // save position - name.GetNode().Position = position.NewNodeListPosition($2) - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).MoveFreeFloating($2[0], name) - yylex.(*Parser).setFreeFloating(name, token.End, $3.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $3.SkippedTokens) + $$ = &ast.StmtNamespace{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + NsTkn: $1, + Name: &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition($2), + }, + Parts: $2, + }, + SemiColonTkn: $3, + } } | T_NAMESPACE namespace_name '{' top_statement_list '}' { - name := &ast.NameName{ast.Node{}, $2} - $$ = &ast.StmtNamespace{ast.Node{}, name, $4} - - // save position - name.GetNode().Position = position.NewNodeListPosition($2) - $$.GetNode().Position = position.NewTokensPosition($1, $5) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).MoveFreeFloating($2[0], name) - yylex.(*Parser).setFreeFloating(name, token.End, $3.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $5.SkippedTokens) + $$ = &ast.StmtNamespace{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $5), + }, + NsTkn: $1, + Name: &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition($2), + }, + Parts: $2, + }, + OpenCurlyBracket: $3, + Stmts: $4, + CloseCurlyBracket: $5, + } } | T_NAMESPACE '{' top_statement_list '}' { - $$ = &ast.StmtNamespace{ast.Node{}, nil, $3} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Namespace, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $4.SkippedTokens) + $$ = &ast.StmtNamespace{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $4), + }, + NsTkn: $1, + OpenCurlyBracket: $2, + Stmts: $3, + CloseCurlyBracket: $4, + } } | T_USE mixed_group_use_declaration ';' { @@ -1222,10 +1228,12 @@ catch_name_list: } | catch_name_list '|' name { + switch n := lastNode($1).(type) { + case *ast.NameName: n.ListSeparatorTkn = $2 + case *ast.NameFullyQualified: n.ListSeparatorTkn = $2 + case *ast.NameRelative: n.ListSeparatorTkn = $2 + } $$ = append($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.SkippedTokens) } ; @@ -2251,10 +2259,12 @@ name_list: } | name_list ',' name { + switch n := lastNode($1).(type) { + case *ast.NameName: n.ListSeparatorTkn = $2 + case *ast.NameFullyQualified: n.ListSeparatorTkn = $2 + case *ast.NameRelative: n.ListSeparatorTkn = $2 + } $$ = append($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.SkippedTokens) } ; diff --git a/internal/php7/php7_test.go b/internal/php7/php7_test.go index 00d02cc..d717743 100644 --- a/internal/php7/php7_test.go +++ b/internal/php7/php7_test.go @@ -6962,7 +6962,7 @@ func TestPhp7(t *testing.T) { EndPos: 2525, }, }, - NamespaceName: &ast.NameName{ + Name: &ast.NameName{ Node: ast.Node{ Position: &position.Position{ StartLine: 115, @@ -6995,7 +6995,7 @@ func TestPhp7(t *testing.T) { EndPos: 2542, }, }, - NamespaceName: &ast.NameName{ + Name: &ast.NameName{ Node: ast.Node{ Position: &position.Position{ StartLine: 116, @@ -17695,7 +17695,7 @@ func TestPhp7(t *testing.T) { Position: &position.Position{ StartLine: 318, EndLine: 318, - StartPos: 5212, + StartPos: 5211, EndPos: 5215, }, }, diff --git a/pkg/ast/node.go b/pkg/ast/node.go index d7dd01d..d64da63 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -603,8 +603,12 @@ func (n *StmtLabel) Accept(v NodeVisitor) { // StmtNamespace node type StmtNamespace struct { Node - NamespaceName Vertex - Stmts []Vertex + NsTkn *token.Token + Name Vertex + OpenCurlyBracket *token.Token + Stmts []Vertex + CloseCurlyBracket *token.Token + SemiColonTkn *token.Token } func (n *StmtNamespace) Accept(v NodeVisitor) { @@ -1840,7 +1844,8 @@ func (n *ExprBinarySpaceship) Accept(v NodeVisitor) { type NameName struct { Node - Parts []Vertex + Parts []Vertex + ListSeparatorTkn *token.Token } func (n *NameName) Accept(v NodeVisitor) { @@ -1849,7 +1854,9 @@ func (n *NameName) Accept(v NodeVisitor) { type NameFullyQualified struct { Node - Parts []Vertex + NsSeparatorTkn *token.Token + Parts []Vertex + ListSeparatorTkn *token.Token } func (n *NameFullyQualified) Accept(v NodeVisitor) { @@ -1858,7 +1865,10 @@ func (n *NameFullyQualified) Accept(v NodeVisitor) { type NameRelative struct { Node - Parts []Vertex + NsTkn *token.Token + NsSeparatorTkn *token.Token + Parts []Vertex + ListSeparatorTkn *token.Token } func (n *NameRelative) Accept(v NodeVisitor) { @@ -1867,7 +1877,9 @@ func (n *NameRelative) Accept(v NodeVisitor) { type NameNamePart struct { Node - Value []byte + NsSeparatorTkn *token.Token + StringTkn *token.Token + Value []byte } func (n *NameNamePart) Accept(v NodeVisitor) { diff --git a/pkg/ast/traverser/dfs.go b/pkg/ast/traverser/dfs.go index 20eecf3..7e41a44 100644 --- a/pkg/ast/traverser/dfs.go +++ b/pkg/ast/traverser/dfs.go @@ -845,10 +845,10 @@ func (t *DFS) Traverse(n ast.Vertex) { if !t.visitor.EnterNode(nn) { return } - if nn.NamespaceName != nil { - t.visitor.Enter("NamespaceName", true) - t.Traverse(nn.NamespaceName) - t.visitor.Leave("NamespaceName", true) + if nn.Name != nil { + t.visitor.Enter("Name", true) + t.Traverse(nn.Name) + t.visitor.Leave("Name", true) } if nn.Stmts != nil { t.visitor.Enter("Stmts", false) diff --git a/pkg/ast/visitor/filter_tokens.go b/pkg/ast/visitor/filter_tokens.go index 7101b86..adba189 100644 --- a/pkg/ast/visitor/filter_tokens.go +++ b/pkg/ast/visitor/filter_tokens.go @@ -33,3 +33,30 @@ func (v *FilterTokens) StmtUseDeclaration(n *ast.StmtUseDeclaration) { n.AsTkn = nil n.CommaTkn = nil } + +func (v *FilterTokens) NameNamePart(n *ast.NameNamePart) { + n.NsSeparatorTkn = nil + n.StringTkn = nil +} + +func (v *FilterTokens) NameName(n *ast.NameName) { + n.ListSeparatorTkn = nil +} + +func (v *FilterTokens) NameFullyQualified(n *ast.NameFullyQualified) { + n.NsSeparatorTkn = nil + n.ListSeparatorTkn = nil +} + +func (v *FilterTokens) NameRelative(n *ast.NameRelative) { + n.NsTkn = nil + n.NsSeparatorTkn = nil + n.ListSeparatorTkn = nil +} + +func (v *FilterTokens) StmtNamespace(n *ast.StmtNamespace) { + n.NsTkn = nil + n.OpenCurlyBracket = nil + n.CloseCurlyBracket = nil + n.SemiColonTkn = nil +} diff --git a/pkg/ast/visitor/namespace_resolver.go b/pkg/ast/visitor/namespace_resolver.go index 34c92c7..fb5659d 100644 --- a/pkg/ast/visitor/namespace_resolver.go +++ b/pkg/ast/visitor/namespace_resolver.go @@ -37,10 +37,10 @@ func (nsr *NamespaceResolver) EnterNode(n ast.Vertex) bool { } func (nsr *NamespaceResolver) StmtNamespace(n *ast.StmtNamespace) { - if n.NamespaceName == nil { + if n.Name == nil { nsr.Namespace = NewNamespace("") } else { - NSParts := n.NamespaceName.(*ast.NameName).Parts + NSParts := n.Name.(*ast.NameName).Parts nsr.Namespace = NewNamespace(concatNameParts(NSParts)) } } diff --git a/pkg/ast/visitor/namespace_resolver_test.go b/pkg/ast/visitor/namespace_resolver_test.go index 34a31f7..5b01ecc 100644 --- a/pkg/ast/visitor/namespace_resolver_test.go +++ b/pkg/ast/visitor/namespace_resolver_test.go @@ -605,7 +605,7 @@ func TestResolveConstantsName(t *testing.T) { stxTree := &ast.StmtStmtList{ Stmts: []ast.Vertex{ &ast.StmtNamespace{ - NamespaceName: nameAB, + Name: nameAB, }, &ast.StmtConstList{ Consts: []ast.Vertex{ @@ -649,7 +649,7 @@ func TestResolveNamespaces(t *testing.T) { stxTree := &ast.StmtStmtList{ Stmts: []ast.Vertex{ &ast.StmtNamespace{ - NamespaceName: namespaceAB, + Name: namespaceAB, }, &ast.StmtConstList{ Consts: []ast.Vertex{ @@ -666,7 +666,7 @@ func TestResolveNamespaces(t *testing.T) { Stmts: []ast.Vertex{}, }, &ast.StmtNamespace{ - NamespaceName: namespaceCD, + Name: namespaceCD, Stmts: []ast.Vertex{ &ast.StmtUse{ UseDeclarations: []ast.Vertex{ @@ -749,7 +749,7 @@ func TestDoNotResolveReservedConstants(t *testing.T) { stxTree := &ast.StmtStmtList{ Stmts: []ast.Vertex{ &ast.StmtNamespace{ - NamespaceName: namespaceName, + Name: namespaceName, }, &ast.StmtExpression{ Expr: &ast.ExprConstFetch{ @@ -877,7 +877,7 @@ func TestDoNotResolveReservedNames(t *testing.T) { stxTree := &ast.StmtStmtList{ Stmts: []ast.Vertex{ &ast.StmtNamespace{ - NamespaceName: &ast.NameName{ + Name: &ast.NameName{ Parts: []ast.Vertex{ &ast.NameNamePart{Value: []byte("Foo")}, }, @@ -955,7 +955,7 @@ func TestDoNotResolveReservedSpecialNames(t *testing.T) { stxTree := &ast.StmtStmtList{ Stmts: []ast.Vertex{ &ast.StmtNamespace{ - NamespaceName: &ast.NameName{ + Name: &ast.NameName{ Parts: []ast.Vertex{ &ast.NameNamePart{Value: []byte("Foo")}, }, @@ -1007,7 +1007,7 @@ func TestResolvePropertyTypeName(t *testing.T) { stmts := &ast.StmtStmtList{ Stmts: []ast.Vertex{ &ast.StmtNamespace{ - NamespaceName: &ast.NameName{ + Name: &ast.NameName{ Parts: []ast.Vertex{ &ast.NameNamePart{Value: []byte("Foo")}, }, diff --git a/pkg/printer/pretty_printer.go b/pkg/printer/pretty_printer.go index 1aab5d1..fca19fd 100644 --- a/pkg/printer/pretty_printer.go +++ b/pkg/printer/pretty_printer.go @@ -1931,9 +1931,9 @@ func (p *PrettyPrinter) printStmtNamespace(n ast.Vertex) { io.WriteString(p.w, "namespace") - if nn.NamespaceName != nil { + if nn.Name != nil { io.WriteString(p.w, " ") - p.Print(nn.NamespaceName) + p.Print(nn.Name) } if nn.Stmts != nil { diff --git a/pkg/printer/pretty_printer_test.go b/pkg/printer/pretty_printer_test.go index 199bc2f..c457cb8 100644 --- a/pkg/printer/pretty_printer_test.go +++ b/pkg/printer/pretty_printer_test.go @@ -22,7 +22,7 @@ abstract class Bar extends Baz rootNode := &ast.Root{ Stmts: []ast.Vertex{ &ast.StmtNamespace{ - NamespaceName: &ast.NameName{ + Name: &ast.NameName{ Parts: []ast.Vertex{ &ast.NameNamePart{Value: []byte("Foo")}, }, @@ -3454,7 +3454,7 @@ func TestPrintNamespace(t *testing.T) { p := printer.NewPrettyPrinter(o, " ") p.Print(&ast.StmtNamespace{ - NamespaceName: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}}, + Name: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}}, }) expected := `namespace Foo;` @@ -3472,7 +3472,7 @@ func TestPrintNamespaceWithStmts(t *testing.T) { p.Print(&ast.StmtStmtList{ Stmts: []ast.Vertex{ &ast.StmtNamespace{ - NamespaceName: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}}, + Name: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}}, Stmts: []ast.Vertex{ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}}}, }, diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index 8d73f1b..0e8a0dd 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -55,6 +55,16 @@ func (p *Printer) joinPrint(glue string, nn []ast.Vertex) { } } +func (p *Printer) joinPrintRefactored(glue string, nn []ast.Vertex) { + for k, n := range nn { + if k > 0 { + p.bufStart = glue + } + + p.Print(n) + } +} + func (p *Printer) printNodes(nn []ast.Vertex) { for _, n := range nn { p.Print(n) @@ -558,50 +568,36 @@ func (p *Printer) printNodeArgument(n ast.Vertex) { // name -func (p *Printer) printNameNamePart(n ast.Vertex) { - nn := n.(*ast.NameNamePart) - p.printFreeFloatingOrDefault(nn, token.Start, p.bufStart) - p.bufStart = "" - - io.WriteString(p.w, string(nn.Value)) - - p.printFreeFloating(nn, token.End) +func (p *Printer) printNameNamePart(n *ast.NameNamePart) { + p.printToken(n.NsSeparatorTkn, "") + p.printToken(n.StringTkn, string(n.Value)) } -func (p *Printer) printNameName(n ast.Vertex) { - nn := n.(*ast.NameName) - p.printFreeFloating(nn, token.Start) +func (p *Printer) printNameName(n *ast.NameName) { + p.printFreeFloating(n, token.Start) - p.joinPrint("\\", nn.Parts) + p.joinPrintRefactored("\\", n.Parts) - p.printFreeFloating(nn, token.End) + p.printToken(n.ListSeparatorTkn, "") } -func (p *Printer) printNameFullyQualified(n ast.Vertex) { - nn := n.(*ast.NameFullyQualified) - p.printFreeFloatingOrDefault(nn, token.Start, p.bufStart) - p.bufStart = "" +func (p *Printer) printNameFullyQualified(n *ast.NameFullyQualified) { + p.printFreeFloating(n, token.Start) + p.printToken(n.NsSeparatorTkn, "\\") - io.WriteString(p.w, "\\") - p.joinPrint("\\", nn.Parts) + p.joinPrintRefactored("\\", n.Parts) - p.printFreeFloating(nn, token.End) + p.printToken(n.ListSeparatorTkn, "") } -func (p *Printer) printNameRelative(n ast.Vertex) { - nn := n.(*ast.NameRelative) - p.printFreeFloatingOrDefault(nn, token.Start, p.bufStart) - p.bufStart = "" +func (p *Printer) printNameRelative(n *ast.NameRelative) { + p.printFreeFloating(n, token.Start) + p.printToken(n.NsTkn, "namespace") + p.printToken(n.NsSeparatorTkn, "\\") - io.WriteString(p.w, "namespace") - p.printFreeFloating(nn, token.Namespace) + p.joinPrintRefactored("\\", n.Parts) - for _, part := range nn.Parts { - io.WriteString(p.w, "\\") - p.Print(part) - } - - p.printFreeFloating(nn, token.End) + p.printToken(n.ListSeparatorTkn, "") } // scalar @@ -2299,7 +2295,9 @@ func (p *Printer) printStmtCatch(n ast.Vertex) { io.WriteString(p.w, "catch") p.printFreeFloating(nn, token.Catch) io.WriteString(p.w, "(") - p.joinPrint("|", nn.Types) + + p.joinPrintRefactored("|", nn.Types) + p.Print(nn.Var) p.printFreeFloating(nn, token.Var) io.WriteString(p.w, ")") @@ -2409,10 +2407,9 @@ func (p *Printer) printStmtClass(n ast.Vertex) { io.WriteString(p.w, " ") } io.WriteString(p.w, "implements") - if nn.Implements.InterfaceNames[0].GetNode().Tokens.IsEmpty() { - io.WriteString(p.w, " ") - } - p.joinPrint(",", nn.Implements.InterfaceNames) + p.bufStart = " " + p.joinPrintRefactored(",", nn.Implements.InterfaceNames) + } p.printFreeFloating(nn, token.Name) @@ -2896,10 +2893,8 @@ func (p *Printer) printStmtInterface(n ast.Vertex) { io.WriteString(p.w, " ") } io.WriteString(p.w, "extends") - if nn.Extends.InterfaceNames[0].GetNode().Tokens.IsEmpty() { - io.WriteString(p.w, " ") - } - p.joinPrint(",", nn.Extends.InterfaceNames) + p.bufStart = " " + p.joinPrintRefactored(",", nn.Extends.InterfaceNames) } p.printFreeFloating(nn, token.Name) @@ -2923,32 +2918,28 @@ func (p *Printer) printStmtLabel(n ast.Vertex) { p.printFreeFloating(nn, token.End) } -func (p *Printer) printStmtNamespace(n ast.Vertex) { - nn := n.(*ast.StmtNamespace) - p.printFreeFloating(nn, token.Start) - io.WriteString(p.w, "namespace") +func (p *Printer) printStmtNamespace(n *ast.StmtNamespace) { + p.printToken(n.NsTkn, "namespace") - if nn.NamespaceName != nil { - if nn.NamespaceName.GetNode().Tokens.IsEmpty() { - io.WriteString(p.w, " ") - } - p.Print(nn.NamespaceName) + if n.Name != nil { + p.bufStart = " " + p.Print(n.Name) } - if nn.Stmts != nil { - p.printFreeFloating(nn, token.Namespace) - io.WriteString(p.w, "{") - p.printNodes(nn.Stmts) - p.printFreeFloating(nn, token.Stmts) - io.WriteString(p.w, "}") - } else { - p.printFreeFloating(nn, token.SemiColon) - if nn.GetNode().Tokens.IsEmpty() { - io.WriteString(p.w, ";") - } + if n.Stmts != nil { + p.printToken(n.OpenCurlyBracket, "{") + p.printNodes(n.Stmts) + p.printToken(n.CloseCurlyBracket, "}") + return } - p.printFreeFloating(nn, token.End) + if n.OpenCurlyBracket != nil { + p.printToken(n.OpenCurlyBracket, "{") + p.printToken(n.CloseCurlyBracket, "}") + return + } + + p.printToken(n.SemiColonTkn, ";") } func (p *Printer) printStmtNop(n ast.Vertex) { @@ -3202,10 +3193,8 @@ func (p *Printer) printStmtTraitUse(n ast.Vertex) { p.printFreeFloating(nn, token.Start) io.WriteString(p.w, "use") - if nn.Traits[0].GetNode().Tokens.IsEmpty() { - io.WriteString(p.w, " ") - } - p.joinPrint(",", nn.Traits) + p.bufStart = " " + p.joinPrintRefactored(",", nn.Traits) p.Print(nn.TraitAdaptationList) @@ -3276,11 +3265,13 @@ func (p *Printer) printStmtUnset(n ast.Vertex) { func (p *Printer) printStmtUse(n *ast.StmtUse) { p.printToken(n.UseTkn, "use") - p.bufStart = " " - p.Print(n.Type) + if n.Type != nil { + p.bufStart = " " + p.Print(n.Type) + } p.bufStart = " " - p.joinPrint(",", n.UseDeclarations) + p.joinPrintRefactored(",", n.UseDeclarations) p.printToken(n.SemiColonTkn, ";") } @@ -3298,16 +3289,7 @@ func (p *Printer) printStmtGroupUse(n *ast.StmtGroupUse) { p.printToken(n.NsSeparatorTkn, "\\") p.printToken(n.OpenCurlyBracketTkn, "{") - for k, v := range n.UseDeclarations { - p.Print(v) - var def string - if k != len(n.UseDeclarations)-1 { - def = "," - } - if decl, ok := v.(*ast.StmtUseDeclaration); ok { - p.printToken(decl.CommaTkn, def) - } - } + p.joinPrintRefactored(",", n.UseDeclarations) p.printToken(n.CloseCurlyBracketTkn, "}") p.printToken(n.SemiColonTkn, ";") @@ -3325,6 +3307,7 @@ func (p *Printer) printStmtUseDeclaration(n *ast.StmtUseDeclaration) { p.Print(n.Use) if n.Alias == nil { + p.printToken(n.CommaTkn, "") return } @@ -3333,6 +3316,8 @@ func (p *Printer) printStmtUseDeclaration(n *ast.StmtUseDeclaration) { p.bufStart = " " p.Print(n.Alias) + + p.printToken(n.CommaTkn, "") } func (p *Printer) printStmtWhile(n ast.Vertex) { diff --git a/pkg/printer/printer_parsed_php5_test.go b/pkg/printer/printer_parsed_php5_test.go index 60cdc39..17cef65 100644 --- a/pkg/printer/printer_parsed_php5_test.go +++ b/pkg/printer/printer_parsed_php5_test.go @@ -45,8 +45,8 @@ func TestParseAndPrintPhp5Root(t *testing.T) { } func TestParseAndPrintPhp5Identifier(t *testing.T) { - - src := `