diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 400b632..f22f338 100644 --- a/internal/php5/php5.go +++ b/internal/php5/php5.go @@ -344,7 +344,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php5/php5.y:6521 +// line internal/php5/php5.y:6520 type simpleIndirectReference struct { all []*ast.ExprVariable @@ -701,11 +701,11 @@ var yyAct = [...]int{ 836, 566, 1006, 39, 572, 1012, 531, 1005, 725, 1013, 341, 698, 531, 531, 993, 572, 1016, 518, 716, 538, 422, 39, 658, 664, 665, 672, 673, 674, 675, 678, - 679, 929, 460, 259, 446, 231, 31, 231, 256, 654, - 531, 318, 296, 656, 655, 39, 260, 261, 449, 314, - 127, 39, 403, 657, 659, 660, 676, 677, 666, 575, - 147, 151, 155, 903, 401, 335, 165, 945, 478, 685, - 995, 1009, 483, 343, 198, 290, 394, 389, 939, 206, + 679, 460, 318, 259, 446, 231, 31, 231, 256, 654, + 531, 314, 296, 656, 655, 39, 260, 261, 449, 127, + 403, 39, 575, 657, 659, 660, 676, 677, 666, 903, + 147, 151, 155, 401, 335, 945, 165, 685, 478, 995, + 1009, 929, 483, 343, 198, 290, 394, 389, 939, 206, 896, 164, 157, 161, 528, 231, 608, 997, 531, 970, 223, 969, 968, 967, 235, 236, 237, 238, 260, 261, 240, 838, 242, 243, 244, 245, 246, 247, 248, 837, @@ -1614,9 +1614,9 @@ var yyPgo = [...]int{ 1118, 2, 1117, 1116, 1113, 16, 1112, 1111, 1109, 1101, 48, 5, 1093, 1092, 1091, 1089, 1087, 6, 1086, 1017, 1084, 1083, 1082, 18, 1042, 1081, 1080, 1078, 1077, 1076, - 1075, 41, 1073, 1072, 4, 1071, 1070, 17, 1069, 12, - 1067, 1065, 7, 21, 1064, 25, 1063, 1059, 1052, 14, - 39, 0, 1050, 1049, 1041, 391, 619, 1032, 1031, 1019, + 1075, 41, 1073, 1072, 4, 1071, 1070, 1069, 17, 1067, + 12, 1065, 1064, 7, 21, 1063, 25, 1059, 1052, 1050, + 14, 39, 0, 1049, 1041, 1032, 391, 619, 1031, 1019, 1011, 1010, 30, 52, 1008, 1007, 1002, 3, 1001, 15, 1000, 999, 996, 993, 992, 984, 983, 972, 23, 969, 19, 9, 968, 37, 965, 964, 963, 962, 182, 13, @@ -1624,26 +1624,26 @@ var yyPgo = [...]int{ } var yyR1 = [...]int{ - 0, 151, 110, 110, 111, 111, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 112, 112, - 6, 6, 6, 6, 113, 113, 7, 7, 7, 7, - 114, 114, 8, 8, 8, 8, 55, 55, 115, 115, + 0, 151, 111, 111, 112, 112, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 113, 113, + 6, 6, 6, 6, 114, 114, 7, 7, 7, 7, + 115, 115, 8, 8, 8, 8, 55, 55, 116, 116, 26, 26, 26, 26, 26, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 124, 124, 60, 60, 125, 125, 126, 126, 61, 88, 88, 58, 53, 54, 149, 149, 150, 150, 62, 63, 63, 66, 66, 66, 66, - 104, 104, 2, 108, 108, 107, 107, 105, 105, 103, - 103, 102, 102, 102, 100, 100, 99, 99, 59, 59, + 105, 105, 2, 109, 109, 108, 108, 106, 106, 104, + 104, 103, 103, 103, 101, 101, 100, 100, 59, 59, 89, 89, 92, 92, 92, 92, 123, 123, 123, 4, - 4, 101, 101, 119, 119, 120, 120, 56, 56, 57, + 4, 102, 102, 119, 119, 120, 120, 56, 56, 57, 57, 127, 127, 128, 128, 65, 65, 64, 64, 64, 64, 84, 84, 84, 93, 93, 70, 70, 70, 70, 82, 82, 29, 29, 29, 81, 81, 81, 81, 129, - 129, 67, 67, 67, 67, 69, 106, 106, 87, 87, - 132, 132, 133, 133, 71, 71, 72, 96, 96, 75, - 75, 74, 73, 73, 76, 76, 95, 95, 130, 130, + 129, 67, 67, 67, 67, 69, 107, 107, 87, 87, + 132, 132, 133, 133, 71, 71, 72, 97, 97, 75, + 75, 74, 73, 73, 76, 76, 96, 96, 130, 130, 131, 131, 134, 134, 77, 77, 77, 77, 77, 77, 86, 86, 86, 86, 68, 68, 85, 85, 122, 122, 121, 121, 138, 138, 136, 136, 137, 137, 137, 139, @@ -1655,8 +1655,8 @@ var yyR1 = [...]int{ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 52, 52, 52, 52, - 49, 49, 49, 49, 48, 48, 1, 109, 109, 118, - 118, 118, 118, 25, 25, 25, 25, 25, 25, 25, + 49, 49, 49, 49, 48, 48, 1, 110, 110, 95, + 95, 95, 95, 25, 25, 25, 25, 25, 25, 25, 25, 13, 13, 13, 13, 47, 47, 47, 45, 45, 43, 43, 146, 146, 145, 51, 51, 51, 135, 135, 135, 83, 83, 9, 9, 9, 9, 9, 9, 9, @@ -1666,16 +1666,16 @@ var yyR1 = [...]int{ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 37, 37, 37, 37, 31, 31, 31, 31, 31, 31, - 31, 97, 97, 3, 3, 98, 98, 98, 98, 16, + 31, 98, 98, 3, 3, 99, 99, 99, 99, 16, 16, 50, 50, 18, 19, 20, 21, 21, 147, 147, 140, 142, 142, 78, 141, 141, 141, 42, 42, 46, 46, 14, 24, 24, 22, 22, 22, 23, 23, 23, 12, 12, 12, 11, 11, 15, 15, 143, 143, 144, 144, 144, 41, 41, 148, 148, 94, 94, 40, 40, 40, 91, 91, 90, 90, 90, 90, 90, 90, 90, - 90, 116, 116, 116, 116, 35, 35, 35, 35, 35, + 90, 117, 117, 117, 117, 35, 35, 35, 35, 35, 35, 35, 36, 36, 36, 39, 39, 39, 39, 39, - 39, 39, 39, 117, 117, 38, 38, 32, 32, 33, + 39, 39, 39, 118, 118, 38, 38, 32, 32, 33, 34, } @@ -1736,7 +1736,7 @@ var yyR2 = [...]int{ } var yyChk = [...]int{ - -1000, -151, -110, -5, 2, -27, -53, -54, 52, 80, + -1000, -151, -111, -5, 2, -27, -53, -54, 52, 80, 45, -55, -28, 10, -62, -63, 39, 144, 7, 21, 20, 23, 30, 34, 35, 40, -52, 47, 99, 19, 14, -16, 49, 25, 27, 146, 41, 44, 36, -1, @@ -1746,10 +1746,10 @@ var yyChk = [...]int{ 113, 114, 6, 158, -31, -49, -48, 143, 97, -22, 92, 50, 51, 4, 5, 85, 86, 87, 11, -37, -34, -9, 142, 75, 63, 18, 61, 150, -23, -24, - -25, -32, -111, 83, -13, 8, 9, 67, 68, 82, + -25, -32, -112, 83, -13, 8, 9, 67, 68, 82, 64, 65, 66, 81, -12, -148, -46, -14, -42, -11, - 159, 12, 148, -111, 144, 83, 10, -112, 37, 39, - -6, -111, 83, 146, 160, 147, 10, -115, -50, 148, + 159, 12, 148, -112, 144, 83, 10, -113, 37, 39, + -6, -112, 83, 146, 160, 147, 10, -116, -50, 148, -50, -27, -1, 80, 148, -50, 146, -16, 98, 99, 146, -16, 146, -17, -21, -16, 146, -82, -29, 12, 159, -81, -1, 12, -85, -16, 146, 131, 132, 88, @@ -1758,87 +1758,87 @@ var yyChk = [...]int{ 168, 141, 91, 152, 148, 148, 148, 144, -16, 10, -149, 153, 10, 10, -17, -21, -16, 53, 53, 162, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 148, -16, 105, 106, -20, -21, -111, 80, + 128, 129, 148, -16, 105, 106, -20, -21, -112, 80, 83, -13, -14, 99, -20, -16, -16, -16, -16, -44, -16, -52, -16, -16, -16, -16, -16, -16, -16, -51, - 148, -50, -16, 150, 150, -135, 17, -116, -35, 12, - 77, 78, -16, 58, -45, -13, -43, -111, 80, 83, + 148, -50, -16, 150, 150, -135, 17, -117, -35, 12, + 77, 78, -16, 58, -45, -13, -43, -112, 80, 83, -23, -12, -148, -14, 148, 148, -16, -16, 148, -16, - -16, 150, -116, 17, 17, 76, -116, 150, 148, -91, - -90, -16, 153, 150, 150, 83, -84, 148, -111, 79, + -16, 150, -117, 17, 17, 76, -117, 150, 148, -91, + -90, -16, 153, 150, 150, 83, -84, 148, -112, 79, 150, 144, -12, 159, 79, -84, 144, 149, 146, 144, - -110, -111, 146, 160, -113, -7, -111, 83, -114, -8, - -111, 83, 29, -111, 10, 162, -26, 145, 2, -27, - -53, -54, 52, -27, 147, -101, -27, 147, 21, -149, + -111, -112, 146, 160, -114, -7, -112, 83, -115, -8, + -112, 83, 29, -112, 10, 162, -26, 145, 2, -27, + -53, -54, 52, -27, 147, -102, -27, 147, 21, -149, -122, -121, -16, -92, 144, 147, 146, 146, 146, 146, 146, 160, -18, 144, -21, 146, 160, -149, 162, 146, 160, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -45, -16, 147, -88, - -58, -21, -21, -17, -89, 10, -115, 146, 146, 10, - 148, -104, 56, -108, 56, 59, -16, 153, -16, -16, + -58, -21, -21, -17, -89, 10, -116, 146, 146, 10, + 148, -105, 56, -109, 56, 59, -16, 153, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, - -94, -40, -21, 60, 83, -111, 79, 79, 149, 149, + -94, -40, -21, 60, 83, -112, 79, 79, 149, 149, 149, 149, -15, -16, -15, 143, -35, -35, 17, 150, 58, -16, 11, -21, -143, -144, -42, -41, -12, -148, - 10, 144, -83, -84, 79, 83, -111, 58, -12, 79, - -117, -38, -21, -17, -21, -16, -16, -15, 142, 76, + 10, 144, -83, -84, 79, 83, -112, 58, -12, 79, + -118, -38, -21, -17, -21, -16, -16, -15, 142, 76, 76, -15, -91, 151, -3, 160, 59, -19, -21, -15, -15, 10, 149, -93, -52, -70, -17, -21, 153, 84, -84, -41, -42, 10, 53, -15, -16, -41, -42, 10, - -16, 146, -110, 145, -84, -6, 146, 160, 29, -111, - 146, 160, 29, -111, 10, 29, 162, -30, -79, -9, - -33, -111, 80, 83, 61, 150, -10, 63, -80, 18, - 75, -13, 156, 157, 155, 154, 148, 148, -119, -115, - -115, -50, 146, 160, -123, 146, -123, 146, -29, -16, + -16, 146, -111, 145, -84, -6, 146, 160, 29, -112, + 146, 160, 29, -112, 10, 29, 162, -30, -79, -9, + -33, -112, 80, 83, 61, 150, -10, 63, -80, 18, + 75, -13, 156, 157, 155, 154, 148, 148, -119, -116, + -116, -50, 146, 160, -123, 146, -123, 146, -29, -16, 12, 148, -30, -16, 147, -16, 149, 160, 29, 29, 149, 160, 162, 145, 148, -127, -128, -65, -64, 61, - 62, -47, -111, 80, 83, -107, 57, -47, 144, -105, - -47, -17, -21, -21, 92, 149, 160, 148, -111, -139, + 62, -47, -112, 80, 83, -108, 57, -47, 144, -106, + -47, -17, -21, -21, 92, 149, 160, 148, -112, -139, -137, -136, -138, 150, -140, 58, 151, 151, -36, 10, 13, 12, 10, 145, 145, 150, 145, -141, -78, -142, - -84, 150, 144, -12, -16, -42, -111, -143, -42, 149, + -84, 150, 144, -12, -16, -42, -112, -143, -42, 149, 160, 149, 149, 149, 151, 151, 149, -16, 153, -16, 153, 151, 151, 149, 160, 149, -19, -16, -84, -84, 151, 145, -84, -84, 145, 145, -7, 10, 29, -8, 10, 29, 10, -30, 150, 155, 154, 164, 133, 165, 166, 161, 153, 163, 134, 135, 169, 89, 90, 88, 132, 131, 136, 137, 138, 139, 167, 168, 140, 141, - 152, 83, -111, 148, -97, -98, -79, 17, 79, -79, + 152, 83, -112, 148, -98, -99, -79, 17, 79, -79, -79, -79, -79, -79, 149, -56, 94, 95, -120, 22, 146, -122, -16, 145, 32, 33, -123, 31, -123, 145, - 162, -127, -16, 146, -58, -102, -21, 153, 60, -102, + 162, -127, -16, 146, -58, -103, -21, 153, 60, -103, -59, -27, 147, 10, -30, -124, 42, -127, 149, 160, - -149, 83, -111, 144, -105, -129, 160, -45, 162, -40, + -149, 83, -112, 144, -106, -129, 160, -45, 162, -40, -94, 150, -138, -140, -15, -143, 151, -16, -147, 150, 150, -15, -16, 145, -146, -38, 59, -19, -19, -70, 10, 10, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, 147, -79, - -111, -97, 151, -3, 160, 59, 10, 53, 149, 146, + -112, -98, 151, -3, 160, 59, 10, 53, 149, 146, -50, -27, -57, 94, 95, 146, 146, -16, -4, 147, - 146, 145, 146, 31, -30, 149, -103, 59, -21, 148, - -103, -115, 162, -60, 43, 148, 149, -109, 45, -65, - -150, 84, -111, -129, 145, -67, -130, -68, -69, -131, + 146, 145, 146, 31, -30, 149, -104, 59, -21, 148, + -104, -116, 162, -60, 43, 148, 149, -110, 45, -65, + -150, 84, -112, -129, 145, -67, -130, -68, -69, -131, -134, 48, 39, 45, -77, 104, 103, 102, 99, 100, 101, -47, -83, -16, 149, -15, 151, -141, 151, -140, -15, -15, 151, 145, -145, 58, -16, 153, 151, -79, 147, 149, -79, -79, -27, 96, -50, 147, -122, -4, - -115, 146, -109, 149, -102, -94, 149, 28, -30, 144, + -116, 146, -110, 149, -103, -94, 149, 28, -30, 144, -47, 144, 144, 148, 12, 145, -86, 12, 146, 160, - -1, -77, 10, -106, -47, 151, 145, 151, 151, -143, - -19, -79, 59, 146, 147, -115, 149, -115, 144, -99, - -27, 147, 149, -99, 146, -115, 12, -115, -115, -118, + -1, -77, 10, -107, -47, 151, 145, 151, 151, -143, + -19, -79, 59, 146, 147, -116, 149, -116, 144, -100, + -27, 147, 149, -100, 146, -116, 12, -116, -116, -95, 12, 153, 162, 146, 160, 162, 10, -149, 162, -87, - 160, 146, 144, -79, -115, -100, -27, 147, -115, -115, + 160, 146, 144, -79, -116, -101, -27, 147, -116, -116, 145, 149, 145, 145, 149, 160, 12, -16, 12, -30, 162, 10, -30, -47, -132, -133, -71, -72, -73, -74, - -75, -47, 10, -115, 145, 26, 144, 12, 153, 162, + -75, -47, 10, -116, 145, 26, 144, 12, 153, 162, -30, 148, 145, -71, 146, 146, 46, 29, 79, 24, - 146, -115, 12, -30, -127, -96, -47, -76, -77, 10, - 146, 145, 149, 160, 10, -125, -126, -61, 42, -95, - 146, 144, -47, -61, 148, -115, -47, 145, 12, 149, - 144, -115, 145, + 146, -116, 12, -30, -127, -97, -47, -76, -77, 10, + 146, 145, 149, 160, 10, -125, -126, -61, 42, -96, + 146, 144, -47, -61, 148, -116, -47, 145, 12, 149, + 144, -116, 145, } var yyDef = [...]int{ @@ -6254,13 +6254,13 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] // line internal/php5/php5.y:3892 { - yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ExprErrorSuppress{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + AtTkn: yyDollar[1].token, + Expr: yyDollar[2].node, + } } case 298: yyDollar = yyS[yypt-1 : yypt+1] @@ -6512,107 +6512,116 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php5/php5.y:4123 { - yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list} - - // save position - yyVAL.ClosureUse.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.ClosureUse, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.ClosureUse, token.Use, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.ClosureUse, token.LexicalVarList, yyDollar[4].token.SkippedTokens) + yyVAL.ClosureUse = &ast.ExprClosureUse{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), + }, + UseTkn: yyDollar[1].token, + OpenParenthesisTkn: yyDollar[2].token, + Uses: yyDollar[3].node.(*ast.ParserSeparatedList).Items, + SeparatorTkns: yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, + CloseParenthesisTkn: yyDollar[4].token, + } } case 319: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4138 +// line internal/php5/php5.y:4139 { - identifier := &ast.Identifier{ + variable := &ast.ExprVariable{ Node: ast.Node{ Position: position.NewTokenPosition(yyDollar[3].token), }, - IdentifierTkn: yyDollar[3].token, - Value: yyDollar[3].token.Value, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[3].token), + }, + IdentifierTkn: yyDollar[3].token, + Value: yyDollar[3].token.Value, + }, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - yyVAL.list = append(yyDollar[1].list, variable) - // save position - variable.GetNode().Position = position.NewTokenPosition(yyDollar[3].token) + yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) + yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, variable) - // save comments - yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(variable, token.Start, yyDollar[3].token.SkippedTokens) + yyVAL.node = yyDollar[1].node } case 320: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4157 +// line internal/php5/php5.y:4159 { - identifier := &ast.Identifier{ + reference := &ast.ExprReference{ Node: ast.Node{ - Position: position.NewTokenPosition(yyDollar[4].token), + Position: position.NewTokensPosition(yyDollar[3].token, yyDollar[4].token), + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[4].token), + }, + IdentifierTkn: yyDollar[4].token, + Value: yyDollar[4].token.Value, + }, }, - IdentifierTkn: yyDollar[4].token, - Value: yyDollar[4].token.Value, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - reference := &ast.ExprReference{ast.Node{}, variable} - yyVAL.list = append(yyDollar[1].list, reference) - // save position - variable.GetNode().Position = position.NewTokenPosition(yyDollar[4].token) - reference.GetNode().Position = position.NewTokensPosition(yyDollar[3].token, yyDollar[4].token) + yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) + yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, reference) - // save comments - yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(reference, token.Start, yyDollar[3].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(variable, token.Start, yyDollar[4].token.SkippedTokens) + yyVAL.node = yyDollar[1].node } case 321: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4179 +// line internal/php5/php5.y:4184 { - identifier := &ast.Identifier{ - Node: ast.Node{ - Position: position.NewTokenPosition(yyDollar[1].token), + yyVAL.node = &ast.ParserSeparatedList{ + Items: []ast.Vertex{ + &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[1].token), + }, + IdentifierTkn: yyDollar[1].token, + Value: yyDollar[1].token.Value, + }, + }, }, - IdentifierTkn: yyDollar[1].token, - Value: yyDollar[1].token.Value, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - yyVAL.list = []ast.Vertex{variable} - - // save position - variable.GetNode().Position = position.NewTokenPosition(yyDollar[1].token) - - // save comments - yylex.(*Parser).setFreeFloating(variable, token.Start, yyDollar[1].token.SkippedTokens) } case 322: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4197 +// line internal/php5/php5.y:4203 { - identifier := &ast.Identifier{ - Node: ast.Node{ - Position: position.NewTokenPosition(yyDollar[2].token), + yyVAL.node = &ast.ParserSeparatedList{ + Items: []ast.Vertex{ + &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition(yyDollar[2].token), + }, + IdentifierTkn: yyDollar[2].token, + Value: yyDollar[2].token.Value, + }, + }, + }, }, - IdentifierTkn: yyDollar[2].token, - Value: yyDollar[2].token.Value, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - reference := &ast.ExprReference{ast.Node{}, variable} - yyVAL.list = []ast.Vertex{reference} - - // save position - variable.GetNode().Position = position.NewTokenPosition(yyDollar[2].token) - reference.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token) - - // save comments - yylex.(*Parser).setFreeFloating(reference, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(variable, token.Start, yyDollar[2].token.SkippedTokens) } case 323: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4221 +// line internal/php5/php5.y:4230 { name := &ast.NameName{ Node: ast.Node{ @@ -6627,7 +6636,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4234 +// line internal/php5/php5.y:4243 { name := &ast.NameRelative{ Node: ast.Node{ @@ -6644,7 +6653,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4249 +// line internal/php5/php5.y:4258 { name := &ast.NameFullyQualified{ Node: ast.Node{ @@ -6660,7 +6669,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4263 +// line internal/php5/php5.y:4272 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6673,7 +6682,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4274 +// line internal/php5/php5.y:4283 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6686,7 +6695,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4285 +// line internal/php5/php5.y:4294 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6699,7 +6708,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4296 +// line internal/php5/php5.y:4305 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6712,7 +6721,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4307 +// line internal/php5/php5.y:4316 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6724,7 +6733,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4320 +// line internal/php5/php5.y:4329 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -6736,7 +6745,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4330 +// line internal/php5/php5.y:4339 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -6747,7 +6756,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4339 +// line internal/php5/php5.y:4348 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -6760,7 +6769,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4350 +// line internal/php5/php5.y:4359 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -6772,7 +6781,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4363 +// line internal/php5/php5.y:4372 { yyVAL.node = &ast.NameName{ Node: ast.Node{ @@ -6783,7 +6792,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4372 +// line internal/php5/php5.y:4381 { yyVAL.node = &ast.NameRelative{ Node: ast.Node{ @@ -6796,7 +6805,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4383 +// line internal/php5/php5.y:4392 { yyVAL.node = &ast.NameFullyQualified{ Node: ast.Node{ @@ -6808,19 +6817,19 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4396 +// line internal/php5/php5.y:4405 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4400 +// line internal/php5/php5.y:4409 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4407 +// line internal/php5/php5.y:4416 { yyVAL.node = yyDollar[1].node @@ -6861,25 +6870,25 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4446 +// line internal/php5/php5.y:4455 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4454 +// line internal/php5/php5.y:4463 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4458 +// line internal/php5/php5.y:4467 { yyVAL.list = []ast.Vertex{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4466 +// line internal/php5/php5.y:4475 { yyVAL.list = yyDollar[2].list @@ -6888,13 +6897,13 @@ yydefault: } case 345: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4476 +// line internal/php5/php5.y:4485 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4480 +// line internal/php5/php5.y:4489 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6910,19 +6919,19 @@ yydefault: } case 347: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4494 +// line internal/php5/php5.y:4503 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4501 +// line internal/php5/php5.y:4510 { yyVAL.list = []ast.Vertex{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4505 +// line internal/php5/php5.y:4514 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6936,25 +6945,25 @@ yydefault: } case 350: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4517 +// line internal/php5/php5.y:4526 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:4524 +// line internal/php5/php5.y:4533 { yyVAL.node = nil } case 352: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4528 +// line internal/php5/php5.y:4537 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4535 +// line internal/php5/php5.y:4544 { yyVAL.node = &ast.ScalarLnumber{ Node: ast.Node{ @@ -6966,7 +6975,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4545 +// line internal/php5/php5.y:4554 { yyVAL.node = &ast.ScalarDnumber{ Node: ast.Node{ @@ -6978,7 +6987,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4555 +// line internal/php5/php5.y:4564 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -6990,7 +6999,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4565 +// line internal/php5/php5.y:4574 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7002,7 +7011,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4575 +// line internal/php5/php5.y:4584 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7014,7 +7023,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4585 +// line internal/php5/php5.y:4594 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7026,7 +7035,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4595 +// line internal/php5/php5.y:4604 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7038,7 +7047,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4605 +// line internal/php5/php5.y:4614 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7050,7 +7059,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4615 +// line internal/php5/php5.y:4624 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7062,7 +7071,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4625 +// line internal/php5/php5.y:4634 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7074,7 +7083,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4635 +// line internal/php5/php5.y:4644 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7095,7 +7104,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4654 +// line internal/php5/php5.y:4663 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7107,7 +7116,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4667 +// line internal/php5/php5.y:4676 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -7126,73 +7135,76 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4687 +// line internal/php5/php5.y:4696 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4694 +// line internal/php5/php5.y:4703 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4698 +// line internal/php5/php5.y:4707 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4702 +// line internal/php5/php5.y:4711 { - name := &ast.NameName{ + yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ Position: position.NewNodeListPosition(yyDollar[1].list), }, - Parts: yyDollar[1].list, + Const: &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition(yyDollar[1].list), + }, + Parts: yyDollar[1].list, + }, } - yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} - - // save position - yyVAL.node.GetNode().Position = position.NewNodePosition(name) } case 370: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4715 +// line internal/php5/php5.y:4725 { - name := &ast.NameRelative{ + yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list), }, - NsTkn: yyDollar[1].token, - NsSeparatorTkn: yyDollar[2].token, - Parts: yyDollar[3].list, + Const: &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list), + }, + NsTkn: yyDollar[1].token, + NsSeparatorTkn: yyDollar[2].token, + Parts: yyDollar[3].list, + }, } - yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list) } case 371: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4730 +// line internal/php5/php5.y:4741 { - name := &ast.NameFullyQualified{ + yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list), }, - NsSeparatorTkn: yyDollar[1].token, - Parts: yyDollar[2].list, + Const: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list), + }, + NsSeparatorTkn: yyDollar[1].token, + Parts: yyDollar[2].list, + }, } - yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list) } case 372: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4744 +// line internal/php5/php5.y:4756 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -7207,7 +7219,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4757 +// line internal/php5/php5.y:4769 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -7221,13 +7233,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4769 +// line internal/php5/php5.y:4781 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4773 +// line internal/php5/php5.y:4785 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7239,13 +7251,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:4783 +// line internal/php5/php5.y:4795 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:4790 +// line internal/php5/php5.y:4802 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7259,7 +7271,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4802 +// line internal/php5/php5.y:4814 { yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7272,7 +7284,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4813 +// line internal/php5/php5.y:4825 { yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7285,7 +7297,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4824 +// line internal/php5/php5.y:4836 { yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7298,7 +7310,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4835 +// line internal/php5/php5.y:4847 { yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7311,7 +7323,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4846 +// line internal/php5/php5.y:4858 { yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7324,7 +7336,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4857 +// line internal/php5/php5.y:4869 { yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7337,7 +7349,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4868 +// line internal/php5/php5.y:4880 { yyVAL.node = &ast.ExprBooleanNot{ Node: ast.Node{ @@ -7349,7 +7361,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:4878 +// line internal/php5/php5.y:4890 { yyVAL.node = &ast.ExprBitwiseNot{ Node: ast.Node{ @@ -7361,7 +7373,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4888 +// line internal/php5/php5.y:4900 { yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7374,7 +7386,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4899 +// line internal/php5/php5.y:4911 { yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7387,7 +7399,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4910 +// line internal/php5/php5.y:4922 { yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7400,7 +7412,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4921 +// line internal/php5/php5.y:4933 { yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7413,7 +7425,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4932 +// line internal/php5/php5.y:4944 { yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7426,7 +7438,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4943 +// line internal/php5/php5.y:4955 { yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7439,7 +7451,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4954 +// line internal/php5/php5.y:4966 { yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7452,7 +7464,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4965 +// line internal/php5/php5.y:4977 { yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7465,7 +7477,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4976 +// line internal/php5/php5.y:4988 { yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7478,7 +7490,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4987 +// line internal/php5/php5.y:4999 { yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7491,7 +7503,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:4998 +// line internal/php5/php5.y:5010 { yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7504,7 +7516,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5009 +// line internal/php5/php5.y:5021 { yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7517,7 +7529,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5020 +// line internal/php5/php5.y:5032 { yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7530,7 +7542,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5031 +// line internal/php5/php5.y:5043 { yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7543,7 +7555,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5042 +// line internal/php5/php5.y:5054 { yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7557,7 +7569,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5054 +// line internal/php5/php5.y:5066 { yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7570,7 +7582,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5065 +// line internal/php5/php5.y:5077 { yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7583,7 +7595,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5076 +// line internal/php5/php5.y:5088 { yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7596,7 +7608,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5087 +// line internal/php5/php5.y:5099 { yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7609,7 +7621,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5098 +// line internal/php5/php5.y:5110 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node} @@ -7623,7 +7635,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5110 +// line internal/php5/php5.y:5122 { yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node} @@ -7637,7 +7649,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5122 +// line internal/php5/php5.y:5134 { yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node} @@ -7649,7 +7661,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5132 +// line internal/php5/php5.y:5144 { yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node} @@ -7661,7 +7673,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5142 +// line internal/php5/php5.y:5154 { yyVAL.node = yyDollar[2].node @@ -7671,61 +7683,64 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5153 +// line internal/php5/php5.y:5165 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5157 +// line internal/php5/php5.y:5169 { - name := &ast.NameName{ + yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ Position: position.NewNodeListPosition(yyDollar[1].list), }, - Parts: yyDollar[1].list, + Const: &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition(yyDollar[1].list), + }, + Parts: yyDollar[1].list, + }, } - yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} - - // save position - yyVAL.node.GetNode().Position = position.NewNodePosition(name) } case 412: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5170 +// line internal/php5/php5.y:5183 { - name := &ast.NameRelative{ + yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list), }, - NsTkn: yyDollar[1].token, - NsSeparatorTkn: yyDollar[2].token, - Parts: yyDollar[3].list, + Const: &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list), + }, + NsTkn: yyDollar[1].token, + NsSeparatorTkn: yyDollar[2].token, + Parts: yyDollar[3].list, + }, } - yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} - - // save position - yyVAL.node.GetNode().Position = position.NewNodePosition(name) } case 413: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5185 +// line internal/php5/php5.y:5199 { - name := &ast.NameFullyQualified{ + yyVAL.node = &ast.ExprConstFetch{ Node: ast.Node{ Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list), }, - NsSeparatorTkn: yyDollar[1].token, - Parts: yyDollar[2].list, + Const: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list), + }, + NsSeparatorTkn: yyDollar[1].token, + Parts: yyDollar[2].list, + }, } - yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name} - - // save position - yyVAL.node.GetNode().Position = position.NewNodePosition(name) } case 414: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5202 +// line internal/php5/php5.y:5217 { name := &ast.Identifier{ Node: ast.Node{ @@ -7744,25 +7759,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5219 +// line internal/php5/php5.y:5234 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5223 +// line internal/php5/php5.y:5238 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5227 +// line internal/php5/php5.y:5242 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5231 +// line internal/php5/php5.y:5246 { yyVAL.node = &ast.ScalarEncapsed{ Node: ast.Node{ @@ -7775,7 +7790,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5242 +// line internal/php5/php5.y:5257 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -7788,7 +7803,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5253 +// line internal/php5/php5.y:5268 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -7800,13 +7815,13 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5266 +// line internal/php5/php5.y:5281 { yyVAL.node = &ast.ParserSeparatedList{} } case 422: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5270 +// line internal/php5/php5.y:5285 { if yyDollar[2].token != nil { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) @@ -7817,19 +7832,19 @@ yydefault: } case 423: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5282 +// line internal/php5/php5.y:5297 { yyVAL.token = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5286 +// line internal/php5/php5.y:5301 { yyVAL.token = yyDollar[1].token } case 425: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5293 +// line internal/php5/php5.y:5308 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -7847,7 +7862,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5309 +// line internal/php5/php5.y:5324 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -7863,7 +7878,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5323 +// line internal/php5/php5.y:5338 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7880,7 +7895,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5338 +// line internal/php5/php5.y:5353 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -7895,35 +7910,18 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5354 +// line internal/php5/php5.y:5369 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5358 +// line internal/php5/php5.y:5373 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5365 - { - yyVAL.node = &ast.ParserBrackets{ - Node: ast.Node{ - Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), - }, - OpenBracketTkn: yyDollar[1].token, - Child: yyDollar[2].node, - CloseBracketTkn: yyDollar[3].token, - } - - // save comments - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[3].token.SkippedTokens) - } - case 432: - yyDollar = yyS[yypt-3 : yypt+1] // line internal/php5/php5.y:5380 { yyVAL.node = &ast.ParserBrackets{ @@ -7939,27 +7937,44 @@ yydefault: yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[3].token.SkippedTokens) } + case 432: + yyDollar = yyS[yypt-3 : yypt+1] +// line internal/php5/php5.y:5395 + { + yyVAL.node = &ast.ParserBrackets{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), + }, + OpenBracketTkn: yyDollar[1].token, + Child: yyDollar[2].node, + CloseBracketTkn: yyDollar[3].token, + } + + // save comments + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yylex.(*Parser).setFreeFloatingTokens(yyVAL.node, token.End, yyDollar[3].token.SkippedTokens) + } case 433: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5399 - { - yyVAL.node = yyDollar[1].node - } - case 434: - yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5407 - { - yyVAL.node = yyDollar[1].node - } - case 435: - yyDollar = yyS[yypt-1 : yypt+1] // line internal/php5/php5.y:5414 { yyVAL.node = yyDollar[1].node } + case 434: + yyDollar = yyS[yypt-1 : yypt+1] +// line internal/php5/php5.y:5422 + { + yyVAL.node = yyDollar[1].node + } + case 435: + yyDollar = yyS[yypt-1 : yypt+1] +// line internal/php5/php5.y:5429 + { + yyVAL.node = yyDollar[1].node + } case 436: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5421 +// line internal/php5/php5.y:5436 { yyVAL.node = yyDollar[1].node @@ -8017,25 +8032,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5477 +// line internal/php5/php5.y:5492 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5484 +// line internal/php5/php5.y:5499 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5488 +// line internal/php5/php5.y:5503 { yyVAL.list = []ast.Vertex{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5496 +// line internal/php5/php5.y:5511 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*ast.ExprMethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*ast.ExprPropertyFetch).Property @@ -8049,7 +8064,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5511 +// line internal/php5/php5.y:5526 { fetch := &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8065,7 +8080,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5525 +// line internal/php5/php5.y:5540 { fetch := &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8081,7 +8096,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5542 +// line internal/php5/php5.y:5557 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, nil, nil, yyDollar[1].node.(*ast.ArgumentList)} @@ -8090,31 +8105,31 @@ yydefault: } case 444: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5552 +// line internal/php5/php5.y:5567 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5556 +// line internal/php5/php5.y:5571 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5560 +// line internal/php5/php5.y:5575 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5567 +// line internal/php5/php5.y:5582 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5571 +// line internal/php5/php5.y:5586 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -8126,7 +8141,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5584 +// line internal/php5/php5.y:5599 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8139,7 +8154,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5595 +// line internal/php5/php5.y:5610 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -8152,13 +8167,13 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5609 +// line internal/php5/php5.y:5624 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5616 +// line internal/php5/php5.y:5631 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8172,7 +8187,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5628 +// line internal/php5/php5.y:5643 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8186,31 +8201,31 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5643 +// line internal/php5/php5.y:5658 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5647 +// line internal/php5/php5.y:5662 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5651 +// line internal/php5/php5.y:5666 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5659 +// line internal/php5/php5.y:5674 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5663 +// line internal/php5/php5.y:5678 { yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node @@ -8222,13 +8237,13 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5673 +// line internal/php5/php5.y:5688 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5680 +// line internal/php5/php5.y:5695 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8242,7 +8257,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5692 +// line internal/php5/php5.y:5707 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8256,13 +8271,13 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5704 +// line internal/php5/php5.y:5719 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5712 +// line internal/php5/php5.y:5727 { name := &ast.Identifier{ Node: ast.Node{ @@ -8281,7 +8296,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5729 +// line internal/php5/php5.y:5744 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -8295,25 +8310,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5744 +// line internal/php5/php5.y:5759 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5748 +// line internal/php5/php5.y:5763 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5756 +// line internal/php5/php5.y:5771 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5760 +// line internal/php5/php5.y:5775 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8323,7 +8338,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5771 +// line internal/php5/php5.y:5786 { fetch := &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8339,7 +8354,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5785 +// line internal/php5/php5.y:5800 { fetch := &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8355,7 +8370,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5799 +// line internal/php5/php5.y:5814 { fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node} yyVAL.list = []ast.Vertex{fetch} @@ -8365,7 +8380,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5810 +// line internal/php5/php5.y:5825 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -8377,7 +8392,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5820 +// line internal/php5/php5.y:5835 { yyVAL.node = yyDollar[2].node @@ -8390,7 +8405,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5834 +// line internal/php5/php5.y:5849 { n := &ast.ExprVariable{ast.Node{}, nil} yyVAL.simpleIndirectReference = simpleIndirectReference{[]*ast.ExprVariable{n}, n} @@ -8403,7 +8418,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5845 +// line internal/php5/php5.y:5860 { n := &ast.ExprVariable{ast.Node{}, nil} @@ -8420,7 +8435,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5863 +// line internal/php5/php5.y:5878 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -8429,7 +8444,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5870 +// line internal/php5/php5.y:5885 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -8437,7 +8452,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5880 +// line internal/php5/php5.y:5895 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -8448,7 +8463,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:5889 +// line internal/php5/php5.y:5904 { pairList := yyDollar[3].node.(*ast.ParserSeparatedList) fistPair := pairList.Items[0].(*ast.ExprArrayItem) @@ -8475,19 +8490,19 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5914 +// line internal/php5/php5.y:5929 { yyVAL.node = &ast.ExprArrayItem{} } case 481: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php5/php5.y:5922 +// line internal/php5/php5.y:5937 { yyVAL.node = &ast.ParserSeparatedList{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:5926 +// line internal/php5/php5.y:5941 { if yyDollar[2].token != nil { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) @@ -8498,7 +8513,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php5/php5.y:5938 +// line internal/php5/php5.y:5953 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -8516,7 +8531,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5954 +// line internal/php5/php5.y:5969 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -8532,7 +8547,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:5968 +// line internal/php5/php5.y:5983 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -8549,7 +8564,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:5983 +// line internal/php5/php5.y:5998 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -8564,7 +8579,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:5996 +// line internal/php5/php5.y:6011 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -8587,7 +8602,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6017 +// line internal/php5/php5.y:6032 { arrayItem := &ast.ExprArrayItem{ Node: ast.Node{ @@ -8608,7 +8623,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6036 +// line internal/php5/php5.y:6051 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -8630,7 +8645,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6056 +// line internal/php5/php5.y:6071 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{ @@ -8650,13 +8665,13 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6077 +// line internal/php5/php5.y:6092 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6081 +// line internal/php5/php5.y:6096 { yyVAL.list = append( yyDollar[1].list, @@ -8671,13 +8686,13 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6094 +// line internal/php5/php5.y:6109 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6098 +// line internal/php5/php5.y:6113 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -8692,7 +8707,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6114 +// line internal/php5/php5.y:6129 { name := &ast.Identifier{ Node: ast.Node{ @@ -8711,7 +8726,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6131 +// line internal/php5/php5.y:6146 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8736,7 +8751,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6154 +// line internal/php5/php5.y:6169 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -8764,7 +8779,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6180 +// line internal/php5/php5.y:6195 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -8779,7 +8794,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6193 +// line internal/php5/php5.y:6208 { name := &ast.Identifier{ Node: ast.Node{ @@ -8801,7 +8816,7 @@ yydefault: } case 500: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php5/php5.y:6213 +// line internal/php5/php5.y:6228 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -8828,7 +8843,7 @@ yydefault: } case 501: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6238 +// line internal/php5/php5.y:6253 { yyVAL.node = yyDollar[2].node @@ -8838,7 +8853,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6249 +// line internal/php5/php5.y:6264 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -8850,7 +8865,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6259 +// line internal/php5/php5.y:6274 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -8879,7 +8894,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6286 +// line internal/php5/php5.y:6301 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -8898,7 +8913,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6306 +// line internal/php5/php5.y:6321 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -8912,51 +8927,35 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6318 +// line internal/php5/php5.y:6333 { - exprBrackets := &ast.ParserBrackets{ + yyVAL.node = &ast.ExprEmpty{ Node: ast.Node{ - Position: position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), }, - OpenBracketTkn: yyDollar[2].token, - Child: yyDollar[3].node, - CloseBracketTkn: yyDollar[4].token, + EmptyTkn: yyDollar[1].token, + OpenParenthesisTkn: yyDollar[2].token, + Expr: yyDollar[3].node, + CloseParenthesisTkn: yyDollar[4].token, } - yyVAL.node = &ast.ExprEmpty{ast.Node{}, exprBrackets} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, yyDollar[4].token.SkippedTokens) } case 507: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6338 +// line internal/php5/php5.y:6345 { - exprBrackets := &ast.ParserBrackets{ + yyVAL.node = &ast.ExprEmpty{ Node: ast.Node{ - Position: position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), }, - OpenBracketTkn: yyDollar[2].token, - Child: yyDollar[3].node, - CloseBracketTkn: yyDollar[4].token, + EmptyTkn: yyDollar[1].token, + OpenParenthesisTkn: yyDollar[2].token, + Expr: yyDollar[3].node, + CloseParenthesisTkn: yyDollar[4].token, } - yyVAL.node = &ast.ExprEmpty{ast.Node{}, exprBrackets} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, yyDollar[4].token.SkippedTokens) } case 508: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6358 +// line internal/php5/php5.y:6357 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -8968,7 +8967,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6368 +// line internal/php5/php5.y:6367 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -8980,7 +8979,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php5/php5.y:6378 +// line internal/php5/php5.y:6377 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -9002,7 +9001,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6398 +// line internal/php5/php5.y:6397 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -9014,7 +9013,7 @@ yydefault: } case 512: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php5/php5.y:6408 +// line internal/php5/php5.y:6407 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -9026,13 +9025,13 @@ yydefault: } case 513: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6421 +// line internal/php5/php5.y:6420 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 514: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6425 +// line internal/php5/php5.y:6424 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -9041,19 +9040,19 @@ yydefault: } case 515: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6435 +// line internal/php5/php5.y:6434 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php5/php5.y:6439 +// line internal/php5/php5.y:6438 { yyVAL.node = yyDollar[1].node } case 517: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6446 +// line internal/php5/php5.y:6445 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -9072,7 +9071,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6463 +// line internal/php5/php5.y:6462 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -9091,7 +9090,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6483 +// line internal/php5/php5.y:6482 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -9110,7 +9109,7 @@ yydefault: } case 520: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php5/php5.y:6503 +// line internal/php5/php5.y:6502 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ diff --git a/internal/php5/php5.y b/internal/php5/php5.y index e06b9ac..d38e937 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -239,7 +239,7 @@ import ( %type static_scalar_value static_operation static_var_list global_var_list %type ctor_arguments function_call_parameter_list echo_expr_list class_variable_declaration %type trait_adaptations unset_variables declare_list non_empty_array_pair_list array_pair_list -%type switch_case_list non_empty_function_call_parameter_list assignment_list +%type switch_case_list non_empty_function_call_parameter_list assignment_list lexical_var_list %type method_body trait_reference_list static_array_pair_list non_empty_static_array_pair_list %type foreach_statement for_statement while_statement %type foreach_variable foreach_optional_arg @@ -250,7 +250,7 @@ import ( %type top_statement_list namespace_name use_declarations use_function_declarations use_const_declarations %type inner_statement_list encaps_list isset_variables -%type lexical_var_list elseif_list new_elseif_list non_empty_for_expr +%type elseif_list new_elseif_list non_empty_for_expr %type for_expr case_list catch_statement additional_catches %type non_empty_additional_catches parameter_list non_empty_parameter_list class_statement_list %type class_statement_list variable_modifiers method_modifiers @@ -3890,13 +3890,13 @@ expr_without_variable: } | '@' expr { - $$ = &ast.ExprErrorSuppress{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprErrorSuppress{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + AtTkn: $1, + Expr: $2, + } } | scalar { @@ -4121,98 +4121,107 @@ lexical_vars: } | T_USE '(' lexical_var_list ')' { - $$ = &ast.ExprClosureUse{ast.Node{}, $3} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Use, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.LexicalVarList, $4.SkippedTokens) + $$ = &ast.ExprClosureUse{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $4), + }, + UseTkn: $1, + OpenParenthesisTkn: $2, + Uses: $3.(*ast.ParserSeparatedList).Items, + SeparatorTkns: $3.(*ast.ParserSeparatedList).SeparatorTkns, + CloseParenthesisTkn: $4, + } } ; lexical_var_list: lexical_var_list ',' T_VARIABLE { - identifier := &ast.Identifier{ + variable := &ast.ExprVariable{ Node: ast.Node{ Position: position.NewTokenPosition($3), }, - IdentifierTkn: $3, - Value: $3.Value, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + }, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - $$ = append($1, variable) - // save position - variable.GetNode().Position = position.NewTokenPosition($3) + $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) + $1.(*ast.ParserSeparatedList).Items = append($1.(*ast.ParserSeparatedList).Items, variable) - // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(variable, token.Start, $3.SkippedTokens) + $$ = $1 } | lexical_var_list ',' '&' T_VARIABLE { - identifier := &ast.Identifier{ + reference := &ast.ExprReference{ Node: ast.Node{ - Position: position.NewTokenPosition($4), + Position: position.NewTokensPosition($3, $4), + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + }, }, - IdentifierTkn: $4, - Value: $4.Value, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - reference := &ast.ExprReference{ast.Node{}, variable} - $$ = append($1, reference) - // save position - variable.GetNode().Position = position.NewTokenPosition($4) - reference.GetNode().Position = position.NewTokensPosition($3, $4) + $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) + $1.(*ast.ParserSeparatedList).Items = append($1.(*ast.ParserSeparatedList).Items, reference) - // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating(reference, token.Start, $3.SkippedTokens) - yylex.(*Parser).setFreeFloating(variable, token.Start, $4.SkippedTokens) + $$ = $1 } | T_VARIABLE { - identifier := &ast.Identifier{ - Node: ast.Node{ - Position: position.NewTokenPosition($1), + $$ = &ast.ParserSeparatedList{ + Items: []ast.Vertex{ + &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + }, + }, }, - IdentifierTkn: $1, - Value: $1.Value, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - $$ = []ast.Vertex{variable} - - // save position - variable.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating(variable, token.Start, $1.SkippedTokens) } | '&' T_VARIABLE { - identifier := &ast.Identifier{ - Node: ast.Node{ - Position: position.NewTokenPosition($2), + $$ = &ast.ParserSeparatedList{ + Items: []ast.Vertex{ + &ast.ExprReference{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $2), + }, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + }, + }, + }, }, - IdentifierTkn: $2, - Value: $2.Value, } - variable := &ast.ExprVariable{ast.Node{}, identifier} - reference := &ast.ExprReference{ast.Node{}, variable} - $$ = []ast.Vertex{reference} - - // save position - variable.GetNode().Position = position.NewTokenPosition($2) - reference.GetNode().Position = position.NewTokensPosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating(reference, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating(variable, token.Start, $2.SkippedTokens) } ; @@ -4700,45 +4709,48 @@ static_scalar_value: } | namespace_name { - name := &ast.NameName{ - Node: ast.Node{ + $$ = &ast.ExprConstFetch{ + Node: ast.Node{ Position: position.NewNodeListPosition($1), }, - Parts: $1, + Const: &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition($1), + }, + Parts: $1, + }, } - $$ = &ast.ExprConstFetch{ast.Node{}, name} - - // save position - $$.GetNode().Position = position.NewNodePosition(name) } | T_NAMESPACE T_NS_SEPARATOR namespace_name { - name := &ast.NameRelative{ - Node: ast.Node{ + $$ = &ast.ExprConstFetch{ + Node: ast.Node{ Position: position.NewTokenNodeListPosition($1, $3), }, - NsTkn: $1, - NsSeparatorTkn: $2, - Parts: $3, + Const: &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $3), + }, + NsTkn: $1, + NsSeparatorTkn: $2, + Parts: $3, + }, } - $$ = &ast.ExprConstFetch{ast.Node{}, name} - - // save position - $$.GetNode().Position = position.NewTokenNodeListPosition($1, $3) } | T_NS_SEPARATOR namespace_name { - name := &ast.NameFullyQualified{ - Node: ast.Node{ + $$ = &ast.ExprConstFetch{ + Node: ast.Node{ Position: position.NewTokenNodeListPosition($1, $2), }, - NsSeparatorTkn: $1, - Parts: $2, + Const: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $2), + }, + NsSeparatorTkn: $1, + Parts: $2, + }, } - $$ = &ast.ExprConstFetch{ast.Node{}, name} - - // save position - $$.GetNode().Position = position.NewTokenNodeListPosition($1, $2) } | T_ARRAY '(' static_array_pair_list ')' { @@ -5155,45 +5167,48 @@ general_constant: } | namespace_name { - name := &ast.NameName{ - Node: ast.Node{ + $$ = &ast.ExprConstFetch{ + Node: ast.Node{ Position: position.NewNodeListPosition($1), }, - Parts: $1, + Const: &ast.NameName{ + Node: ast.Node{ + Position: position.NewNodeListPosition($1), + }, + Parts: $1, + }, } - $$ = &ast.ExprConstFetch{ast.Node{}, name} - - // save position - $$.GetNode().Position = position.NewNodePosition(name) } | T_NAMESPACE T_NS_SEPARATOR namespace_name { - name := &ast.NameRelative{ - Node: ast.Node{ + $$ = &ast.ExprConstFetch{ + Node: ast.Node{ Position: position.NewTokenNodeListPosition($1, $3), }, - NsTkn: $1, - NsSeparatorTkn: $2, - Parts: $3, + Const: &ast.NameRelative{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $3), + }, + NsTkn: $1, + NsSeparatorTkn: $2, + Parts: $3, + }, } - $$ = &ast.ExprConstFetch{ast.Node{}, name} - - // save position - $$.GetNode().Position = position.NewNodePosition(name) } | T_NS_SEPARATOR namespace_name { - name := &ast.NameFullyQualified{ - Node: ast.Node{ + $$ = &ast.ExprConstFetch{ + Node: ast.Node{ Position: position.NewTokenNodeListPosition($1, $2), }, - NsSeparatorTkn: $1, - Parts: $2, + Const: &ast.NameFullyQualified{ + Node: ast.Node{ + Position: position.NewTokenNodeListPosition($1, $2), + }, + NsSeparatorTkn: $1, + Parts: $2, + }, } - $$ = &ast.ExprConstFetch{ast.Node{}, name} - - // save position - $$.GetNode().Position = position.NewNodePosition(name) } ; @@ -6316,43 +6331,27 @@ internal_functions_in_yacc: } | T_EMPTY '(' variable ')' { - exprBrackets := &ast.ParserBrackets{ + $$ = &ast.ExprEmpty{ Node: ast.Node{ - Position: position.NewTokensPosition($2, $4), + Position: position.NewTokensPosition($1, $4), }, - OpenBracketTkn: $2, - Child: $3, - CloseBracketTkn: $4, + EmptyTkn: $1, + OpenParenthesisTkn: $2, + Expr: $3, + CloseParenthesisTkn: $4, } - $$ = &ast.ExprEmpty{ast.Node{}, exprBrackets} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, $4.SkippedTokens) } | T_EMPTY '(' expr ')' { - exprBrackets := &ast.ParserBrackets{ + $$ = &ast.ExprEmpty{ Node: ast.Node{ - Position: position.NewTokensPosition($2, $4), + Position: position.NewTokensPosition($1, $4), }, - OpenBracketTkn: $2, - Child: $3, - CloseBracketTkn: $4, + EmptyTkn: $1, + OpenParenthesisTkn: $2, + Expr: $3, + CloseParenthesisTkn: $4, } - $$ = &ast.ExprEmpty{ast.Node{}, exprBrackets} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, $4.SkippedTokens) } | T_INCLUDE expr { diff --git a/internal/php7/php7.go b/internal/php7/php7.go index 387a163..c397bc8 100644 --- a/internal/php7/php7.go +++ b/internal/php7/php7.go @@ -344,7 +344,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -// line internal/php7/php7.y:5004 +// line internal/php7/php7.y:4998 // line yacctab:1 var yyExca = [...]int{ @@ -625,10 +625,10 @@ var yyAct = [...]int{ 554, 381, 379, 814, 810, 197, 832, 693, 833, 834, 196, 195, 815, 189, 1, 831, 825, 780, 781, 38, 746, 283, 260, 261, 260, 261, 836, 743, 844, 783, - 780, 781, 856, 111, 744, 632, 528, 848, 865, 879, - 328, 533, 260, 261, 855, 841, 676, 255, 796, 385, - 371, 859, 136, 656, 852, 114, 934, 662, 845, 877, - 890, 891, 886, 227, 43, 42, 892, 893, 16, 885, + 780, 781, 856, 111, 744, 632, 528, 848, 879, 328, + 841, 533, 260, 261, 855, 676, 255, 796, 385, 371, + 656, 859, 136, 852, 934, 114, 662, 845, 227, 877, + 890, 891, 886, 43, 42, 865, 892, 893, 16, 885, 838, 237, 539, 853, 15, 897, 898, 730, 830, 872, 151, 606, 786, 896, 903, 271, 49, 905, 48, 217, 218, 902, 110, 50, 886, 908, 84, 82, 904, 72, @@ -1427,11 +1427,11 @@ var yyPgo = [...]int{ 915, 914, 913, 9, 50, 911, 908, 100, 88, 242, 907, 905, 34, 890, 889, 8, 887, 80, 41, 886, 56, 49, 883, 882, 878, 876, 875, 86, 871, 870, - 868, 10, 864, 87, 862, 860, 858, 855, 12, 854, - 853, 46, 39, 40, 2, 16, 667, 43, 85, 848, - 847, 846, 13, 844, 843, 555, 840, 45, 71, 839, - 838, 6, 721, 20, 540, 837, 18, 836, 835, 36, - 830, 25, 33, 37, 829, 530, 828, 826, 99, 1, + 868, 10, 864, 87, 862, 860, 858, 855, 854, 12, + 853, 848, 46, 39, 40, 2, 16, 667, 43, 85, + 847, 846, 844, 13, 843, 840, 555, 839, 45, 71, + 838, 837, 6, 721, 20, 540, 836, 18, 835, 830, + 36, 829, 25, 33, 37, 828, 530, 826, 99, 1, 3, 825, 17, 824, 817, 810, 809, 804, 28, } @@ -1444,28 +1444,28 @@ var yyR1 = [...]int{ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 118, - 118, 106, 106, 10, 10, 10, 9, 9, 9, 9, + 118, 107, 107, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 102, 102, 16, 16, 18, 18, 7, 7, 112, - 112, 111, 111, 115, 115, 17, 17, 20, 20, 19, + 9, 103, 103, 16, 16, 18, 18, 7, 7, 113, + 113, 112, 112, 116, 116, 17, 17, 20, 20, 19, 19, 73, 73, 119, 119, 22, 22, 22, 22, 22, 22, 22, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 107, 107, 70, 70, - 26, 26, 96, 96, 27, 12, 1, 1, 2, 2, - 13, 13, 126, 126, 86, 86, 14, 15, 97, 97, - 99, 99, 98, 98, 103, 103, 103, 103, 93, 93, - 92, 92, 25, 25, 90, 90, 90, 90, 113, 113, - 113, 8, 8, 94, 94, 77, 77, 72, 72, 79, - 79, 76, 76, 120, 120, 121, 121, 29, 29, 30, - 30, 85, 85, 83, 83, 83, 84, 84, 87, 87, + 11, 11, 11, 11, 11, 11, 108, 108, 70, 70, + 26, 26, 97, 97, 27, 12, 1, 1, 2, 2, + 13, 13, 126, 126, 87, 87, 14, 15, 98, 98, + 100, 100, 99, 99, 104, 104, 104, 104, 94, 94, + 93, 93, 25, 25, 91, 91, 91, 91, 114, 114, + 114, 8, 8, 95, 95, 78, 78, 72, 72, 80, + 80, 76, 76, 120, 120, 121, 121, 29, 29, 30, + 30, 86, 86, 84, 84, 84, 85, 85, 88, 88, 74, 74, 31, 31, 33, 33, 34, 35, 35, 36, - 36, 122, 122, 37, 37, 37, 37, 71, 71, 89, - 89, 89, 114, 114, 38, 38, 39, 40, 40, 40, - 40, 42, 42, 41, 91, 91, 124, 124, 123, 123, - 125, 125, 101, 101, 101, 101, 101, 101, 75, 75, - 43, 43, 108, 108, 78, 21, 69, 69, 44, 109, - 109, 110, 110, 46, 45, 45, 32, 32, 32, 32, + 36, 122, 122, 37, 37, 37, 37, 71, 71, 90, + 90, 90, 115, 115, 38, 38, 39, 40, 40, 40, + 40, 42, 42, 41, 92, 92, 124, 124, 123, 123, + 125, 125, 102, 102, 102, 102, 102, 102, 75, 75, + 43, 43, 109, 109, 79, 21, 69, 69, 44, 110, + 110, 111, 111, 46, 45, 45, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, @@ -1473,19 +1473,19 @@ var yyR1 = [...]int{ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 95, 95, 128, 3, 3, 100, 100, - 116, 116, 55, 55, 56, 56, 56, 56, 47, 47, - 48, 48, 53, 53, 105, 105, 105, 88, 88, 60, + 32, 32, 32, 96, 96, 128, 3, 3, 101, 101, + 77, 77, 55, 55, 56, 56, 56, 56, 47, 47, + 48, 48, 53, 53, 106, 106, 106, 89, 89, 60, 60, 60, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 61, 61, 61, 23, 23, 24, 24, 59, 62, 62, 62, 63, 63, 63, 64, 64, 64, 64, 64, 64, 28, 28, 28, 49, 49, 49, 65, 65, 66, 66, 66, 66, - 66, 66, 57, 57, 57, 58, 58, 58, 52, 81, - 81, 51, 51, 80, 80, 80, 80, 80, 80, 80, - 104, 104, 104, 104, 67, 67, 67, 67, 67, 67, + 66, 66, 57, 57, 57, 58, 58, 58, 52, 82, + 82, 51, 51, 81, 81, 81, 81, 81, 81, 81, + 105, 105, 105, 105, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 50, 50, 50, 50, 50, - 50, 50, 117, 117, 82, + 50, 50, 117, 117, 83, } var yyR2 = [...]int{ @@ -1546,41 +1546,41 @@ var yyChk = [...]int{ 52, 80, 45, 39, 144, -72, -76, 21, 20, 23, 30, 34, 35, 40, 47, 99, 19, 14, -23, 49, 25, 27, 146, 41, 44, 36, 10, 37, -126, 53, - 54, 55, -77, -79, -28, -32, -86, 7, -64, -65, + 54, 55, -78, -80, -28, -32, -87, 7, -64, -65, -62, 60, 150, 93, 105, 106, 155, 154, 156, 157, 148, -45, -50, 108, 109, 110, 111, 112, 113, 114, - 6, 158, -54, 143, 97, 98, 107, -95, 100, 101, + 6, 158, -54, 143, 97, 98, 107, -96, 100, 101, -49, -61, -56, -47, -59, -60, 92, 50, 51, 4, 5, 85, 86, 87, 8, 9, 67, 68, 82, 64, 65, 66, 81, 63, 75, 142, 38, 12, 159, -10, - -63, 61, 18, -106, 83, 148, 83, -106, 144, 10, - -18, -102, -115, -106, 83, 37, 39, -19, -20, -73, + -63, 61, 18, -107, 83, 148, 83, -107, 144, 10, + -18, -103, -116, -107, 83, 37, 39, -19, -20, -73, -21, 10, -119, 148, -11, 37, 80, 148, 148, -24, - -23, 99, -24, -24, -33, -34, -49, -35, -95, -36, + -23, 99, -24, -24, -33, -34, -49, -35, -96, -36, 12, -69, -44, -23, 146, 131, 132, 88, 90, 89, 161, 153, 163, 169, 155, 154, 164, 133, 165, 166, 134, 135, 136, 137, 138, 139, 167, 140, 168, 141, 116, 91, 152, 115, 148, 148, 148, 144, -23, 10, - 147, -3, 153, 53, -86, 10, 10, 10, 94, 95, + 147, -3, 153, 53, -87, 10, 10, 10, 94, 95, 94, 96, 95, 162, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 105, 106, 148, - 150, 144, 58, 148, -52, -51, -81, -80, -23, 153, + 150, 144, 58, 148, -52, -51, -82, -81, -23, 153, 84, 60, -23, -28, -61, 148, -60, 99, 150, -28, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, - -23, -23, -53, 148, -23, -105, 17, -104, -67, 12, + -23, -23, -53, 148, -23, -106, 17, -105, -67, 12, 77, 78, -23, -23, -23, 150, 79, 79, -48, -46, -47, -66, 53, -10, -49, 148, 148, -23, -23, 148, - -23, -23, 17, 76, -104, -104, 17, -3, 144, -49, - -87, 148, -87, 148, 83, -106, 149, -106, 146, 144, - -118, 146, -16, -115, -106, 83, 146, 160, 83, 29, - -106, -20, 146, 160, 162, -22, 145, 2, -11, -12, - -13, -14, -15, 52, -23, 21, -3, -109, -110, -23, + -23, -23, 17, 76, -105, -105, 17, -3, 144, -49, + -88, 148, -88, 148, 83, -107, 149, -107, 146, 144, + -118, 146, -16, -116, -107, 83, 146, 160, 83, 29, + -107, -20, 146, 160, 162, -22, 145, 2, -11, -12, + -13, -14, -15, 52, -23, 21, -3, -110, -111, -23, -23, 146, 146, 146, 146, 160, 146, 160, 162, 146, 160, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -48, -23, 147, - -23, -96, -27, -28, -23, -73, -119, 146, 146, 10, - -128, 10, -97, 56, -128, -99, 56, 148, -11, 148, + -23, -97, -27, -28, -23, -73, -119, 146, 146, 10, + -128, 10, -98, 56, -128, -100, 56, 148, -11, 148, 146, 147, -23, 153, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -24, -23, -58, 10, 144, -49, -52, 151, 160, 59, -28, -23, @@ -1594,48 +1594,48 @@ var yyChk = [...]int{ 39, 40, 97, 98, 60, 30, 31, 32, 33, 34, 61, 62, 56, 57, 80, 54, 55, 53, 63, 64, 66, 65, 67, 68, 82, 81, 38, -57, -6, -49, - -88, -87, 79, 150, 144, 58, 79, -88, -117, -82, + -89, -88, 79, 150, 144, 58, 79, -89, -117, -83, -23, -23, -23, 76, 76, 142, 148, -23, 149, -74, -31, -23, 84, -52, 10, 146, -118, 145, 146, 146, - 83, -106, -19, 83, -106, 144, 10, 83, -21, -23, + 83, -107, -19, 83, -107, 144, 10, 83, -21, -23, 148, 149, 148, 146, 160, 149, -34, -36, -23, -44, - 147, -23, -7, 160, 29, 149, 145, -128, 148, -97, - -98, 57, -10, 144, -128, -71, -10, -23, -23, -119, - -23, 149, 151, 145, -87, -23, 149, 162, -81, -23, + 147, -23, -7, 160, 29, 149, 145, -128, 148, -98, + -99, 57, -10, 144, -128, -71, -10, -23, -23, -119, + -23, 149, 151, 145, -88, -23, 149, 162, -82, -23, 153, 60, -52, 149, 151, 149, -68, 10, 13, 154, - 12, 10, 145, 145, 150, 145, -23, 151, -87, -23, - -87, -49, -24, -23, -58, -49, -97, -7, 160, 149, - 149, -120, -121, -29, -30, -85, -83, 152, 61, 62, - -10, 145, -7, 160, -23, 149, 145, 144, 83, -112, - -17, -20, -102, 144, -128, 149, -94, -11, 147, -23, - -109, -23, -90, 144, 147, -23, 149, -27, -103, -28, - 153, 60, 150, -25, -11, 147, -107, 148, -120, -98, + 12, 10, 145, 145, 150, 145, -23, 151, -88, -23, + -88, -49, -24, -23, -58, -49, -98, -7, 160, 149, + 149, -120, -121, -29, -30, -86, -84, 152, 61, 62, + -10, 145, -7, 160, -23, 149, 145, 144, 83, -113, + -17, -20, -103, 144, -128, 149, -95, -11, 147, -23, + -110, -23, -91, 144, 147, -23, 149, -27, -104, -28, + 153, 60, 150, -25, -11, 147, -108, 148, -120, -99, -128, -71, -122, 144, 160, 149, 149, 96, -11, 147, 145, 162, -23, -28, 148, 149, 151, 13, -23, 145, - 151, 145, -98, 149, -82, 149, 160, -1, 153, -83, - 149, -31, -111, -20, 144, -7, 160, -20, -112, 146, - -119, 149, 146, -113, 146, -113, 146, 146, 149, 59, + 151, 145, -99, 149, -83, 149, 160, -1, 153, -84, + 149, -31, -112, -20, 144, -7, 160, -20, -113, 146, + -119, 149, 146, -114, 146, -114, 146, 146, 149, 59, -28, 148, -52, -119, -26, 42, 43, -120, 149, -128, - 144, 145, -37, -124, -123, 45, -125, 48, -101, 104, + 144, 145, -37, -124, -123, 45, -125, 48, -102, 104, 103, 102, 99, 100, 101, -122, -10, -11, 147, 146, - -119, -23, -52, 151, -128, -84, 147, -29, -2, 84, - -7, 160, -111, 145, -17, -7, 22, 146, -109, 145, - 32, 33, -113, 31, -113, -92, -11, 147, -103, -28, - -52, 151, 28, 148, 144, 149, -100, 45, 144, -122, - -30, 39, 37, -71, -101, 145, -119, 149, 145, 144, - -128, -85, 12, 145, -20, -7, 145, 146, 149, -23, + -119, -23, -52, 151, -128, -85, 147, -29, -2, 84, + -7, 160, -112, 145, -17, -7, 22, 146, -110, 145, + 32, 33, -114, 31, -114, -93, -11, 147, -104, -28, + -52, 151, 28, 148, 144, 149, -101, 45, 144, -122, + -30, 39, 37, -71, -102, 145, -119, 149, 145, 144, + -128, -86, 12, 145, -20, -7, 145, 146, 149, -23, -8, 147, 146, 145, 146, 31, -119, 149, 149, 146, - -70, -10, -119, -84, -84, 148, -122, 145, -75, -43, - 12, -108, -78, -6, -3, -89, 146, 144, -122, 59, - 162, 145, -93, -11, 147, -8, -119, 146, 26, -92, - 12, 161, 145, 144, 144, -116, -55, 12, 153, 145, - 146, 160, -128, 162, 146, 160, 162, -6, 145, -114, + -70, -10, -119, -85, -85, 148, -122, 145, -75, -43, + 12, -109, -79, -6, -3, -90, 146, 144, -122, 59, + 162, 145, -94, -11, 147, -8, -119, 146, 26, -93, + 12, 161, 145, 144, 144, -77, -55, 12, 153, 145, + 146, 160, -128, 162, 146, 160, 162, -6, 145, -115, -38, -39, -40, -41, -42, -10, -6, 80, 10, 145, -23, -23, -119, -119, 146, 149, -10, -119, -119, 149, - 160, 12, -43, -23, -78, -23, -128, 145, -38, 146, + 160, 12, -43, -23, -79, -23, -128, 145, -38, 146, 146, 46, 29, 79, 24, 144, 145, 145, -55, -128, - -128, 148, -71, 10, -4, -101, -6, 146, -119, -120, - -6, 145, 149, -84, -91, 146, 144, -119, 145, + -128, 148, -71, 10, -4, -102, -6, 146, -119, -120, + -6, 145, 149, -85, -92, 146, 144, -119, 145, } var yyDef = [...]int{ @@ -6120,13 +6120,13 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] // line internal/php7/php7.y:3553 { - yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node} - - // save position - yyVAL.node.GetNode().Position = position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) + yyVAL.node = &ast.ExprErrorSuppress{ + Node: ast.Node{ + Position: position.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), + }, + AtTkn: yyDollar[1].token, + Expr: yyDollar[2].node, + } } case 364: yyDollar = yyS[yypt-1 : yypt+1] @@ -6290,34 +6290,37 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] // line internal/php7/php7.y:3706 { - yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list} - - // save position - yyVAL.ClosureUse.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.ClosureUse, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.ClosureUse, token.Use, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloating(yyVAL.ClosureUse, token.LexicalVarList, yyDollar[4].token.SkippedTokens) + yyVAL.ClosureUse = &ast.ExprClosureUse{ + Node: ast.Node{ + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), + }, + UseTkn: yyDollar[1].token, + OpenParenthesisTkn: yyDollar[2].token, + Uses: yyDollar[3].node.(*ast.ParserSeparatedList).Items, + SeparatorTkns: yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, + CloseParenthesisTkn: yyDollar[4].token, + } } case 380: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3721 +// line internal/php7/php7.y:3722 { - yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) + yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) - // save comments - yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.SkippedTokens) + yyVAL.node = yyDollar[1].node } case 381: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3728 +// line internal/php7/php7.y:3729 { - yyVAL.list = []ast.Vertex{yyDollar[1].node} + yyVAL.node = &ast.ParserSeparatedList{ + Items: []ast.Vertex{yyDollar[1].node}, + } } case 382: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3735 +// line internal/php7/php7.y:3738 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6336,7 +6339,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3752 +// line internal/php7/php7.y:3755 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -6358,7 +6361,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3775 +// line internal/php7/php7.y:3778 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6370,7 +6373,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3785 +// line internal/php7/php7.y:3788 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6383,7 +6386,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3796 +// line internal/php7/php7.y:3799 { yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6396,7 +6399,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:3807 +// line internal/php7/php7.y:3810 { yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)} @@ -6408,7 +6411,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3820 +// line internal/php7/php7.y:3823 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -6420,31 +6423,31 @@ yydefault: } case 389: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3830 +// line internal/php7/php7.y:3833 { yyVAL.node = yyDollar[1].node } case 390: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3837 +// line internal/php7/php7.y:3840 { yyVAL.node = yyDollar[1].node } case 391: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3841 +// line internal/php7/php7.y:3844 { yyVAL.node = yyDollar[1].node } case 392: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3848 +// line internal/php7/php7.y:3851 { yyVAL.node = nil } case 393: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3852 +// line internal/php7/php7.y:3855 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6461,13 +6464,13 @@ yydefault: } case 394: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3870 +// line internal/php7/php7.y:3873 { yyVAL.list = []ast.Vertex{} } case 395: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3874 +// line internal/php7/php7.y:3877 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -6481,25 +6484,25 @@ yydefault: } case 396: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3886 +// line internal/php7/php7.y:3889 { yyVAL.list = yyDollar[1].list } case 397: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:3893 +// line internal/php7/php7.y:3896 { yyVAL.node = nil } case 398: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3897 +// line internal/php7/php7.y:3900 { yyVAL.node = yyDollar[1].node } case 399: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:3904 +// line internal/php7/php7.y:3907 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -6514,7 +6517,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:3917 +// line internal/php7/php7.y:3920 { yyVAL.node = &ast.ExprArray{ Node: ast.Node{ @@ -6528,7 +6531,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3929 +// line internal/php7/php7.y:3932 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -6540,7 +6543,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3942 +// line internal/php7/php7.y:3945 { yyVAL.node = &ast.ScalarLnumber{ Node: ast.Node{ @@ -6552,7 +6555,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3952 +// line internal/php7/php7.y:3955 { yyVAL.node = &ast.ScalarDnumber{ Node: ast.Node{ @@ -6564,7 +6567,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3962 +// line internal/php7/php7.y:3965 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6576,7 +6579,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3972 +// line internal/php7/php7.y:3975 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6588,7 +6591,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3982 +// line internal/php7/php7.y:3985 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6600,7 +6603,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:3992 +// line internal/php7/php7.y:3995 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6612,7 +6615,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4002 +// line internal/php7/php7.y:4005 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6624,7 +6627,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4012 +// line internal/php7/php7.y:4015 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6636,7 +6639,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4022 +// line internal/php7/php7.y:4025 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6648,7 +6651,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4032 +// line internal/php7/php7.y:4035 { yyVAL.node = &ast.ScalarMagicConstant{ Node: ast.Node{ @@ -6660,7 +6663,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4042 +// line internal/php7/php7.y:4045 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6681,7 +6684,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4061 +// line internal/php7/php7.y:4064 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6693,7 +6696,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4071 +// line internal/php7/php7.y:4074 { yyVAL.node = &ast.ScalarEncapsed{ Node: ast.Node{ @@ -6706,7 +6709,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4082 +// line internal/php7/php7.y:4085 { yyVAL.node = &ast.ScalarHeredoc{ Node: ast.Node{ @@ -6719,31 +6722,30 @@ yydefault: } case 416: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4093 +// line internal/php7/php7.y:4096 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4097 +// line internal/php7/php7.y:4100 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4104 +// line internal/php7/php7.y:4107 { - yyVAL.node = &ast.ExprConstFetch{ast.Node{}, yyDollar[1].node} - - // save position - yyVAL.node.GetNode().Position = position.NewNodePosition(yyDollar[1].node) - - // save comments - yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + yyVAL.node = &ast.ExprConstFetch{ + Node: ast.Node{ + Position: position.NewNodePosition(yyDollar[1].node), + }, + Const: yyDollar[1].node, + } } case 419: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4114 +// line internal/php7/php7.y:4116 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -6762,7 +6764,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4131 +// line internal/php7/php7.y:4133 { yyVAL.node = &ast.ExprClassConstFetch{ Node: ast.Node{ @@ -6781,43 +6783,43 @@ yydefault: } case 421: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4151 +// line internal/php7/php7.y:4153 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4155 +// line internal/php7/php7.y:4157 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:4162 +// line internal/php7/php7.y:4164 { yyVAL.node = nil } case 424: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4166 +// line internal/php7/php7.y:4168 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4173 +// line internal/php7/php7.y:4175 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4180 +// line internal/php7/php7.y:4182 { yyVAL.node = yyDollar[1].node } case 427: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4184 +// line internal/php7/php7.y:4186 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6834,19 +6836,19 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4199 +// line internal/php7/php7.y:4201 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4206 +// line internal/php7/php7.y:4208 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4210 +// line internal/php7/php7.y:4212 { yyVAL.node = &ast.ParserBrackets{ Node: ast.Node{ @@ -6863,19 +6865,19 @@ yydefault: } case 431: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4225 +// line internal/php7/php7.y:4227 { yyVAL.node = yyDollar[1].node } case 432: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4232 +// line internal/php7/php7.y:4234 { yyVAL.node = yyDollar[1].node } case 433: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4236 +// line internal/php7/php7.y:4238 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -6889,7 +6891,7 @@ yydefault: } case 434: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4248 +// line internal/php7/php7.y:4250 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -6903,7 +6905,7 @@ yydefault: } case 435: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4260 +// line internal/php7/php7.y:4262 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -6917,7 +6919,7 @@ yydefault: } case 436: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4272 +// line internal/php7/php7.y:4274 { yyVAL.node = &ast.ExprMethodCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)} @@ -6930,25 +6932,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4283 +// line internal/php7/php7.y:4285 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4290 +// line internal/php7/php7.y:4292 { yyVAL.node = yyDollar[1].node } case 439: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4294 +// line internal/php7/php7.y:4296 { yyVAL.node = yyDollar[1].node } case 440: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4298 +// line internal/php7/php7.y:4300 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -6961,7 +6963,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4312 +// line internal/php7/php7.y:4314 { name := &ast.Identifier{ Node: ast.Node{ @@ -6980,7 +6982,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4329 +// line internal/php7/php7.y:4331 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node} @@ -6994,7 +6996,7 @@ yydefault: } case 443: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4341 +// line internal/php7/php7.y:4343 { yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7006,7 +7008,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4354 +// line internal/php7/php7.y:4356 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7019,7 +7021,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4365 +// line internal/php7/php7.y:4367 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7032,13 +7034,13 @@ yydefault: } case 446: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4379 +// line internal/php7/php7.y:4381 { yyVAL.node = yyDollar[1].node } case 447: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4383 +// line internal/php7/php7.y:4385 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7052,7 +7054,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4395 +// line internal/php7/php7.y:4397 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7066,7 +7068,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4407 +// line internal/php7/php7.y:4409 { yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7079,7 +7081,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4418 +// line internal/php7/php7.y:4420 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7092,7 +7094,7 @@ yydefault: } case 451: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4429 +// line internal/php7/php7.y:4431 { yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node} @@ -7105,7 +7107,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4443 +// line internal/php7/php7.y:4445 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -7117,7 +7119,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4453 +// line internal/php7/php7.y:4455 { yyVAL.node = yyDollar[2].node @@ -7127,13 +7129,13 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4461 +// line internal/php7/php7.y:4463 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4468 +// line internal/php7/php7.y:4470 { yyVAL.node = &ast.Identifier{ Node: ast.Node{ @@ -7145,7 +7147,7 @@ yydefault: } case 456: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4478 +// line internal/php7/php7.y:4480 { yyVAL.node = yyDollar[2].node @@ -7155,13 +7157,13 @@ yydefault: } case 457: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4486 +// line internal/php7/php7.y:4488 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4493 +// line internal/php7/php7.y:4495 { pairList := yyDollar[1].node.(*ast.ParserSeparatedList) fistPair := pairList.Items[0].(*ast.ExprArrayItem) @@ -7174,19 +7176,19 @@ yydefault: } case 459: yyDollar = yyS[yypt-0 : yypt+1] -// line internal/php7/php7.y:4507 +// line internal/php7/php7.y:4509 { yyVAL.node = &ast.ExprArrayItem{} } case 460: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4511 +// line internal/php7/php7.y:4513 { yyVAL.node = yyDollar[1].node } case 461: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4518 +// line internal/php7/php7.y:4520 { yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) @@ -7195,7 +7197,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4525 +// line internal/php7/php7.y:4527 { yyVAL.node = &ast.ParserSeparatedList{ Items: []ast.Vertex{yyDollar[1].node}, @@ -7203,7 +7205,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4534 +// line internal/php7/php7.y:4536 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7216,7 +7218,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4545 +// line internal/php7/php7.y:4547 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7227,7 +7229,7 @@ yydefault: } case 465: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4554 +// line internal/php7/php7.y:4556 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7245,7 +7247,7 @@ yydefault: } case 466: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4570 +// line internal/php7/php7.y:4572 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7261,7 +7263,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4584 +// line internal/php7/php7.y:4586 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7273,7 +7275,7 @@ yydefault: } case 468: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:4594 +// line internal/php7/php7.y:4596 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7295,7 +7297,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4614 +// line internal/php7/php7.y:4616 { yyVAL.node = &ast.ExprArrayItem{ Node: ast.Node{ @@ -7315,13 +7317,13 @@ yydefault: } case 470: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4635 +// line internal/php7/php7.y:4637 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 471: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4639 +// line internal/php7/php7.y:4641 { yyVAL.list = append( yyDollar[1].list, @@ -7336,13 +7338,13 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4652 +// line internal/php7/php7.y:4654 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 473: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4656 +// line internal/php7/php7.y:4658 { yyVAL.list = []ast.Vertex{ &ast.ScalarEncapsedStringPart{ @@ -7357,7 +7359,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4672 +// line internal/php7/php7.y:4674 { name := &ast.Identifier{ Node: ast.Node{ @@ -7376,7 +7378,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4689 +// line internal/php7/php7.y:4691 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7401,7 +7403,7 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4712 +// line internal/php7/php7.y:4714 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -7429,7 +7431,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4738 +// line internal/php7/php7.y:4740 { variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node} @@ -7444,7 +7446,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4751 +// line internal/php7/php7.y:4753 { name := &ast.Identifier{ Node: ast.Node{ @@ -7466,7 +7468,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-6 : yypt+1] -// line internal/php7/php7.y:4771 +// line internal/php7/php7.y:4773 { yyVAL.node = &ast.ExprArrayDimFetch{ Node: ast.Node{ @@ -7493,7 +7495,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4796 +// line internal/php7/php7.y:4798 { yyVAL.node = yyDollar[2].node @@ -7503,7 +7505,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4807 +// line internal/php7/php7.y:4809 { yyVAL.node = &ast.ScalarString{ Node: ast.Node{ @@ -7515,7 +7517,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4817 +// line internal/php7/php7.y:4819 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { @@ -7538,7 +7540,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4838 +// line internal/php7/php7.y:4840 { _, err := strconv.Atoi(string(yyDollar[2].token.Value)) isInt := err == nil @@ -7566,7 +7568,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4864 +// line internal/php7/php7.y:4866 { identifier := &ast.Identifier{ Node: ast.Node{ @@ -7585,7 +7587,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-5 : yypt+1] -// line internal/php7/php7.y:4884 +// line internal/php7/php7.y:4886 { yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list} @@ -7603,29 +7605,21 @@ yydefault: } case 486: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4900 +// line internal/php7/php7.y:4902 { - exprBrackets := &ast.ParserBrackets{ + yyVAL.node = &ast.ExprEmpty{ Node: ast.Node{ - Position: position.NewTokensPosition(yyDollar[2].token, yyDollar[4].token), + Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), }, - OpenBracketTkn: yyDollar[2].token, - Child: yyDollar[3].node, - CloseBracketTkn: yyDollar[4].token, + EmptyTkn: yyDollar[1].token, + OpenParenthesisTkn: yyDollar[2].token, + Expr: yyDollar[3].node, + CloseParenthesisTkn: yyDollar[4].token, } - yyVAL.node = &ast.ExprEmpty{ast.Node{}, exprBrackets} - - // save position - yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[4].token) - - // save comments - yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, yyDollar[2].token.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, yyDollar[4].token.SkippedTokens) } case 487: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4920 +// line internal/php7/php7.y:4914 { yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node} @@ -7637,7 +7631,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4930 +// line internal/php7/php7.y:4924 { yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node} @@ -7649,7 +7643,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] -// line internal/php7/php7.y:4940 +// line internal/php7/php7.y:4934 { exprBrackets := &ast.ParserBrackets{ Node: ast.Node{ @@ -7671,7 +7665,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4960 +// line internal/php7/php7.y:4954 { yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node} @@ -7683,7 +7677,7 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] -// line internal/php7/php7.y:4970 +// line internal/php7/php7.y:4964 { yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node} @@ -7695,13 +7689,13 @@ yydefault: } case 492: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4983 +// line internal/php7/php7.y:4977 { yyVAL.list = []ast.Vertex{yyDollar[1].node} } case 493: yyDollar = yyS[yypt-3 : yypt+1] -// line internal/php7/php7.y:4987 +// line internal/php7/php7.y:4981 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -7710,7 +7704,7 @@ yydefault: } case 494: yyDollar = yyS[yypt-1 : yypt+1] -// line internal/php7/php7.y:4997 +// line internal/php7/php7.y:4991 { yyVAL.node = yyDollar[1].node } diff --git a/internal/php7/php7.y b/internal/php7/php7.y index 7b12137..9c95662 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -248,7 +248,7 @@ import ( %type callable_expr callable_variable static_member new_variable %type encaps_var encaps_var_offset echo_expr_list catch_name_list name_list %type if_stmt const_list non_empty_argument_list property_list -%type alt_if_stmt +%type alt_if_stmt lexical_var_list %type if_stmt_without_else %type class_const_decl %type alt_if_stmt_without_else @@ -276,7 +276,7 @@ import ( %type for_exprs non_empty_for_exprs %type unprefixed_use_declarations inline_use_declarations %type case_list trait_adaptation_list -%type use_declarations lexical_var_list isset_variables +%type use_declarations isset_variables %type top_statement_list %type inner_statement_list parameter_list non_empty_parameter_list class_statement_list %type method_modifiers variable_modifiers @@ -3551,13 +3551,13 @@ expr_without_variable: } | '@' expr { - $$ = &ast.ExprErrorSuppress{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprErrorSuppress{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + AtTkn: $1, + Expr: $2, + } } | scalar { @@ -3704,29 +3704,32 @@ lexical_vars: } | T_USE '(' lexical_var_list ')' { - $$ = &ast.ExprClosureUse{ast.Node{}, $3} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Use, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.LexicalVarList, $4.SkippedTokens) + $$ = &ast.ExprClosureUse{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $4), + }, + UseTkn: $1, + OpenParenthesisTkn: $2, + Uses: $3.(*ast.ParserSeparatedList).Items, + SeparatorTkns: $3.(*ast.ParserSeparatedList).SeparatorTkns, + CloseParenthesisTkn: $4, + } } ; lexical_var_list: lexical_var_list ',' lexical_var { - $$ = append($1, $3) + $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) + $1.(*ast.ParserSeparatedList).Items = append($1.(*ast.ParserSeparatedList).Items, $3) - // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.SkippedTokens) + $$ = $1 } | lexical_var { - $$ = []ast.Vertex{$1} + $$ = &ast.ParserSeparatedList{ + Items: []ast.Vertex{$1}, + } } ; @@ -4102,13 +4105,12 @@ scalar: constant: name { - $$ = &ast.ExprConstFetch{ast.Node{}, $1} - - // save position - $$.GetNode().Position = position.NewNodePosition($1) - - // save comments - yylex.(*Parser).MoveFreeFloating($1, $$) + $$ = &ast.ExprConstFetch{ + Node: ast.Node{ + Position: position.NewNodePosition($1), + }, + Const: $1, + } } | class_name T_PAAMAYIM_NEKUDOTAYIM identifier { @@ -4898,23 +4900,15 @@ internal_functions_in_yacc: } | T_EMPTY '(' expr ')' { - exprBrackets := &ast.ParserBrackets{ + $$ = &ast.ExprEmpty{ Node: ast.Node{ - Position: position.NewTokensPosition($2, $4), + Position: position.NewTokensPosition($1, $4), }, - OpenBracketTkn: $2, - Child: $3, - CloseBracketTkn: $4, + EmptyTkn: $1, + OpenParenthesisTkn: $2, + Expr: $3, + CloseParenthesisTkn: $4, } - $$ = &ast.ExprEmpty{ast.Node{}, exprBrackets} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.Start, $2.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens(exprBrackets, token.End, $4.SkippedTokens) } | T_INCLUDE expr { diff --git a/pkg/ast/node.go b/pkg/ast/node.go index 31f5458..fb314cc 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -1066,7 +1066,11 @@ func (n *ExprClosure) Accept(v NodeVisitor) { // ExprClosureUse node type ExprClosureUse struct { Node - Uses []Vertex + UseTkn *token.Token + OpenParenthesisTkn *token.Token + Uses []Vertex + SeparatorTkns []*token.Token + CloseParenthesisTkn *token.Token } func (n *ExprClosureUse) Accept(v NodeVisitor) { @@ -1086,7 +1090,10 @@ func (n *ExprConstFetch) Accept(v NodeVisitor) { // ExprEmpty node type ExprEmpty struct { Node - Expr Vertex + EmptyTkn *token.Token + OpenParenthesisTkn *token.Token + Expr Vertex + CloseParenthesisTkn *token.Token } func (n *ExprEmpty) Accept(v NodeVisitor) { @@ -1096,7 +1103,8 @@ func (n *ExprEmpty) Accept(v NodeVisitor) { // ExprErrorSuppress node type ExprErrorSuppress struct { Node - Expr Vertex + AtTkn *token.Token + Expr Vertex } func (n *ExprErrorSuppress) Accept(v NodeVisitor) {