diff --git a/internal/php5/parser_test.go b/internal/php5/parser_test.go index 6d72de0..a33aa36 100644 --- a/internal/php5/parser_test.go +++ b/internal/php5/parser_test.go @@ -5819,7 +5819,7 @@ func TestStmtEcho_Parenthesis(t *testing.T) { } func TestStmtExpression(t *testing.T) { - src := ` 0 { - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.If, yyDollar[2].node.GetNode().Tokens[token.OpenParenthesisToken][:len(yyDollar[2].node.GetNode().Tokens[token.OpenParenthesisToken])-1]) - delete(yyDollar[2].node.GetNode().Tokens, token.OpenParenthesisToken) - } - if len(yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken][:len(yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken])-1]) - delete(yyDollar[2].node.GetNode().Tokens, token.CloseParenthesisToken) - } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 49: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php5/php5.y:932 + // line internal/php5/php5.y:926 { - exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[4].list} stmtsBrackets := &ast.ParserBrackets{ast.Node{}, stmts} - yyVAL.node = &ast.StmtAltIf{ast.Node{}, exprBrackets, stmtsBrackets, yyDollar[5].list, yyDollar[6].node} + yyVAL.node = &ast.StmtAltIf{ast.Node{}, yyDollar[2].node, stmtsBrackets, yyDollar[5].list, yyDollar[6].node} // save position - exprBrackets.GetNode().Position = position.NewNodePosition(yyDollar[2].node) stmts.GetNode().Position = position.NewNodeListPosition(yyDollar[4].list) stmtsBrackets.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[3].token, yyDollar[4].list) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[8].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens) - if len(yyDollar[2].node.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[2].node.GetNode().Tokens[token.OpenParenthesisToken]) - delete(yyDollar[2].node.GetNode().Tokens, token.OpenParenthesisToken) - } - if len(yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken]) - delete(yyDollar[2].node.GetNode().Tokens, token.CloseParenthesisToken) - } yylex.(*Parser).setFreeFloatingTokens(stmtsBrackets, token.Start, yyDollar[3].token.Tokens) if yyDollar[6].node != nil { yylex.(*Parser).setFreeFloating(yyDollar[6].node.(*ast.StmtAltElse).Stmt, token.End, append(yyDollar[7].token.Tokens, yyDollar[8].token.Tokens...)) @@ -3062,7 +3044,7 @@ yydefault: } case 50: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:965 + // line internal/php5/php5.y:951 { switch n := yyDollar[3].node.(type) { case *ast.StmtWhile: @@ -3078,20 +3060,12 @@ yydefault: // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens) - if len(yyDollar[2].node.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.While, yyDollar[2].node.GetNode().Tokens[token.OpenParenthesisToken][:len(yyDollar[2].node.GetNode().Tokens[token.OpenParenthesisToken])-1]) - delete(yyDollar[2].node.GetNode().Tokens, token.OpenParenthesisToken) - } - if len(yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken][:len(yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken])-1]) - delete(yyDollar[2].node.GetNode().Tokens, token.CloseParenthesisToken) - } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 51: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:990 + // line internal/php5/php5.y:970 { yyVAL.node = &ast.StmtDo{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -3101,22 +3075,14 @@ yydefault: // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[3].token.Tokens) - if len(yyDollar[4].node.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.While, yyDollar[4].node.GetNode().Tokens[token.OpenParenthesisToken][:len(yyDollar[4].node.GetNode().Tokens[token.OpenParenthesisToken])-1]) - delete(yyDollar[4].node.GetNode().Tokens, token.OpenParenthesisToken) - } - if len(yyDollar[4].node.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].node.GetNode().Tokens[token.CloseParenthesisToken][:len(yyDollar[4].node.GetNode().Tokens[token.CloseParenthesisToken])-1]) - delete(yyDollar[4].node.GetNode().Tokens, token.CloseParenthesisToken) - } - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Cond, yyDollar[5].token.Tokens) + yylex.(*Parser).setFreeFloating(yyDollar[4].node, token.End, yyDollar[5].token.Tokens) yylex.(*Parser).setToken(yyVAL.node, token.SemiColon, yyDollar[5].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 52: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php5/php5.y:1011 + // line internal/php5/php5.y:985 { switch n := yyDollar[9].node.(type) { case *ast.StmtFor: @@ -3145,7 +3111,7 @@ yydefault: } case 53: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1038 + // line internal/php5/php5.y:1012 { switch n := yyDollar[3].node.(type) { case *ast.StmtSwitch: @@ -3163,20 +3129,12 @@ yydefault: // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens) - if len(yyDollar[2].node.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Switch, yyDollar[2].node.GetNode().Tokens[token.OpenParenthesisToken][:len(yyDollar[2].node.GetNode().Tokens[token.OpenParenthesisToken])-1]) - delete(yyDollar[2].node.GetNode().Tokens, token.OpenParenthesisToken) - } - if len(yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken][:len(yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken])-1]) - delete(yyDollar[2].node.GetNode().Tokens, token.CloseParenthesisToken) - } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 54: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1065 + // line internal/php5/php5.y:1033 { yyVAL.node = &ast.StmtBreak{ast.Node{}, nil} @@ -3192,7 +3150,7 @@ yydefault: } case 55: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1079 + // line internal/php5/php5.y:1047 { yyVAL.node = &ast.StmtBreak{ast.Node{}, yyDollar[2].node} @@ -3208,7 +3166,7 @@ yydefault: } case 56: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1093 + // line internal/php5/php5.y:1061 { yyVAL.node = &ast.StmtContinue{ast.Node{}, nil} @@ -3224,7 +3182,7 @@ yydefault: } case 57: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1107 + // line internal/php5/php5.y:1075 { yyVAL.node = &ast.StmtContinue{ast.Node{}, yyDollar[2].node} @@ -3240,7 +3198,7 @@ yydefault: } case 58: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1121 + // line internal/php5/php5.y:1089 { yyVAL.node = &ast.StmtReturn{ast.Node{}, nil} @@ -3256,7 +3214,7 @@ yydefault: } case 59: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1135 + // line internal/php5/php5.y:1103 { yyVAL.node = &ast.StmtReturn{ast.Node{}, yyDollar[2].node} @@ -3272,7 +3230,7 @@ yydefault: } case 60: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1149 + // line internal/php5/php5.y:1117 { yyVAL.node = &ast.StmtReturn{ast.Node{}, yyDollar[2].node} @@ -3288,7 +3246,7 @@ yydefault: } case 61: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1163 + // line internal/php5/php5.y:1131 { yyVAL.node = &ast.StmtExpression{ast.Node{}, yyDollar[1].node} @@ -3304,7 +3262,7 @@ yydefault: } case 62: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1177 + // line internal/php5/php5.y:1145 { yyVAL.node = &ast.StmtGlobal{ast.Node{}, yyDollar[2].list} @@ -3320,7 +3278,7 @@ yydefault: } case 63: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1191 + // line internal/php5/php5.y:1159 { yyVAL.node = &ast.StmtStatic{ast.Node{}, yyDollar[2].list} @@ -3336,7 +3294,7 @@ yydefault: } case 64: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1205 + // line internal/php5/php5.y:1173 { yyVAL.node = &ast.StmtEcho{ast.Node{}, yyDollar[2].list} @@ -3353,7 +3311,7 @@ yydefault: } case 65: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1220 + // line internal/php5/php5.y:1188 { yyVAL.node = &ast.StmtInlineHtml{ast.Node{}, yyDollar[1].token.Value} @@ -3367,7 +3325,7 @@ yydefault: } case 66: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1232 + // line internal/php5/php5.y:1200 { yyVAL.node = &ast.StmtExpression{ast.Node{}, yyDollar[1].node} @@ -3383,7 +3341,7 @@ yydefault: } case 67: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:1246 + // line internal/php5/php5.y:1214 { yyVAL.node = &ast.StmtUnset{ast.Node{}, yyDollar[3].list} @@ -3401,7 +3359,7 @@ yydefault: } case 68: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php5/php5.y:1262 + // line internal/php5/php5.y:1230 { if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { @@ -3444,7 +3402,7 @@ yydefault: } case 69: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php5/php5.y:1302 + // line internal/php5/php5.y:1270 { if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { @@ -3487,7 +3445,7 @@ yydefault: } case 70: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:1342 + // line internal/php5/php5.y:1310 { yyVAL.node = yyDollar[5].node yyVAL.node.(*ast.StmtDeclare).Consts = yyDollar[3].list @@ -3504,7 +3462,7 @@ yydefault: } case 71: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1357 + // line internal/php5/php5.y:1325 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -3519,7 +3477,7 @@ yydefault: } case 72: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:1370 + // line internal/php5/php5.y:1338 { yyVAL.node = &ast.StmtTry{ast.Node{}, yyDollar[3].list, yyDollar[5].list, yyDollar[6].node} @@ -3539,7 +3497,7 @@ yydefault: } case 73: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1388 + // line internal/php5/php5.y:1356 { yyVAL.node = &ast.StmtThrow{ast.Node{}, yyDollar[2].node} @@ -3555,7 +3513,7 @@ yydefault: } case 74: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1402 + // line internal/php5/php5.y:1370 { label := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.StmtGoto{ast.Node{}, label} @@ -3574,7 +3532,7 @@ yydefault: } case 75: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1422 + // line internal/php5/php5.y:1390 { yyVAL.list = []ast.Vertex{} @@ -3582,7 +3540,7 @@ yydefault: } case 76: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php5/php5.y:1428 + // line internal/php5/php5.y:1396 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -3606,7 +3564,7 @@ yydefault: } case 77: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1453 + // line internal/php5/php5.y:1421 { yyVAL.node = nil @@ -3614,7 +3572,7 @@ yydefault: } case 78: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1459 + // line internal/php5/php5.y:1427 { yyVAL.node = &ast.StmtFinally{ast.Node{}, yyDollar[3].list} @@ -3630,7 +3588,7 @@ yydefault: } case 79: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1476 + // line internal/php5/php5.y:1444 { yyVAL.list = yyDollar[1].list @@ -3638,7 +3596,7 @@ yydefault: } case 80: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1482 + // line internal/php5/php5.y:1450 { yyVAL.list = []ast.Vertex{} @@ -3646,7 +3604,7 @@ yydefault: } case 81: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1491 + // line internal/php5/php5.y:1459 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -3654,7 +3612,7 @@ yydefault: } case 82: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1497 + // line internal/php5/php5.y:1465 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3662,7 +3620,7 @@ yydefault: } case 83: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php5/php5.y:1506 + // line internal/php5/php5.y:1474 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -3685,7 +3643,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1530 + // line internal/php5/php5.y:1498 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -3693,7 +3651,7 @@ yydefault: } case 85: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1536 + // line internal/php5/php5.y:1504 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3704,7 +3662,7 @@ yydefault: } case 86: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1548 + // line internal/php5/php5.y:1516 { yyVAL.node = yyDollar[1].node @@ -3712,7 +3670,7 @@ yydefault: } case 87: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1557 + // line internal/php5/php5.y:1525 { yyVAL.node = yyDollar[1].node @@ -3720,7 +3678,7 @@ yydefault: } case 88: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1566 + // line internal/php5/php5.y:1534 { yyVAL.node = yyDollar[1].node @@ -3728,31 +3686,31 @@ yydefault: } case 89: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1575 + // line internal/php5/php5.y:1543 { yyVAL.token = nil } case 90: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1579 + // line internal/php5/php5.y:1547 { yyVAL.token = yyDollar[1].token } case 91: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1586 + // line internal/php5/php5.y:1554 { yyVAL.token = nil } case 92: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1590 + // line internal/php5/php5.y:1558 { yyVAL.token = yyDollar[1].token } case 93: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php5/php5.y:1597 + // line internal/php5/php5.y:1565 { 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} @@ -3778,7 +3736,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php5/php5.y:1624 + // line internal/php5/php5.y:1592 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} switch n := yyDollar[1].node.(type) { @@ -3808,7 +3766,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:1652 + // line internal/php5/php5.y:1620 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.StmtInterface{ast.Node{}, name, yyDollar[3].InterfaceExtends, yyDollar[5].list} @@ -3827,7 +3785,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1673 + // line internal/php5/php5.y:1641 { yyVAL.node = &ast.StmtClass{ast.Node{}, nil, nil, nil, nil, nil, nil} @@ -3841,7 +3799,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1685 + // line internal/php5/php5.y:1653 { classModifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil} @@ -3858,7 +3816,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1700 + // line internal/php5/php5.y:1668 { yyVAL.node = &ast.StmtTrait{ast.Node{}, nil, nil} @@ -3872,7 +3830,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1712 + // line internal/php5/php5.y:1680 { classModifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil} @@ -3889,7 +3847,7 @@ yydefault: } case 100: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1730 + // line internal/php5/php5.y:1698 { yyVAL.ClassExtends = nil @@ -3897,7 +3855,7 @@ yydefault: } case 101: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1736 + // line internal/php5/php5.y:1704 { yyVAL.ClassExtends = &ast.StmtClassExtends{ast.Node{}, yyDollar[2].node} @@ -3911,13 +3869,13 @@ yydefault: } case 102: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1751 + // line internal/php5/php5.y:1719 { yyVAL.token = yyDollar[1].token } case 103: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1758 + // line internal/php5/php5.y:1726 { yyVAL.InterfaceExtends = nil @@ -3925,7 +3883,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1764 + // line internal/php5/php5.y:1732 { yyVAL.InterfaceExtends = &ast.StmtInterfaceExtends{ast.Node{}, yyDollar[2].list} @@ -3939,7 +3897,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1779 + // line internal/php5/php5.y:1747 { yyVAL.ClassImplements = nil @@ -3947,7 +3905,7 @@ yydefault: } case 106: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1785 + // line internal/php5/php5.y:1753 { yyVAL.ClassImplements = &ast.StmtClassImplements{ast.Node{}, yyDollar[2].list} @@ -3961,7 +3919,7 @@ yydefault: } case 107: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1800 + // line internal/php5/php5.y:1768 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -3969,7 +3927,7 @@ yydefault: } case 108: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1806 + // line internal/php5/php5.y:1774 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3980,7 +3938,7 @@ yydefault: } case 109: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:1818 + // line internal/php5/php5.y:1786 { yyVAL.node = nil @@ -3988,7 +3946,7 @@ yydefault: } case 110: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1824 + // line internal/php5/php5.y:1792 { yyVAL.node = yyDollar[2].node @@ -3999,7 +3957,7 @@ yydefault: } case 111: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1836 + // line internal/php5/php5.y:1804 { yyVAL.node = yyDollar[1].node @@ -4007,7 +3965,7 @@ yydefault: } case 112: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:1842 + // line internal/php5/php5.y:1810 { yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node} @@ -4021,7 +3979,7 @@ yydefault: } case 113: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1854 + // line internal/php5/php5.y:1822 { yyVAL.node = &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -4037,7 +3995,7 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1871 + // line internal/php5/php5.y:1839 { yyVAL.node = &ast.StmtFor{ast.Node{}, nil, nil, nil, yyDollar[1].node} @@ -4048,7 +4006,7 @@ yydefault: } case 115: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1880 + // line internal/php5/php5.y:1848 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltFor{ast.Node{}, nil, nil, nil, stmtList} @@ -4067,7 +4025,7 @@ yydefault: } case 116: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1900 + // line internal/php5/php5.y:1868 { yyVAL.node = &ast.StmtForeach{ast.Node{}, nil, nil, nil, yyDollar[1].node} @@ -4078,7 +4036,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1909 + // line internal/php5/php5.y:1877 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltForeach{ast.Node{}, nil, nil, nil, stmtList} @@ -4097,7 +4055,7 @@ yydefault: } case 118: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:1930 + // line internal/php5/php5.y:1898 { yyVAL.node = &ast.StmtDeclare{ast.Node{}, false, nil, yyDollar[1].node} @@ -4108,7 +4066,7 @@ yydefault: } case 119: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:1939 + // line internal/php5/php5.y:1907 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtDeclare{ast.Node{}, true, nil, stmtList} @@ -4127,7 +4085,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1960 + // line internal/php5/php5.y:1928 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[3].node} @@ -4145,7 +4103,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:1976 + // line internal/php5/php5.y:1944 { name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[5].node} @@ -4164,7 +4122,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:1997 + // line internal/php5/php5.y:1965 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList} @@ -4181,7 +4139,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2012 + // line internal/php5/php5.y:1980 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList} @@ -4199,7 +4157,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2028 + // line internal/php5/php5.y:1996 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltSwitch{ast.Node{}, nil, caseList} @@ -4218,7 +4176,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:2045 + // line internal/php5/php5.y:2013 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list} @@ -4239,7 +4197,7 @@ yydefault: } case 126: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2068 + // line internal/php5/php5.y:2036 { yyVAL.list = []ast.Vertex{} @@ -4247,7 +4205,7 @@ yydefault: } case 127: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:2074 + // line internal/php5/php5.y:2042 { _case := &ast.StmtCase{ast.Node{}, yyDollar[3].node, yyDollar[5].list} yyVAL.list = append(yyDollar[1].list, _case) @@ -4264,7 +4222,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2089 + // line internal/php5/php5.y:2057 { _default := &ast.StmtDefault{ast.Node{}, yyDollar[4].list} yyVAL.list = append(yyDollar[1].list, _default) @@ -4281,19 +4239,19 @@ yydefault: } case 129: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2108 + // line internal/php5/php5.y:2076 { yyVAL.token = yyDollar[1].token } case 130: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2112 + // line internal/php5/php5.y:2080 { yyVAL.token = yyDollar[1].token } case 131: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2120 + // line internal/php5/php5.y:2088 { yyVAL.node = &ast.StmtWhile{ast.Node{}, nil, yyDollar[1].node} @@ -4304,7 +4262,7 @@ yydefault: } case 132: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2129 + // line internal/php5/php5.y:2097 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltWhile{ast.Node{}, nil, stmtList} @@ -4323,7 +4281,7 @@ yydefault: } case 133: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2151 + // line internal/php5/php5.y:2119 { yyVAL.list = nil @@ -4331,7 +4289,7 @@ yydefault: } case 134: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2157 + // line internal/php5/php5.y:2125 { _elseIf := &ast.StmtElseIf{ast.Node{}, yyDollar[3].node, yyDollar[4].node} yyVAL.list = append(yyDollar[1].list, _elseIf) @@ -4341,20 +4299,12 @@ yydefault: // save comments yylex.(*Parser).setFreeFloating(_elseIf, token.Start, yyDollar[2].token.Tokens) - if len(yyDollar[3].node.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(_elseIf, token.ElseIf, yyDollar[3].node.GetNode().Tokens[token.OpenParenthesisToken][:len(yyDollar[3].node.GetNode().Tokens[token.OpenParenthesisToken])-1]) - delete(yyDollar[3].node.GetNode().Tokens, token.OpenParenthesisToken) - } - if len(yyDollar[3].node.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(_elseIf, token.Expr, yyDollar[3].node.GetNode().Tokens[token.CloseParenthesisToken][:len(yyDollar[3].node.GetNode().Tokens[token.CloseParenthesisToken])-1]) - delete(yyDollar[3].node.GetNode().Tokens, token.CloseParenthesisToken) - } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 135: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2180 + // line internal/php5/php5.y:2142 { yyVAL.list = nil @@ -4362,37 +4312,27 @@ yydefault: } case 136: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:2186 + // line internal/php5/php5.y:2148 { - exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[5].list} stmtsBrackets := &ast.ParserBrackets{ast.Node{}, stmts} - _elseIf := &ast.StmtAltElseIf{ast.Node{}, exprBrackets, stmtsBrackets} + _elseIf := &ast.StmtAltElseIf{ast.Node{}, yyDollar[3].node, stmtsBrackets} yyVAL.list = append(yyDollar[1].list, _elseIf) // save position - exprBrackets.GetNode().Position = position.NewNodePosition(yyDollar[3].node) stmts.GetNode().Position = position.NewNodeListPosition(yyDollar[5].list) - exprBrackets.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[4].token, yyDollar[5].list) + stmtsBrackets.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[4].token, yyDollar[5].list) _elseIf.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list) // save comments yylex.(*Parser).setFreeFloating(_elseIf, token.Start, yyDollar[2].token.Tokens) - if len(yyDollar[3].node.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[3].node.GetNode().Tokens[token.OpenParenthesisToken]) - delete(yyDollar[3].node.GetNode().Tokens, token.OpenParenthesisToken) - } - if len(yyDollar[3].node.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, yyDollar[3].node.GetNode().Tokens[token.CloseParenthesisToken]) - delete(yyDollar[3].node.GetNode().Tokens, token.CloseParenthesisToken) - } yylex.(*Parser).setFreeFloatingTokens(stmtsBrackets, token.Start, yyDollar[4].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 137: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2216 + // line internal/php5/php5.y:2170 { yyVAL.node = nil @@ -4400,7 +4340,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2222 + // line internal/php5/php5.y:2176 { yyVAL.node = &ast.StmtElse{ast.Node{}, yyDollar[2].node} @@ -4414,7 +4354,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2238 + // line internal/php5/php5.y:2192 { yyVAL.node = nil @@ -4422,7 +4362,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2244 + // line internal/php5/php5.y:2198 { stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[3].list} stmtsBrackets := &ast.ParserBrackets{ast.Node{}, stmts} @@ -4441,7 +4381,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2265 + // line internal/php5/php5.y:2219 { yyVAL.list = yyDollar[1].list @@ -4449,7 +4389,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2271 + // line internal/php5/php5.y:2225 { yyVAL.list = nil @@ -4457,7 +4397,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2280 + // line internal/php5/php5.y:2234 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -4465,7 +4405,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2286 + // line internal/php5/php5.y:2240 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4476,7 +4416,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2298 + // line internal/php5/php5.y:2252 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) @@ -4514,7 +4454,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:2334 + // line internal/php5/php5.y:2288 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) @@ -4553,7 +4493,7 @@ yydefault: } case 147: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2375 + // line internal/php5/php5.y:2329 { yyVAL.node = nil @@ -4561,7 +4501,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2381 + // line internal/php5/php5.y:2335 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4575,7 +4515,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2393 + // line internal/php5/php5.y:2347 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4589,7 +4529,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2405 + // line internal/php5/php5.y:2359 { yyVAL.node = yyDollar[1].node @@ -4597,7 +4537,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2415 + // line internal/php5/php5.y:2369 { yyVAL.node = &ast.ArgumentList{ast.Node{}, nil} @@ -4612,7 +4552,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2428 + // line internal/php5/php5.y:2382 { yyVAL.node = &ast.ArgumentList{ast.Node{}, yyDollar[2].list} @@ -4627,7 +4567,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2441 + // line internal/php5/php5.y:2395 { arg := &ast.Argument{ast.Node{}, false, false, yyDollar[2].node} yyVAL.node = &ast.ArgumentList{ast.Node{}, []ast.Vertex{arg}} @@ -4644,7 +4584,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2460 + // line internal/php5/php5.y:2414 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -4652,7 +4592,7 @@ yydefault: } case 155: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2466 + // line internal/php5/php5.y:2420 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4663,7 +4603,7 @@ yydefault: } case 156: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2478 + // line internal/php5/php5.y:2432 { yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node} @@ -4677,7 +4617,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2490 + // line internal/php5/php5.y:2444 { yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node} @@ -4691,7 +4631,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2502 + // line internal/php5/php5.y:2456 { yyVAL.node = &ast.Argument{ast.Node{}, false, true, yyDollar[2].node} @@ -4705,7 +4645,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2514 + // line internal/php5/php5.y:2468 { yyVAL.node = &ast.Argument{ast.Node{}, true, false, yyDollar[2].node} @@ -4719,7 +4659,7 @@ yydefault: } case 160: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2529 + // line internal/php5/php5.y:2483 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4730,7 +4670,7 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2538 + // line internal/php5/php5.y:2492 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -4738,7 +4678,7 @@ yydefault: } case 162: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2548 + // line internal/php5/php5.y:2502 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -4754,7 +4694,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2562 + // line internal/php5/php5.y:2516 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -4768,7 +4708,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2574 + // line internal/php5/php5.y:2528 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -4784,7 +4724,7 @@ yydefault: } case 165: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2592 + // line internal/php5/php5.y:2546 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4804,7 +4744,7 @@ yydefault: } case 166: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:2610 + // line internal/php5/php5.y:2564 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4825,7 +4765,7 @@ yydefault: } case 167: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2629 + // line internal/php5/php5.y:2583 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4844,7 +4784,7 @@ yydefault: } case 168: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2646 + // line internal/php5/php5.y:2600 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4864,7 +4804,7 @@ yydefault: } case 169: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2668 + // line internal/php5/php5.y:2622 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4872,7 +4812,7 @@ yydefault: } case 170: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2674 + // line internal/php5/php5.y:2628 { yyVAL.list = []ast.Vertex{} @@ -4880,7 +4820,7 @@ yydefault: } case 171: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2684 + // line internal/php5/php5.y:2638 { yyVAL.node = &ast.StmtPropertyList{ast.Node{}, yyDollar[1].list, nil, yyDollar[2].list} @@ -4896,7 +4836,7 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2698 + // line internal/php5/php5.y:2652 { yyVAL.node = yyDollar[1].node @@ -4911,7 +4851,7 @@ yydefault: } case 173: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2711 + // line internal/php5/php5.y:2665 { yyVAL.node = yyDollar[1].node @@ -4919,7 +4859,7 @@ yydefault: } case 174: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php5/php5.y:2717 + // line internal/php5/php5.y:2671 { 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} @@ -4952,7 +4892,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2751 + // line internal/php5/php5.y:2705 { yyVAL.node = &ast.StmtTraitUse{ast.Node{}, yyDollar[2].list, yyDollar[3].node} @@ -4966,7 +4906,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2766 + // line internal/php5/php5.y:2720 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -4974,7 +4914,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2772 + // line internal/php5/php5.y:2726 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4985,7 +4925,7 @@ yydefault: } case 178: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2784 + // line internal/php5/php5.y:2738 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -4999,7 +4939,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2796 + // line internal/php5/php5.y:2750 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, yyDollar[2].list} @@ -5013,7 +4953,7 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2811 + // line internal/php5/php5.y:2765 { yyVAL.list = nil @@ -5021,7 +4961,7 @@ yydefault: } case 181: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2817 + // line internal/php5/php5.y:2771 { yyVAL.list = yyDollar[1].list @@ -5029,7 +4969,7 @@ yydefault: } case 182: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2826 + // line internal/php5/php5.y:2780 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -5037,7 +4977,7 @@ yydefault: } case 183: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2832 + // line internal/php5/php5.y:2786 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5045,7 +4985,7 @@ yydefault: } case 184: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2841 + // line internal/php5/php5.y:2795 { yyVAL.node = yyDollar[1].node @@ -5057,7 +4997,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:2851 + // line internal/php5/php5.y:2805 { yyVAL.node = yyDollar[1].node @@ -5069,7 +5009,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2864 + // line internal/php5/php5.y:2818 { yyVAL.node = &ast.StmtTraitUsePrecedence{ast.Node{}, yyDollar[1].node, yyDollar[3].list} @@ -5084,7 +5024,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2880 + // line internal/php5/php5.y:2834 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -5092,7 +5032,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2886 + // line internal/php5/php5.y:2840 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5103,7 +5043,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2898 + // line internal/php5/php5.y:2852 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, nil, name} @@ -5119,7 +5059,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2912 + // line internal/php5/php5.y:2866 { yyVAL.node = yyDollar[1].node @@ -5127,7 +5067,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2921 + // line internal/php5/php5.y:2875 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, yyDollar[1].node, target} @@ -5145,7 +5085,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:2940 + // line internal/php5/php5.y:2894 { alias := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, alias} @@ -5163,7 +5103,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:2956 + // line internal/php5/php5.y:2910 { yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, nil} @@ -5178,7 +5118,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:2972 + // line internal/php5/php5.y:2926 { yyVAL.node = nil @@ -5186,7 +5126,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2978 + // line internal/php5/php5.y:2932 { yyVAL.node = yyDollar[1].node @@ -5194,7 +5134,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:2987 + // line internal/php5/php5.y:2941 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -5209,7 +5149,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3000 + // line internal/php5/php5.y:2954 { yyVAL.node = &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} @@ -5224,7 +5164,7 @@ yydefault: } case 198: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3016 + // line internal/php5/php5.y:2970 { yyVAL.list = yyDollar[1].list @@ -5232,7 +5172,7 @@ yydefault: } case 199: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3022 + // line internal/php5/php5.y:2976 { modifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{modifier} @@ -5247,7 +5187,7 @@ yydefault: } case 200: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:3038 + // line internal/php5/php5.y:2992 { yyVAL.list = nil @@ -5255,7 +5195,7 @@ yydefault: } case 201: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3044 + // line internal/php5/php5.y:2998 { yyVAL.list = yyDollar[1].list @@ -5263,7 +5203,7 @@ yydefault: } case 202: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3053 + // line internal/php5/php5.y:3007 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -5271,7 +5211,7 @@ yydefault: } case 203: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3059 + // line internal/php5/php5.y:3013 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5279,7 +5219,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3068 + // line internal/php5/php5.y:3022 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -5293,7 +5233,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3080 + // line internal/php5/php5.y:3034 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -5307,7 +5247,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3092 + // line internal/php5/php5.y:3046 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -5321,7 +5261,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3104 + // line internal/php5/php5.y:3058 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -5335,7 +5275,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3116 + // line internal/php5/php5.y:3070 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -5349,7 +5289,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3128 + // line internal/php5/php5.y:3082 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -5363,7 +5303,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3143 + // line internal/php5/php5.y:3097 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -5383,7 +5323,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:3161 + // line internal/php5/php5.y:3115 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -5404,7 +5344,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3180 + // line internal/php5/php5.y:3134 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -5423,7 +5363,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3197 + // line internal/php5/php5.y:3151 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -5443,7 +5383,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:3218 + // line internal/php5/php5.y:3172 { name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[5].node} @@ -5466,7 +5406,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3239 + // line internal/php5/php5.y:3193 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[4].node} @@ -5486,7 +5426,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3260 + // line internal/php5/php5.y:3214 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5497,7 +5437,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3269 + // line internal/php5/php5.y:3223 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -5505,7 +5445,7 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:3279 + // line internal/php5/php5.y:3233 { yyVAL.list = nil @@ -5513,7 +5453,7 @@ yydefault: } case 219: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3285 + // line internal/php5/php5.y:3239 { yyVAL.list = yyDollar[1].list @@ -5521,7 +5461,7 @@ yydefault: } case 220: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3294 + // line internal/php5/php5.y:3248 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5532,7 +5472,7 @@ yydefault: } case 221: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3303 + // line internal/php5/php5.y:3257 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -5540,7 +5480,7 @@ yydefault: } case 222: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3312 + // line internal/php5/php5.y:3266 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -5548,7 +5488,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3318 + // line internal/php5/php5.y:3272 { yyVAL.list = yyDollar[1].list @@ -5556,7 +5496,7 @@ yydefault: } case 224: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3327 + // line internal/php5/php5.y:3281 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -5572,7 +5512,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3341 + // line internal/php5/php5.y:3295 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[2].node} yyVAL.list = []ast.Vertex{fetch} @@ -5588,7 +5528,7 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3358 + // line internal/php5/php5.y:3312 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -5596,7 +5536,7 @@ yydefault: } case 227: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3364 + // line internal/php5/php5.y:3318 { yyVAL.list = yyDollar[1].list @@ -5604,7 +5544,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3370 + // line internal/php5/php5.y:3324 { yyVAL.list = yyDollar[1].list @@ -5612,7 +5552,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:3379 + // line internal/php5/php5.y:3333 { yyVAL.list = nil @@ -5620,7 +5560,7 @@ yydefault: } case 230: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:3385 + // line internal/php5/php5.y:3339 { yyVAL.list = yyDollar[1].list @@ -5628,7 +5568,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3394 + // line internal/php5/php5.y:3348 { if yyDollar[3].node != nil { @@ -5646,7 +5586,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:3413 + // line internal/php5/php5.y:3367 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, listNode, yyDollar[6].node} @@ -5665,7 +5605,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3430 + // line internal/php5/php5.y:3384 { yyVAL.node = &ast.ExprAssign{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5680,7 +5620,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:3443 + // line internal/php5/php5.y:3397 { yyVAL.node = &ast.ExprAssignReference{ast.Node{}, yyDollar[1].node, yyDollar[4].node} @@ -5696,7 +5636,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:3457 + // line internal/php5/php5.y:3411 { var _new *ast.ExprNew @@ -5725,7 +5665,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3484 + // line internal/php5/php5.y:3438 { yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node} @@ -5739,7 +5679,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3496 + // line internal/php5/php5.y:3450 { yyVAL.node = &ast.ExprAssignPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5753,7 +5693,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3508 + // line internal/php5/php5.y:3462 { yyVAL.node = &ast.ExprAssignMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5768,7 +5708,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3521 + // line internal/php5/php5.y:3475 { yyVAL.node = &ast.ExprAssignMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5783,7 +5723,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3534 + // line internal/php5/php5.y:3488 { yyVAL.node = &ast.ExprAssignPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5798,7 +5738,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3547 + // line internal/php5/php5.y:3501 { yyVAL.node = &ast.ExprAssignDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5813,7 +5753,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3560 + // line internal/php5/php5.y:3514 { yyVAL.node = &ast.ExprAssignConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5828,7 +5768,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3573 + // line internal/php5/php5.y:3527 { yyVAL.node = &ast.ExprAssignMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5843,7 +5783,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3586 + // line internal/php5/php5.y:3540 { yyVAL.node = &ast.ExprAssignBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5858,7 +5798,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3599 + // line internal/php5/php5.y:3553 { yyVAL.node = &ast.ExprAssignBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5873,7 +5813,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3612 + // line internal/php5/php5.y:3566 { yyVAL.node = &ast.ExprAssignBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5888,7 +5828,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3625 + // line internal/php5/php5.y:3579 { yyVAL.node = &ast.ExprAssignShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5903,7 +5843,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3638 + // line internal/php5/php5.y:3592 { yyVAL.node = &ast.ExprAssignShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5918,7 +5858,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3651 + // line internal/php5/php5.y:3605 { yyVAL.node = &ast.ExprPostInc{ast.Node{}, yyDollar[1].node} @@ -5933,7 +5873,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3664 + // line internal/php5/php5.y:3618 { yyVAL.node = &ast.ExprPreInc{ast.Node{}, yyDollar[2].node} @@ -5947,7 +5887,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3676 + // line internal/php5/php5.y:3630 { yyVAL.node = &ast.ExprPostDec{ast.Node{}, yyDollar[1].node} @@ -5962,7 +5902,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3689 + // line internal/php5/php5.y:3643 { yyVAL.node = &ast.ExprPreDec{ast.Node{}, yyDollar[2].node} @@ -5976,7 +5916,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3701 + // line internal/php5/php5.y:3655 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5991,7 +5931,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3714 + // line internal/php5/php5.y:3668 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6006,7 +5946,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3727 + // line internal/php5/php5.y:3681 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6021,7 +5961,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3740 + // line internal/php5/php5.y:3694 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6036,7 +5976,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3753 + // line internal/php5/php5.y:3707 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6051,7 +5991,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3766 + // line internal/php5/php5.y:3720 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6066,7 +6006,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3779 + // line internal/php5/php5.y:3733 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6081,7 +6021,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3792 + // line internal/php5/php5.y:3746 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6096,7 +6036,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3805 + // line internal/php5/php5.y:3759 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6111,7 +6051,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3818 + // line internal/php5/php5.y:3772 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6126,7 +6066,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3831 + // line internal/php5/php5.y:3785 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6141,7 +6081,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3844 + // line internal/php5/php5.y:3798 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6156,7 +6096,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3857 + // line internal/php5/php5.y:3811 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6171,7 +6111,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3870 + // line internal/php5/php5.y:3824 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6186,7 +6126,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3883 + // line internal/php5/php5.y:3837 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6201,7 +6141,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3896 + // line internal/php5/php5.y:3850 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6216,7 +6156,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3909 + // line internal/php5/php5.y:3863 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6231,7 +6171,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3922 + // line internal/php5/php5.y:3876 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -6245,7 +6185,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3934 + // line internal/php5/php5.y:3888 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -6259,7 +6199,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3946 + // line internal/php5/php5.y:3900 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -6273,7 +6213,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:3958 + // line internal/php5/php5.y:3912 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -6287,7 +6227,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3970 + // line internal/php5/php5.y:3924 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6302,7 +6242,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3983 + // line internal/php5/php5.y:3937 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6317,7 +6257,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:3996 + // line internal/php5/php5.y:3950 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6332,7 +6272,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4009 + // line internal/php5/php5.y:3963 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6348,7 +6288,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4023 + // line internal/php5/php5.y:3977 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6363,7 +6303,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4036 + // line internal/php5/php5.y:3990 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6378,7 +6318,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4049 + // line internal/php5/php5.y:4003 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6393,7 +6333,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4062 + // line internal/php5/php5.y:4016 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6408,7 +6348,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4075 + // line internal/php5/php5.y:4029 { yyVAL.node = &ast.ExprInstanceOf{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6423,20 +6363,15 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4088 + // line internal/php5/php5.y:4042 { yyVAL.node = yyDollar[1].node yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) - - yylex.(*Parser).setFreeFloatingTokens(yyDollar[1].node, token.Start, append(yyDollar[1].node.GetNode().Tokens[token.OpenParenthesisToken], yyDollar[1].node.GetNode().Tokens[token.Start]...)) - delete(yyDollar[1].node.GetNode().Tokens, token.OpenParenthesisToken) - yylex.(*Parser).setFreeFloatingTokens(yyDollar[1].node, token.End, append(yyDollar[1].node.GetNode().Tokens[token.End], yyDollar[1].node.GetNode().Tokens[token.CloseParenthesisToken]...)) - delete(yyDollar[1].node.GetNode().Tokens, token.CloseParenthesisToken) } case 284: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4097 + // line internal/php5/php5.y:4048 { yyVAL.node = yyDollar[1].node @@ -6444,7 +6379,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4103 + // line internal/php5/php5.y:4054 { yyVAL.node = yyDollar[2].node @@ -6478,7 +6413,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:4135 + // line internal/php5/php5.y:4086 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -6494,7 +6429,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4149 + // line internal/php5/php5.y:4100 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -6510,7 +6445,7 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4163 + // line internal/php5/php5.y:4114 { yyVAL.node = yyDollar[1].node @@ -6518,7 +6453,7 @@ yydefault: } case 289: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4169 + // line internal/php5/php5.y:4120 { yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node} @@ -6533,7 +6468,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4182 + // line internal/php5/php5.y:4133 { yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node} @@ -6548,7 +6483,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4195 + // line internal/php5/php5.y:4146 { yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node} @@ -6563,7 +6498,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4208 + // line internal/php5/php5.y:4159 { yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node} @@ -6578,7 +6513,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4221 + // line internal/php5/php5.y:4172 { yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node} @@ -6593,7 +6528,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4234 + // line internal/php5/php5.y:4185 { yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node} @@ -6608,7 +6543,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4247 + // line internal/php5/php5.y:4198 { yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node} @@ -6623,17 +6558,16 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4260 + // line internal/php5/php5.y:4211 { - e := yyDollar[2].node.(*ast.ExprExit) - yyVAL.node = yyDollar[2].node + yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[2].node} if bytes.EqualFold(yyDollar[1].token.Value, []byte("die")) { - e.Die = true + yyVAL.node.(*ast.ExprExit).Die = true } // save position - if yyDollar[2].node.GetNode().Position == nil { + if yyDollar[2].node == nil { yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) } else { yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) @@ -6646,7 +6580,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4281 + // line internal/php5/php5.y:4231 { yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node} @@ -6660,7 +6594,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4293 + // line internal/php5/php5.y:4243 { yyVAL.node = yyDollar[1].node @@ -6668,7 +6602,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4299 + // line internal/php5/php5.y:4249 { yyVAL.node = yyDollar[1].node @@ -6676,7 +6610,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4305 + // line internal/php5/php5.y:4255 { yyVAL.node = yyDollar[1].node @@ -6684,7 +6618,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4311 + // line internal/php5/php5.y:4261 { yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list} @@ -6698,7 +6632,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4323 + // line internal/php5/php5.y:4273 { yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} @@ -6712,7 +6646,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4335 + // line internal/php5/php5.y:4285 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil} @@ -6726,7 +6660,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php5/php5.y:4347 + // line internal/php5/php5.y:4297 { yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[4].list, yyDollar[6].ClosureUse, nil, yyDollar[8].list} @@ -6755,7 +6689,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] - // line internal/php5/php5.y:4373 + // line internal/php5/php5.y:4323 { yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[3].token != nil, true, yyDollar[5].list, yyDollar[7].ClosureUse, nil, yyDollar[9].list} @@ -6785,7 +6719,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4403 + // line internal/php5/php5.y:4353 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6799,7 +6733,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4415 + // line internal/php5/php5.y:4365 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6813,7 +6747,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4427 + // line internal/php5/php5.y:4377 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6828,7 +6762,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4440 + // line internal/php5/php5.y:4390 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6843,7 +6777,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4456 + // line internal/php5/php5.y:4406 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6858,7 +6792,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4469 + // line internal/php5/php5.y:4419 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6873,7 +6807,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4482 + // line internal/php5/php5.y:4432 { str := &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, str, yyDollar[3].node} @@ -6891,7 +6825,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4498 + // line internal/php5/php5.y:4448 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6906,7 +6840,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4514 + // line internal/php5/php5.y:4464 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -6922,7 +6856,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4528 + // line internal/php5/php5.y:4478 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -6937,13 +6871,13 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4544 + // line internal/php5/php5.y:4494 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4551 + // line internal/php5/php5.y:4501 { yyVAL.ClosureUse = nil @@ -6951,7 +6885,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4557 + // line internal/php5/php5.y:4507 { yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list} @@ -6967,7 +6901,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4574 + // line internal/php5/php5.y:4524 { identifier := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -6985,7 +6919,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4590 + // line internal/php5/php5.y:4540 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -7006,7 +6940,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4609 + // line internal/php5/php5.y:4559 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -7023,7 +6957,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4624 + // line internal/php5/php5.y:4574 { identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -7043,7 +6977,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4645 + // line internal/php5/php5.y:4595 { name := &ast.NameName{ast.Node{}, yyDollar[1].list} yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, name, yyDollar[2].node.(*ast.ArgumentList)} @@ -7056,7 +6990,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4656 + // line internal/php5/php5.y:4606 { funcName := &ast.NameRelative{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, funcName, yyDollar[4].node.(*ast.ArgumentList)} @@ -7073,7 +7007,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4671 + // line internal/php5/php5.y:4621 { funcName := &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, funcName, yyDollar[3].node.(*ast.ArgumentList)} @@ -7089,7 +7023,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4685 + // line internal/php5/php5.y:4635 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -7104,7 +7038,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4698 + // line internal/php5/php5.y:4648 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -7119,7 +7053,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4711 + // line internal/php5/php5.y:4661 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -7134,7 +7068,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4724 + // line internal/php5/php5.y:4674 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -7149,7 +7083,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4737 + // line internal/php5/php5.y:4687 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -7163,7 +7097,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4752 + // line internal/php5/php5.y:4702 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -7177,7 +7111,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4764 + // line internal/php5/php5.y:4714 { yyVAL.node = &ast.NameName{ast.Node{}, yyDollar[1].list} @@ -7188,7 +7122,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4773 + // line internal/php5/php5.y:4723 { yyVAL.node = &ast.NameRelative{ast.Node{}, yyDollar[3].list} @@ -7203,7 +7137,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4786 + // line internal/php5/php5.y:4736 { yyVAL.node = &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list} @@ -7217,7 +7151,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4801 + // line internal/php5/php5.y:4751 { yyVAL.node = &ast.NameName{ast.Node{}, yyDollar[1].list} @@ -7228,7 +7162,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:4810 + // line internal/php5/php5.y:4760 { yyVAL.node = &ast.NameRelative{ast.Node{}, yyDollar[3].list} @@ -7243,7 +7177,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4823 + // line internal/php5/php5.y:4773 { yyVAL.node = &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list} @@ -7257,7 +7191,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4838 + // line internal/php5/php5.y:4788 { yyVAL.node = yyDollar[1].node @@ -7265,7 +7199,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4844 + // line internal/php5/php5.y:4794 { yyVAL.node = yyDollar[1].node @@ -7273,7 +7207,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:4853 + // line internal/php5/php5.y:4803 { yyVAL.node = yyDollar[1].node @@ -7316,7 +7250,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4894 + // line internal/php5/php5.y:4844 { yyVAL.node = yyDollar[1].node @@ -7324,7 +7258,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4904 + // line internal/php5/php5.y:4854 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -7332,7 +7266,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4910 + // line internal/php5/php5.y:4860 { yyVAL.list = []ast.Vertex{} @@ -7340,7 +7274,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4920 + // line internal/php5/php5.y:4870 { yyVAL.list = yyDollar[2].list @@ -7351,51 +7285,38 @@ yydefault: } case 345: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4932 + // line internal/php5/php5.y:4882 { - yyVAL.node = &ast.ExprExit{ast.Node{}, false, nil} + yyVAL.node = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 346: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:4938 + // line internal/php5/php5.y:4888 { - yyVAL.node = &ast.ExprExit{ast.Node{}, false, nil} + yyVAL.node = &ast.ParserBrackets{ast.Node{}, nil} // save position yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token) // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Exit, yyDollar[1].token.Tokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[2].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, yyDollar[1].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[2].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 347: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4951 + // line internal/php5/php5.y:4901 { - yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[1].node} - - // save position - if bytes.Compare(yylex.(*Parser).currentToken.Value, []byte(")")) == 0 { - yyVAL.node.GetNode().Position = position.NewTokenPosition(yylex.(*Parser).currentToken) - } else { - yyVAL.node.GetNode().Position = position.NewNodePosition(yyDollar[1].node) - } + yyVAL.node = yyDollar[1].node yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Exit, yyDollar[1].node.GetNode().Tokens[token.OpenParenthesisToken]) - delete(yyDollar[1].node.GetNode().Tokens, token.OpenParenthesisToken) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[1].node.GetNode().Tokens[token.CloseParenthesisToken]) - delete(yyDollar[1].node.GetNode().Tokens, token.CloseParenthesisToken) } case 348: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4971 + // line internal/php5/php5.y:4910 { yyVAL.list = []ast.Vertex{} @@ -7403,7 +7324,7 @@ yydefault: } case 349: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4977 + // line internal/php5/php5.y:4916 { part := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{part} @@ -7415,7 +7336,7 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:4987 + // line internal/php5/php5.y:4926 { yyVAL.list = yyDollar[1].list @@ -7423,7 +7344,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:4996 + // line internal/php5/php5.y:4935 { yyVAL.node = nil @@ -7431,7 +7352,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5002 + // line internal/php5/php5.y:4941 { yyVAL.node = yyDollar[1].node @@ -7439,7 +7360,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5011 + // line internal/php5/php5.y:4950 { yyVAL.node = &ast.ScalarLnumber{ast.Node{}, yyDollar[1].token.Value} @@ -7453,7 +7374,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5023 + // line internal/php5/php5.y:4962 { yyVAL.node = &ast.ScalarDnumber{ast.Node{}, yyDollar[1].token.Value} @@ -7467,7 +7388,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5035 + // line internal/php5/php5.y:4974 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -7481,7 +7402,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5047 + // line internal/php5/php5.y:4986 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7495,7 +7416,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5059 + // line internal/php5/php5.y:4998 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7509,7 +7430,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5071 + // line internal/php5/php5.y:5010 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7523,7 +7444,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5083 + // line internal/php5/php5.y:5022 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7537,7 +7458,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5095 + // line internal/php5/php5.y:5034 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7551,7 +7472,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5107 + // line internal/php5/php5.y:5046 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7565,7 +7486,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5119 + // line internal/php5/php5.y:5058 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7579,7 +7500,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5131 + // line internal/php5/php5.y:5070 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, []ast.Vertex{encapsed}} @@ -7595,7 +7516,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5145 + // line internal/php5/php5.y:5084 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, nil} @@ -7609,7 +7530,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5160 + // line internal/php5/php5.y:5099 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -7627,7 +7548,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5179 + // line internal/php5/php5.y:5118 { yyVAL.node = yyDollar[1].node @@ -7635,7 +7556,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5188 + // line internal/php5/php5.y:5127 { yyVAL.node = yyDollar[1].node @@ -7643,7 +7564,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5194 + // line internal/php5/php5.y:5133 { yyVAL.node = yyDollar[1].node @@ -7651,7 +7572,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5200 + // line internal/php5/php5.y:5139 { name := &ast.NameName{ast.Node{}, yyDollar[1].list} yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} @@ -7664,7 +7585,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5211 + // line internal/php5/php5.y:5150 { name := &ast.NameRelative{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} @@ -7681,7 +7602,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5226 + // line internal/php5/php5.y:5165 { name := &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} @@ -7697,7 +7618,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5240 + // line internal/php5/php5.y:5179 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -7713,7 +7634,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5254 + // line internal/php5/php5.y:5193 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -7728,7 +7649,7 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5267 + // line internal/php5/php5.y:5206 { yyVAL.node = yyDollar[1].node @@ -7736,7 +7657,7 @@ yydefault: } case 375: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5273 + // line internal/php5/php5.y:5212 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7750,7 +7671,7 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5285 + // line internal/php5/php5.y:5224 { yyVAL.node = yyDollar[1].node @@ -7758,7 +7679,7 @@ yydefault: } case 377: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5294 + // line internal/php5/php5.y:5233 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7773,7 +7694,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5307 + // line internal/php5/php5.y:5246 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7788,7 +7709,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5320 + // line internal/php5/php5.y:5259 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7803,7 +7724,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5333 + // line internal/php5/php5.y:5272 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7818,7 +7739,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5346 + // line internal/php5/php5.y:5285 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7833,7 +7754,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5359 + // line internal/php5/php5.y:5298 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7848,7 +7769,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5372 + // line internal/php5/php5.y:5311 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7863,7 +7784,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5385 + // line internal/php5/php5.y:5324 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -7877,7 +7798,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5397 + // line internal/php5/php5.y:5336 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -7891,7 +7812,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5409 + // line internal/php5/php5.y:5348 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7906,7 +7827,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5422 + // line internal/php5/php5.y:5361 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7921,7 +7842,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5435 + // line internal/php5/php5.y:5374 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7936,7 +7857,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5448 + // line internal/php5/php5.y:5387 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7951,7 +7872,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5461 + // line internal/php5/php5.y:5400 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7966,7 +7887,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5474 + // line internal/php5/php5.y:5413 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7981,7 +7902,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5487 + // line internal/php5/php5.y:5426 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7996,7 +7917,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5500 + // line internal/php5/php5.y:5439 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8011,7 +7932,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5513 + // line internal/php5/php5.y:5452 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8026,7 +7947,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5526 + // line internal/php5/php5.y:5465 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8041,7 +7962,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5539 + // line internal/php5/php5.y:5478 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8056,7 +7977,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5552 + // line internal/php5/php5.y:5491 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8071,7 +7992,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5565 + // line internal/php5/php5.y:5504 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8086,7 +8007,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5578 + // line internal/php5/php5.y:5517 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8101,7 +8022,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5591 + // line internal/php5/php5.y:5530 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8117,7 +8038,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5605 + // line internal/php5/php5.y:5544 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8132,7 +8053,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5618 + // line internal/php5/php5.y:5557 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8147,7 +8068,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5631 + // line internal/php5/php5.y:5570 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8162,7 +8083,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5644 + // line internal/php5/php5.y:5583 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8177,7 +8098,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:5657 + // line internal/php5/php5.y:5596 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -8193,7 +8114,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5671 + // line internal/php5/php5.y:5610 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -8209,7 +8130,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5685 + // line internal/php5/php5.y:5624 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -8223,7 +8144,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5697 + // line internal/php5/php5.y:5636 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -8237,7 +8158,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5709 + // line internal/php5/php5.y:5648 { yyVAL.node = yyDollar[2].node @@ -8249,7 +8170,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5722 + // line internal/php5/php5.y:5661 { yyVAL.node = yyDollar[1].node @@ -8257,7 +8178,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5728 + // line internal/php5/php5.y:5667 { name := &ast.NameName{ast.Node{}, yyDollar[1].list} yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} @@ -8270,7 +8191,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5739 + // line internal/php5/php5.y:5678 { name := &ast.NameRelative{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} @@ -8287,7 +8208,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5754 + // line internal/php5/php5.y:5693 { name := &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} @@ -8303,7 +8224,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5771 + // line internal/php5/php5.y:5710 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -8319,7 +8240,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5785 + // line internal/php5/php5.y:5724 { yyVAL.node = yyDollar[1].node @@ -8327,7 +8248,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5791 + // line internal/php5/php5.y:5730 { yyVAL.node = yyDollar[1].node @@ -8335,7 +8256,7 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5797 + // line internal/php5/php5.y:5736 { yyVAL.node = yyDollar[1].node @@ -8343,7 +8264,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5803 + // line internal/php5/php5.y:5742 { yyVAL.node = &ast.ScalarEncapsed{ast.Node{}, yyDollar[2].list} @@ -8357,7 +8278,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5815 + // line internal/php5/php5.y:5754 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, yyDollar[2].list} @@ -8371,7 +8292,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5827 + // line internal/php5/php5.y:5766 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -8385,7 +8306,7 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5842 + // line internal/php5/php5.y:5781 { yyVAL.list = nil @@ -8393,7 +8314,7 @@ yydefault: } case 422: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:5848 + // line internal/php5/php5.y:5787 { yyVAL.list = yyDollar[1].list @@ -8406,19 +8327,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:5862 + // line internal/php5/php5.y:5801 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5866 + // line internal/php5/php5.y:5805 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:5873 + // line internal/php5/php5.y:5812 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8435,7 +8356,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5888 + // line internal/php5/php5.y:5827 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -8451,7 +8372,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5902 + // line internal/php5/php5.y:5841 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -8467,7 +8388,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5916 + // line internal/php5/php5.y:5855 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -8482,7 +8403,7 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5932 + // line internal/php5/php5.y:5871 { yyVAL.node = yyDollar[1].node @@ -8490,7 +8411,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5938 + // line internal/php5/php5.y:5877 { yyVAL.node = yyDollar[1].node @@ -8498,43 +8419,37 @@ yydefault: } case 431: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5947 + // line internal/php5/php5.y:5886 { - yyVAL.node = yyDollar[2].node + yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} + + // save position + yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) // save comments - if len(yyDollar[2].node.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating(yyDollar[2].node, token.Start, append(yyDollar[2].node.GetNode().Tokens[token.OpenParenthesisToken], yyDollar[2].node.GetNode().Tokens[token.Start]...)) - } - if len(yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating(yyDollar[2].node, token.End, append(yyDollar[2].node.GetNode().Tokens[token.End], yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken]...)) - } - yylex.(*Parser).setFreeFloatingTokens(yyDollar[2].node, token.OpenParenthesisToken, yyDollar[1].token.Tokens) - yylex.(*Parser).setFreeFloatingTokens(yyDollar[2].node, token.CloseParenthesisToken, yyDollar[3].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, yyDollar[1].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[3].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 432: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:5963 + // line internal/php5/php5.y:5899 { - yyVAL.node = yyDollar[2].node + yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} + + // save position + yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) // save comments - if len(yyDollar[2].node.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating(yyDollar[2].node, token.Start, append(yyDollar[2].node.GetNode().Tokens[token.OpenParenthesisToken], yyDollar[2].node.GetNode().Tokens[token.Start]...)) - } - if len(yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating(yyDollar[2].node, token.End, append(yyDollar[2].node.GetNode().Tokens[token.End], yyDollar[2].node.GetNode().Tokens[token.CloseParenthesisToken]...)) - } - yylex.(*Parser).setFreeFloatingTokens(yyDollar[2].node, token.OpenParenthesisToken, yyDollar[1].token.Tokens) - yylex.(*Parser).setFreeFloatingTokens(yyDollar[2].node, token.CloseParenthesisToken, yyDollar[3].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, yyDollar[1].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[3].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 433: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5983 + // line internal/php5/php5.y:5916 { yyVAL.node = yyDollar[1].node @@ -8542,7 +8457,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:5993 + // line internal/php5/php5.y:5926 { yyVAL.node = yyDollar[1].node @@ -8550,7 +8465,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6002 + // line internal/php5/php5.y:5935 { yyVAL.node = yyDollar[1].node @@ -8558,7 +8473,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:6011 + // line internal/php5/php5.y:5944 { yyVAL.node = yyDollar[1].node @@ -8618,7 +8533,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6069 + // line internal/php5/php5.y:6002 { yyVAL.node = yyDollar[1].node @@ -8626,7 +8541,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6078 + // line internal/php5/php5.y:6011 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) @@ -8634,7 +8549,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:6084 + // line internal/php5/php5.y:6017 { yyVAL.list = []ast.Vertex{} @@ -8642,7 +8557,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6094 + // line internal/php5/php5.y:6027 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*ast.ExprMethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*ast.ExprPropertyFetch).Property @@ -8658,7 +8573,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6111 + // line internal/php5/php5.y:6044 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -8674,7 +8589,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6125 + // line internal/php5/php5.y:6058 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = []ast.Vertex{yyDollar[1].node, fetch} @@ -8690,7 +8605,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6142 + // line internal/php5/php5.y:6075 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, nil, nil, yyDollar[1].node.(*ast.ArgumentList)} @@ -8701,7 +8616,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6154 + // line internal/php5/php5.y:6087 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -8709,7 +8624,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6160 + // line internal/php5/php5.y:6093 { yyVAL.list = yyDollar[1].list @@ -8717,7 +8632,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:6166 + // line internal/php5/php5.y:6099 { yyVAL.list = nil @@ -8725,7 +8640,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6175 + // line internal/php5/php5.y:6108 { yyVAL.node = yyDollar[1].node @@ -8733,7 +8648,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6181 + // line internal/php5/php5.y:6114 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -8747,7 +8662,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6196 + // line internal/php5/php5.y:6129 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8762,7 +8677,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6209 + // line internal/php5/php5.y:6142 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8777,7 +8692,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6225 + // line internal/php5/php5.y:6158 { yyVAL.node = yyDollar[1].node @@ -8785,7 +8700,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6234 + // line internal/php5/php5.y:6167 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8800,7 +8715,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6247 + // line internal/php5/php5.y:6180 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8815,7 +8730,7 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6263 + // line internal/php5/php5.y:6196 { yyVAL.node = yyDollar[1].node @@ -8823,7 +8738,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6269 + // line internal/php5/php5.y:6202 { yyVAL.node = yyDollar[1].node @@ -8831,7 +8746,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6275 + // line internal/php5/php5.y:6208 { yyVAL.node = yyDollar[1].node @@ -8839,7 +8754,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6285 + // line internal/php5/php5.y:6218 { yyVAL.node = yyDollar[1].node @@ -8847,7 +8762,7 @@ yydefault: } case 458: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6291 + // line internal/php5/php5.y:6224 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -8861,7 +8776,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6303 + // line internal/php5/php5.y:6236 { yyVAL.node = yyDollar[1].node @@ -8869,7 +8784,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6312 + // line internal/php5/php5.y:6245 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8884,7 +8799,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6325 + // line internal/php5/php5.y:6258 { yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8899,7 +8814,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6338 + // line internal/php5/php5.y:6271 { yyVAL.node = yyDollar[1].node @@ -8907,7 +8822,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6348 + // line internal/php5/php5.y:6281 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -8923,7 +8838,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6362 + // line internal/php5/php5.y:6295 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -8939,7 +8854,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:6379 + // line internal/php5/php5.y:6312 { yyVAL.node = nil @@ -8947,7 +8862,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6385 + // line internal/php5/php5.y:6318 { yyVAL.node = yyDollar[1].node @@ -8955,7 +8870,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6395 + // line internal/php5/php5.y:6328 { yyVAL.list = yyDollar[1].list @@ -8963,7 +8878,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6401 + // line internal/php5/php5.y:6334 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8975,7 +8890,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6414 + // line internal/php5/php5.y:6347 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -8991,7 +8906,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6428 + // line internal/php5/php5.y:6361 { fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, fetch) @@ -9007,7 +8922,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6442 + // line internal/php5/php5.y:6375 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -9019,7 +8934,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6455 + // line internal/php5/php5.y:6388 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -9033,7 +8948,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6467 + // line internal/php5/php5.y:6400 { yyVAL.node = yyDollar[2].node @@ -9048,7 +8963,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6483 + // line internal/php5/php5.y:6416 { n := &ast.ExprVariable{ast.Node{}, nil} yyVAL.simpleIndirectReference = simpleIndirectReference{[]*ast.ExprVariable{n}, n} @@ -9063,7 +8978,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6496 + // line internal/php5/php5.y:6429 { n := &ast.ExprVariable{ast.Node{}, nil} @@ -9082,7 +8997,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6516 + // line internal/php5/php5.y:6449 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}} @@ -9097,7 +9012,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6529 + // line internal/php5/php5.y:6462 { if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil { yyVAL.list = []ast.Vertex{} @@ -9109,7 +9024,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6543 + // line internal/php5/php5.y:6476 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} @@ -9123,7 +9038,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6555 + // line internal/php5/php5.y:6488 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, listNode} @@ -9141,7 +9056,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:6571 + // line internal/php5/php5.y:6504 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} @@ -9149,7 +9064,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php5/php5.y:6581 + // line internal/php5/php5.y:6514 { yyVAL.list = []ast.Vertex{} @@ -9157,7 +9072,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6587 + // line internal/php5/php5.y:6520 { yyVAL.list = yyDollar[1].list @@ -9174,7 +9089,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php5/php5.y:6605 + // line internal/php5/php5.y:6538 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -9191,7 +9106,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6620 + // line internal/php5/php5.y:6553 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node} yyVAL.list = append(yyDollar[1].list, arrayItem) @@ -9207,7 +9122,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6634 + // line internal/php5/php5.y:6567 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -9223,7 +9138,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6648 + // line internal/php5/php5.y:6581 { arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{arrayItem} @@ -9238,7 +9153,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:6661 + // line internal/php5/php5.y:6594 { reference := &ast.ExprReference{ast.Node{}, yyDollar[6].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, reference} @@ -9258,7 +9173,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6679 + // line internal/php5/php5.y:6612 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -9276,7 +9191,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6695 + // line internal/php5/php5.y:6628 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference} @@ -9295,7 +9210,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6712 + // line internal/php5/php5.y:6645 { reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node} arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -9312,7 +9227,7 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6730 + // line internal/php5/php5.y:6663 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -9320,7 +9235,7 @@ yydefault: } case 492: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6736 + // line internal/php5/php5.y:6669 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.list = append(yyDollar[1].list, encapsed) @@ -9335,7 +9250,7 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6749 + // line internal/php5/php5.y:6682 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -9343,7 +9258,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6755 + // line internal/php5/php5.y:6688 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{encapsed, yyDollar[2].node} @@ -9358,7 +9273,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6771 + // line internal/php5/php5.y:6704 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -9374,7 +9289,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6785 + // line internal/php5/php5.y:6718 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -9393,7 +9308,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6802 + // line internal/php5/php5.y:6735 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -9414,7 +9329,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6821 + // line internal/php5/php5.y:6754 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -9431,7 +9346,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6836 + // line internal/php5/php5.y:6769 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, name} @@ -9450,7 +9365,7 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php5/php5.y:6853 + // line internal/php5/php5.y:6786 { identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -9471,7 +9386,7 @@ yydefault: } case 501: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:6872 + // line internal/php5/php5.y:6805 { yyVAL.node = yyDollar[2].node @@ -9483,7 +9398,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6885 + // line internal/php5/php5.y:6818 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -9497,7 +9412,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6897 + // line internal/php5/php5.y:6830 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -9516,7 +9431,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:6914 + // line internal/php5/php5.y:6847 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier} @@ -9532,7 +9447,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6931 + // line internal/php5/php5.y:6864 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -9548,39 +9463,43 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6945 + // line internal/php5/php5.y:6878 { - yyVAL.node = &ast.ExprEmpty{ast.Node{}, yyDollar[3].node} + exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} + yyVAL.node = &ast.ExprEmpty{ast.Node{}, exprBrackets} // save position + exprBrackets.GetNode().Position = position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Empty, yyDollar[2].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, yyDollar[4].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[2].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, yyDollar[4].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 507: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6959 + // line internal/php5/php5.y:6894 { - yyVAL.node = &ast.ExprEmpty{ast.Node{}, yyDollar[3].node} + exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} + yyVAL.node = &ast.ExprEmpty{ast.Node{}, exprBrackets} // save position + exprBrackets.GetNode().Position = position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Empty, yyDollar[2].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, yyDollar[4].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[2].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, yyDollar[4].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 508: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6973 + // line internal/php5/php5.y:6910 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -9594,7 +9513,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:6985 + // line internal/php5/php5.y:6922 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -9608,23 +9527,25 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php5/php5.y:6997 + // line internal/php5/php5.y:6934 { - yyVAL.node = &ast.ExprEval{ast.Node{}, yyDollar[3].node} + exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} + yyVAL.node = &ast.ExprEval{ast.Node{}, exprBrackets} // save position + exprBrackets.GetNode().Position = position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Eval, yyDollar[2].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, yyDollar[4].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[2].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, yyDollar[4].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 511: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:7011 + // line internal/php5/php5.y:6950 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -9638,7 +9559,7 @@ yydefault: } case 512: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php5/php5.y:7023 + // line internal/php5/php5.y:6962 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -9652,7 +9573,7 @@ yydefault: } case 513: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:7038 + // line internal/php5/php5.y:6977 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -9660,7 +9581,7 @@ yydefault: } case 514: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:7044 + // line internal/php5/php5.y:6983 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -9671,7 +9592,7 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:7056 + // line internal/php5/php5.y:6995 { yyVAL.node = yyDollar[1].node @@ -9679,7 +9600,7 @@ yydefault: } case 516: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php5/php5.y:7062 + // line internal/php5/php5.y:7001 { yyVAL.node = yyDollar[1].node @@ -9687,7 +9608,7 @@ yydefault: } case 517: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:7071 + // line internal/php5/php5.y:7010 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -9705,7 +9626,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:7087 + // line internal/php5/php5.y:7026 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -9723,7 +9644,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:7106 + // line internal/php5/php5.y:7045 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -9741,7 +9662,7 @@ yydefault: } case 520: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php5/php5.y:7125 + // line internal/php5/php5.y:7064 { 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 d17ba27..63b1661 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -919,36 +919,22 @@ unticked_statement: // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) - if len($2.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens($$, token.If, $2.GetNode().Tokens[token.OpenParenthesisToken][:len($2.GetNode().Tokens[token.OpenParenthesisToken])-1]); delete($2.GetNode().Tokens, token.OpenParenthesisToken) - } - if len($2.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $2.GetNode().Tokens[token.CloseParenthesisToken][:len($2.GetNode().Tokens[token.CloseParenthesisToken])-1]); delete($2.GetNode().Tokens, token.CloseParenthesisToken) - } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_IF parenthesis_expr ':' inner_statement_list new_elseif_list new_else_single T_ENDIF ';' { - exprBrackets := &ast.ParserBrackets{ast.Node{}, $2} stmts := &ast.StmtStmtList{ast.Node{}, $4} stmtsBrackets := &ast.ParserBrackets{ast.Node{}, stmts} - $$ = &ast.StmtAltIf{ast.Node{}, exprBrackets, stmtsBrackets, $5, $6} + $$ = &ast.StmtAltIf{ast.Node{}, $2, stmtsBrackets, $5, $6} // save position - exprBrackets.GetNode().Position = position.NewNodePosition($2) stmts.GetNode().Position = position.NewNodeListPosition($4) stmtsBrackets.GetNode().Position = position.NewTokenNodeListPosition($3, $4) $$.GetNode().Position = position.NewTokensPosition($1, $8) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) - if len($2.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $2.GetNode().Tokens[token.OpenParenthesisToken]); delete($2.GetNode().Tokens, token.OpenParenthesisToken) - } - if len($2.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, $2.GetNode().Tokens[token.CloseParenthesisToken]); delete($2.GetNode().Tokens, token.CloseParenthesisToken) - } yylex.(*Parser).setFreeFloatingTokens(stmtsBrackets, token.Start, $3.Tokens) if $6 != nil { yylex.(*Parser).setFreeFloating($6.(*ast.StmtAltElse).Stmt, token.End, append($7.Tokens, $8.Tokens...)) @@ -977,12 +963,6 @@ unticked_statement: // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) - if len($2.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens($$, token.While, $2.GetNode().Tokens[token.OpenParenthesisToken][:len($2.GetNode().Tokens[token.OpenParenthesisToken])-1]); delete($2.GetNode().Tokens, token.OpenParenthesisToken) - } - if len($2.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $2.GetNode().Tokens[token.CloseParenthesisToken][:len($2.GetNode().Tokens[token.CloseParenthesisToken])-1]); delete($2.GetNode().Tokens, token.CloseParenthesisToken) - } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -996,13 +976,7 @@ unticked_statement: // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).setFreeFloating($$, token.Stmts, $3.Tokens) - if len($4.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens($$, token.While, $4.GetNode().Tokens[token.OpenParenthesisToken][:len($4.GetNode().Tokens[token.OpenParenthesisToken])-1]); delete($4.GetNode().Tokens, token.OpenParenthesisToken) - } - if len($4.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.GetNode().Tokens[token.CloseParenthesisToken][:len($4.GetNode().Tokens[token.CloseParenthesisToken])-1]); delete($4.GetNode().Tokens, token.CloseParenthesisToken) - } - yylex.(*Parser).setFreeFloating($$, token.Cond, $5.Tokens) + yylex.(*Parser).setFreeFloating($4, token.End, $5.Tokens) yylex.(*Parser).setToken($$, token.SemiColon, $5.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -1052,12 +1026,6 @@ unticked_statement: // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) - if len($2.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens($$, token.Switch, $2.GetNode().Tokens[token.OpenParenthesisToken][:len($2.GetNode().Tokens[token.OpenParenthesisToken])-1]); delete($2.GetNode().Tokens, token.OpenParenthesisToken) - } - if len($2.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $2.GetNode().Tokens[token.CloseParenthesisToken][:len($2.GetNode().Tokens[token.CloseParenthesisToken])-1]); delete($2.GetNode().Tokens, token.CloseParenthesisToken) - } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2163,12 +2131,6 @@ elseif_list: // save comments yylex.(*Parser).setFreeFloating(_elseIf, token.Start, $2.Tokens) - if len($3.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(_elseIf, token.ElseIf, $3.GetNode().Tokens[token.OpenParenthesisToken][:len($3.GetNode().Tokens[token.OpenParenthesisToken])-1]); delete($3.GetNode().Tokens, token.OpenParenthesisToken) - } - if len($3.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(_elseIf, token.Expr, $3.GetNode().Tokens[token.CloseParenthesisToken][:len($3.GetNode().Tokens[token.CloseParenthesisToken])-1]); delete($3.GetNode().Tokens, token.CloseParenthesisToken) - } yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -2184,26 +2146,18 @@ new_elseif_list: } | new_elseif_list T_ELSEIF parenthesis_expr ':' inner_statement_list { - exprBrackets := &ast.ParserBrackets{ast.Node{}, $3} stmts := &ast.StmtStmtList{ast.Node{}, $5} stmtsBrackets := &ast.ParserBrackets{ast.Node{}, stmts} - _elseIf := &ast.StmtAltElseIf{ast.Node{}, exprBrackets, stmtsBrackets} + _elseIf := &ast.StmtAltElseIf{ast.Node{}, $3, stmtsBrackets} $$ = append($1, _elseIf) // save position - exprBrackets.GetNode().Position = position.NewNodePosition($3) stmts.GetNode().Position = position.NewNodeListPosition($5) - exprBrackets.GetNode().Position = position.NewTokenNodeListPosition($4, $5) + stmtsBrackets.GetNode().Position = position.NewTokenNodeListPosition($4, $5) _elseIf.GetNode().Position = position.NewTokenNodeListPosition($2, $5) // save comments yylex.(*Parser).setFreeFloating(_elseIf, token.Start, $2.Tokens) - if len($3.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $3.GetNode().Tokens[token.OpenParenthesisToken]); delete($3.GetNode().Tokens, token.OpenParenthesisToken) - } - if len($3.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, $3.GetNode().Tokens[token.CloseParenthesisToken]); delete($3.GetNode().Tokens, token.CloseParenthesisToken) - } yylex.(*Parser).setFreeFloatingTokens(stmtsBrackets, token.Start, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -4089,9 +4043,6 @@ expr_without_variable: $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) - - yylex.(*Parser).setFreeFloatingTokens($1, token.Start, append($1.GetNode().Tokens[token.OpenParenthesisToken], $1.GetNode().Tokens[token.Start]...)); delete($1.GetNode().Tokens, token.OpenParenthesisToken) - yylex.(*Parser).setFreeFloatingTokens($1, token.End, append($1.GetNode().Tokens[token.End], $1.GetNode().Tokens[token.CloseParenthesisToken]...)); delete($1.GetNode().Tokens, token.CloseParenthesisToken) } | new_expr { @@ -4258,15 +4209,14 @@ expr_without_variable: } | T_EXIT exit_expr { - e := $2.(*ast.ExprExit) - $$ = $2 + $$ = &ast.ExprExit{ast.Node{}, false, $2} if (bytes.EqualFold($1.Value, []byte("die"))) { - e.Die = true + $$.(*ast.ExprExit).Die = true } // save position - if $2.GetNode().Position == nil { + if $2 == nil { $$.GetNode().Position = position.NewTokenPosition($1) } else { $$.GetNode().Position = position.NewTokenNodePosition($1, $2) @@ -4930,39 +4880,28 @@ dynamic_class_name_variable_property: exit_expr: /* empty */ { - $$ = &ast.ExprExit{ast.Node{}, false, nil}; + $$ = nil yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '(' ')' { - $$ = &ast.ExprExit{ast.Node{}, false, nil}; + $$ = &ast.ParserBrackets{ast.Node{}, nil} // save position $$.GetNode().Position = position.NewTokensPosition($1, $2) // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Exit, $1.Tokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $2.Tokens) + yylex.(*Parser).setFreeFloatingTokens($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloatingTokens($$, token.End, $2.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | parenthesis_expr { - $$ = &ast.ExprExit{ast.Node{}, false, $1}; - - // save position - if bytes.Compare(yylex.(*Parser).currentToken.Value, []byte(")")) == 0 { - $$.GetNode().Position = position.NewTokenPosition(yylex.(*Parser).currentToken) - } else { - $$.GetNode().Position = position.NewNodePosition($1) - } + $$ = $1 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) - - // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Exit, $1.GetNode().Tokens[token.OpenParenthesisToken]); delete($1.GetNode().Tokens, token.OpenParenthesisToken) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $1.GetNode().Tokens[token.CloseParenthesisToken]); delete($1.GetNode().Tokens, token.CloseParenthesisToken) } ; @@ -5945,33 +5884,27 @@ expr: parenthesis_expr: '(' expr ')' { - $$ = $2 + $$ = &ast.ParserBrackets{ast.Node{}, $2} + + // save position + $$.GetNode().Position = position.NewTokensPosition($1, $3) // save comments - if len($2.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($2, token.Start, append($2.GetNode().Tokens[token.OpenParenthesisToken], $2.GetNode().Tokens[token.Start]...)) - } - if len($2.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($2, token.End, append($2.GetNode().Tokens[token.End], $2.GetNode().Tokens[token.CloseParenthesisToken]...)) - } - yylex.(*Parser).setFreeFloatingTokens($2, token.OpenParenthesisToken, $1.Tokens) - yylex.(*Parser).setFreeFloatingTokens($2, token.CloseParenthesisToken, $3.Tokens) + yylex.(*Parser).setFreeFloatingTokens($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloatingTokens($$, token.End, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | '(' yield_expr ')' { - $$ = $2 + $$ = &ast.ParserBrackets{ast.Node{}, $2} + + // save position + $$.GetNode().Position = position.NewTokensPosition($1, $3) // save comments - if len($2.GetNode().Tokens[token.OpenParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($2, token.Start, append($2.GetNode().Tokens[token.OpenParenthesisToken], $2.GetNode().Tokens[token.Start]...)) - } - if len($2.GetNode().Tokens[token.CloseParenthesisToken]) > 0 { - yylex.(*Parser).setFreeFloating($2, token.End, append($2.GetNode().Tokens[token.End], $2.GetNode().Tokens[token.CloseParenthesisToken]...)) - } - yylex.(*Parser).setFreeFloatingTokens($2, token.OpenParenthesisToken, $1.Tokens) - yylex.(*Parser).setFreeFloatingTokens($2, token.CloseParenthesisToken, $3.Tokens) + yylex.(*Parser).setFreeFloatingTokens($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloatingTokens($$, token.End, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6943,29 +6876,33 @@ internal_functions_in_yacc: } | T_EMPTY '(' variable ')' { - $$ = &ast.ExprEmpty{ast.Node{}, $3} + exprBrackets := &ast.ParserBrackets{ast.Node{}, $3} + $$ = &ast.ExprEmpty{ast.Node{}, exprBrackets} // save position + exprBrackets.GetNode().Position = position.NewTokensPosition($2, $4) $$.GetNode().Position = position.NewTokensPosition($1, $4) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Empty, $2.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $4.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_EMPTY '(' expr ')' { - $$ = &ast.ExprEmpty{ast.Node{}, $3} + exprBrackets := &ast.ParserBrackets{ast.Node{}, $3} + $$ = &ast.ExprEmpty{ast.Node{}, exprBrackets} // save position + exprBrackets.GetNode().Position = position.NewTokensPosition($2, $4) $$.GetNode().Position = position.NewTokensPosition($1, $4) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Empty, $2.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $4.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -6995,15 +6932,17 @@ internal_functions_in_yacc: } | T_EVAL '(' expr ')' { - $$ = &ast.ExprEval{ast.Node{}, $3} + exprBrackets := &ast.ParserBrackets{ast.Node{}, $3} + $$ = &ast.ExprEval{ast.Node{}, exprBrackets} // save position + exprBrackets.GetNode().Position = position.NewTokensPosition($2, $4) $$.GetNode().Position = position.NewTokensPosition($1, $4) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Eval, $2.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $4.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } diff --git a/internal/php5/php5_test.go b/internal/php5/php5_test.go index 07cbd58..b1a1ada 100644 --- a/internal/php5/php5_test.go +++ b/internal/php5/php5_test.go @@ -10048,7 +10048,7 @@ func TestPhp5(t *testing.T) { StartLine: 175, EndLine: 175, StartPos: 3593, - EndPos: 3601, + EndPos: 3602, }, }, Expr: &ast.ExprVariable{ @@ -12426,7 +12426,7 @@ func TestPhp5(t *testing.T) { StartLine: 223, EndLine: 223, StartPos: 4168, - EndPos: 4176, + EndPos: 4177, }, }, Expr: &ast.ExprVariable{ diff --git a/internal/php7/parser_test.go b/internal/php7/parser_test.go index 99ac89f..9ef81b7 100644 --- a/internal/php7/parser_test.go +++ b/internal/php7/parser_test.go @@ -15577,7 +15577,7 @@ func TestExprClone_Brackets(t *testing.T) { StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 11, + EndPos: 12, }, }, Expr: &ast.ExprVariable{ @@ -19422,7 +19422,7 @@ func TestExprPrint(t *testing.T) { StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 11, + EndPos: 12, }, }, Expr: &ast.ExprVariable{ diff --git a/internal/php7/php7.go b/internal/php7/php7.go index 0c50734..89954b6 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:5636 +// line internal/php7/php7.y:5653 // line yacctab:1 var yyExca = [...]int{ @@ -3310,47 +3310,51 @@ yydefault: yyDollar = yyS[yypt-5 : yypt+1] // line internal/php7/php7.y:995 { + exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} + switch n := yyDollar[5].node.(type) { case *ast.StmtWhile: - n.Cond = yyDollar[3].node + n.Cond = exprBrackets case *ast.StmtAltWhile: - n.Cond = yyDollar[3].node + n.Cond = exprBrackets } yyVAL.node = yyDollar[5].node // save position + exprBrackets.GetNode().Position = position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token) yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.While, yyDollar[2].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, yyDollar[4].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[2].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, yyDollar[4].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 136: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:1016 + // line internal/php7/php7.y:1019 { - yyVAL.node = &ast.StmtDo{ast.Node{}, yyDollar[2].node, yyDollar[5].node} + exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[5].node} + yyVAL.node = &ast.StmtDo{ast.Node{}, yyDollar[2].node, exprBrackets} // save position + exprBrackets.GetNode().Position = position.NewTokensPosition(yyDollar[4].token, yyDollar[6].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[7].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[3].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.While, yyDollar[4].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, yyDollar[6].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Cond, yyDollar[7].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[4].token.Tokens) + yylex.(*Parser).setFreeFloating(exprBrackets, token.End, append(yyDollar[6].token.Tokens, yyDollar[7].token.Tokens...)) yylex.(*Parser).setToken(yyVAL.node, token.SemiColon, yyDollar[7].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 137: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:1033 + // line internal/php7/php7.y:1037 { switch n := yyDollar[9].node.(type) { case *ast.StmtFor: @@ -3379,13 +3383,15 @@ yydefault: } case 138: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1060 + // line internal/php7/php7.y:1064 { + exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} + switch n := yyDollar[5].node.(type) { case *ast.StmtSwitch: - n.Cond = yyDollar[3].node + n.Cond = exprBrackets case *ast.StmtAltSwitch: - n.Cond = yyDollar[3].node + n.Cond = exprBrackets default: panic("unexpected node type") } @@ -3393,18 +3399,19 @@ yydefault: yyVAL.node = yyDollar[5].node // save position + exprBrackets.GetNode().Position = position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token) yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Switch, yyDollar[2].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, yyDollar[4].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[2].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, yyDollar[4].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 139: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1083 + // line internal/php7/php7.y:1090 { yyVAL.node = &ast.StmtBreak{ast.Node{}, yyDollar[2].node} @@ -3420,7 +3427,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1097 + // line internal/php7/php7.y:1104 { yyVAL.node = &ast.StmtContinue{ast.Node{}, yyDollar[2].node} @@ -3436,7 +3443,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1111 + // line internal/php7/php7.y:1118 { yyVAL.node = &ast.StmtReturn{ast.Node{}, yyDollar[2].node} @@ -3452,7 +3459,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1125 + // line internal/php7/php7.y:1132 { yyVAL.node = &ast.StmtGlobal{ast.Node{}, yyDollar[2].list} @@ -3468,7 +3475,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1139 + // line internal/php7/php7.y:1146 { yyVAL.node = &ast.StmtStatic{ast.Node{}, yyDollar[2].list} @@ -3484,7 +3491,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1153 + // line internal/php7/php7.y:1160 { yyVAL.node = &ast.StmtEcho{ast.Node{}, yyDollar[2].list} @@ -3501,7 +3508,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1168 + // line internal/php7/php7.y:1175 { yyVAL.node = &ast.StmtInlineHtml{ast.Node{}, yyDollar[1].token.Value} @@ -3515,7 +3522,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1180 + // line internal/php7/php7.y:1187 { yyVAL.node = &ast.StmtExpression{ast.Node{}, yyDollar[1].node} @@ -3531,7 +3538,7 @@ yydefault: } case 147: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1194 + // line internal/php7/php7.y:1201 { yyVAL.node = &ast.StmtUnset{ast.Node{}, yyDollar[3].list} @@ -3553,7 +3560,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:1214 + // line internal/php7/php7.y:1221 { switch n := yyDollar[7].node.(type) { case *ast.StmtForeach: @@ -3579,7 +3586,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:1239 + // line internal/php7/php7.y:1246 { switch n := yyDollar[9].node.(type) { case *ast.StmtForeach: @@ -3608,7 +3615,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1266 + // line internal/php7/php7.y:1273 { yyVAL.node = yyDollar[5].node yyVAL.node.(*ast.StmtDeclare).Consts = yyDollar[3].list @@ -3625,7 +3632,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1281 + // line internal/php7/php7.y:1288 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -3640,7 +3647,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1294 + // line internal/php7/php7.y:1301 { if yyDollar[6].node == nil { yyVAL.node = &ast.StmtTry{ast.Node{}, yyDollar[3].list, yyDollar[5].list, yyDollar[6].node} @@ -3659,7 +3666,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1311 + // line internal/php7/php7.y:1318 { yyVAL.node = &ast.StmtThrow{ast.Node{}, yyDollar[2].node} @@ -3675,7 +3682,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1325 + // line internal/php7/php7.y:1332 { label := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.StmtGoto{ast.Node{}, label} @@ -3694,7 +3701,7 @@ yydefault: } case 155: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1342 + // line internal/php7/php7.y:1349 { label := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtLabel{ast.Node{}, label} @@ -3711,7 +3718,7 @@ yydefault: } case 156: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1359 + // line internal/php7/php7.y:1366 { yyVAL.list = []ast.Vertex{} @@ -3719,7 +3726,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:1365 + // line internal/php7/php7.y:1372 { identifier := &ast.Identifier{ast.Node{}, yyDollar[5].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -3743,7 +3750,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1389 + // line internal/php7/php7.y:1396 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -3751,7 +3758,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1395 + // line internal/php7/php7.y:1402 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3762,7 +3769,7 @@ yydefault: } case 160: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1407 + // line internal/php7/php7.y:1414 { yyVAL.node = nil @@ -3770,7 +3777,7 @@ yydefault: } case 161: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1413 + // line internal/php7/php7.y:1420 { yyVAL.node = &ast.StmtFinally{ast.Node{}, yyDollar[3].list} @@ -3786,7 +3793,7 @@ yydefault: } case 162: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1430 + // line internal/php7/php7.y:1437 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -3794,7 +3801,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1436 + // line internal/php7/php7.y:1443 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3805,7 +3812,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1448 + // line internal/php7/php7.y:1455 { yyVAL.node = yyDollar[1].node @@ -3813,7 +3820,7 @@ yydefault: } case 165: yyDollar = yyS[yypt-11 : yypt+1] - // line internal/php7/php7.y:1457 + // line internal/php7/php7.y:1464 { 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} @@ -3845,31 +3852,31 @@ yydefault: } case 166: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1490 + // line internal/php7/php7.y:1497 { yyVAL.token = nil } case 167: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1494 + // line internal/php7/php7.y:1501 { yyVAL.token = yyDollar[1].token } case 168: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1501 + // line internal/php7/php7.y:1508 { yyVAL.token = nil } case 169: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1505 + // line internal/php7/php7.y:1512 { yyVAL.token = yyDollar[1].token } case 170: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:1512 + // line internal/php7/php7.y:1519 { 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} @@ -3889,7 +3896,7 @@ yydefault: } case 171: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php7/php7.y:1530 + // line internal/php7/php7.y:1537 { 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} @@ -3908,7 +3915,7 @@ yydefault: } case 172: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1550 + // line internal/php7/php7.y:1557 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -3916,7 +3923,7 @@ yydefault: } case 173: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1556 + // line internal/php7/php7.y:1563 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3924,7 +3931,7 @@ yydefault: } case 174: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1565 + // line internal/php7/php7.y:1572 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -3938,7 +3945,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1577 + // line internal/php7/php7.y:1584 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -3952,7 +3959,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1592 + // line internal/php7/php7.y:1599 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.StmtTrait{ast.Node{}, name, yyDollar[5].list} @@ -3971,7 +3978,7 @@ yydefault: } case 177: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:1612 + // line internal/php7/php7.y:1619 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.StmtInterface{ast.Node{}, name, yyDollar[3].InterfaceExtends, yyDollar[6].list} @@ -3990,7 +3997,7 @@ yydefault: } case 178: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1632 + // line internal/php7/php7.y:1639 { yyVAL.ClassExtends = nil @@ -3998,7 +4005,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1638 + // line internal/php7/php7.y:1645 { yyVAL.ClassExtends = &ast.StmtClassExtends{ast.Node{}, yyDollar[2].node} @@ -4012,7 +4019,7 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1653 + // line internal/php7/php7.y:1660 { yyVAL.InterfaceExtends = nil @@ -4020,7 +4027,7 @@ yydefault: } case 181: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1659 + // line internal/php7/php7.y:1666 { yyVAL.InterfaceExtends = &ast.StmtInterfaceExtends{ast.Node{}, yyDollar[2].list} @@ -4034,7 +4041,7 @@ yydefault: } case 182: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1674 + // line internal/php7/php7.y:1681 { yyVAL.ClassImplements = nil @@ -4042,7 +4049,7 @@ yydefault: } case 183: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1680 + // line internal/php7/php7.y:1687 { yyVAL.ClassImplements = &ast.StmtClassImplements{ast.Node{}, yyDollar[2].list} @@ -4056,7 +4063,7 @@ yydefault: } case 184: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1695 + // line internal/php7/php7.y:1702 { yyVAL.node = yyDollar[1].node @@ -4064,7 +4071,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:1701 + // line internal/php7/php7.y:1708 { yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node} @@ -4078,7 +4085,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1713 + // line internal/php7/php7.y:1720 { yyVAL.node = &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -4094,7 +4101,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1727 + // line internal/php7/php7.y:1734 { yyVAL.node = &ast.ExprShortList{ast.Node{}, yyDollar[2].list} @@ -4109,7 +4116,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1743 + // line internal/php7/php7.y:1750 { yyVAL.node = &ast.StmtFor{ast.Node{}, nil, nil, nil, yyDollar[1].node} @@ -4120,7 +4127,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1752 + // line internal/php7/php7.y:1759 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltFor{ast.Node{}, nil, nil, nil, stmtList} @@ -4139,7 +4146,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1772 + // line internal/php7/php7.y:1779 { yyVAL.node = &ast.StmtForeach{ast.Node{}, nil, nil, nil, yyDollar[1].node} @@ -4150,7 +4157,7 @@ yydefault: } case 191: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1781 + // line internal/php7/php7.y:1788 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltForeach{ast.Node{}, nil, nil, nil, stmtList} @@ -4169,7 +4176,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1801 + // line internal/php7/php7.y:1808 { yyVAL.node = &ast.StmtDeclare{ast.Node{}, false, nil, yyDollar[1].node} @@ -4180,7 +4187,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1810 + // line internal/php7/php7.y:1817 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtDeclare{ast.Node{}, true, nil, stmtList} @@ -4199,7 +4206,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:1830 + // line internal/php7/php7.y:1837 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList} @@ -4216,7 +4223,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1845 + // line internal/php7/php7.y:1852 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList} @@ -4234,7 +4241,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1861 + // line internal/php7/php7.y:1868 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltSwitch{ast.Node{}, nil, caseList} @@ -4253,7 +4260,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1878 + // line internal/php7/php7.y:1885 { caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list} @@ -4274,7 +4281,7 @@ yydefault: } case 198: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:1900 + // line internal/php7/php7.y:1907 { yyVAL.list = []ast.Vertex{} @@ -4282,7 +4289,7 @@ yydefault: } case 199: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1906 + // line internal/php7/php7.y:1913 { _case := &ast.StmtCase{ast.Node{}, yyDollar[3].node, yyDollar[5].list} yyVAL.list = append(yyDollar[1].list, _case) @@ -4299,7 +4306,7 @@ yydefault: } case 200: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1921 + // line internal/php7/php7.y:1928 { _default := &ast.StmtDefault{ast.Node{}, yyDollar[4].list} yyVAL.list = append(yyDollar[1].list, _default) @@ -4316,19 +4323,19 @@ yydefault: } case 201: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1939 + // line internal/php7/php7.y:1946 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1943 + // line internal/php7/php7.y:1950 { yyVAL.token = yyDollar[1].token } case 203: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:1950 + // line internal/php7/php7.y:1957 { yyVAL.node = &ast.StmtWhile{ast.Node{}, nil, yyDollar[1].node} @@ -4339,7 +4346,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:1959 + // line internal/php7/php7.y:1966 { stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.StmtAltWhile{ast.Node{}, nil, stmtList} @@ -4358,43 +4365,47 @@ yydefault: } case 205: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:1979 + // line internal/php7/php7.y:1986 { - yyVAL.node = &ast.StmtIf{ast.Node{}, yyDollar[3].node, yyDollar[5].node, nil, nil} + exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} + yyVAL.node = &ast.StmtIf{ast.Node{}, exprBrackets, yyDollar[5].node, nil, nil} // save position + exprBrackets.GetNode().Position = position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token) yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.If, yyDollar[2].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, yyDollar[4].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[2].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, yyDollar[4].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 206: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:1993 + // line internal/php7/php7.y:2002 { - _elseIf := &ast.StmtElseIf{ast.Node{}, yyDollar[4].node, yyDollar[6].node} + exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[4].node} + _elseIf := &ast.StmtElseIf{ast.Node{}, exprBrackets, yyDollar[6].node} yyDollar[1].node.(*ast.StmtIf).ElseIf = append(yyDollar[1].node.(*ast.StmtIf).ElseIf, _elseIf) yyVAL.node = yyDollar[1].node // save position + exprBrackets.GetNode().Position = position.NewTokensPosition(yyDollar[3].token, yyDollar[5].token) _elseIf.GetNode().Position = position.NewTokenNodePosition(yyDollar[2].token, yyDollar[6].node) yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[6].node) // save comments yylex.(*Parser).setFreeFloating(_elseIf, token.Start, yyDollar[2].token.Tokens) - yylex.(*Parser).setFreeFloating(_elseIf, token.ElseIf, yyDollar[3].token.Tokens) - yylex.(*Parser).setFreeFloating(_elseIf, token.Expr, yyDollar[5].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[3].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, yyDollar[5].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 207: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2014 + // line internal/php7/php7.y:2025 { yyVAL.node = yyDollar[1].node @@ -4402,7 +4413,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2020 + // line internal/php7/php7.y:2031 { _else := &ast.StmtElse{ast.Node{}, yyDollar[3].node} yyDollar[1].node.(*ast.StmtIf).Else = _else @@ -4420,7 +4431,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:2039 + // line internal/php7/php7.y:2050 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[6].list} @@ -4443,7 +4454,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-7 : yypt+1] - // line internal/php7/php7.y:2060 + // line internal/php7/php7.y:2071 { exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[4].node} stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[7].list} @@ -4469,7 +4480,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2087 + // line internal/php7/php7.y:2098 { yyVAL.node = yyDollar[1].node @@ -4489,7 +4500,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:2105 + // line internal/php7/php7.y:2116 { stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[4].list} stmtsBrackets := &ast.ParserBrackets{ast.Node{}, stmts} @@ -4514,7 +4525,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2131 + // line internal/php7/php7.y:2142 { yyVAL.list = yyDollar[1].list @@ -4522,7 +4533,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2137 + // line internal/php7/php7.y:2148 { yyVAL.list = nil @@ -4530,7 +4541,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2146 + // line internal/php7/php7.y:2157 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -4538,7 +4549,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2152 + // line internal/php7/php7.y:2163 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4549,7 +4560,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2164 + // line internal/php7/php7.y:2175 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) @@ -4587,7 +4598,7 @@ yydefault: } case 218: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:2200 + // line internal/php7/php7.y:2211 { identifier := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} identifier.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) @@ -4626,7 +4637,7 @@ yydefault: } case 219: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2240 + // line internal/php7/php7.y:2251 { yyVAL.node = nil @@ -4634,7 +4645,7 @@ yydefault: } case 220: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2246 + // line internal/php7/php7.y:2257 { yyVAL.node = yyDollar[1].node @@ -4642,7 +4653,7 @@ yydefault: } case 221: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2255 + // line internal/php7/php7.y:2266 { yyVAL.node = yyDollar[1].node @@ -4650,7 +4661,7 @@ yydefault: } case 222: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2261 + // line internal/php7/php7.y:2272 { yyVAL.node = &ast.Nullable{ast.Node{}, yyDollar[2].node} @@ -4664,7 +4675,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2276 + // line internal/php7/php7.y:2287 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4678,7 +4689,7 @@ yydefault: } case 224: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2288 + // line internal/php7/php7.y:2299 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -4692,7 +4703,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2300 + // line internal/php7/php7.y:2311 { yyVAL.node = yyDollar[1].node @@ -4700,7 +4711,7 @@ yydefault: } case 226: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2309 + // line internal/php7/php7.y:2320 { yyVAL.node = nil @@ -4708,7 +4719,7 @@ yydefault: } case 227: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2315 + // line internal/php7/php7.y:2326 { yyVAL.node = yyDollar[2].node @@ -4719,7 +4730,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2327 + // line internal/php7/php7.y:2338 { yyVAL.node = &ast.ArgumentList{ast.Node{}, nil} @@ -4734,7 +4745,7 @@ yydefault: } case 229: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2340 + // line internal/php7/php7.y:2351 { yyVAL.node = &ast.ArgumentList{ast.Node{}, yyDollar[2].list} @@ -4753,7 +4764,7 @@ yydefault: } case 230: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2360 + // line internal/php7/php7.y:2371 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -4761,7 +4772,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2366 + // line internal/php7/php7.y:2377 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4772,7 +4783,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2378 + // line internal/php7/php7.y:2389 { yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node} @@ -4786,7 +4797,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2390 + // line internal/php7/php7.y:2401 { yyVAL.node = &ast.Argument{ast.Node{}, true, false, yyDollar[2].node} @@ -4800,7 +4811,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2405 + // line internal/php7/php7.y:2416 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4811,7 +4822,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2414 + // line internal/php7/php7.y:2425 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -4819,7 +4830,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2423 + // line internal/php7/php7.y:2434 { yyVAL.node = yyDollar[1].node @@ -4827,7 +4838,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2432 + // line internal/php7/php7.y:2443 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4838,7 +4849,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2441 + // line internal/php7/php7.y:2452 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -4846,7 +4857,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2450 + // line internal/php7/php7.y:2461 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4864,7 +4875,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2466 + // line internal/php7/php7.y:2477 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -4883,7 +4894,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2486 + // line internal/php7/php7.y:2497 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -4891,7 +4902,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2492 + // line internal/php7/php7.y:2503 { yyVAL.list = []ast.Vertex{} @@ -4899,7 +4910,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2501 + // line internal/php7/php7.y:2512 { yyVAL.node = &ast.StmtPropertyList{ast.Node{}, yyDollar[1].list, yyDollar[2].node, yyDollar[3].list} @@ -4915,7 +4926,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2515 + // line internal/php7/php7.y:2526 { yyVAL.node = &ast.StmtClassConstList{ast.Node{}, yyDollar[1].list, yyDollar[3].list} @@ -4936,7 +4947,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2534 + // line internal/php7/php7.y:2545 { yyVAL.node = &ast.StmtTraitUse{ast.Node{}, yyDollar[2].list, yyDollar[3].node} @@ -4950,7 +4961,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-10 : yypt+1] - // line internal/php7/php7.y:2546 + // line internal/php7/php7.y:2557 { 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} @@ -4983,7 +4994,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2580 + // line internal/php7/php7.y:2591 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -4991,7 +5002,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2586 + // line internal/php7/php7.y:2597 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5002,7 +5013,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2598 + // line internal/php7/php7.y:2609 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -5016,7 +5027,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2611 + // line internal/php7/php7.y:2622 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, nil} @@ -5030,7 +5041,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2623 + // line internal/php7/php7.y:2634 { yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, yyDollar[2].list} @@ -5044,7 +5055,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2638 + // line internal/php7/php7.y:2649 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -5052,7 +5063,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2644 + // line internal/php7/php7.y:2655 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5060,7 +5071,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2653 + // line internal/php7/php7.y:2664 { yyVAL.node = yyDollar[1].node @@ -5072,7 +5083,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2663 + // line internal/php7/php7.y:2674 { yyVAL.node = yyDollar[1].node @@ -5084,7 +5095,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2676 + // line internal/php7/php7.y:2687 { yyVAL.node = &ast.StmtTraitUsePrecedence{ast.Node{}, yyDollar[1].node, yyDollar[3].list} @@ -5099,7 +5110,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2692 + // line internal/php7/php7.y:2703 { alias := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, nil, alias} @@ -5117,7 +5128,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2708 + // line internal/php7/php7.y:2719 { alias := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, nil, alias} @@ -5135,7 +5146,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2724 + // line internal/php7/php7.y:2735 { alias := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value} yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, alias} @@ -5153,7 +5164,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2740 + // line internal/php7/php7.y:2751 { yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, nil} @@ -5168,7 +5179,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2756 + // line internal/php7/php7.y:2767 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, nil, name} @@ -5184,7 +5195,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2770 + // line internal/php7/php7.y:2781 { yyVAL.node = yyDollar[1].node @@ -5192,7 +5203,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2779 + // line internal/php7/php7.y:2790 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, yyDollar[1].node, target} @@ -5210,7 +5221,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2798 + // line internal/php7/php7.y:2809 { yyVAL.node = &ast.StmtNop{ast.Node{}} @@ -5225,7 +5236,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2811 + // line internal/php7/php7.y:2822 { yyVAL.node = &ast.StmtStmtList{ast.Node{}, yyDollar[2].list} @@ -5240,7 +5251,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2827 + // line internal/php7/php7.y:2838 { yyVAL.list = yyDollar[1].list @@ -5248,7 +5259,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2833 + // line internal/php7/php7.y:2844 { modifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{modifier} @@ -5263,7 +5274,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:2849 + // line internal/php7/php7.y:2860 { yyVAL.list = nil @@ -5271,7 +5282,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2855 + // line internal/php7/php7.y:2866 { yyVAL.list = yyDollar[1].list @@ -5279,7 +5290,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2864 + // line internal/php7/php7.y:2875 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -5287,7 +5298,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2870 + // line internal/php7/php7.y:2881 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -5295,7 +5306,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2879 + // line internal/php7/php7.y:2890 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -5309,7 +5320,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2891 + // line internal/php7/php7.y:2902 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -5323,7 +5334,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2903 + // line internal/php7/php7.y:2914 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -5337,7 +5348,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2915 + // line internal/php7/php7.y:2926 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -5351,7 +5362,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2927 + // line internal/php7/php7.y:2938 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -5365,7 +5376,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2939 + // line internal/php7/php7.y:2950 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -5379,7 +5390,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:2954 + // line internal/php7/php7.y:2965 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5390,7 +5401,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:2963 + // line internal/php7/php7.y:2974 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -5398,7 +5409,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:2972 + // line internal/php7/php7.y:2983 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -5416,7 +5427,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:2988 + // line internal/php7/php7.y:2999 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -5435,7 +5446,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3008 + // line internal/php7/php7.y:3019 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5446,7 +5457,7 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3017 + // line internal/php7/php7.y:3028 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -5454,7 +5465,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3026 + // line internal/php7/php7.y:3037 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtConstant{ast.Node{}, name, yyDollar[3].node} @@ -5471,7 +5482,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3044 + // line internal/php7/php7.y:3055 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.StmtConstant{ast.Node{}, name, yyDollar[3].node} @@ -5488,7 +5499,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3062 + // line internal/php7/php7.y:3073 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5499,7 +5510,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3071 + // line internal/php7/php7.y:3082 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -5507,7 +5518,7 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3080 + // line internal/php7/php7.y:3091 { yyVAL.node = yyDollar[1].node @@ -5515,7 +5526,7 @@ yydefault: } case 289: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:3089 + // line internal/php7/php7.y:3100 { yyVAL.list = nil @@ -5523,7 +5534,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3095 + // line internal/php7/php7.y:3106 { yyVAL.list = yyDollar[1].list @@ -5531,7 +5542,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3104 + // line internal/php7/php7.y:3115 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5542,7 +5553,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3113 + // line internal/php7/php7.y:3124 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -5550,7 +5561,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-8 : yypt+1] - // line internal/php7/php7.y:3122 + // line internal/php7/php7.y:3133 { 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} @@ -5570,7 +5581,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3143 + // line internal/php7/php7.y:3154 { if yyDollar[3].node != nil { yyVAL.node = &ast.ExprNew{ast.Node{}, yyDollar[2].node, yyDollar[3].node.(*ast.ArgumentList)} @@ -5587,7 +5598,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3158 + // line internal/php7/php7.y:3169 { yyVAL.node = &ast.ExprNew{ast.Node{}, yyDollar[2].node, nil} @@ -5601,7 +5612,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:3173 + // line internal/php7/php7.y:3184 { listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, listNode, yyDollar[6].node} @@ -5620,7 +5631,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:3190 + // line internal/php7/php7.y:3201 { shortList := &ast.ExprShortList{ast.Node{}, yyDollar[2].list} yyVAL.node = &ast.ExprAssign{ast.Node{}, shortList, yyDollar[5].node} @@ -5638,7 +5649,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3206 + // line internal/php7/php7.y:3217 { yyVAL.node = &ast.ExprAssign{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5653,7 +5664,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3219 + // line internal/php7/php7.y:3230 { yyVAL.node = &ast.ExprAssignReference{ast.Node{}, yyDollar[1].node, yyDollar[4].node} @@ -5669,7 +5680,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3233 + // line internal/php7/php7.y:3244 { yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node} @@ -5683,7 +5694,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3245 + // line internal/php7/php7.y:3256 { yyVAL.node = &ast.ExprAssignPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5698,7 +5709,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3258 + // line internal/php7/php7.y:3269 { yyVAL.node = &ast.ExprAssignMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5713,7 +5724,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3271 + // line internal/php7/php7.y:3282 { yyVAL.node = &ast.ExprAssignMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5728,7 +5739,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3284 + // line internal/php7/php7.y:3295 { yyVAL.node = &ast.ExprAssignPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5743,7 +5754,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3297 + // line internal/php7/php7.y:3308 { yyVAL.node = &ast.ExprAssignDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5758,7 +5769,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3310 + // line internal/php7/php7.y:3321 { yyVAL.node = &ast.ExprAssignConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5773,7 +5784,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3323 + // line internal/php7/php7.y:3334 { yyVAL.node = &ast.ExprAssignMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5788,7 +5799,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3336 + // line internal/php7/php7.y:3347 { yyVAL.node = &ast.ExprAssignBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5803,7 +5814,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3349 + // line internal/php7/php7.y:3360 { yyVAL.node = &ast.ExprAssignBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5818,7 +5829,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3362 + // line internal/php7/php7.y:3373 { yyVAL.node = &ast.ExprAssignBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5833,7 +5844,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3375 + // line internal/php7/php7.y:3386 { yyVAL.node = &ast.ExprAssignShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5848,7 +5859,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3388 + // line internal/php7/php7.y:3399 { yyVAL.node = &ast.ExprAssignShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5863,7 +5874,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3401 + // line internal/php7/php7.y:3412 { yyVAL.node = &ast.ExprAssignCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5878,7 +5889,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3414 + // line internal/php7/php7.y:3425 { yyVAL.node = &ast.ExprPostInc{ast.Node{}, yyDollar[1].node} @@ -5893,7 +5904,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3427 + // line internal/php7/php7.y:3438 { yyVAL.node = &ast.ExprPreInc{ast.Node{}, yyDollar[2].node} @@ -5907,7 +5918,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3439 + // line internal/php7/php7.y:3450 { yyVAL.node = &ast.ExprPostDec{ast.Node{}, yyDollar[1].node} @@ -5922,7 +5933,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3452 + // line internal/php7/php7.y:3463 { yyVAL.node = &ast.ExprPreDec{ast.Node{}, yyDollar[2].node} @@ -5936,7 +5947,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3464 + // line internal/php7/php7.y:3475 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5951,7 +5962,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3477 + // line internal/php7/php7.y:3488 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5966,7 +5977,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3490 + // line internal/php7/php7.y:3501 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5981,7 +5992,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3503 + // line internal/php7/php7.y:3514 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -5996,7 +6007,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3516 + // line internal/php7/php7.y:3527 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6011,7 +6022,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3529 + // line internal/php7/php7.y:3540 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6026,7 +6037,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3542 + // line internal/php7/php7.y:3553 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6041,7 +6052,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3555 + // line internal/php7/php7.y:3566 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6056,7 +6067,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3568 + // line internal/php7/php7.y:3579 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6071,7 +6082,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3581 + // line internal/php7/php7.y:3592 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6086,7 +6097,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3594 + // line internal/php7/php7.y:3605 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6101,7 +6112,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3607 + // line internal/php7/php7.y:3618 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6116,7 +6127,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3620 + // line internal/php7/php7.y:3631 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6131,7 +6142,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3633 + // line internal/php7/php7.y:3644 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6146,7 +6157,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3646 + // line internal/php7/php7.y:3657 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6161,7 +6172,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3659 + // line internal/php7/php7.y:3670 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6176,7 +6187,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3672 + // line internal/php7/php7.y:3683 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6191,7 +6202,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3685 + // line internal/php7/php7.y:3696 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -6205,7 +6216,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3697 + // line internal/php7/php7.y:3708 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -6219,7 +6230,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3709 + // line internal/php7/php7.y:3720 { yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node} @@ -6233,7 +6244,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3721 + // line internal/php7/php7.y:3732 { yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node} @@ -6247,7 +6258,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3733 + // line internal/php7/php7.y:3744 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6262,7 +6273,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3746 + // line internal/php7/php7.y:3757 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6277,7 +6288,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3759 + // line internal/php7/php7.y:3770 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6292,7 +6303,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3772 + // line internal/php7/php7.y:3783 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6308,7 +6319,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3786 + // line internal/php7/php7.y:3797 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6323,7 +6334,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3799 + // line internal/php7/php7.y:3810 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6338,7 +6349,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3812 + // line internal/php7/php7.y:3823 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6353,7 +6364,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3825 + // line internal/php7/php7.y:3836 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6368,7 +6379,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3838 + // line internal/php7/php7.y:3849 { yyVAL.node = &ast.ExprBinarySpaceship{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6383,7 +6394,7 @@ yydefault: } case 348: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3851 + // line internal/php7/php7.y:3862 { yyVAL.node = &ast.ExprInstanceOf{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6398,19 +6409,22 @@ yydefault: } case 349: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3864 + // line internal/php7/php7.y:3875 { - yyVAL.node = yyDollar[2].node + yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} + + // save position + yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, append(yyDollar[1].token.Tokens, yyVAL.node.GetNode().Tokens[token.Start]...)) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, append(yyVAL.node.GetNode().Tokens[token.End], yyDollar[3].token.Tokens...)) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, yyDollar[1].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[3].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 350: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3874 + // line internal/php7/php7.y:3888 { yyVAL.node = yyDollar[1].node @@ -6418,7 +6432,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:3880 + // line internal/php7/php7.y:3894 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -6434,7 +6448,7 @@ yydefault: } case 352: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:3894 + // line internal/php7/php7.y:3908 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -6450,7 +6464,7 @@ yydefault: } case 353: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:3908 + // line internal/php7/php7.y:3922 { yyVAL.node = &ast.ExprBinaryCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6465,7 +6479,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:3921 + // line internal/php7/php7.y:3935 { yyVAL.node = yyDollar[1].node @@ -6473,7 +6487,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3927 + // line internal/php7/php7.y:3941 { yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node} @@ -6488,7 +6502,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3940 + // line internal/php7/php7.y:3954 { yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node} @@ -6503,7 +6517,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3953 + // line internal/php7/php7.y:3967 { yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node} @@ -6518,7 +6532,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3966 + // line internal/php7/php7.y:3980 { yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node} @@ -6533,7 +6547,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3979 + // line internal/php7/php7.y:3993 { yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node} @@ -6548,7 +6562,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:3992 + // line internal/php7/php7.y:4006 { yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node} @@ -6563,7 +6577,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4005 + // line internal/php7/php7.y:4019 { yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node} @@ -6578,19 +6592,12 @@ yydefault: } case 362: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4018 + // line internal/php7/php7.y:4032 { - var e *ast.ExprExit - if yyDollar[2].node != nil { - e = yyDollar[2].node.(*ast.ExprExit) - } else { - e = &ast.ExprExit{ast.Node{}, false, nil} - } - - yyVAL.node = e + yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[2].node} if bytes.EqualFold(yyDollar[1].token.Value, []byte("die")) { - e.Die = true + yyVAL.node.(*ast.ExprExit).Die = true } // save position @@ -6607,7 +6614,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4045 + // line internal/php7/php7.y:4052 { yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node} @@ -6621,7 +6628,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4057 + // line internal/php7/php7.y:4064 { yyVAL.node = yyDollar[1].node @@ -6629,7 +6636,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4063 + // line internal/php7/php7.y:4070 { yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list} @@ -6643,7 +6650,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4075 + // line internal/php7/php7.y:4082 { yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node} @@ -6657,7 +6664,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4087 + // line internal/php7/php7.y:4094 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil} @@ -6671,7 +6678,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4099 + // line internal/php7/php7.y:4106 { yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node} @@ -6685,7 +6692,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4111 + // line internal/php7/php7.y:4118 { yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node} @@ -6700,7 +6707,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4124 + // line internal/php7/php7.y:4131 { yyVAL.node = &ast.ExprYieldFrom{ast.Node{}, yyDollar[2].node} @@ -6714,7 +6721,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4136 + // line internal/php7/php7.y:4143 { yyVAL.node = yyDollar[1].node @@ -6722,7 +6729,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4142 + // line internal/php7/php7.y:4149 { yyVAL.node = yyDollar[2].node @@ -6745,7 +6752,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-11 : yypt+1] - // line internal/php7/php7.y:4165 + // line internal/php7/php7.y:4172 { yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list} @@ -6778,7 +6785,7 @@ yydefault: } case 374: yyDollar = yyS[yypt-9 : yypt+1] - // line internal/php7/php7.y:4194 + // line internal/php7/php7.y:4201 { yyVAL.node = &ast.ExprArrowFunction{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[4].list, yyDollar[6].node, yyDollar[9].node} @@ -6806,19 +6813,19 @@ yydefault: } case 376: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:4226 + // line internal/php7/php7.y:4233 { yyVAL.token = nil } case 377: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4230 + // line internal/php7/php7.y:4237 { yyVAL.token = yyDollar[1].token } case 378: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:4237 + // line internal/php7/php7.y:4244 { yyVAL.ClosureUse = nil @@ -6826,7 +6833,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4243 + // line internal/php7/php7.y:4250 { yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list} @@ -6842,7 +6849,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4260 + // line internal/php7/php7.y:4267 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6853,7 +6860,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4269 + // line internal/php7/php7.y:4276 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -6861,7 +6868,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4278 + // line internal/php7/php7.y:4285 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier} @@ -6877,7 +6884,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4292 + // line internal/php7/php7.y:4299 { identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -6896,7 +6903,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4312 + // line internal/php7/php7.y:4319 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6910,7 +6917,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4324 + // line internal/php7/php7.y:4331 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6925,7 +6932,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4337 + // line internal/php7/php7.y:4344 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6940,7 +6947,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4350 + // line internal/php7/php7.y:4357 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6954,7 +6961,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4365 + // line internal/php7/php7.y:4372 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -6968,7 +6975,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4377 + // line internal/php7/php7.y:4384 { yyVAL.node = yyDollar[1].node @@ -6976,7 +6983,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4386 + // line internal/php7/php7.y:4393 { yyVAL.node = yyDollar[1].node @@ -6984,7 +6991,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4392 + // line internal/php7/php7.y:4399 { yyVAL.node = yyDollar[1].node @@ -6992,7 +6999,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:4401 + // line internal/php7/php7.y:4408 { yyVAL.node = nil @@ -7000,22 +7007,22 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4407 + // line internal/php7/php7.y:4414 { - yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[2].node} + yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} // save position yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Exit, yyDollar[1].token.Tokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[3].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, yyDollar[1].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[3].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 394: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:4423 + // line internal/php7/php7.y:4430 { yyVAL.list = []ast.Vertex{} @@ -7023,7 +7030,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4429 + // line internal/php7/php7.y:4436 { part := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{part} @@ -7035,7 +7042,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4439 + // line internal/php7/php7.y:4446 { yyVAL.list = yyDollar[1].list @@ -7043,7 +7050,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:4448 + // line internal/php7/php7.y:4455 { yyVAL.node = nil @@ -7051,7 +7058,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4454 + // line internal/php7/php7.y:4461 { yyVAL.node = yyDollar[1].node @@ -7059,7 +7066,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4463 + // line internal/php7/php7.y:4470 { yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list} @@ -7075,7 +7082,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4477 + // line internal/php7/php7.y:4484 { yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list} @@ -7090,7 +7097,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4490 + // line internal/php7/php7.y:4497 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -7104,7 +7111,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4505 + // line internal/php7/php7.y:4512 { yyVAL.node = &ast.ScalarLnumber{ast.Node{}, yyDollar[1].token.Value} @@ -7118,7 +7125,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4517 + // line internal/php7/php7.y:4524 { yyVAL.node = &ast.ScalarDnumber{ast.Node{}, yyDollar[1].token.Value} @@ -7132,7 +7139,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4529 + // line internal/php7/php7.y:4536 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7146,7 +7153,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4541 + // line internal/php7/php7.y:4548 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7160,7 +7167,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4553 + // line internal/php7/php7.y:4560 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7174,7 +7181,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4565 + // line internal/php7/php7.y:4572 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7188,7 +7195,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4577 + // line internal/php7/php7.y:4584 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7202,7 +7209,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4589 + // line internal/php7/php7.y:4596 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7216,7 +7223,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4601 + // line internal/php7/php7.y:4608 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7230,7 +7237,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4613 + // line internal/php7/php7.y:4620 { yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value} @@ -7244,7 +7251,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4625 + // line internal/php7/php7.y:4632 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, []ast.Vertex{encapsed}} @@ -7260,7 +7267,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4639 + // line internal/php7/php7.y:4646 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, nil} @@ -7274,7 +7281,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4651 + // line internal/php7/php7.y:4658 { yyVAL.node = &ast.ScalarEncapsed{ast.Node{}, yyDollar[2].list} @@ -7288,7 +7295,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4663 + // line internal/php7/php7.y:4670 { yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, yyDollar[2].list} @@ -7302,7 +7309,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4675 + // line internal/php7/php7.y:4682 { yyVAL.node = yyDollar[1].node @@ -7310,7 +7317,7 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4681 + // line internal/php7/php7.y:4688 { yyVAL.node = yyDollar[1].node @@ -7318,7 +7325,7 @@ yydefault: } case 418: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4690 + // line internal/php7/php7.y:4697 { yyVAL.node = &ast.ExprConstFetch{ast.Node{}, yyDollar[1].node} @@ -7332,7 +7339,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4702 + // line internal/php7/php7.y:4709 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -7350,7 +7357,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4718 + // line internal/php7/php7.y:4725 { target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value} yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target} @@ -7368,7 +7375,7 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4737 + // line internal/php7/php7.y:4744 { yyVAL.node = yyDollar[1].node @@ -7376,7 +7383,7 @@ yydefault: } case 422: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4743 + // line internal/php7/php7.y:4750 { yyVAL.node = yyDollar[1].node @@ -7384,7 +7391,7 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:4752 + // line internal/php7/php7.y:4759 { yyVAL.node = nil @@ -7392,7 +7399,7 @@ yydefault: } case 424: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4758 + // line internal/php7/php7.y:4765 { yyVAL.node = yyDollar[1].node @@ -7400,7 +7407,7 @@ yydefault: } case 425: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4767 + // line internal/php7/php7.y:4774 { yyVAL.node = yyDollar[1].node @@ -7408,7 +7415,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4776 + // line internal/php7/php7.y:4783 { yyVAL.node = yyDollar[1].node @@ -7416,19 +7423,22 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4782 + // line internal/php7/php7.y:4789 { - yyVAL.node = yyDollar[2].node + yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} + + // save position + yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, append(yyDollar[1].token.Tokens, yyVAL.node.GetNode().Tokens[token.Start]...)) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, append(yyVAL.node.GetNode().Tokens[token.End], yyDollar[3].token.Tokens...)) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, yyDollar[1].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[3].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 428: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4792 + // line internal/php7/php7.y:4802 { yyVAL.node = yyDollar[1].node @@ -7436,7 +7446,7 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4801 + // line internal/php7/php7.y:4811 { yyVAL.node = yyDollar[1].node @@ -7444,19 +7454,22 @@ yydefault: } case 430: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4807 + // line internal/php7/php7.y:4817 { - yyVAL.node = yyDollar[2].node + yyVAL.node = &ast.ParserBrackets{ast.Node{}, yyDollar[2].node} + + // save position + yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token) // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, append(yyDollar[1].token.Tokens, yyVAL.node.GetNode().Tokens[token.Start]...)) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, append(yyVAL.node.GetNode().Tokens[token.End], yyDollar[3].token.Tokens...)) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, yyDollar[1].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[3].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 431: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4817 + // line internal/php7/php7.y:4830 { yyVAL.node = yyDollar[1].node @@ -7464,28 +7477,13 @@ yydefault: } case 432: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4826 + // line internal/php7/php7.y:4839 { yyVAL.node = yyDollar[1].node yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 433: - yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4832 - { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.Tokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.Tokens) - - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) - } - case 434: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php7/php7.y:4845 { @@ -7500,7 +7498,7 @@ yydefault: yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } - case 435: + case 434: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php7/php7.y:4858 { @@ -7515,9 +7513,24 @@ yydefault: yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } - case 436: + case 435: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php7/php7.y:4871 + { + yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} + + // save position + yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) + + // save comments + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.Tokens) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 436: + yyDollar = yyS[yypt-4 : yypt+1] + // line internal/php7/php7.y:4884 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -7532,7 +7545,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4884 + // line internal/php7/php7.y:4897 { yyVAL.node = yyDollar[1].node @@ -7540,7 +7553,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4893 + // line internal/php7/php7.y:4906 { yyVAL.node = yyDollar[1].node @@ -7548,7 +7561,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4899 + // line internal/php7/php7.y:4912 { yyVAL.node = yyDollar[1].node @@ -7556,7 +7569,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4905 + // line internal/php7/php7.y:4918 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7571,7 +7584,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4921 + // line internal/php7/php7.y:4934 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -7587,7 +7600,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4935 + // line internal/php7/php7.y:4948 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -7603,7 +7616,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:4949 + // line internal/php7/php7.y:4962 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7616,21 +7629,6 @@ yydefault: yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 444: - yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:4964 - { - yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[3].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.Tokens) - - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) - } - case 445: yyDollar = yyS[yypt-3 : yypt+1] // line internal/php7/php7.y:4977 { @@ -7643,32 +7641,32 @@ yydefault: yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.Tokens) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 445: + yyDollar = yyS[yypt-3 : yypt+1] + // line internal/php7/php7.y:4990 + { + yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} + + // save position + yyVAL.node.GetNode().Position = position.NewNodesPosition(yyDollar[1].node, yyDollar[3].node) + + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, token.Name, yyDollar[2].token.Tokens) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 446: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:4993 + // line internal/php7/php7.y:5006 { yyVAL.node = yyDollar[1].node yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 447: - yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:4999 - { - yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.Tokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.Tokens) - - yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) - } - case 448: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php7/php7.y:5012 { @@ -7681,11 +7679,26 @@ yydefault: yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.Tokens) yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.Tokens) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 448: + yyDollar = yyS[yypt-4 : yypt+1] + // line internal/php7/php7.y:5025 + { + yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} + + // save position + yyVAL.node.GetNode().Position = position.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token) + + // save comments + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Var, yyDollar[2].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Expr, yyDollar[4].token.Tokens) + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 449: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:5025 + // line internal/php7/php7.y:5038 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7700,7 +7713,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:5038 + // line internal/php7/php7.y:5051 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7715,7 +7728,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:5051 + // line internal/php7/php7.y:5064 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7730,7 +7743,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5067 + // line internal/php7/php7.y:5080 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -7744,7 +7757,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:5079 + // line internal/php7/php7.y:5092 { yyVAL.node = yyDollar[2].node @@ -7756,7 +7769,7 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5089 + // line internal/php7/php7.y:5102 { yyVAL.node = yyDollar[1].node @@ -7764,7 +7777,7 @@ yydefault: } case 455: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5098 + // line internal/php7/php7.y:5111 { yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} @@ -7778,7 +7791,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:5110 + // line internal/php7/php7.y:5123 { yyVAL.node = yyDollar[2].node @@ -7790,7 +7803,7 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5120 + // line internal/php7/php7.y:5133 { yyVAL.node = yyDollar[1].node @@ -7798,7 +7811,7 @@ yydefault: } case 458: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5129 + // line internal/php7/php7.y:5142 { yyVAL.list = yyDollar[1].list @@ -7806,7 +7819,7 @@ yydefault: } case 459: yyDollar = yyS[yypt-0 : yypt+1] - // line internal/php7/php7.y:5138 + // line internal/php7/php7.y:5151 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil} @@ -7814,7 +7827,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5144 + // line internal/php7/php7.y:5157 { yyVAL.node = yyDollar[1].node @@ -7822,7 +7835,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:5153 + // line internal/php7/php7.y:5166 { if len(yyDollar[1].list) == 0 { yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}} @@ -7837,7 +7850,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5166 + // line internal/php7/php7.y:5179 { if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil { yyVAL.list = []ast.Vertex{} @@ -7849,7 +7862,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:5179 + // line internal/php7/php7.y:5192 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node} @@ -7864,7 +7877,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5192 + // line internal/php7/php7.y:5205 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node} @@ -7878,7 +7891,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:5204 + // line internal/php7/php7.y:5217 { reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference} @@ -7896,7 +7909,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:5220 + // line internal/php7/php7.y:5233 { reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node} yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, reference} @@ -7912,7 +7925,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:5234 + // line internal/php7/php7.y:5247 { yyVAL.node = &ast.ExprArrayItem{ast.Node{}, true, nil, yyDollar[2].node} @@ -7926,7 +7939,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:5246 + // line internal/php7/php7.y:5259 { // TODO: Cannot use list() as standalone expression listNode := &ast.ExprList{ast.Node{}, yyDollar[5].list} @@ -7947,7 +7960,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:5265 + // line internal/php7/php7.y:5278 { // TODO: Cannot use list() as standalone expression listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list} @@ -7966,7 +7979,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:5285 + // line internal/php7/php7.y:5298 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -7974,7 +7987,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:5291 + // line internal/php7/php7.y:5304 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value} yyVAL.list = append(yyDollar[1].list, encapsed) @@ -7989,7 +8002,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5304 + // line internal/php7/php7.y:5317 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -7997,7 +8010,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:5310 + // line internal/php7/php7.y:5323 { encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value} yyVAL.list = []ast.Vertex{encapsed, yyDollar[2].node} @@ -8012,7 +8025,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5326 + // line internal/php7/php7.y:5339 { name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, name} @@ -8028,7 +8041,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:5340 + // line internal/php7/php7.y:5353 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -8047,7 +8060,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:5357 + // line internal/php7/php7.y:5370 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -8068,7 +8081,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:5376 + // line internal/php7/php7.y:5389 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -8085,7 +8098,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:5391 + // line internal/php7/php7.y:5404 { name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, name} @@ -8104,7 +8117,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-6 : yypt+1] - // line internal/php7/php7.y:5408 + // line internal/php7/php7.y:5421 { identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value} variable := &ast.ExprVariable{ast.Node{}, identifier} @@ -8125,7 +8138,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:5427 + // line internal/php7/php7.y:5440 { yyVAL.node = yyDollar[2].node @@ -8137,7 +8150,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5440 + // line internal/php7/php7.y:5453 { yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value} @@ -8151,7 +8164,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5452 + // line internal/php7/php7.y:5465 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -8170,7 +8183,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:5469 + // line internal/php7/php7.y:5482 { var lnumber *ast.ScalarLnumber // TODO: add option to handle 64 bit integer @@ -8198,7 +8211,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5495 + // line internal/php7/php7.y:5508 { identifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value} yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier} @@ -8214,7 +8227,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-5 : yypt+1] - // line internal/php7/php7.y:5512 + // line internal/php7/php7.y:5525 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -8234,23 +8247,25 @@ yydefault: } case 486: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:5530 + // line internal/php7/php7.y:5543 { - yyVAL.node = &ast.ExprEmpty{ast.Node{}, yyDollar[3].node} + exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} + yyVAL.node = &ast.ExprEmpty{ast.Node{}, exprBrackets} // save position + exprBrackets.GetNode().Position = position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Empty, yyDollar[2].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, yyDollar[4].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[2].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, yyDollar[4].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 487: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:5544 + // line internal/php7/php7.y:5559 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -8264,7 +8279,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:5556 + // line internal/php7/php7.y:5571 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -8278,23 +8293,25 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - // line internal/php7/php7.y:5568 + // line internal/php7/php7.y:5583 { - yyVAL.node = &ast.ExprEval{ast.Node{}, yyDollar[3].node} + exprBrackets := &ast.ParserBrackets{ast.Node{}, yyDollar[3].node} + yyVAL.node = &ast.ExprEval{ast.Node{}, exprBrackets} // save position + exprBrackets.GetNode().Position = position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token) yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) // save comments yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Eval, yyDollar[2].token.Tokens) - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, yyDollar[4].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[2].token.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, yyDollar[4].token.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } case 490: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:5582 + // line internal/php7/php7.y:5599 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -8308,7 +8325,7 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - // line internal/php7/php7.y:5594 + // line internal/php7/php7.y:5611 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -8322,7 +8339,7 @@ yydefault: } case 492: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5609 + // line internal/php7/php7.y:5626 { yyVAL.list = []ast.Vertex{yyDollar[1].node} @@ -8330,7 +8347,7 @@ yydefault: } case 493: yyDollar = yyS[yypt-3 : yypt+1] - // line internal/php7/php7.y:5615 + // line internal/php7/php7.y:5632 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -8341,7 +8358,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-1 : yypt+1] - // line internal/php7/php7.y:5627 + // line internal/php7/php7.y:5644 { yyVAL.node = yyDollar[1].node diff --git a/internal/php7/php7.y b/internal/php7/php7.y index e125503..d43148c 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -993,38 +993,42 @@ statement: } | T_WHILE '(' expr ')' while_statement { + exprBrackets := &ast.ParserBrackets{ast.Node{}, $3} + switch n := $5.(type) { case *ast.StmtWhile : - n.Cond = $3 + n.Cond = exprBrackets case *ast.StmtAltWhile : - n.Cond = $3 + n.Cond = exprBrackets } $$ = $5 // save position + exprBrackets.GetNode().Position = position.NewTokensPosition($2, $4) $$.GetNode().Position = position.NewTokenNodePosition($1, $5) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) - yylex.(*Parser).setFreeFloating($$, token.While, $2.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $4.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | T_DO statement T_WHILE '(' expr ')' ';' { - $$ = &ast.StmtDo{ast.Node{}, $2, $5} + exprBrackets := &ast.ParserBrackets{ast.Node{}, $5} + $$ = &ast.StmtDo{ast.Node{}, $2, exprBrackets} // save position + exprBrackets.GetNode().Position = position.NewTokensPosition($4, $6) $$.GetNode().Position = position.NewTokensPosition($1, $7) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) yylex.(*Parser).setFreeFloating($$, token.Stmts, $3.Tokens) - yylex.(*Parser).setFreeFloating($$, token.While, $4.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $6.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Cond, $7.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $4.Tokens) + yylex.(*Parser).setFreeFloating(exprBrackets, token.End, append($6.Tokens, $7.Tokens...)) yylex.(*Parser).setToken($$, token.SemiColon, $7.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) @@ -1058,11 +1062,13 @@ statement: } | T_SWITCH '(' expr ')' switch_case_list { + exprBrackets := &ast.ParserBrackets{ast.Node{}, $3} + switch n := $5.(type) { case *ast.StmtSwitch: - n.Cond = $3 + n.Cond = exprBrackets case *ast.StmtAltSwitch: - n.Cond = $3 + n.Cond = exprBrackets default: panic("unexpected node type") } @@ -1070,12 +1076,13 @@ statement: $$ = $5 // save position + exprBrackets.GetNode().Position = position.NewTokensPosition($2, $4) $$.GetNode().Position = position.NewTokenNodePosition($1, $5) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Switch, $2.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $4.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -1977,33 +1984,37 @@ while_statement: if_stmt_without_else: T_IF '(' expr ')' statement { - $$ = &ast.StmtIf{ast.Node{}, $3, $5, nil, nil} + exprBrackets := &ast.ParserBrackets{ast.Node{}, $3} + $$ = &ast.StmtIf{ast.Node{}, exprBrackets, $5, nil, nil} // save position + exprBrackets.GetNode().Position = position.NewTokensPosition($2, $4) $$.GetNode().Position = position.NewTokenNodePosition($1, $5) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) - yylex.(*Parser).setFreeFloating($$, token.If, $2.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $4.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } | if_stmt_without_else T_ELSEIF '(' expr ')' statement { - _elseIf := &ast.StmtElseIf{ast.Node{}, $4, $6} + exprBrackets := &ast.ParserBrackets{ast.Node{}, $4} + _elseIf := &ast.StmtElseIf{ast.Node{}, exprBrackets, $6} $1.(*ast.StmtIf).ElseIf = append($1.(*ast.StmtIf).ElseIf, _elseIf) $$ = $1 // save position + exprBrackets.GetNode().Position = position.NewTokensPosition($3, $5) _elseIf.GetNode().Position = position.NewTokenNodePosition($2, $6) $$.GetNode().Position = position.NewNodesPosition($1, $6) // save comments yylex.(*Parser).setFreeFloating(_elseIf, token.Start, $2.Tokens) - yylex.(*Parser).setFreeFloating(_elseIf, token.ElseIf, $3.Tokens) - yylex.(*Parser).setFreeFloating(_elseIf, token.Expr, $5.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $3.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, $5.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -3862,11 +3873,14 @@ expr_without_variable: } | '(' expr ')' { - $$ = $2; + $$ = &ast.ParserBrackets{ast.Node{}, $2} + + // save position + $$.GetNode().Position = position.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Start, append($1.Tokens, $$.GetNode().Tokens[token.Start]...)) - yylex.(*Parser).setFreeFloatingTokens($$, token.End, append($$.GetNode().Tokens[token.End], $3.Tokens...)) + yylex.(*Parser).setFreeFloatingTokens($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloatingTokens($$, token.End, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4016,17 +4030,10 @@ expr_without_variable: } | T_EXIT exit_expr { - var e *ast.ExprExit; - if $2 != nil { - e = $2.(*ast.ExprExit) - } else { - e = &ast.ExprExit{ast.Node{}, false, nil} - } - - $$ = e + $$ = &ast.ExprExit{ast.Node{}, false, $2} if (bytes.EqualFold($1.Value, []byte("die"))) { - e.Die = true + $$.(*ast.ExprExit).Die = true } // save position @@ -4405,14 +4412,14 @@ exit_expr: } | '(' optional_expr ')' { - $$ = &ast.ExprExit{ast.Node{}, false, $2}; + $$ = &ast.ParserBrackets{ast.Node{}, $2} // save position $$.GetNode().Position = position.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Exit, $1.Tokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $3.Tokens) + yylex.(*Parser).setFreeFloatingTokens($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloatingTokens($$, token.End, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4780,11 +4787,14 @@ dereferencable: } | '(' expr ')' { - $$ = $2; + $$ = &ast.ParserBrackets{ast.Node{}, $2} + + // save position + $$.GetNode().Position = position.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Start, append($1.Tokens, $$.GetNode().Tokens[token.Start]...)) - yylex.(*Parser).setFreeFloatingTokens($$, token.End, append($$.GetNode().Tokens[token.End], $3.Tokens...)) + yylex.(*Parser).setFreeFloatingTokens($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloatingTokens($$, token.End, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -4805,11 +4815,14 @@ callable_expr: } | '(' expr ')' { - $$ = $2; + $$ = &ast.ParserBrackets{ast.Node{}, $2} + + // save position + $$.GetNode().Position = position.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloatingTokens($$, token.Start, append($1.Tokens, $$.GetNode().Tokens[token.Start]...)) - yylex.(*Parser).setFreeFloatingTokens($$, token.End, append($$.GetNode().Tokens[token.End], $3.Tokens...)) + yylex.(*Parser).setFreeFloatingTokens($$, token.Start, $1.Tokens) + yylex.(*Parser).setFreeFloatingTokens($$, token.End, $3.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5528,15 +5541,17 @@ internal_functions_in_yacc: } | T_EMPTY '(' expr ')' { - $$ = &ast.ExprEmpty{ast.Node{}, $3} + exprBrackets := &ast.ParserBrackets{ast.Node{}, $3} + $$ = &ast.ExprEmpty{ast.Node{}, exprBrackets} // save position + exprBrackets.GetNode().Position = position.NewTokensPosition($2, $4) $$.GetNode().Position = position.NewTokensPosition($1, $4) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Empty, $2.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $4.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } @@ -5566,15 +5581,17 @@ internal_functions_in_yacc: } | T_EVAL '(' expr ')' { - $$ = &ast.ExprEval{ast.Node{}, $3} + exprBrackets := &ast.ParserBrackets{ast.Node{}, $3} + $$ = &ast.ExprEval{ast.Node{}, exprBrackets} // save position + exprBrackets.GetNode().Position = position.NewTokensPosition($2, $4) $$.GetNode().Position = position.NewTokensPosition($1, $4) // save comments yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Eval, $2.Tokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $4.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $2.Tokens) + yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, $4.Tokens) yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) } diff --git a/internal/php7/php7_test.go b/internal/php7/php7_test.go index 49f450b..68364f5 100644 --- a/internal/php7/php7_test.go +++ b/internal/php7/php7_test.go @@ -11046,7 +11046,7 @@ func TestPhp7(t *testing.T) { StartLine: 187, EndLine: 187, StartPos: 3780, - EndPos: 3788, + EndPos: 3789, }, }, Expr: &ast.ExprVariable{ @@ -13123,7 +13123,7 @@ func TestPhp7(t *testing.T) { StartLine: 232, EndLine: 232, StartPos: 4298, - EndPos: 4306, + EndPos: 4307, }, }, Expr: &ast.ExprVariable{ @@ -18632,7 +18632,7 @@ func TestPhp7(t *testing.T) { Position: &position.Position{ StartLine: 332, EndLine: 332, - StartPos: 5518, + StartPos: 5517, EndPos: 5532, }, }, @@ -18641,7 +18641,7 @@ func TestPhp7(t *testing.T) { Position: &position.Position{ StartLine: 332, EndLine: 332, - StartPos: 5518, + StartPos: 5517, EndPos: 5531, }, }, @@ -18696,7 +18696,7 @@ func TestPhp7(t *testing.T) { Position: &position.Position{ StartLine: 333, EndLine: 333, - StartPos: 5534, + StartPos: 5533, EndPos: 5545, }, }, @@ -18705,7 +18705,7 @@ func TestPhp7(t *testing.T) { Position: &position.Position{ StartLine: 333, EndLine: 333, - StartPos: 5534, + StartPos: 5533, EndPos: 5544, }, }, diff --git a/pkg/ast/visitor/filter_parser_nodes.go b/pkg/ast/visitor/filter_parser_nodes.go index a7f5529..f1a5655 100644 --- a/pkg/ast/visitor/filter_parser_nodes.go +++ b/pkg/ast/visitor/filter_parser_nodes.go @@ -42,8 +42,12 @@ func (v *FilterParserNodes) StmtUseDeclaration(n *ast.StmtUseDeclaration) { } func (v *FilterParserNodes) StmtAltIf(n *ast.StmtAltIf) { - if nn, ok := n.Cond.(*ast.ParserBrackets); ok { - n.Cond = nn.Child + for { + if nn, ok := n.Cond.(*ast.ParserBrackets); ok { + n.Cond = nn.Child + } else { + break + } } if nn, ok := n.Stmt.(*ast.ParserBrackets); ok { @@ -52,8 +56,12 @@ func (v *FilterParserNodes) StmtAltIf(n *ast.StmtAltIf) { } func (v *FilterParserNodes) StmtAltElseIf(n *ast.StmtAltElseIf) { - if nn, ok := n.Cond.(*ast.ParserBrackets); ok { - n.Cond = nn.Child + for { + if nn, ok := n.Cond.(*ast.ParserBrackets); ok { + n.Cond = nn.Child + } else { + break + } } if nn, ok := n.Stmt.(*ast.ParserBrackets); ok { @@ -66,3 +74,1194 @@ func (v *FilterParserNodes) StmtAltElse(n *ast.StmtAltElse) { n.Stmt = nn.Child } } + +func (v *FilterParserNodes) StmtIf(n *ast.StmtIf) { + for { + if nn, ok := n.Cond.(*ast.ParserBrackets); ok { + n.Cond = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtElseIf(n *ast.StmtElseIf) { + for { + if nn, ok := n.Cond.(*ast.ParserBrackets); ok { + n.Cond = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtWhile(n *ast.StmtWhile) { + for { + if nn, ok := n.Cond.(*ast.ParserBrackets); ok { + n.Cond = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtAltWhile(n *ast.StmtAltWhile) { + for { + if nn, ok := n.Cond.(*ast.ParserBrackets); ok { + n.Cond = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtDo(n *ast.StmtDo) { + for { + if nn, ok := n.Cond.(*ast.ParserBrackets); ok { + n.Cond = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtSwitch(n *ast.StmtSwitch) { + for { + if nn, ok := n.Cond.(*ast.ParserBrackets); ok { + n.Cond = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtAltSwitch(n *ast.StmtAltSwitch) { + for { + if nn, ok := n.Cond.(*ast.ParserBrackets); ok { + n.Cond = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprExit(n *ast.ExprExit) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtContinue(n *ast.StmtContinue) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtBreak(n *ast.StmtBreak) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprClone(n *ast.ExprClone) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprPrint(n *ast.ExprPrint) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtExpression(n *ast.StmtExpression) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtEcho(n *ast.StmtEcho) { + for k, v := range n.Exprs { + for { + if nn, ok := v.(*ast.ParserBrackets); ok { + v = nn.Child + } else { + break + } + } + + n.Exprs[k] = v + } +} + +func (v *FilterParserNodes) ExprIsset(n *ast.ExprIsset) { + for k, v := range n.Vars { + for { + if nn, ok := v.(*ast.ParserBrackets); ok { + v = nn.Child + } else { + break + } + } + + n.Vars[k] = v + } +} + +func (v *FilterParserNodes) StmtReturn(n *ast.StmtReturn) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtForeach(n *ast.StmtForeach) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtAltForeach(n *ast.StmtAltForeach) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprYield(n *ast.ExprYield) { + for { + if nn, ok := n.Key.(*ast.ParserBrackets); ok { + n.Key = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Value.(*ast.ParserBrackets); ok { + n.Value = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) Argument(n *ast.Argument) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtThrow(n *ast.StmtThrow) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtCase(n *ast.StmtCase) { + for { + if nn, ok := n.Cond.(*ast.ParserBrackets); ok { + n.Cond = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprVariable(n *ast.ExprVariable) { + for { + if nn, ok := n.VarName.(*ast.ParserBrackets); ok { + n.VarName = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) StmtFor(n *ast.StmtFor) { + for k, v := range n.Init { + for { + if nn, ok := v.(*ast.ParserBrackets); ok { + v = nn.Child + } else { + break + } + } + + n.Init[k] = v + } + + for k, v := range n.Cond { + for { + if nn, ok := v.(*ast.ParserBrackets); ok { + v = nn.Child + } else { + break + } + } + + n.Cond[k] = v + } + + for k, v := range n.Loop { + for { + if nn, ok := v.(*ast.ParserBrackets); ok { + v = nn.Child + } else { + break + } + } + + n.Loop[k] = v + } +} + +func (v *FilterParserNodes) ExprAssign(n *ast.ExprAssign) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprAssignBitwiseAnd(n *ast.ExprAssignBitwiseAnd) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprAssignBitwiseOr(n *ast.ExprAssignBitwiseOr) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprAssignBitwiseXor(n *ast.ExprAssignBitwiseXor) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprAssignCoalesce(n *ast.ExprAssignCoalesce) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprAssignConcat(n *ast.ExprAssignConcat) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprAssignDiv(n *ast.ExprAssignDiv) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprAssignMinus(n *ast.ExprAssignMinus) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprAssignMod(n *ast.ExprAssignMod) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprAssignMul(n *ast.ExprAssignMul) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprAssignPlus(n *ast.ExprAssignPlus) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprAssignPow(n *ast.ExprAssignPow) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprAssignShiftLeft(n *ast.ExprAssignShiftLeft) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprAssignShiftRight(n *ast.ExprAssignShiftRight) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} +func (v *FilterParserNodes) ExprBinaryBitwiseAnd(n *ast.ExprBinaryBitwiseAnd) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryBitwiseOr(n *ast.ExprBinaryBitwiseOr) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryBitwiseXor(n *ast.ExprBinaryBitwiseXor) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryBooleanAnd(n *ast.ExprBinaryBooleanAnd) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryBooleanOr(n *ast.ExprBinaryBooleanOr) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryCoalesce(n *ast.ExprBinaryCoalesce) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryConcat(n *ast.ExprBinaryConcat) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryDiv(n *ast.ExprBinaryDiv) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryEqual(n *ast.ExprBinaryEqual) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryGreater(n *ast.ExprBinaryGreater) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryGreaterOrEqual(n *ast.ExprBinaryGreaterOrEqual) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryIdentical(n *ast.ExprBinaryIdentical) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryLogicalAnd(n *ast.ExprBinaryLogicalAnd) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryLogicalOr(n *ast.ExprBinaryLogicalOr) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryLogicalXor(n *ast.ExprBinaryLogicalXor) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryMinus(n *ast.ExprBinaryMinus) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryMod(n *ast.ExprBinaryMod) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryMul(n *ast.ExprBinaryMul) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryNotEqual(n *ast.ExprBinaryNotEqual) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryNotIdentical(n *ast.ExprBinaryNotIdentical) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryPlus(n *ast.ExprBinaryPlus) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryPow(n *ast.ExprBinaryPow) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryShiftLeft(n *ast.ExprBinaryShiftLeft) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinaryShiftRight(n *ast.ExprBinaryShiftRight) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinarySmaller(n *ast.ExprBinarySmaller) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinarySmallerOrEqual(n *ast.ExprBinarySmallerOrEqual) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBinarySpaceship(n *ast.ExprBinarySpaceship) { + for { + if nn, ok := n.Left.(*ast.ParserBrackets); ok { + n.Left = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Right.(*ast.ParserBrackets); ok { + n.Right = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprUnaryMinus(n *ast.ExprUnaryMinus) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprUnaryPlus(n *ast.ExprUnaryPlus) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBooleanNot(n *ast.ExprBooleanNot) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprBitwiseNot(n *ast.ExprBitwiseNot) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprInstanceOf(n *ast.ExprInstanceOf) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprTernary(n *ast.ExprTernary) { + for { + if nn, ok := n.Condition.(*ast.ParserBrackets); ok { + n.Condition = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.IfTrue.(*ast.ParserBrackets); ok { + n.IfTrue = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.IfFalse.(*ast.ParserBrackets); ok { + n.IfFalse = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprCastArray(n *ast.ExprCastArray) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprCastBool(n *ast.ExprCastBool) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprCastDouble(n *ast.ExprCastDouble) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprCastInt(n *ast.ExprCastInt) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprCastObject(n *ast.ExprCastObject) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprCastString(n *ast.ExprCastString) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprCastUnset(n *ast.ExprCastUnset) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprErrorSuppress(n *ast.ExprErrorSuppress) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprArrayDimFetch(n *ast.ExprArrayDimFetch) { + for { + if nn, ok := n.Dim.(*ast.ParserBrackets); ok { + n.Dim = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprArrayItem(n *ast.ExprArrayItem) { + for { + if nn, ok := n.Key.(*ast.ParserBrackets); ok { + n.Key = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Val.(*ast.ParserBrackets); ok { + n.Val = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprEmpty(n *ast.ExprEmpty) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprInclude(n *ast.ExprInclude) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprIncludeOnce(n *ast.ExprIncludeOnce) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprEval(n *ast.ExprEval) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprRequire(n *ast.ExprRequire) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprRequireOnce(n *ast.ExprRequireOnce) { + for { + if nn, ok := n.Expr.(*ast.ParserBrackets); ok { + n.Expr = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprPropertyFetch(n *ast.ExprPropertyFetch) { + for { + if nn, ok := n.Var.(*ast.ParserBrackets); ok { + n.Var = nn.Child + } else { + break + } + } + + for { + if nn, ok := n.Property.(*ast.ParserBrackets); ok { + n.Property = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprFunctionCall(n *ast.ExprFunctionCall) { + for { + if nn, ok := n.Function.(*ast.ParserBrackets); ok { + n.Function = nn.Child + } else { + break + } + } +} + +func (v *FilterParserNodes) ExprStaticCall(n *ast.ExprStaticCall) { + for { + if nn, ok := n.Call.(*ast.ParserBrackets); ok { + n.Call = nn.Child + } else { + break + } + } +} diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index 64a32c9..3951b6f 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -1530,11 +1530,16 @@ func (p *Printer) printExprEmpty(n ast.Vertex) { nn := n.(*ast.ExprEmpty) p.printFreeFloating(nn, token.Start) io.WriteString(p.w, "empty") - p.printFreeFloating(nn, token.Empty) - io.WriteString(p.w, "(") + + if _, ok := nn.Expr.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, "(") + } + p.Print(nn.Expr) - p.printFreeFloating(nn, token.Expr) - io.WriteString(p.w, ")") + + if _, ok := nn.Expr.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, ")") + } p.printFreeFloating(nn, token.End) } @@ -1551,12 +1556,18 @@ func (p *Printer) printExprErrorSuppress(n ast.Vertex) { func (p *Printer) printExprEval(n ast.Vertex) { nn := n.(*ast.ExprEval) p.printFreeFloating(nn, token.Start) + io.WriteString(p.w, "eval") - p.printFreeFloating(nn, token.Eval) - io.WriteString(p.w, "(") + + if _, ok := nn.Expr.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, "(") + } + p.Print(nn.Expr) - p.printFreeFloating(nn, token.Expr) - io.WriteString(p.w, ")") + + if _, ok := nn.Expr.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, ")") + } p.printFreeFloating(nn, token.End) } @@ -1570,7 +1581,6 @@ func (p *Printer) printExprExit(n ast.Vertex) { } else { io.WriteString(p.w, "exit") } - p.printFreeFloating(nn, token.Exit) if nn.Expr != nil && nn.Expr.GetNode().Tokens.IsEmpty() && nn.GetNode().Tokens.IsEmpty() { io.WriteString(p.w, " ") @@ -2163,11 +2173,17 @@ func (p *Printer) printStmtAltSwitch(n ast.Vertex) { p.printFreeFloating(nn, token.Start) io.WriteString(p.w, "switch") - p.printFreeFloating(nn, token.Switch) - io.WriteString(p.w, "(") + + if _, ok := nn.Cond.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, "(") + } + p.Print(nn.Cond) - p.printFreeFloating(nn, token.Expr) - io.WriteString(p.w, ")") + + if _, ok := nn.Cond.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, ")") + } + p.printFreeFloating(nn, token.Cond) io.WriteString(p.w, ":") @@ -2192,11 +2208,17 @@ func (p *Printer) printStmtAltWhile(n ast.Vertex) { p.printFreeFloating(nn, token.Start) io.WriteString(p.w, "while") - p.printFreeFloating(nn, token.While) - io.WriteString(p.w, "(") + + if _, ok := nn.Cond.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, "(") + } + p.Print(nn.Cond) - p.printFreeFloating(nn, token.Expr) - io.WriteString(p.w, ")") + + if _, ok := nn.Cond.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, ")") + } + p.printFreeFloating(nn, token.Cond) io.WriteString(p.w, ":") @@ -2543,11 +2565,17 @@ func (p *Printer) printStmtDo(n ast.Vertex) { p.printFreeFloating(nn, token.Stmts) io.WriteString(p.w, "while") - p.printFreeFloating(nn, token.While) - io.WriteString(p.w, "(") + + if _, ok := nn.Cond.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, "(") + } + p.Print(nn.Cond) - p.printFreeFloating(nn, token.Expr) - io.WriteString(p.w, ")") + + if _, ok := nn.Cond.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, ")") + } + p.printFreeFloating(nn, token.Cond) p.printFreeFloating(nn, token.SemiColon) @@ -2587,11 +2615,16 @@ func (p *Printer) printStmtElseif(n ast.Vertex) { p.printFreeFloating(nn, token.Start) io.WriteString(p.w, "elseif") - p.printFreeFloating(nn, token.ElseIf) - io.WriteString(p.w, "(") + + if _, ok := nn.Cond.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, "(") + } + p.Print(nn.Cond) - p.printFreeFloating(nn, token.Expr) - io.WriteString(p.w, ")") + + if _, ok := nn.Cond.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, ")") + } p.Print(nn.Stmt) @@ -2794,11 +2827,16 @@ func (p *Printer) printStmtIf(n ast.Vertex) { p.printFreeFloating(nn, token.Start) io.WriteString(p.w, "if") - p.printFreeFloating(n, token.If) - io.WriteString(p.w, "(") + + if _, ok := nn.Cond.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, "(") + } + p.Print(nn.Cond) - p.printFreeFloating(n, token.Expr) - io.WriteString(p.w, ")") + + if _, ok := nn.Cond.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, ")") + } p.Print(nn.Stmt) @@ -3020,11 +3058,16 @@ func (p *Printer) printStmtSwitch(n ast.Vertex) { p.printFreeFloating(nn, token.Start) io.WriteString(p.w, "switch") - p.printFreeFloating(nn, token.Switch) - io.WriteString(p.w, "(") + + if _, ok := nn.Cond.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, "(") + } + p.Print(nn.Cond) - p.printFreeFloating(nn, token.Expr) - io.WriteString(p.w, ")") + + if _, ok := nn.Cond.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, ")") + } p.printFreeFloating(nn.CaseList, token.Start) io.WriteString(p.w, "{") @@ -3292,11 +3335,16 @@ func (p *Printer) printStmtWhile(n ast.Vertex) { p.printFreeFloating(nn, token.Start) io.WriteString(p.w, "while") - p.printFreeFloating(nn, token.While) - io.WriteString(p.w, "(") + + if _, ok := nn.Cond.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, "(") + } + p.Print(nn.Cond) - p.printFreeFloating(nn, token.Expr) - io.WriteString(p.w, ")") + + if _, ok := nn.Cond.(*ast.ParserBrackets); !ok { + io.WriteString(p.w, ")") + } p.Print(nn.Stmt) diff --git a/pkg/token/position.go b/pkg/token/position.go index 329f8aa..2ea40d4 100644 --- a/pkg/token/position.go +++ b/pkg/token/position.go @@ -27,28 +27,19 @@ const ( Namespace Static - Class Use - While For - Switch Foreach Declare Label Finally List Default - If - ElseIf - Else Function Alias Equal - Exit Array Isset - Empty - Eval Echo Try Catch @@ -68,7 +59,6 @@ const ( AdaptationList LexicalVarList - OpenParenthesisToken CloseParenthesisToken ) diff --git a/pkg/token/position_string.go b/pkg/token/position_string.go index 389ec94..ac7c7b5 100644 --- a/pkg/token/position_string.go +++ b/pkg/token/position_string.go @@ -30,52 +30,42 @@ func _() { _ = x[Cond-19] _ = x[Namespace-20] _ = x[Static-21] - _ = x[Class-22] - _ = x[Use-23] - _ = x[While-24] - _ = x[For-25] - _ = x[Switch-26] - _ = x[Foreach-27] - _ = x[Declare-28] - _ = x[Label-29] - _ = x[Finally-30] - _ = x[List-31] - _ = x[Default-32] - _ = x[If-33] - _ = x[ElseIf-34] - _ = x[Else-35] - _ = x[Function-36] - _ = x[Alias-37] - _ = x[Equal-38] - _ = x[Exit-39] - _ = x[Array-40] - _ = x[Isset-41] - _ = x[Empty-42] - _ = x[Eval-43] - _ = x[Echo-44] - _ = x[Try-45] - _ = x[Catch-46] - _ = x[Unset-47] - _ = x[Stmts-48] - _ = x[VarList-49] - _ = x[ConstList-50] - _ = x[NameList-51] - _ = x[ParamList-52] - _ = x[ModifierList-53] - _ = x[ArrayPairList-54] - _ = x[CaseListStart-55] - _ = x[CaseListEnd-56] - _ = x[PropertyList-57] - _ = x[ParameterList-58] - _ = x[AdaptationList-59] - _ = x[LexicalVarList-60] - _ = x[OpenParenthesisToken-61] - _ = x[CloseParenthesisToken-62] + _ = x[Use-22] + _ = x[For-23] + _ = x[Foreach-24] + _ = x[Declare-25] + _ = x[Label-26] + _ = x[Finally-27] + _ = x[List-28] + _ = x[Default-29] + _ = x[Function-30] + _ = x[Alias-31] + _ = x[Equal-32] + _ = x[Array-33] + _ = x[Isset-34] + _ = x[Echo-35] + _ = x[Try-36] + _ = x[Catch-37] + _ = x[Unset-38] + _ = x[Stmts-39] + _ = x[VarList-40] + _ = x[ConstList-41] + _ = x[NameList-42] + _ = x[ParamList-43] + _ = x[ModifierList-44] + _ = x[ArrayPairList-45] + _ = x[CaseListStart-46] + _ = x[CaseListEnd-47] + _ = x[PropertyList-48] + _ = x[ParameterList-49] + _ = x[AdaptationList-50] + _ = x[LexicalVarList-51] + _ = x[CloseParenthesisToken-52] } -const _Position_name = "StartEndSemiColonAltEndAmpersandNameKeyVarReturnTypeCaseSeparatorLexicalVarsParamsRefCastExprInitExprCondExprIncExprTrueCondNamespaceStaticClassUseWhileForSwitchForeachDeclareLabelFinallyListDefaultIfElseIfElseFunctionAliasEqualExitArrayIssetEmptyEvalEchoTryCatchUnsetStmtsVarListConstListNameListParamListModifierListArrayPairListCaseListStartCaseListEndPropertyListParameterListAdaptationListLexicalVarListOpenParenthesisTokenCloseParenthesisToken" +const _Position_name = "StartEndSemiColonAltEndAmpersandNameKeyVarReturnTypeCaseSeparatorLexicalVarsParamsRefCastExprInitExprCondExprIncExprTrueCondNamespaceStaticUseForForeachDeclareLabelFinallyListDefaultFunctionAliasEqualArrayIssetEchoTryCatchUnsetStmtsVarListConstListNameListParamListModifierListArrayPairListCaseListStartCaseListEndPropertyListParameterListAdaptationListLexicalVarListCloseParenthesisToken" -var _Position_index = [...]uint16{0, 5, 8, 17, 23, 32, 36, 39, 42, 52, 65, 76, 82, 85, 89, 93, 101, 109, 116, 120, 124, 133, 139, 144, 147, 152, 155, 161, 168, 175, 180, 187, 191, 198, 200, 206, 210, 218, 223, 228, 232, 237, 242, 247, 251, 255, 258, 263, 268, 273, 280, 289, 297, 306, 318, 331, 344, 355, 367, 380, 394, 408, 428, 449} +var _Position_index = [...]uint16{0, 5, 8, 17, 23, 32, 36, 39, 42, 52, 65, 76, 82, 85, 89, 93, 101, 109, 116, 120, 124, 133, 139, 142, 145, 152, 159, 164, 171, 175, 182, 190, 195, 200, 205, 210, 214, 217, 222, 227, 232, 239, 248, 256, 265, 277, 290, 303, 314, 326, 339, 353, 367, 388} func (i Position) String() string { if i < 0 || i >= Position(len(_Position_index)-1) {