diff --git a/php5/php5.go b/php5/php5.go index ad8d884..0a4c39a 100644 --- a/php5/php5.go +++ b/php5/php5.go @@ -28,7 +28,6 @@ type yySymType struct { list []node.Node foreachVariable foreachVariable simpleIndirectReference simpleIndirectReference - altSyntaxNode altSyntaxNode } const T_INCLUDE = 57346 @@ -343,7 +342,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php5/php5.y:3935 +//line php5/php5.y:3994 type foreachVariable struct { node node.Node @@ -360,11 +359,6 @@ type simpleIndirectReference struct { last *expr.Variable } -type altSyntaxNode struct { - node node.Node - isAlt bool -} - //line yacctab:1 var yyExca = [...]int{ -1, 1, @@ -706,18 +700,18 @@ var yyAct = [...]int{ 531, 922, 481, 259, 283, 908, 449, 395, 256, 39, 446, 324, 521, 936, 203, 285, 260, 261, 469, 260, 261, 232, 202, 199, 136, 879, 909, 531, 260, 261, - 944, 519, 521, 335, 231, 521, 873, 829, 521, 747, - 572, 962, 572, 970, 39, 753, 39, 812, 703, 704, - 706, 703, 704, 863, 39, 445, 39, 39, 608, 589, - 521, 590, 591, 260, 261, 572, 970, 260, 261, 956, - 982, 684, 958, 39, 255, 961, 839, 39, 39, 521, - 994, 572, 964, 963, 993, 902, 572, 995, 483, 997, - 403, 895, 838, 835, 914, 575, 916, 979, 566, 448, - 1005, 1004, 39, 572, 1011, 531, 924, 724, 926, 927, - 1012, 531, 531, 394, 572, 1015, 992, 389, 164, 919, - 39, 232, 919, 232, 341, 558, 697, 538, 928, 290, - 460, 943, 161, 157, 231, 947, 231, 318, 948, 531, - 314, 127, 1008, 343, 39, 938, 528, 607, 996, 969, + 829, 519, 521, 747, 231, 521, 873, 753, 521, 863, + 572, 962, 572, 970, 39, 445, 39, 812, 703, 704, + 706, 703, 704, 608, 39, 589, 39, 39, 590, 591, + 521, 684, 255, 260, 261, 572, 970, 260, 261, 956, + 982, 839, 958, 39, 994, 961, 964, 39, 39, 521, + 963, 572, 902, 483, 993, 403, 572, 995, 895, 997, + 838, 835, 575, 566, 914, 1005, 916, 979, 1004, 448, + 724, 394, 39, 572, 1011, 531, 924, 389, 926, 927, + 1012, 531, 531, 164, 572, 1015, 992, 341, 697, 919, + 39, 232, 919, 232, 538, 558, 928, 290, 460, 161, + 157, 943, 318, 314, 231, 947, 231, 127, 948, 531, + 335, 944, 1008, 343, 39, 938, 528, 607, 996, 969, 39, 968, 945, 967, 966, 837, 836, 834, 401, 40, 568, 15, 14, 822, 972, 719, 801, 694, 11, 249, 75, 232, 76, 116, 266, 64, 89, 598, 90, 520, @@ -1632,41 +1626,41 @@ var yyPgo = [...]int{ 73, 68, 61, 1068, 1067, 1066, 35, 1065, 1063, 4, 1062, 1061, 1060, 17, 1059, 1058, 1057, 1056, 1055, 51, 5, 1054, 1053, 1051, 1049, 1048, 2, 1047, 631, 1046, - 18, 22, 1045, 1043, 1042, 39, 0, 1041, 1040, 1037, - 117, 1033, 1032, 553, 1030, 1029, 42, 8, 1028, 9, - 1027, 1026, 1024, 14, 49, 1018, 1017, 1013, 1007, 1001, - 1000, 3, 998, 16, 995, 993, 992, 991, 990, 28, - 988, 985, 983, 982, 980, 976, 974, 21, 971, 962, - 961, 25, 959, 23, 12, 958, 40, 955, 953, 945, - 939, 41, 6, 19, 13, 937, 933, 930, 15, 853, + 18, 22, 1045, 1043, 1042, 15, 1041, 1040, 39, 0, + 1037, 1033, 1032, 117, 1030, 1029, 553, 1028, 1027, 42, + 8, 1026, 9, 1024, 1018, 1017, 14, 49, 1013, 1007, + 1001, 1000, 998, 995, 3, 993, 16, 992, 991, 990, + 988, 985, 28, 983, 982, 980, 976, 974, 971, 962, + 21, 961, 959, 958, 25, 955, 23, 12, 953, 40, + 945, 939, 937, 933, 41, 6, 19, 13, 930, 853, 7, 20, } var yyR1 = [...]int{ - 0, 149, 85, 85, 86, 86, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 87, 87, - 4, 4, 4, 4, 88, 88, 5, 5, 5, 5, - 89, 89, 6, 6, 6, 6, 53, 53, 90, 90, + 0, 149, 88, 88, 89, 89, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 90, 90, + 4, 4, 4, 4, 91, 91, 5, 5, 5, 5, + 92, 92, 6, 6, 6, 6, 53, 53, 93, 93, 24, 24, 24, 24, 24, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 108, 108, 58, 58, 109, - 109, 110, 110, 59, 106, 106, 56, 51, 52, 144, - 144, 145, 145, 60, 61, 61, 64, 64, 64, 64, - 65, 65, 2, 118, 118, 114, 114, 119, 119, 143, - 143, 142, 142, 142, 147, 147, 148, 148, 57, 57, - 107, 107, 83, 83, 83, 83, 104, 104, 104, 150, - 150, 146, 146, 100, 100, 101, 101, 54, 54, 55, - 55, 111, 111, 112, 112, 63, 63, 62, 62, 62, - 62, 81, 81, 81, 120, 120, 69, 69, 69, 69, - 91, 91, 27, 27, 27, 92, 92, 92, 92, 113, - 113, 66, 66, 66, 66, 68, 121, 121, 82, 82, - 122, 122, 123, 123, 70, 70, 71, 124, 124, 74, - 74, 73, 72, 72, 75, 75, 84, 84, 115, 115, - 116, 116, 125, 125, 76, 76, 76, 76, 76, 76, - 117, 117, 117, 117, 67, 67, 105, 105, 103, 103, - 102, 102, 131, 131, 129, 129, 130, 130, 130, 132, - 132, 42, 15, 15, 15, 15, 15, 15, 15, 15, + 26, 26, 26, 26, 26, 111, 111, 58, 58, 112, + 112, 113, 113, 59, 109, 109, 56, 51, 52, 147, + 147, 148, 148, 60, 61, 61, 64, 64, 64, 64, + 65, 65, 2, 121, 121, 117, 117, 122, 122, 146, + 146, 145, 145, 145, 86, 86, 85, 85, 57, 57, + 110, 110, 83, 83, 83, 83, 107, 107, 107, 150, + 150, 87, 87, 103, 103, 104, 104, 54, 54, 55, + 55, 114, 114, 115, 115, 63, 63, 62, 62, 62, + 62, 81, 81, 81, 123, 123, 69, 69, 69, 69, + 94, 94, 27, 27, 27, 95, 95, 95, 95, 116, + 116, 66, 66, 66, 66, 68, 124, 124, 82, 82, + 125, 125, 126, 126, 70, 70, 71, 127, 127, 74, + 74, 73, 72, 72, 75, 75, 84, 84, 118, 118, + 119, 119, 128, 128, 76, 76, 76, 76, 76, 76, + 120, 120, 120, 120, 67, 67, 108, 108, 106, 106, + 105, 105, 134, 134, 132, 132, 133, 133, 133, 135, + 135, 42, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, @@ -1674,27 +1668,27 @@ var yyR1 = [...]int{ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 50, 50, 50, 50, - 47, 47, 47, 47, 46, 46, 1, 99, 99, 98, - 98, 98, 98, 23, 23, 23, 23, 23, 23, 23, + 47, 47, 47, 47, 46, 46, 1, 102, 102, 101, + 101, 101, 101, 23, 23, 23, 23, 23, 23, 23, 23, 11, 11, 11, 11, 45, 45, 45, 43, 43, - 41, 41, 139, 139, 138, 49, 49, 49, 126, 126, - 126, 80, 80, 7, 7, 7, 7, 7, 7, 7, + 41, 41, 142, 142, 141, 49, 49, 49, 129, 129, + 129, 80, 80, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 28, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 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, 79, 79, 79, 79, 79, 79, 79, 35, 35, 35, 35, 29, 29, 29, 29, 29, 29, - 29, 127, 127, 151, 151, 128, 128, 128, 128, 14, - 14, 48, 48, 16, 17, 18, 19, 19, 140, 140, - 133, 135, 135, 77, 134, 134, 134, 40, 40, 44, + 29, 130, 130, 151, 151, 131, 131, 131, 131, 14, + 14, 48, 48, 16, 17, 18, 19, 19, 143, 143, + 136, 138, 138, 77, 137, 137, 137, 40, 40, 44, 44, 12, 22, 22, 20, 20, 20, 21, 21, 21, - 10, 10, 10, 9, 9, 13, 13, 136, 136, 137, - 137, 137, 39, 39, 141, 141, 97, 97, 38, 38, - 38, 96, 96, 95, 95, 95, 95, 95, 95, 95, - 95, 93, 93, 93, 93, 33, 33, 33, 33, 33, + 10, 10, 10, 9, 9, 13, 13, 139, 139, 140, + 140, 140, 39, 39, 144, 144, 100, 100, 38, 38, + 38, 99, 99, 98, 98, 98, 98, 98, 98, 98, + 98, 96, 96, 96, 96, 33, 33, 33, 33, 33, 33, 34, 34, 34, 37, 37, 37, 37, 37, 37, - 37, 37, 94, 94, 36, 36, 30, 30, 31, 32, + 37, 37, 97, 97, 36, 36, 30, 30, 31, 32, } var yyR2 = [...]int{ @@ -1753,7 +1747,7 @@ var yyR2 = [...]int{ } var yyChk = [...]int{ - -1000, -149, -85, -3, 2, -25, -51, -52, 51, 79, + -1000, -149, -88, -3, 2, -25, -51, -52, 51, 79, 44, -53, -26, 10, -60, -61, 38, 142, 7, 21, 20, 23, 30, 34, 35, 39, -50, 46, 98, 19, 14, -14, 48, 25, 27, 144, 40, 43, 36, -1, @@ -1763,99 +1757,99 @@ var yyChk = [...]int{ 112, 113, 6, 156, -29, -47, -46, 141, 96, -20, 91, 49, 50, 4, 5, 84, 85, 86, 11, -35, -32, -7, 140, 74, 62, 18, 60, 148, -21, -22, - -23, -30, -86, 82, -11, 8, 9, 66, 67, 81, - 63, 64, 65, 80, -10, -141, -44, -12, -40, -9, - 157, 12, 146, -86, 142, 82, 10, -87, 37, 38, - -4, -86, 82, 144, 158, 145, 10, -90, -48, 146, + -23, -30, -89, 82, -11, 8, 9, 66, 67, 81, + 63, 64, 65, 80, -10, -144, -44, -12, -40, -9, + 157, 12, 146, -89, 142, 82, 10, -90, 37, 38, + -4, -89, 82, 144, 158, 145, 10, -93, -48, 146, -48, -25, -1, 79, 146, -48, 144, -14, 97, 98, - 144, -14, 144, -15, -19, -14, 144, -91, -27, 12, - 157, -92, -1, 12, -105, -14, 144, 129, 130, 87, + 144, -14, 144, -15, -19, -14, 144, -94, -27, 12, + 157, -95, -1, 12, -108, -14, 144, 129, 130, 87, 89, 88, 159, 151, 161, 167, 153, 152, 162, 131, 163, 164, 132, 133, 134, 135, 136, 137, 165, 138, 166, 139, 90, 150, 146, 146, 146, 142, -14, 10, - -144, 151, 10, 10, -15, -19, -14, 52, 52, 160, + -147, 151, 10, 10, -15, -19, -14, 52, 52, 160, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 146, -14, 104, 105, -18, -19, -86, 79, + 127, 128, 146, -14, 104, 105, -18, -19, -89, 79, 82, -11, -12, 98, -18, -14, -14, -14, -14, -42, -14, -50, -14, -14, -14, -14, -14, -14, -14, -49, - 146, -48, -14, 148, 148, -126, 17, -93, -33, 12, - 76, 77, -14, 57, -43, -11, -41, -86, 79, 82, - -21, -10, -141, -12, 146, 146, -14, -14, 146, -14, - -14, 148, -93, 17, 17, 75, -93, 148, 146, -96, - -95, -14, 151, 148, 148, 82, -81, 146, -86, 78, + 146, -48, -14, 148, 148, -129, 17, -96, -33, 12, + 76, 77, -14, 57, -43, -11, -41, -89, 79, 82, + -21, -10, -144, -12, 146, 146, -14, -14, 146, -14, + -14, 148, -96, 17, 17, 75, -96, 148, 146, -99, + -98, -14, 151, 148, 148, 82, -81, 146, -89, 78, 148, 142, -10, 157, 78, -81, 142, 147, 144, 142, - -85, -86, 144, 158, -88, -5, -86, 82, -89, -6, - -86, 82, 29, -86, 10, 160, -24, 143, 2, -25, - -51, -52, 51, -25, 145, -146, -25, 145, 21, -144, - -103, -102, -14, -83, 142, 145, 144, 144, 144, 144, - 144, 158, -16, 142, -19, 144, 158, -144, 160, 144, + -88, -89, 144, 158, -91, -5, -89, 82, -92, -6, + -89, 82, 29, -89, 10, 160, -24, 143, 2, -25, + -51, -52, 51, -25, 145, -87, -25, 145, 21, -147, + -106, -105, -14, -83, 142, 145, 144, 144, 144, 144, + 144, 158, -16, 142, -19, 144, 158, -147, 160, 144, 158, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -14, -14, -43, -14, 145, -106, - -56, -19, -19, -15, -107, 10, -90, 144, 144, 10, - 146, -65, 55, -118, 55, 58, -14, 151, -14, -14, + -14, -14, -14, -14, -14, -14, -43, -14, 145, -109, + -56, -19, -19, -15, -110, 10, -93, 144, 144, 10, + 146, -65, 55, -121, 55, 58, -14, 151, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -97, -38, -19, 59, 82, -86, 78, 78, 147, 147, + -100, -38, -19, 59, 82, -89, 78, 78, 147, 147, 147, 147, -13, -14, -13, 141, -33, -33, 17, 148, - 57, -14, 11, -19, -136, -137, -40, -39, -10, -141, - 10, 142, -80, -81, 78, 82, -86, 57, -10, 78, - -94, -36, -19, -15, -19, -15, -14, -13, 140, 75, - 75, -13, -96, 149, -151, 158, 58, -17, -19, -13, - -13, 10, 147, -120, -50, -69, -15, -19, 151, 83, + 57, -14, 11, -19, -139, -140, -40, -39, -10, -144, + 10, 142, -80, -81, 78, 82, -89, 57, -10, 78, + -97, -36, -19, -15, -19, -15, -14, -13, 140, 75, + 75, -13, -99, 149, -151, 158, 58, -17, -19, -13, + -13, 10, 147, -123, -50, -69, -15, -19, 151, 83, -81, -39, -40, 10, 52, -13, -14, -39, -40, 10, - -14, 144, -85, 143, -81, -4, 144, 158, 29, -86, - 144, 158, 29, -86, 10, 29, 160, -28, -78, -7, - -31, -86, 79, 82, 60, 148, -8, 62, -79, 18, - 74, -11, 154, 155, 153, 152, 146, 146, -100, -90, - -90, -48, 144, 158, -104, 144, -104, 144, -27, -14, + -14, 144, -88, 143, -81, -4, 144, 158, 29, -89, + 144, 158, 29, -89, 10, 29, 160, -28, -78, -7, + -31, -89, 79, 82, 60, 148, -8, 62, -79, 18, + 74, -11, 154, 155, 153, 152, 146, 146, -103, -93, + -93, -48, 144, 158, -107, 144, -107, 144, -27, -14, 12, 146, -28, -14, 145, -14, 147, 158, 29, 29, - 147, 158, 160, 143, 146, -111, -112, -63, -62, 60, - 61, -45, -86, 79, 82, -114, 56, -45, 142, -119, - -45, -15, -19, -19, 91, 147, 158, 146, -86, -132, - -130, -129, -131, 148, -133, 57, 149, 149, -34, 10, - 13, 12, 10, 143, 148, 143, -134, -77, -135, -81, - 148, 142, -10, -14, -40, -86, -136, -40, 147, 158, + 147, 158, 160, 143, 146, -114, -115, -63, -62, 60, + 61, -45, -89, 79, 82, -117, 56, -45, 142, -122, + -45, -15, -19, -19, 91, 147, 158, 146, -89, -135, + -133, -132, -134, 148, -136, 57, 149, 149, -34, 10, + 13, 12, 10, 143, 148, 143, -137, -77, -138, -81, + 148, 142, -10, -14, -40, -89, -139, -40, 147, 158, 147, 147, 147, 149, 149, 147, -14, 151, -14, 151, 149, 149, 147, 158, 147, -17, -14, -81, -81, 149, 143, -81, -81, 143, 143, -5, 10, 29, -6, 10, 29, 10, -28, 148, 153, 152, 162, 131, 163, 164, 159, 151, 161, 132, 133, 167, 88, 89, 87, 130, 129, 134, 135, 136, 137, 165, 166, 138, 139, 150, - 82, -86, 146, -127, -128, -78, 17, 78, -78, -78, - -78, -78, -78, 147, -54, 93, 94, -101, 22, 144, - -103, -14, 143, 32, 33, -104, 31, -104, 143, 160, - -111, -14, 144, -56, -142, -19, 151, 59, -142, -57, - -25, 145, 10, -28, -108, 41, -111, 147, 158, -144, - 82, -86, 142, -119, -113, 158, -43, 160, -38, -97, - 148, -131, -133, -13, -136, 149, -14, -140, 148, 148, - -13, -14, 143, -139, -36, 58, -17, -17, -69, 10, + 82, -89, 146, -130, -131, -78, 17, 78, -78, -78, + -78, -78, -78, 147, -54, 93, 94, -104, 22, 144, + -106, -14, 143, 32, 33, -107, 31, -107, 143, 160, + -114, -14, 144, -56, -145, -19, 151, 59, -145, -57, + -25, 145, 10, -28, -111, 41, -114, 147, 158, -147, + 82, -89, 142, -122, -116, 158, -43, 160, -38, -100, + 148, -134, -136, -13, -139, 149, -14, -143, 148, 148, + -13, -14, 143, -142, -36, 58, -17, -17, -69, 10, 10, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, - -78, -78, -78, -78, -78, -78, -78, 145, -78, -86, - -127, 149, -151, 158, 58, 10, 52, 147, 144, -48, + -78, -78, -78, -78, -78, -78, -78, 145, -78, -89, + -130, 149, -151, 158, 58, 10, 52, 147, 144, -48, -25, -55, 93, 94, 144, 144, -14, -150, 145, 144, - 143, 144, 31, -28, 147, -143, 58, -19, 146, -143, - -90, 160, -58, 42, 146, 147, -99, 44, -63, -145, - 83, -86, -113, 143, -66, -115, -67, -68, -116, -125, + 143, 144, 31, -28, 147, -146, 58, -19, 146, -146, + -93, 160, -58, 42, 146, 147, -102, 44, -63, -148, + 83, -89, -116, 143, -66, -118, -67, -68, -119, -128, 47, 38, 44, -76, 103, 102, 101, 98, 99, 100, - -45, -80, -14, 147, -13, 149, -134, 149, -133, -13, - -13, 149, 143, -138, 57, -14, 151, 149, -78, 145, - 147, -78, -78, -25, 95, -48, 145, -103, -150, -90, - 144, -99, 147, -142, -97, 147, 28, -28, 142, -45, - 142, 142, 146, 12, 143, -117, 12, 144, 158, -1, - -76, 10, -121, -45, 149, 143, 149, 149, -136, -17, - -78, 58, 144, 145, -90, 147, -90, 142, -148, -25, - 145, 147, -148, 144, -90, 12, -90, -90, -98, 12, - 151, 160, 144, 158, 160, 10, -144, 160, -82, 158, - 144, 142, -78, -90, -147, -25, 145, -90, -90, 143, + -45, -80, -14, 147, -13, 149, -137, 149, -136, -13, + -13, 149, 143, -141, 57, -14, 151, 149, -78, 145, + 147, -78, -78, -25, 95, -48, 145, -106, -150, -93, + 144, -102, 147, -145, -100, 147, 28, -28, 142, -45, + 142, 142, 146, 12, 143, -120, 12, 144, 158, -1, + -76, 10, -124, -45, 149, 143, 149, 149, -139, -17, + -78, 58, 144, 145, -93, 147, -93, 142, -85, -25, + 145, 147, -85, 144, -93, 12, -93, -93, -101, 12, + 151, 160, 144, 158, 160, 10, -147, 160, -82, 158, + 144, 142, -78, -93, -86, -25, 145, -93, -93, 143, 147, 143, 143, 147, 158, 12, -28, 12, -28, 160, - 10, -28, -45, -122, -123, -70, -71, -72, -73, -74, - -45, 10, -90, 143, 26, 142, 12, 151, 160, -28, + 10, -28, -45, -125, -126, -70, -71, -72, -73, -74, + -45, 10, -93, 143, 26, 142, 12, 151, 160, -28, 146, 143, -70, 144, 144, 45, 29, 78, 24, 144, - -90, 12, -28, -111, -124, -45, -75, -76, 10, 144, - 143, 147, 158, 10, -109, -110, -59, 41, -84, 144, - 142, -45, -59, 146, -90, -45, 143, 12, 147, 142, - -90, 143, + -93, 12, -28, -114, -127, -45, -75, -76, 10, 144, + 143, 147, 158, 10, -112, -113, -59, 41, -84, 144, + 142, -45, -59, 146, -93, -45, 143, 12, 147, 142, + -93, 143, } var yyDef = [...]int{ @@ -2339,14 +2333,14 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:271 + //line php5/php5.y:270 { yylex.(*Parser).rootNode = node.NewRoot(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(yylex.(*Parser).rootNode, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) } case 2: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:279 + //line php5/php5.y:278 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -2354,13 +2348,13 @@ yydefault: } case 3: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:284 + //line php5/php5.y:283 { yyVAL.list = []node.Node{} } case 4: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:289 + //line php5/php5.y:288 { namePart := name.NewNamePart(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -2369,7 +2363,7 @@ yydefault: } case 5: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:296 + //line php5/php5.y:295 { namePart := name.NewNamePart(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -2378,32 +2372,32 @@ yydefault: } case 6: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:306 + //line php5/php5.y:305 { // error yyVAL.node = nil } case 7: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:311 + //line php5/php5.y:310 { yyVAL.node = yyDollar[1].node } case 8: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:313 + //line php5/php5.y:312 { yyVAL.node = yyDollar[1].node } case 9: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:315 + //line php5/php5.y:314 { yyVAL.node = yyDollar[1].node } case 10: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:317 + //line php5/php5.y:316 { yyVAL.node = stmt.NewHaltCompiler() yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -2411,7 +2405,7 @@ yydefault: } case 11: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:323 + //line php5/php5.y:322 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2423,7 +2417,7 @@ yydefault: } case 12: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:333 + //line php5/php5.y:332 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2435,7 +2429,7 @@ yydefault: } case 13: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:343 + //line php5/php5.y:342 { yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -2443,7 +2437,7 @@ yydefault: } case 14: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:349 + //line php5/php5.y:348 { yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2451,7 +2445,7 @@ yydefault: } case 15: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:355 + //line php5/php5.y:354 { useType := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -2463,7 +2457,7 @@ yydefault: } case 16: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:365 + //line php5/php5.y:364 { useType := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -2475,25 +2469,25 @@ yydefault: } case 17: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:375 + //line php5/php5.y:374 { yyVAL.node = yyDollar[1].node } case 18: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:380 + //line php5/php5.y:379 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 19: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:382 + //line php5/php5.y:381 { yyVAL.list = []node.Node{yyDollar[1].node} } case 20: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:387 + //line php5/php5.y:386 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2505,7 +2499,7 @@ yydefault: } case 21: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:397 + //line php5/php5.y:396 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2520,7 +2514,7 @@ yydefault: } case 22: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:410 + //line php5/php5.y:409 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2532,7 +2526,7 @@ yydefault: } case 23: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:420 + //line php5/php5.y:419 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2547,19 +2541,19 @@ yydefault: } case 24: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:436 + //line php5/php5.y:435 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 25: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:438 + //line php5/php5.y:437 { yyVAL.list = []node.Node{yyDollar[1].node} } case 26: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:443 + //line php5/php5.y:442 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2571,7 +2565,7 @@ yydefault: } case 27: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:453 + //line php5/php5.y:452 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2586,7 +2580,7 @@ yydefault: } case 28: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:466 + //line php5/php5.y:465 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2598,7 +2592,7 @@ yydefault: } case 29: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:476 + //line php5/php5.y:475 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2613,19 +2607,19 @@ yydefault: } case 30: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:492 + //line php5/php5.y:491 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 31: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:494 + //line php5/php5.y:493 { yyVAL.list = []node.Node{yyDollar[1].node} } case 32: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:499 + //line php5/php5.y:498 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2637,7 +2631,7 @@ yydefault: } case 33: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:509 + //line php5/php5.y:508 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2652,7 +2646,7 @@ yydefault: } case 34: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:522 + //line php5/php5.y:521 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2664,7 +2658,7 @@ yydefault: } case 35: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:532 + //line php5/php5.y:531 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2679,7 +2673,7 @@ yydefault: } case 36: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:548 + //line php5/php5.y:547 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -2697,7 +2691,7 @@ yydefault: } case 37: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:564 + //line php5/php5.y:563 { name := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -2715,7 +2709,7 @@ yydefault: } case 38: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:583 + //line php5/php5.y:582 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -2723,38 +2717,38 @@ yydefault: } case 39: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:589 + //line php5/php5.y:588 { yyVAL.list = []node.Node{} } case 40: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:595 + //line php5/php5.y:594 { // error yyVAL.node = nil } case 41: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:600 + //line php5/php5.y:599 { yyVAL.node = yyDollar[1].node } case 42: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:602 + //line php5/php5.y:601 { yyVAL.node = yyDollar[1].node } case 43: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:604 + //line php5/php5.y:603 { yyVAL.node = yyDollar[1].node } case 44: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:606 + //line php5/php5.y:605 { yyVAL.node = stmt.NewHaltCompiler() yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -2762,13 +2756,13 @@ yydefault: } case 45: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:616 + //line php5/php5.y:615 { yyVAL.node = yyDollar[1].node } case 46: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:618 + //line php5/php5.y:617 { label := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -2780,7 +2774,7 @@ yydefault: } case 47: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:631 + //line php5/php5.y:630 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2788,7 +2782,7 @@ yydefault: } case 48: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:637 + //line php5/php5.y:636 { yyVAL.node = stmt.NewIf(yyDollar[2].node, yyDollar[3].node, yyDollar[4].list, yyDollar[5].node) @@ -2804,7 +2798,7 @@ yydefault: } case 49: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:651 + //line php5/php5.y:650 { stmts := stmt.NewStmtList(yyDollar[4].list) yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[4].list)) @@ -2815,19 +2809,23 @@ yydefault: } case 50: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:660 + //line php5/php5.y:659 { - if yyDollar[3].altSyntaxNode.isAlt { - yyVAL.node = stmt.NewAltWhile(yyDollar[2].node, yyDollar[3].altSyntaxNode.node) - } else { - yyVAL.node = stmt.NewWhile(yyDollar[2].node, yyDollar[3].altSyntaxNode.node) + switch n := yyDollar[3].node.(type) { + case *stmt.While: + n.Cond = yyDollar[2].node + case *stmt.AltWhile: + n.Cond = yyDollar[2].node } - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].altSyntaxNode.node)) + + yyVAL.node = yyDollar[3].node + + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 51: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:670 + //line php5/php5.y:673 { yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) @@ -2835,19 +2833,27 @@ yydefault: } case 52: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:676 + //line php5/php5.y:679 { - if yyDollar[9].altSyntaxNode.isAlt { - yyVAL.node = stmt.NewAltFor(yyDollar[3].list, yyDollar[5].list, yyDollar[7].list, yyDollar[9].altSyntaxNode.node) - } else { - yyVAL.node = stmt.NewFor(yyDollar[3].list, yyDollar[5].list, yyDollar[7].list, yyDollar[9].altSyntaxNode.node) + switch n := yyDollar[9].node.(type) { + case *stmt.For: + n.Init = yyDollar[3].list + n.Cond = yyDollar[5].list + n.Loop = yyDollar[7].list + case *stmt.AltFor: + n.Init = yyDollar[3].list + n.Cond = yyDollar[5].list + n.Loop = yyDollar[7].list } - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].altSyntaxNode.node)) + + yyVAL.node = yyDollar[9].node + + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node)) yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 53: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:686 + //line php5/php5.y:697 { switch n := yyDollar[3].node.(type) { case *stmt.Switch: @@ -2865,7 +2871,7 @@ yydefault: } case 54: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:702 + //line php5/php5.y:713 { yyVAL.node = stmt.NewBreak(nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -2873,7 +2879,7 @@ yydefault: } case 55: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:708 + //line php5/php5.y:719 { yyVAL.node = stmt.NewBreak(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2881,7 +2887,7 @@ yydefault: } case 56: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:714 + //line php5/php5.y:725 { yyVAL.node = stmt.NewContinue(nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -2889,7 +2895,7 @@ yydefault: } case 57: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:720 + //line php5/php5.y:731 { yyVAL.node = stmt.NewContinue(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2897,7 +2903,7 @@ yydefault: } case 58: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:726 + //line php5/php5.y:737 { yyVAL.node = stmt.NewReturn(nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -2905,7 +2911,7 @@ yydefault: } case 59: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:732 + //line php5/php5.y:743 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2913,7 +2919,7 @@ yydefault: } case 60: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:738 + //line php5/php5.y:749 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2921,7 +2927,7 @@ yydefault: } case 61: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:744 + //line php5/php5.y:755 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -2929,7 +2935,7 @@ yydefault: } case 62: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:750 + //line php5/php5.y:761 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2937,7 +2943,7 @@ yydefault: } case 63: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:756 + //line php5/php5.y:767 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2945,7 +2951,7 @@ yydefault: } case 64: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:762 + //line php5/php5.y:773 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2953,7 +2959,7 @@ yydefault: } case 65: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:768 + //line php5/php5.y:779 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -2961,7 +2967,7 @@ yydefault: } case 66: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:774 + //line php5/php5.y:785 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -2969,7 +2975,7 @@ yydefault: } case 67: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:780 + //line php5/php5.y:791 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) @@ -2977,47 +2983,77 @@ yydefault: } case 68: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:786 + //line php5/php5.y:797 { if yyDollar[6].foreachVariable.node == nil { - if yyDollar[8].altSyntaxNode.isAlt { - yyVAL.node = stmt.NewAltForeach(yyDollar[3].node, nil, yyDollar[5].foreachVariable.node, yyDollar[8].altSyntaxNode.node, yyDollar[5].foreachVariable.byRef) - } else { - yyVAL.node = stmt.NewForeach(yyDollar[3].node, nil, yyDollar[5].foreachVariable.node, yyDollar[8].altSyntaxNode.node, yyDollar[5].foreachVariable.byRef) + switch n := yyDollar[8].node.(type) { + case *stmt.Foreach: + n.Expr = yyDollar[3].node + n.ByRef = yyDollar[5].foreachVariable.byRef + n.Variable = yyDollar[5].foreachVariable.node + case *stmt.AltForeach: + n.Expr = yyDollar[3].node + n.ByRef = yyDollar[5].foreachVariable.byRef + n.Variable = yyDollar[5].foreachVariable.node } } else { - if yyDollar[8].altSyntaxNode.isAlt { - yyVAL.node = stmt.NewAltForeach(yyDollar[3].node, yyDollar[5].foreachVariable.node, yyDollar[6].foreachVariable.node, yyDollar[8].altSyntaxNode.node, yyDollar[6].foreachVariable.byRef) - } else { - yyVAL.node = stmt.NewForeach(yyDollar[3].node, yyDollar[5].foreachVariable.node, yyDollar[6].foreachVariable.node, yyDollar[8].altSyntaxNode.node, yyDollar[6].foreachVariable.byRef) + switch n := yyDollar[8].node.(type) { + case *stmt.Foreach: + n.Expr = yyDollar[3].node + n.Key = yyDollar[5].foreachVariable.node + n.ByRef = yyDollar[6].foreachVariable.byRef + n.Variable = yyDollar[6].foreachVariable.node + case *stmt.AltForeach: + n.Expr = yyDollar[3].node + n.Key = yyDollar[5].foreachVariable.node + n.ByRef = yyDollar[6].foreachVariable.byRef + n.Variable = yyDollar[6].foreachVariable.node } } - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[8].altSyntaxNode.node)) + + yyVAL.node = yyDollar[8].node + + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[8].node)) yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 69: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:804 + //line php5/php5.y:830 { if yyDollar[6].foreachVariable.node == nil { - if yyDollar[8].altSyntaxNode.isAlt { - yyVAL.node = stmt.NewAltForeach(yyDollar[3].node, nil, yyDollar[5].foreachVariable.node, yyDollar[8].altSyntaxNode.node, yyDollar[5].foreachVariable.byRef) - } else { - yyVAL.node = stmt.NewForeach(yyDollar[3].node, nil, yyDollar[5].foreachVariable.node, yyDollar[8].altSyntaxNode.node, yyDollar[5].foreachVariable.byRef) + switch n := yyDollar[8].node.(type) { + case *stmt.Foreach: + n.Expr = yyDollar[3].node + n.ByRef = yyDollar[5].foreachVariable.byRef + n.Variable = yyDollar[5].foreachVariable.node + case *stmt.AltForeach: + n.Expr = yyDollar[3].node + n.ByRef = yyDollar[5].foreachVariable.byRef + n.Variable = yyDollar[5].foreachVariable.node } } else { - if yyDollar[8].altSyntaxNode.isAlt { - yyVAL.node = stmt.NewAltForeach(yyDollar[3].node, yyDollar[5].foreachVariable.node, yyDollar[6].foreachVariable.node, yyDollar[8].altSyntaxNode.node, yyDollar[6].foreachVariable.byRef) - } else { - yyVAL.node = stmt.NewForeach(yyDollar[3].node, yyDollar[5].foreachVariable.node, yyDollar[6].foreachVariable.node, yyDollar[8].altSyntaxNode.node, yyDollar[6].foreachVariable.byRef) + switch n := yyDollar[8].node.(type) { + case *stmt.Foreach: + n.Expr = yyDollar[3].node + n.Key = yyDollar[5].foreachVariable.node + n.ByRef = yyDollar[6].foreachVariable.byRef + n.Variable = yyDollar[6].foreachVariable.node + case *stmt.AltForeach: + n.Expr = yyDollar[3].node + n.Key = yyDollar[5].foreachVariable.node + n.ByRef = yyDollar[6].foreachVariable.byRef + n.Variable = yyDollar[6].foreachVariable.node } } - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[8].altSyntaxNode.node)) + + yyVAL.node = yyDollar[8].node + + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[8].node)) yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 70: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:822 + //line php5/php5.y:863 { yyVAL.node = stmt.NewDeclare(yyDollar[3].list, yyDollar[5].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) @@ -3025,7 +3061,7 @@ yydefault: } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:828 + //line php5/php5.y:869 { yyVAL.node = stmt.NewNop() yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3033,7 +3069,7 @@ yydefault: } case 72: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:834 + //line php5/php5.y:875 { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3047,7 +3083,7 @@ yydefault: } case 73: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:846 + //line php5/php5.y:887 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -3055,7 +3091,7 @@ yydefault: } case 74: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:852 + //line php5/php5.y:893 { label := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -3067,13 +3103,13 @@ yydefault: } case 75: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:865 + //line php5/php5.y:906 { yyVAL.list = []node.Node{} } case 76: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:867 + //line php5/php5.y:908 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3091,13 +3127,13 @@ yydefault: } case 77: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:885 + //line php5/php5.y:926 { yyVAL.node = nil } case 78: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:887 + //line php5/php5.y:928 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3105,31 +3141,31 @@ yydefault: } case 79: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:896 + //line php5/php5.y:937 { yyVAL.list = yyDollar[1].list } case 80: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:898 + //line php5/php5.y:939 { yyVAL.list = []node.Node{} } case 81: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:903 + //line php5/php5.y:944 { yyVAL.list = []node.Node{yyDollar[1].node} } case 82: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:905 + //line php5/php5.y:946 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 83: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:910 + //line php5/php5.y:951 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3145,61 +3181,61 @@ yydefault: } case 84: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:927 + //line php5/php5.y:968 { yyVAL.list = []node.Node{yyDollar[1].node} } case 85: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:929 + //line php5/php5.y:970 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:934 + //line php5/php5.y:975 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:939 + //line php5/php5.y:980 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:944 + //line php5/php5.y:985 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:949 + //line php5/php5.y:990 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:951 + //line php5/php5.y:992 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 91: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:956 + //line php5/php5.y:997 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 92: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:958 + //line php5/php5.y:999 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 93: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:963 + //line php5/php5.y:1004 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3211,7 +3247,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-7 : yypt+1] - //line php5/php5.y:976 + //line php5/php5.y:1017 { switch n := yyDollar[1].node.(type) { case *stmt.Class: @@ -3234,7 +3270,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:997 + //line php5/php5.y:1038 { name := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -3246,7 +3282,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1011 + //line php5/php5.y:1052 { yyVAL.node = stmt.NewClass(nil, nil, nil, nil, nil, nil, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3254,7 +3290,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1017 + //line php5/php5.y:1058 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(classModifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3266,7 +3302,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1027 + //line php5/php5.y:1068 { yyVAL.node = stmt.NewTrait(nil, nil, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3274,7 +3310,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1033 + //line php5/php5.y:1074 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(classModifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3286,85 +3322,85 @@ yydefault: } case 100: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1046 + //line php5/php5.y:1087 { yyVAL.node = nil } case 101: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1048 + //line php5/php5.y:1089 { yyVAL.node = yyDollar[2].node } case 102: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1053 + //line php5/php5.y:1094 { yyVAL.token = yyDollar[1].token } case 103: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1058 + //line php5/php5.y:1099 { yyVAL.list = nil } case 104: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1060 + //line php5/php5.y:1101 { yyVAL.list = yyDollar[2].list } case 105: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1065 + //line php5/php5.y:1106 { yyVAL.list = nil } case 106: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1067 + //line php5/php5.y:1108 { yyVAL.list = yyDollar[2].list } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1072 + //line php5/php5.y:1113 { yyVAL.list = []node.Node{yyDollar[1].node} } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1074 + //line php5/php5.y:1115 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 109: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1079 + //line php5/php5.y:1120 { yyVAL.foreachVariable = foreachVariable{nil, false} } case 110: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1081 + //line php5/php5.y:1122 { yyVAL.foreachVariable = yyDollar[2].foreachVariable } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1086 + //line php5/php5.y:1127 { yyVAL.foreachVariable = foreachVariable{yyDollar[1].node, false} } case 112: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1088 + //line php5/php5.y:1129 { yyVAL.foreachVariable = foreachVariable{yyDollar[2].node, true} } case 113: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1090 + //line php5/php5.y:1131 { list := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3373,39 +3409,47 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1100 + //line php5/php5.y:1141 { - yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} + yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) } case 115: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1102 + //line php5/php5.y:1146 { - yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} - yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + stmtList := stmt.NewStmtList(yyDollar[2].list) + yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) + + yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1111 + //line php5/php5.y:1158 { - yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} + yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node, false) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) } case 117: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1113 + //line php5/php5.y:1163 { - yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} - yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + stmtList := stmt.NewStmtList(yyDollar[2].list) + yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList, false) + + yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1122 + //line php5/php5.y:1175 { yyVAL.node = yyDollar[1].node } case 119: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1124 + //line php5/php5.y:1177 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3413,7 +3457,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1134 + //line php5/php5.y:1187 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3427,7 +3471,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1146 + //line php5/php5.y:1199 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3441,7 +3485,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1162 + //line php5/php5.y:1215 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -3451,7 +3495,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1170 + //line php5/php5.y:1223 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -3461,7 +3505,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1178 + //line php5/php5.y:1231 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -3471,7 +3515,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1186 + //line php5/php5.y:1239 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -3482,13 +3526,13 @@ yydefault: } case 126: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1199 + //line php5/php5.y:1252 { yyVAL.list = []node.Node{} } case 127: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1201 + //line php5/php5.y:1254 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yylex.(*Parser).positions.AddPosition(_case, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) @@ -3497,7 +3541,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1208 + //line php5/php5.y:1261 { _default := stmt.NewDefault(yyDollar[4].list) yylex.(*Parser).positions.AddPosition(_default, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) @@ -3506,26 +3550,30 @@ yydefault: } case 131: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1225 + //line php5/php5.y:1278 { - yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} + yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) } case 132: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1227 + //line php5/php5.y:1283 { - yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} - yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + stmtList := stmt.NewStmtList(yyDollar[2].list) + yyVAL.node = stmt.NewAltWhile(nil, stmtList) + + yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) } case 133: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1237 + //line php5/php5.y:1296 { yyVAL.list = nil } case 134: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1239 + //line php5/php5.y:1298 { _elseIf := stmt.NewElseIf(yyDollar[3].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(_elseIf, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[4].node)) @@ -3535,13 +3583,13 @@ yydefault: } case 135: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1251 + //line php5/php5.y:1310 { yyVAL.list = nil } case 136: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1253 + //line php5/php5.y:1312 { stmts := stmt.NewStmtList(yyDollar[5].list) yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[5].list)) @@ -3554,13 +3602,13 @@ yydefault: } case 137: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1268 + //line php5/php5.y:1327 { yyVAL.node = nil } case 138: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1270 + //line php5/php5.y:1329 { yyVAL.node = stmt.NewElse(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -3568,13 +3616,13 @@ yydefault: } case 139: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1280 + //line php5/php5.y:1339 { yyVAL.node = nil } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1282 + //line php5/php5.y:1341 { stmts := stmt.NewStmtList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[3].list)) @@ -3585,31 +3633,31 @@ yydefault: } case 141: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1295 + //line php5/php5.y:1354 { yyVAL.list = yyDollar[1].list } case 142: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1297 + //line php5/php5.y:1356 { yyVAL.list = nil } case 143: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1302 + //line php5/php5.y:1361 { yyVAL.list = []node.Node{yyDollar[1].node} } case 144: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1304 + //line php5/php5.y:1363 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 145: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1309 + //line php5/php5.y:1368 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3637,7 +3685,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1335 + //line php5/php5.y:1394 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3665,13 +3713,13 @@ yydefault: } case 147: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1365 + //line php5/php5.y:1424 { yyVAL.node = nil } case 148: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1367 + //line php5/php5.y:1426 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3679,7 +3727,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1373 + //line php5/php5.y:1432 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3687,13 +3735,13 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1379 + //line php5/php5.y:1438 { yyVAL.node = yyDollar[1].node } case 151: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1385 + //line php5/php5.y:1444 { yyVAL.node = node.NewArgumentList(nil) @@ -3702,7 +3750,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1392 + //line php5/php5.y:1451 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -3711,7 +3759,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1399 + //line php5/php5.y:1458 { arg := node.NewArgument(yyDollar[2].node, false, false) yyVAL.node = node.NewArgumentList([]node.Node{arg}) @@ -3722,19 +3770,19 @@ yydefault: } case 154: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1412 + //line php5/php5.y:1471 { yyVAL.list = []node.Node{yyDollar[1].node} } case 155: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1414 + //line php5/php5.y:1473 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 156: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1419 + //line php5/php5.y:1478 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -3742,7 +3790,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1425 + //line php5/php5.y:1484 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -3750,7 +3798,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1431 + //line php5/php5.y:1490 { yyVAL.node = node.NewArgument(yyDollar[2].node, false, true) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) @@ -3758,7 +3806,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1437 + //line php5/php5.y:1496 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -3766,19 +3814,19 @@ yydefault: } case 160: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1446 + //line php5/php5.y:1505 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1448 + //line php5/php5.y:1507 { yyVAL.list = []node.Node{yyDollar[1].node} } case 162: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1454 + //line php5/php5.y:1513 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3790,7 +3838,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1464 + //line php5/php5.y:1523 { yyVAL.node = expr.NewVariable(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -3798,7 +3846,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1470 + //line php5/php5.y:1529 { yyVAL.node = expr.NewVariable(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3806,7 +3854,7 @@ yydefault: } case 165: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1480 + //line php5/php5.y:1539 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3825,7 +3873,7 @@ yydefault: } case 166: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1497 + //line php5/php5.y:1556 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3844,7 +3892,7 @@ yydefault: } case 167: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1514 + //line php5/php5.y:1573 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3863,7 +3911,7 @@ yydefault: } case 168: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1531 + //line php5/php5.y:1590 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3882,19 +3930,19 @@ yydefault: } case 169: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1553 + //line php5/php5.y:1612 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 170: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1555 + //line php5/php5.y:1614 { yyVAL.list = []node.Node{} } case 171: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1561 + //line php5/php5.y:1620 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) @@ -3902,19 +3950,19 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1567 + //line php5/php5.y:1626 { yyVAL.node = yyDollar[1].node } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1569 + //line php5/php5.y:1628 { yyVAL.node = yyDollar[1].node } case 174: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1571 + //line php5/php5.y:1630 { name := node.NewIdentifier(yyDollar[4].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3932,7 +3980,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1590 + //line php5/php5.y:1649 { var adaptationList *stmt.TraitAdaptationList switch n := yyDollar[3].node.(type) { @@ -3948,19 +3996,19 @@ yydefault: } case 176: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1607 + //line php5/php5.y:1666 { yyVAL.list = []node.Node{yyDollar[1].node} } case 177: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1609 + //line php5/php5.y:1668 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 178: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1614 + //line php5/php5.y:1673 { yyVAL.node = stmt.NewNop() @@ -3968,7 +4016,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1620 + //line php5/php5.y:1679 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -3976,43 +4024,43 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1629 + //line php5/php5.y:1688 { yyVAL.list = nil } case 181: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1631 + //line php5/php5.y:1690 { yyVAL.list = yyDollar[1].list } case 182: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1636 + //line php5/php5.y:1695 { yyVAL.list = []node.Node{yyDollar[1].node} } case 183: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1638 + //line php5/php5.y:1697 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1643 + //line php5/php5.y:1702 { yyVAL.node = yyDollar[1].node } case 185: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1645 + //line php5/php5.y:1704 { yyVAL.node = yyDollar[1].node } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1650 + //line php5/php5.y:1709 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeNodeListPosition(yyDollar[1].node, yyDollar[3].list)) @@ -4020,19 +4068,19 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1659 + //line php5/php5.y:1718 { yyVAL.list = []node.Node{yyDollar[1].node} } case 188: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1661 + //line php5/php5.y:1720 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1666 + //line php5/php5.y:1725 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4044,13 +4092,13 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1676 + //line php5/php5.y:1735 { yyVAL.node = yyDollar[1].node } case 191: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1681 + //line php5/php5.y:1740 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4062,7 +4110,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1694 + //line php5/php5.y:1753 { alias := node.NewIdentifier(yyDollar[4].token.Value) yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -4074,7 +4122,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1704 + //line php5/php5.y:1763 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4082,19 +4130,19 @@ yydefault: } case 194: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1713 + //line php5/php5.y:1772 { yyVAL.node = nil } case 195: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1715 + //line php5/php5.y:1774 { yyVAL.node = yyDollar[1].node } case 196: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1720 + //line php5/php5.y:1779 { yyVAL.node = stmt.NewNop() @@ -4102,7 +4150,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1726 + //line php5/php5.y:1785 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -4110,13 +4158,13 @@ yydefault: } case 198: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1735 + //line php5/php5.y:1794 { yyVAL.list = yyDollar[1].list } case 199: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1737 + //line php5/php5.y:1796 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(modifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4126,31 +4174,31 @@ yydefault: } case 200: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1748 + //line php5/php5.y:1807 { yyVAL.list = nil } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1750 + //line php5/php5.y:1809 { yyVAL.list = yyDollar[1].list } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1755 + //line php5/php5.y:1814 { yyVAL.list = []node.Node{yyDollar[1].node} } case 203: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1757 + //line php5/php5.y:1816 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 204: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1762 + //line php5/php5.y:1821 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4158,7 +4206,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1768 + //line php5/php5.y:1827 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4166,7 +4214,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1774 + //line php5/php5.y:1833 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4174,7 +4222,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1780 + //line php5/php5.y:1839 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4182,7 +4230,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1786 + //line php5/php5.y:1845 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4190,7 +4238,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1792 + //line php5/php5.y:1851 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4198,7 +4246,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1801 + //line php5/php5.y:1860 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4216,7 +4264,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1817 + //line php5/php5.y:1876 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4234,7 +4282,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1833 + //line php5/php5.y:1892 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4252,7 +4300,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1849 + //line php5/php5.y:1908 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4270,7 +4318,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1868 + //line php5/php5.y:1927 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4287,7 +4335,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1883 + //line php5/php5.y:1942 { name := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -4303,55 +4351,55 @@ yydefault: } case 216: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1900 + //line php5/php5.y:1959 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 217: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1902 + //line php5/php5.y:1961 { yyVAL.list = []node.Node{yyDollar[1].node} } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1908 + //line php5/php5.y:1967 { yyVAL.list = nil } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1910 + //line php5/php5.y:1969 { yyVAL.list = yyDollar[1].list } case 220: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1915 + //line php5/php5.y:1974 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 221: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1917 + //line php5/php5.y:1976 { yyVAL.list = []node.Node{yyDollar[1].node} } case 222: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1922 + //line php5/php5.y:1981 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1924 + //line php5/php5.y:1983 { yyVAL.list = yyDollar[1].list } case 224: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1929 + //line php5/php5.y:1988 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -4360,7 +4408,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1936 + //line php5/php5.y:1995 { fetch := expr.NewArrayDimFetch(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) @@ -4369,37 +4417,37 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1946 + //line php5/php5.y:2005 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 227: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1948 + //line php5/php5.y:2007 { yyVAL.list = yyDollar[1].list } case 228: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1950 + //line php5/php5.y:2009 { yyVAL.list = yyDollar[1].list } case 229: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1955 + //line php5/php5.y:2014 { yyVAL.list = nil } case 230: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1957 + //line php5/php5.y:2016 { yyVAL.list = yyDollar[1].list } case 231: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1962 + //line php5/php5.y:2021 { if yyDollar[3].node != nil { @@ -4414,7 +4462,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1978 + //line php5/php5.y:2037 { list := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -4426,7 +4474,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1988 + //line php5/php5.y:2047 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4434,7 +4482,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1994 + //line php5/php5.y:2053 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -4442,7 +4490,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:2000 + //line php5/php5.y:2059 { var _new *expr.New @@ -4461,7 +4509,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2017 + //line php5/php5.y:2076 { yyVAL.node = expr.NewClone(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4469,7 +4517,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2023 + //line php5/php5.y:2082 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4477,7 +4525,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2029 + //line php5/php5.y:2088 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4485,7 +4533,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2035 + //line php5/php5.y:2094 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4493,7 +4541,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2041 + //line php5/php5.y:2100 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4501,7 +4549,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2047 + //line php5/php5.y:2106 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4509,7 +4557,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2053 + //line php5/php5.y:2112 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4517,7 +4565,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2059 + //line php5/php5.y:2118 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4525,7 +4573,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2065 + //line php5/php5.y:2124 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4533,7 +4581,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2071 + //line php5/php5.y:2130 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4541,7 +4589,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2077 + //line php5/php5.y:2136 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4549,7 +4597,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2083 + //line php5/php5.y:2142 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4557,7 +4605,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2089 + //line php5/php5.y:2148 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4565,7 +4613,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2095 + //line php5/php5.y:2154 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -4573,7 +4621,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2101 + //line php5/php5.y:2160 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4581,7 +4629,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2107 + //line php5/php5.y:2166 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -4589,7 +4637,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2113 + //line php5/php5.y:2172 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4597,7 +4645,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2119 + //line php5/php5.y:2178 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4605,7 +4653,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2125 + //line php5/php5.y:2184 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4613,7 +4661,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2131 + //line php5/php5.y:2190 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4621,7 +4669,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2137 + //line php5/php5.y:2196 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4629,7 +4677,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2143 + //line php5/php5.y:2202 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4637,7 +4685,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2149 + //line php5/php5.y:2208 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4645,7 +4693,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2155 + //line php5/php5.y:2214 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4653,7 +4701,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2161 + //line php5/php5.y:2220 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4661,7 +4709,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2167 + //line php5/php5.y:2226 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4669,7 +4717,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2173 + //line php5/php5.y:2232 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4677,7 +4725,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2179 + //line php5/php5.y:2238 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4685,7 +4733,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2185 + //line php5/php5.y:2244 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4693,7 +4741,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2191 + //line php5/php5.y:2250 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4701,7 +4749,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2197 + //line php5/php5.y:2256 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4709,7 +4757,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2203 + //line php5/php5.y:2262 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4717,7 +4765,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2209 + //line php5/php5.y:2268 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4725,7 +4773,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2215 + //line php5/php5.y:2274 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4733,7 +4781,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2221 + //line php5/php5.y:2280 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4741,7 +4789,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2227 + //line php5/php5.y:2286 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4749,7 +4797,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2233 + //line php5/php5.y:2292 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4757,7 +4805,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2239 + //line php5/php5.y:2298 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4765,7 +4813,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2245 + //line php5/php5.y:2304 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4773,7 +4821,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2251 + //line php5/php5.y:2310 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4781,7 +4829,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2257 + //line php5/php5.y:2316 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4789,7 +4837,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2263 + //line php5/php5.y:2322 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4797,7 +4845,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2269 + //line php5/php5.y:2328 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4805,7 +4853,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2275 + //line php5/php5.y:2334 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4813,7 +4861,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2281 + //line php5/php5.y:2340 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4821,7 +4869,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2287 + //line php5/php5.y:2346 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4829,7 +4877,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2293 + //line php5/php5.y:2352 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4837,19 +4885,19 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2299 + //line php5/php5.y:2358 { yyVAL.node = yyDollar[1].node } case 284: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2301 + //line php5/php5.y:2360 { yyVAL.node = yyDollar[1].node } case 285: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2303 + //line php5/php5.y:2362 { yyVAL.node = yyDollar[2].node @@ -4877,7 +4925,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2329 + //line php5/php5.y:2388 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) @@ -4885,7 +4933,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2335 + //line php5/php5.y:2394 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -4893,13 +4941,13 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2341 + //line php5/php5.y:2400 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2343 + //line php5/php5.y:2402 { yyVAL.node = cast.NewInt(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4907,7 +4955,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2349 + //line php5/php5.y:2408 { yyVAL.node = cast.NewDouble(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4915,7 +4963,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2355 + //line php5/php5.y:2414 { yyVAL.node = cast.NewString(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4923,7 +4971,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2361 + //line php5/php5.y:2420 { yyVAL.node = cast.NewArray(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4931,7 +4979,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2367 + //line php5/php5.y:2426 { yyVAL.node = cast.NewObject(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4939,7 +4987,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2373 + //line php5/php5.y:2432 { yyVAL.node = cast.NewBool(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4947,7 +4995,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2379 + //line php5/php5.y:2438 { yyVAL.node = cast.NewUnset(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4955,7 +5003,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2385 + //line php5/php5.y:2444 { if strings.EqualFold(yyDollar[1].token.Value, "die") { yyVAL.node = expr.NewDie(yyDollar[2].node) @@ -4967,7 +5015,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2395 + //line php5/php5.y:2454 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4975,25 +5023,25 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2401 + //line php5/php5.y:2460 { yyVAL.node = yyDollar[1].node } case 299: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2403 + //line php5/php5.y:2462 { yyVAL.node = yyDollar[1].node } case 300: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2405 + //line php5/php5.y:2464 { yyVAL.node = yyDollar[1].node } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2407 + //line php5/php5.y:2466 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5001,7 +5049,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2413 + //line php5/php5.y:2472 { yyVAL.node = expr.NewPrint(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5009,7 +5057,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2419 + //line php5/php5.y:2478 { yyVAL.node = expr.NewYield(nil, nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5017,7 +5065,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:2425 + //line php5/php5.y:2484 { yyVAL.node = expr.NewClosure(yyDollar[4].list, yyDollar[6].list, nil, yyDollar[8].list, false, yyDollar[2].boolWithToken.value, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[9].token)) @@ -5026,7 +5074,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] - //line php5/php5.y:2432 + //line php5/php5.y:2491 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].list, nil, yyDollar[9].list, true, yyDollar[3].boolWithToken.value, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[10].token)) @@ -5035,7 +5083,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2442 + //line php5/php5.y:2501 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5043,7 +5091,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2448 + //line php5/php5.y:2507 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5051,7 +5099,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2454 + //line php5/php5.y:2513 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) @@ -5059,7 +5107,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2460 + //line php5/php5.y:2519 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) @@ -5067,7 +5115,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2469 + //line php5/php5.y:2528 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -5075,7 +5123,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2475 + //line php5/php5.y:2534 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -5083,7 +5131,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2481 + //line php5/php5.y:2540 { str := scalar.NewString(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(str, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5095,7 +5143,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2491 + //line php5/php5.y:2550 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -5103,7 +5151,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2500 + //line php5/php5.y:2559 { yyVAL.node = expr.NewArray(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -5111,7 +5159,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2506 + //line php5/php5.y:2565 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5119,25 +5167,25 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2515 + //line php5/php5.y:2574 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2520 + //line php5/php5.y:2579 { yyVAL.list = []node.Node{} } case 318: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2522 + //line php5/php5.y:2581 { yyVAL.list = yyDollar[3].list } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2527 + //line php5/php5.y:2586 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -5155,7 +5203,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2543 + //line php5/php5.y:2602 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -5173,7 +5221,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2559 + //line php5/php5.y:2618 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5191,7 +5239,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2575 + //line php5/php5.y:2634 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[2].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -5209,7 +5257,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2594 + //line php5/php5.y:2653 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5221,7 +5269,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2604 + //line php5/php5.y:2663 { funcName := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(funcName, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5233,7 +5281,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2614 + //line php5/php5.y:2673 { funcName := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(funcName, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5245,7 +5293,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2624 + //line php5/php5.y:2683 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -5253,7 +5301,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2630 + //line php5/php5.y:2689 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -5261,7 +5309,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2636 + //line php5/php5.y:2695 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -5269,7 +5317,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2642 + //line php5/php5.y:2701 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -5277,7 +5325,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2648 + //line php5/php5.y:2707 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node)) @@ -5285,7 +5333,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2657 + //line php5/php5.y:2716 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5293,7 +5341,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2663 + //line php5/php5.y:2722 { yyVAL.node = name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5301,7 +5349,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2669 + //line php5/php5.y:2728 { yyVAL.node = name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5309,7 +5357,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2675 + //line php5/php5.y:2734 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5317,7 +5365,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2684 + //line php5/php5.y:2743 { yyVAL.node = name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5325,7 +5373,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2690 + //line php5/php5.y:2749 { yyVAL.node = name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5333,7 +5381,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2696 + //line php5/php5.y:2755 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5341,19 +5389,19 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2705 + //line php5/php5.y:2764 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2707 + //line php5/php5.y:2766 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2712 + //line php5/php5.y:2771 { yyVAL.node = yyDollar[1].node @@ -5391,79 +5439,79 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2748 + //line php5/php5.y:2807 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2754 + //line php5/php5.y:2813 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2756 + //line php5/php5.y:2815 { yyVAL.list = []node.Node{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2762 + //line php5/php5.y:2821 { yyVAL.list = yyDollar[2].list } case 345: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2767 + //line php5/php5.y:2826 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2769 + //line php5/php5.y:2828 { yyVAL.node = nil } case 347: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2771 + //line php5/php5.y:2830 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2776 + //line php5/php5.y:2835 { yyVAL.list = []node.Node{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2778 + //line php5/php5.y:2837 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} } case 350: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2780 + //line php5/php5.y:2839 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2785 + //line php5/php5.y:2844 { yyVAL.node = nil } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2787 + //line php5/php5.y:2846 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2792 + //line php5/php5.y:2851 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5471,7 +5519,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2798 + //line php5/php5.y:2857 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5479,7 +5527,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2804 + //line php5/php5.y:2863 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5487,7 +5535,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2810 + //line php5/php5.y:2869 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5495,7 +5543,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2816 + //line php5/php5.y:2875 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5503,7 +5551,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2822 + //line php5/php5.y:2881 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5511,7 +5559,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2828 + //line php5/php5.y:2887 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5519,7 +5567,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2834 + //line php5/php5.y:2893 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5527,7 +5575,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2840 + //line php5/php5.y:2899 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5535,7 +5583,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2846 + //line php5/php5.y:2905 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5543,7 +5591,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2852 + //line php5/php5.y:2911 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -5555,7 +5603,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2862 + //line php5/php5.y:2921 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -5563,7 +5611,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2871 + //line php5/php5.y:2930 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -5575,25 +5623,25 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2884 + //line php5/php5.y:2943 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2889 + //line php5/php5.y:2948 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2891 + //line php5/php5.y:2950 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2893 + //line php5/php5.y:2952 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5605,7 +5653,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2903 + //line php5/php5.y:2962 { name := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5617,7 +5665,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2913 + //line php5/php5.y:2972 { name := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5629,7 +5677,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2923 + //line php5/php5.y:2982 { yyVAL.node = expr.NewArray(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -5637,7 +5685,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2929 + //line php5/php5.y:2988 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5645,13 +5693,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2935 + //line php5/php5.y:2994 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2937 + //line php5/php5.y:2996 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5659,13 +5707,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2943 + //line php5/php5.y:3002 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2948 + //line php5/php5.y:3007 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -5673,7 +5721,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2954 + //line php5/php5.y:3013 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5681,7 +5729,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2960 + //line php5/php5.y:3019 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5689,7 +5737,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2966 + //line php5/php5.y:3025 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5697,7 +5745,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2972 + //line php5/php5.y:3031 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5705,7 +5753,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2978 + //line php5/php5.y:3037 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5713,7 +5761,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2984 + //line php5/php5.y:3043 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5721,7 +5769,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2990 + //line php5/php5.y:3049 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5729,7 +5777,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2996 + //line php5/php5.y:3055 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5737,7 +5785,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3002 + //line php5/php5.y:3061 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5745,7 +5793,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3008 + //line php5/php5.y:3067 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5753,7 +5801,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3014 + //line php5/php5.y:3073 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5761,7 +5809,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3020 + //line php5/php5.y:3079 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5769,7 +5817,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3026 + //line php5/php5.y:3085 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5777,7 +5825,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3032 + //line php5/php5.y:3091 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5785,7 +5833,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3038 + //line php5/php5.y:3097 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5793,7 +5841,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3044 + //line php5/php5.y:3103 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5801,7 +5849,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3050 + //line php5/php5.y:3109 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5809,7 +5857,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3056 + //line php5/php5.y:3115 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5817,7 +5865,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3062 + //line php5/php5.y:3121 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5825,7 +5873,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3068 + //line php5/php5.y:3127 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5833,7 +5881,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3074 + //line php5/php5.y:3133 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5841,7 +5889,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3080 + //line php5/php5.y:3139 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5849,7 +5897,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3086 + //line php5/php5.y:3145 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5857,7 +5905,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3092 + //line php5/php5.y:3151 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5865,7 +5913,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3098 + //line php5/php5.y:3157 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5873,7 +5921,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3104 + //line php5/php5.y:3163 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5881,7 +5929,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3110 + //line php5/php5.y:3169 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5889,7 +5937,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3116 + //line php5/php5.y:3175 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -5897,7 +5945,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3122 + //line php5/php5.y:3181 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) @@ -5905,7 +5953,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3128 + //line php5/php5.y:3187 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5913,7 +5961,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3134 + //line php5/php5.y:3193 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5921,19 +5969,19 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3140 + //line php5/php5.y:3199 { yyVAL.node = yyDollar[2].node } case 410: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3145 + //line php5/php5.y:3204 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3147 + //line php5/php5.y:3206 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5945,7 +5993,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3157 + //line php5/php5.y:3216 { name := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5957,7 +6005,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3167 + //line php5/php5.y:3226 { name := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5969,7 +6017,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3180 + //line php5/php5.y:3239 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5981,25 +6029,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3190 + //line php5/php5.y:3249 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3192 + //line php5/php5.y:3251 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3194 + //line php5/php5.y:3253 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3196 + //line php5/php5.y:3255 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -6007,7 +6055,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3202 + //line php5/php5.y:3261 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -6015,7 +6063,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3208 + //line php5/php5.y:3267 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6023,19 +6071,19 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3217 + //line php5/php5.y:3276 { yyVAL.list = nil } case 422: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3219 + //line php5/php5.y:3278 { yyVAL.list = yyDollar[1].list } case 425: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3229 + //line php5/php5.y:3288 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node)) @@ -6045,7 +6093,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3237 + //line php5/php5.y:3296 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6055,7 +6103,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3245 + //line php5/php5.y:3304 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -6065,7 +6113,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3253 + //line php5/php5.y:3312 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6075,49 +6123,49 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3264 + //line php5/php5.y:3323 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3266 + //line php5/php5.y:3325 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3271 + //line php5/php5.y:3330 { yyVAL.node = yyDollar[2].node } case 432: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3273 + //line php5/php5.y:3332 { yyVAL.node = yyDollar[2].node } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3279 + //line php5/php5.y:3338 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3285 + //line php5/php5.y:3344 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3290 + //line php5/php5.y:3349 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3295 + //line php5/php5.y:3354 { yyVAL.node = yyDollar[1].node @@ -6172,25 +6220,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3348 + //line php5/php5.y:3407 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3353 + //line php5/php5.y:3412 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3355 + //line php5/php5.y:3414 { yyVAL.list = []node.Node{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3361 + //line php5/php5.y:3420 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*expr.MethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*expr.PropertyFetch).Property @@ -6201,7 +6249,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3373 + //line php5/php5.y:3432 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6210,7 +6258,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3380 + //line php5/php5.y:3439 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6219,38 +6267,38 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3390 + //line php5/php5.y:3449 { yyVAL.node = expr.NewMethodCall(nil, nil, yyDollar[1].node.(*node.ArgumentList)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) } case 444: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3398 + //line php5/php5.y:3457 { yyVAL.list = []node.Node{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3400 + //line php5/php5.y:3459 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3402 + //line php5/php5.y:3461 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3407 + //line php5/php5.y:3466 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3409 + //line php5/php5.y:3468 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -6262,7 +6310,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3422 + //line php5/php5.y:3481 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -6270,7 +6318,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3428 + //line php5/php5.y:3487 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -6278,13 +6326,13 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3438 + //line php5/php5.y:3497 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3443 + //line php5/php5.y:3502 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -6292,7 +6340,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3449 + //line php5/php5.y:3508 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -6300,31 +6348,31 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3457 + //line php5/php5.y:3516 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3458 + //line php5/php5.y:3517 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3459 + //line php5/php5.y:3518 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3465 + //line php5/php5.y:3524 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3467 + //line php5/php5.y:3526 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -6336,13 +6384,13 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3477 + //line php5/php5.y:3536 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3482 + //line php5/php5.y:3541 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -6350,7 +6398,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3488 + //line php5/php5.y:3547 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -6358,13 +6406,13 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3494 + //line php5/php5.y:3553 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3500 + //line php5/php5.y:3559 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6376,7 +6424,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3510 + //line php5/php5.y:3569 { yyVAL.node = expr.NewVariable(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6384,25 +6432,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3519 + //line php5/php5.y:3578 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3521 + //line php5/php5.y:3580 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3527 + //line php5/php5.y:3586 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3529 + //line php5/php5.y:3588 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6411,7 +6459,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3539 + //line php5/php5.y:3598 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6420,7 +6468,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3546 + //line php5/php5.y:3605 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6429,7 +6477,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3553 + //line php5/php5.y:3612 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6438,7 +6486,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3563 + //line php5/php5.y:3622 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6446,13 +6494,13 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3569 + //line php5/php5.y:3628 { yyVAL.node = yyDollar[2].node } case 474: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3574 + //line php5/php5.y:3633 { n := expr.NewVariable(nil) yylex.(*Parser).positions.AddPosition(n, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6462,7 +6510,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3582 + //line php5/php5.y:3641 { n := expr.NewVariable(nil) yylex.(*Parser).positions.AddPosition(n, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -6476,13 +6524,13 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3597 + //line php5/php5.y:3656 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3599 + //line php5/php5.y:3658 { if yyDollar[1].node == nil { yyVAL.list = []node.Node{} @@ -6492,7 +6540,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3611 + //line php5/php5.y:3670 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6500,7 +6548,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3617 + //line php5/php5.y:3676 { item := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(item, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6512,25 +6560,25 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3627 + //line php5/php5.y:3686 { yyVAL.node = nil } case 481: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3633 + //line php5/php5.y:3692 { yyVAL.list = []node.Node{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3635 + //line php5/php5.y:3694 { yyVAL.list = yyDollar[1].list } case 483: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3640 + //line php5/php5.y:3699 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node)) @@ -6540,7 +6588,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3648 + //line php5/php5.y:3707 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6550,7 +6598,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3656 + //line php5/php5.y:3715 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -6560,7 +6608,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3664 + //line php5/php5.y:3723 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6570,7 +6618,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3672 + //line php5/php5.y:3731 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[6].node, true) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[6].node)) @@ -6580,7 +6628,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3680 + //line php5/php5.y:3739 { arrayItem := expr.NewArrayItem(nil, yyDollar[4].node, true) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node)) @@ -6590,7 +6638,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3688 + //line php5/php5.y:3747 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[4].node, true) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -6600,7 +6648,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3696 + //line php5/php5.y:3755 { arrayItem := expr.NewArrayItem(nil, yyDollar[2].node, true) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6610,13 +6658,13 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3707 + //line php5/php5.y:3766 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3709 + //line php5/php5.y:3768 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -6625,13 +6673,13 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3716 + //line php5/php5.y:3775 { yyVAL.list = []node.Node{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3718 + //line php5/php5.y:3777 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6640,7 +6688,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3728 + //line php5/php5.y:3787 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6652,7 +6700,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3738 + //line php5/php5.y:3797 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6667,7 +6715,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3751 + //line php5/php5.y:3810 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6685,7 +6733,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3767 + //line php5/php5.y:3826 { yyVAL.node = yyDollar[2].node yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -6693,7 +6741,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3773 + //line php5/php5.y:3832 { identifier := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -6708,13 +6756,13 @@ yydefault: } case 500: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3787 + //line php5/php5.y:3846 { yyVAL.node = yyDollar[2].node } case 501: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3792 + //line php5/php5.y:3851 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6722,7 +6770,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3798 + //line php5/php5.y:3857 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -6736,7 +6784,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3810 + //line php5/php5.y:3869 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6748,7 +6796,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3823 + //line php5/php5.y:3882 { yyVAL.node = expr.NewIsset(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6756,7 +6804,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3829 + //line php5/php5.y:3888 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6764,7 +6812,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3835 + //line php5/php5.y:3894 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6772,7 +6820,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3841 + //line php5/php5.y:3900 { yyVAL.node = expr.NewInclude(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6780,7 +6828,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3847 + //line php5/php5.y:3906 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6788,7 +6836,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3853 + //line php5/php5.y:3912 { yyVAL.node = expr.NewEval(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6796,7 +6844,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3859 + //line php5/php5.y:3918 { yyVAL.node = expr.NewRequire(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6804,7 +6852,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3865 + //line php5/php5.y:3924 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6812,31 +6860,31 @@ yydefault: } case 512: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3874 + //line php5/php5.y:3933 { yyVAL.list = []node.Node{yyDollar[1].node} } case 513: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3876 + //line php5/php5.y:3935 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 514: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3881 + //line php5/php5.y:3940 { yyVAL.node = yyDollar[1].node } case 515: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3883 + //line php5/php5.y:3942 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3888 + //line php5/php5.y:3947 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -6848,7 +6896,7 @@ yydefault: } case 517: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3898 + //line php5/php5.y:3957 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -6860,7 +6908,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3911 + //line php5/php5.y:3970 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -6872,7 +6920,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3924 + //line php5/php5.y:3983 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) diff --git a/php5/php5.y b/php5/php5.y index a3e611b..ea530f5 100644 --- a/php5/php5.y +++ b/php5/php5.y @@ -25,7 +25,6 @@ import ( list []node.Node foreachVariable foreachVariable simpleIndirectReference simpleIndirectReference - altSyntaxNode altSyntaxNode } %type $unk @@ -245,6 +244,7 @@ import ( %type trait_adaptations %type switch_case_list %type method_body +%type foreach_statement for_statement while_statement %type top_statement_list namespace_name use_declarations use_function_declarations use_const_declarations %type inner_statement_list global_var_list static_var_list encaps_list isset_variables non_empty_array_pair_list @@ -262,7 +262,6 @@ import ( %type simple_indirect_reference %type foreach_variable foreach_optional_arg %type is_reference is_variadic -%type while_statement for_statement foreach_statement %% @@ -658,12 +657,16 @@ unticked_statement: } | T_WHILE parenthesis_expr while_statement { - if ($3.isAlt) { - $$ = stmt.NewAltWhile($2, $3.node) - } else { - $$ = stmt.NewWhile($2, $3.node) + switch n := $3.(type) { + case *stmt.While : + n.Cond = $2 + case *stmt.AltWhile : + n.Cond = $2 } - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3.node)) + + $$ = $3 + + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) yylex.(*Parser).comments.AddComments($$, $1.Comments()) } | T_DO statement T_WHILE parenthesis_expr ';' @@ -674,12 +677,20 @@ unticked_statement: } | T_FOR '(' for_expr ';' for_expr ';' for_expr ')' for_statement { - if ($9.isAlt) { - $$ = stmt.NewAltFor($3, $5, $7, $9.node) - } else { - $$ = stmt.NewFor($3, $5, $7, $9.node) + switch n := $9.(type) { + case *stmt.For : + n.Init = $3 + n.Cond = $5 + n.Loop = $7 + case *stmt.AltFor : + n.Init = $3 + n.Cond = $5 + n.Loop = $7 } - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9.node)) + + $$ = $9 + + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9)) yylex.(*Parser).comments.AddComments($$, $1.Comments()) } | T_SWITCH parenthesis_expr switch_case_list @@ -785,37 +796,67 @@ unticked_statement: | T_FOREACH '(' variable T_AS foreach_variable foreach_optional_arg ')' foreach_statement { if $6.node == nil { - if ($8.isAlt) { - $$ = stmt.NewAltForeach($3, nil, $5.node, $8.node, $5.byRef) - } else { - $$ = stmt.NewForeach($3, nil, $5.node, $8.node, $5.byRef) + switch n := $8.(type) { + case *stmt.Foreach : + n.Expr = $3 + n.ByRef = $5.byRef + n.Variable = $5.node + case *stmt.AltForeach : + n.Expr = $3 + n.ByRef = $5.byRef + n.Variable = $5.node } } else { - if ($8.isAlt) { - $$ = stmt.NewAltForeach($3, $5.node, $6.node, $8.node, $6.byRef) - } else { - $$ = stmt.NewForeach($3, $5.node, $6.node, $8.node, $6.byRef) + switch n := $8.(type) { + case *stmt.Foreach : + n.Expr = $3 + n.Key = $5.node + n.ByRef = $6.byRef + n.Variable = $6.node + case *stmt.AltForeach : + n.Expr = $3 + n.Key = $5.node + n.ByRef = $6.byRef + n.Variable = $6.node } } - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $8.node)) + + $$ = $8 + + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $8)) yylex.(*Parser).comments.AddComments($$, $1.Comments()) } | T_FOREACH '(' expr_without_variable T_AS foreach_variable foreach_optional_arg ')' foreach_statement { if $6.node == nil { - if ($8.isAlt) { - $$ = stmt.NewAltForeach($3, nil, $5.node, $8.node, $5.byRef) - } else { - $$ = stmt.NewForeach($3, nil, $5.node, $8.node, $5.byRef) + switch n := $8.(type) { + case *stmt.Foreach : + n.Expr = $3 + n.ByRef = $5.byRef + n.Variable = $5.node + case *stmt.AltForeach : + n.Expr = $3 + n.ByRef = $5.byRef + n.Variable = $5.node } } else { - if ($8.isAlt) { - $$ = stmt.NewAltForeach($3, $5.node, $6.node, $8.node, $6.byRef) - } else { - $$ = stmt.NewForeach($3, $5.node, $6.node, $8.node, $6.byRef) + switch n := $8.(type) { + case *stmt.Foreach : + n.Expr = $3 + n.Key = $5.node + n.ByRef = $6.byRef + n.Variable = $6.node + case *stmt.AltForeach : + n.Expr = $3 + n.Key = $5.node + n.ByRef = $6.byRef + n.Variable = $6.node } } - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $8.node)) + + $$ = $8 + + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $8)) yylex.(*Parser).comments.AddComments($$, $1.Comments()) } | T_DECLARE '(' declare_list ')' declare_statement @@ -868,7 +909,7 @@ catch_statement: identifier := node.NewIdentifier(strings.TrimLeft($4.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) yylex.(*Parser).comments.AddComments(identifier, $4.Comments()) - + variable := expr.NewVariable(identifier) yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) yylex.(*Parser).comments.AddComments(variable, $4.Comments()) @@ -1097,22 +1138,34 @@ foreach_variable: for_statement: statement - { $$ = altSyntaxNode{$1, false} } + { + $$ = stmt.NewFor(nil, nil, nil, $1) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) + } | ':' inner_statement_list T_ENDFOR ';' { - $$ = altSyntaxNode{stmt.NewStmtList($2), true} - yylex.(*Parser).positions.AddPosition($$.node, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + stmtList := stmt.NewStmtList($2) + $$ = stmt.NewAltFor(nil, nil, nil, stmtList) + + yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) } ; foreach_statement: statement - { $$ = altSyntaxNode{$1, false} } + { + $$ = stmt.NewForeach(nil, nil, nil, $1, false) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) + } | ':' inner_statement_list T_ENDFOREACH ';' { - $$ = altSyntaxNode{stmt.NewStmtList($2), true} - yylex.(*Parser).positions.AddPosition($$.node, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + stmtList := stmt.NewStmtList($2) + $$ = stmt.NewAltForeach(nil, nil, nil, stmtList, false) + + yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) } ; @@ -1222,11 +1275,17 @@ case_separator: while_statement: statement - { $$ = altSyntaxNode{$1, false} } + { + $$ = stmt.NewWhile(nil, $1) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) + } | ':' inner_statement_list T_ENDWHILE ';' { - $$ = altSyntaxNode{stmt.NewStmtList($2), true} - yylex.(*Parser).positions.AddPosition($$.node, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + stmtList := stmt.NewStmtList($2) + $$ = stmt.NewAltWhile(nil, stmtList) + + yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) } ; @@ -3948,8 +4007,3 @@ type simpleIndirectReference struct { all []*expr.Variable last *expr.Variable } - -type altSyntaxNode struct { - node node.Node - isAlt bool -} diff --git a/php7/php7.go b/php7/php7.go index e5ce2c0..53daa2b 100644 --- a/php7/php7.go +++ b/php7/php7.go @@ -29,7 +29,6 @@ type yySymType struct { list []node.Node foreachVariable foreachVariable str string - altSyntaxNode altSyntaxNode } const T_INCLUDE = 57346 @@ -344,7 +343,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php7/php7.y:4241 +//line php7/php7.y:4286 type foreachVariable struct { node node.Node @@ -356,11 +355,6 @@ type boolWithToken struct { token *scanner.Token } -type altSyntaxNode struct { - node node.Node - isAlt bool -} - //line yacctab:1 var yyExca = [...]int{ -1, 1, @@ -632,13 +626,13 @@ var yyAct = [...]int{ 750, 324, 422, 377, 755, 614, 233, 255, 408, 618, 375, 225, 701, 195, 634, 194, 762, 771, 768, 769, 758, 193, 232, 760, 187, 686, 763, 669, 670, 777, - 671, 770, 1, 772, 766, 845, 797, 779, 798, 775, - 579, 791, 546, 800, 787, 639, 134, 546, 546, 112, - 38, 739, 230, 736, 231, 737, 234, 381, 663, 810, - 527, 256, 257, 531, 738, 106, 222, 740, 818, 805, - 526, 256, 257, 521, 860, 824, 367, 873, 827, 145, - 806, 792, 817, 232, 823, 142, 719, 323, 149, 255, - 836, 834, 660, 822, 278, 255, 251, 928, 830, 645, + 671, 770, 1, 772, 766, 38, 797, 779, 798, 775, + 579, 791, 546, 800, 787, 739, 134, 546, 546, 112, + 736, 737, 230, 381, 231, 663, 234, 531, 222, 810, + 527, 256, 257, 521, 738, 106, 860, 740, 818, 805, + 526, 256, 257, 367, 873, 824, 145, 792, 827, 142, + 806, 323, 817, 232, 823, 149, 719, 836, 660, 255, + 822, 834, 251, 639, 278, 255, 845, 928, 830, 645, 422, 255, 840, 849, 224, 43, 282, 42, 16, 15, 851, 843, 599, 267, 546, 49, 546, 848, 745, 746, 747, 744, 743, 742, 853, 48, 867, 108, 671, 255, @@ -1447,11 +1441,11 @@ var yyPgo = [...]int{ 855, 853, 5, 852, 83, 40, 845, 138, 43, 840, 837, 835, 825, 823, 119, 822, 819, 818, 817, 12, 815, 814, 44, 42, 32, 2, 15, 629, 41, 74, - 812, 809, 807, 8, 686, 20, 536, 806, 121, 803, - 802, 800, 71, 798, 33, 797, 795, 30, 37, 791, - 789, 28, 787, 786, 545, 784, 18, 783, 776, 26, - 773, 63, 1, 4, 768, 17, 767, 39, 765, 763, - 761, 7, 760, 6, 755, 745, 14, 742, + 812, 809, 807, 14, 806, 803, 8, 686, 20, 536, + 802, 121, 800, 798, 797, 71, 795, 33, 791, 789, + 30, 37, 787, 786, 28, 784, 783, 545, 776, 18, + 773, 768, 26, 767, 63, 1, 4, 765, 17, 763, + 39, 761, 760, 755, 7, 745, 6, 742, } var yyR1 = [...]int{ @@ -1462,29 +1456,29 @@ var yyR1 = [...]int{ 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 111, 111, - 88, 88, 10, 10, 10, 9, 9, 9, 9, 9, + 5, 5, 5, 5, 5, 5, 6, 6, 114, 114, + 91, 91, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 84, 84, 16, 16, 18, 18, 7, 7, 98, 98, - 97, 97, 104, 104, 17, 17, 20, 20, 19, 19, - 92, 92, 112, 112, 22, 22, 22, 22, 22, 22, + 87, 87, 16, 16, 18, 18, 7, 7, 101, 101, + 100, 100, 107, 107, 17, 17, 20, 20, 19, 19, + 95, 95, 115, 115, 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, 90, 90, 89, 89, 26, - 26, 103, 103, 27, 12, 1, 1, 2, 2, 13, - 13, 122, 122, 77, 77, 14, 15, 29, 29, 116, - 116, 117, 117, 85, 85, 85, 85, 125, 125, 126, - 126, 25, 25, 81, 81, 81, 81, 101, 101, 101, - 8, 8, 124, 124, 68, 68, 66, 66, 70, 70, - 67, 67, 113, 113, 114, 114, 30, 30, 31, 31, - 76, 76, 74, 74, 74, 75, 75, 78, 78, 110, - 110, 32, 32, 96, 96, 34, 100, 100, 35, 35, - 115, 115, 36, 36, 36, 36, 121, 121, 80, 80, - 80, 102, 102, 37, 37, 38, 39, 39, 39, 39, - 41, 41, 40, 82, 82, 119, 119, 118, 118, 120, - 120, 83, 83, 83, 83, 83, 83, 99, 99, 42, - 42, 91, 91, 69, 21, 93, 93, 43, 94, 94, - 95, 95, 45, 44, 44, 33, 33, 33, 33, 33, + 11, 11, 11, 11, 11, 93, 93, 92, 92, 26, + 26, 106, 106, 27, 12, 1, 1, 2, 2, 13, + 13, 125, 125, 77, 77, 14, 15, 29, 29, 119, + 119, 120, 120, 88, 88, 88, 88, 84, 84, 83, + 83, 25, 25, 81, 81, 81, 81, 104, 104, 104, + 8, 8, 85, 85, 68, 68, 66, 66, 70, 70, + 67, 67, 116, 116, 117, 117, 30, 30, 31, 31, + 76, 76, 74, 74, 74, 75, 75, 78, 78, 113, + 113, 32, 32, 99, 99, 34, 103, 103, 35, 35, + 118, 118, 36, 36, 36, 36, 124, 124, 80, 80, + 80, 105, 105, 37, 37, 38, 39, 39, 39, 39, + 41, 41, 40, 82, 82, 122, 122, 121, 121, 123, + 123, 86, 86, 86, 86, 86, 86, 102, 102, 42, + 42, 94, 94, 69, 21, 96, 96, 43, 97, 97, + 98, 98, 45, 44, 44, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, @@ -1492,18 +1486,18 @@ var yyR1 = [...]int{ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 123, 3, 3, 106, 106, 105, 105, 52, 52, + 33, 126, 3, 3, 109, 109, 108, 108, 52, 52, 53, 53, 53, 53, 46, 46, 47, 47, 50, 50, - 87, 87, 87, 79, 79, 57, 57, 57, 51, 51, + 90, 90, 90, 79, 79, 57, 57, 57, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 58, 58, 58, 23, 23, 24, 24, 56, 59, 59, 59, 60, 60, 60, 61, 61, 61, 61, 61, 61, 28, 28, 28, 48, 48, 48, 62, 62, 63, 63, 63, 63, 63, 63, 54, 54, - 54, 55, 55, 55, 109, 72, 72, 108, 108, 71, - 71, 71, 71, 71, 71, 86, 86, 86, 86, 64, + 54, 55, 55, 55, 112, 72, 72, 111, 111, 71, + 71, 71, 71, 71, 71, 89, 89, 89, 89, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, - 49, 49, 49, 49, 49, 49, 49, 107, 107, 73, + 49, 49, 49, 49, 49, 49, 49, 110, 110, 73, } var yyR2 = [...]int{ @@ -1559,10 +1553,10 @@ var yyR2 = [...]int{ } var yyChk = [...]int{ - -1000, -127, -111, -9, 2, -11, -12, -13, -14, -15, + -1000, -127, -114, -9, 2, -11, -12, -13, -14, -15, 51, 79, 44, 38, 142, -66, -67, 21, 20, 23, 30, 34, 35, 39, 46, 98, 19, 14, -23, 48, - 25, 27, 144, 40, 43, 36, 10, 37, -122, 52, + 25, 27, 144, 40, 43, 36, 10, 37, -125, 52, 53, 54, -68, -70, -28, -33, -77, 7, -61, -62, -59, 59, 148, 92, 104, 105, 153, 152, 154, 155, 146, -44, -49, 107, 108, 109, 110, 111, 112, 113, @@ -1570,10 +1564,10 @@ var yyChk = [...]int{ -58, -53, -46, -56, -57, 91, 49, 50, 4, 5, 84, 85, 86, 8, 9, 66, 67, 81, 63, 64, 65, 80, 62, 74, 140, 12, 157, -10, -60, 60, - 18, -88, 82, 146, 82, -88, 142, 10, -18, -84, - -104, -88, 82, 37, 38, -19, -20, -92, -21, 10, - -112, 146, -11, 37, 79, 146, 146, -24, -23, 98, - -24, -24, -96, -34, -48, -100, 37, -35, 12, -93, + 18, -91, 82, 146, 82, -91, 142, 10, -18, -87, + -107, -91, 82, 37, 38, -19, -20, -95, -21, 10, + -115, 146, -11, 37, 79, 146, 146, -24, -23, 98, + -24, -24, -99, -34, -48, -103, 37, -35, 12, -96, -43, -23, 144, 129, 130, 87, 89, 88, 159, 151, 161, 167, 153, 152, 162, 131, 163, 164, 132, 133, 134, 135, 136, 137, 165, 138, 166, 139, 115, 90, @@ -1581,26 +1575,26 @@ var yyChk = [...]int{ 151, 52, -77, 10, 10, 10, 93, 94, 93, 95, 94, 160, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 104, 105, 146, 148, 142, 57, - 146, -109, -108, -72, -71, -23, 151, 59, -23, -28, + 146, -112, -111, -72, -71, -23, 151, 59, -23, -28, -58, 146, -57, 98, 148, -28, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -50, 146, - -23, -87, 17, -86, -64, 12, 76, 77, -23, -23, + -23, -90, 17, -89, -64, 12, 76, 77, -23, -23, -23, 148, 78, 78, -47, -45, -46, -63, 52, -10, -48, 146, 146, -23, -23, 146, -23, -23, 17, 75, - -86, -86, 17, 142, -48, -78, 146, -78, 146, 82, - -88, 147, -88, 144, 142, -111, 144, -16, -104, -88, - 82, 144, 158, 82, 29, -88, -20, 144, 158, 160, + -89, -89, 17, 142, -48, -78, 146, -78, 146, 82, + -91, 147, -91, 144, 142, -114, 144, -16, -107, -91, + 82, 144, 158, 82, 29, -91, -20, 144, 158, 160, -22, 143, 2, -11, -12, -13, -14, -15, 51, -23, - 21, -3, -94, -95, -23, -23, 144, 144, 144, 144, + 21, -3, -97, -98, -23, -23, 144, 144, 144, 144, 158, 144, 158, -3, 160, 144, 158, -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, -47, -23, 145, -23, -103, -27, -28, - -23, -92, -112, 144, 144, 10, -123, 10, -29, 55, - -123, -116, 55, 146, -11, 146, 144, 145, -23, 151, + -23, -23, -23, -47, -23, 145, -23, -106, -27, -28, + -23, -95, -115, 144, 144, 10, -126, 10, -29, 55, + -126, -119, 55, 146, -11, 146, 144, 145, -23, 151, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, - -23, -23, -23, -24, -23, -55, 10, 142, -48, -109, - 149, 158, 58, -28, 146, -23, -109, 147, -24, 141, + -23, -23, -23, -24, -23, -55, 10, 142, -48, -112, + 149, 158, 58, -28, 146, -23, -112, 147, -24, 141, -64, -64, 17, 148, 57, -23, 11, -28, 58, -24, -54, -6, -48, 142, 10, -5, -4, 98, 99, 100, 101, 102, 103, 4, 5, 84, 85, 86, 87, 88, @@ -1611,48 +1605,48 @@ var yyChk = [...]int{ 31, 32, 33, 34, 60, 61, 55, 56, 79, 53, 54, 52, 62, 63, 65, 64, 66, 67, 81, 80, -54, -6, -48, -79, -78, 78, 148, 142, 57, 78, - -79, -107, -73, -23, -23, -23, 75, 75, 140, -23, - 147, -110, -32, -23, 83, -109, 10, 144, -111, 143, - 144, 144, 82, -88, -19, 82, -88, 142, 10, 82, + -79, -110, -73, -23, -23, -23, 75, 75, 140, -23, + 147, -113, -32, -23, 83, -112, 10, 144, -114, 143, + 144, 144, 82, -91, -19, 82, -91, 142, 10, 82, -21, -23, 146, 147, 146, 144, 158, 147, -34, -35, - -123, -23, -43, 145, -23, -7, 158, 29, 147, 143, - -123, 146, -29, -117, 56, -10, 142, -123, -121, -10, - -23, -23, -112, -23, 147, 149, 143, -78, -23, 147, - 160, -72, -23, 151, 59, -109, 147, 149, 147, -65, + -126, -23, -43, 145, -23, -7, 158, 29, 147, 143, + -126, 146, -29, -120, 56, -10, 142, -126, -124, -10, + -23, -23, -115, -23, 147, 149, 143, -78, -23, 147, + 160, -72, -23, 151, 59, -112, 147, 149, 147, -65, 10, 13, 152, 12, 10, 143, 143, 148, 143, -23, 149, -78, -23, -78, -48, -24, -23, -55, -48, -29, -7, 158, 147, 147, 143, -7, 158, -23, 147, 143, - 142, 82, -98, -17, -20, -84, 142, -123, 147, -124, - -11, 145, -23, -94, -23, -81, 142, 145, 146, -23, - 147, -27, -85, -28, 151, 59, 148, -25, -11, 145, - -90, 146, -113, -114, -30, -31, -76, -74, 150, 60, - 61, -10, -117, -123, -121, -115, 142, 158, 147, 147, + 142, 82, -101, -17, -20, -87, 142, -126, 147, -85, + -11, 145, -23, -97, -23, -81, 142, 145, 146, -23, + 147, -27, -88, -28, 151, 59, 148, -25, -11, 145, + -93, 146, -116, -117, -30, -31, -76, -74, 150, 60, + 61, -10, -120, -126, -124, -118, 142, 158, 147, 147, 95, -11, 145, 143, 160, -23, -28, 146, 147, 149, - 13, -23, 143, 149, 143, -117, 147, -73, 147, -32, - -97, -20, 142, -7, 158, -20, -98, 144, -112, 147, - 144, -101, 144, -101, 144, -113, 144, 147, 58, -28, - 146, -109, -112, -26, 41, 42, -113, 147, 158, -1, - 151, -74, -123, 142, 143, -36, -119, -118, 44, -120, - 47, -83, 103, 102, 101, 98, 99, 100, -115, -10, - -11, 145, 144, -112, -23, -109, 149, -123, -7, 158, - -97, 143, -17, -7, 22, 144, -94, 143, 32, 33, - -101, 31, -101, 147, -126, -11, 145, -85, -28, -109, - 149, 28, 146, 142, 147, -106, 44, -30, -2, 83, - 142, -115, -99, -42, 12, 38, 37, -121, -83, 143, - -112, 147, 143, 142, 143, -20, -7, 143, 144, 147, - -23, -8, 145, 144, 143, 144, 31, -106, -112, 147, - 147, 144, -89, -10, -112, -75, 145, -75, 146, 12, - -115, 143, 144, 158, -123, 160, -91, -69, -6, -3, - -80, 144, 142, -115, 143, -125, -11, 145, -8, -112, - 144, -75, 26, -126, 12, 159, 143, 142, -76, 142, - -105, -52, 12, 151, 160, 143, -42, -23, 144, 158, - 160, -6, 143, -102, -37, -38, -39, -40, -41, -10, - -6, 79, 10, 143, -112, -112, 142, 144, 147, -10, - -112, -112, 147, 158, 12, -23, -123, -69, -23, -123, - 143, -37, 144, 144, 45, 29, 78, 24, -112, 142, - 143, 143, -52, -123, 146, -121, 10, -4, -83, -6, - 144, 143, -112, -113, -6, 143, 147, -75, -82, 144, - 142, -112, 143, + 13, -23, 143, 149, 143, -120, 147, -73, 147, -32, + -100, -20, 142, -7, 158, -20, -101, 144, -115, 147, + 144, -104, 144, -104, 144, -116, 144, 147, 58, -28, + 146, -112, -115, -26, 41, 42, -116, 147, 158, -1, + 151, -74, -126, 142, 143, -36, -122, -121, 44, -123, + 47, -86, 103, 102, 101, 98, 99, 100, -118, -10, + -11, 145, 144, -115, -23, -112, 149, -126, -7, 158, + -100, 143, -17, -7, 22, 144, -97, 143, 32, 33, + -104, 31, -104, 147, -83, -11, 145, -88, -28, -112, + 149, 28, 146, 142, 147, -109, 44, -30, -2, 83, + 142, -118, -102, -42, 12, 38, 37, -124, -86, 143, + -115, 147, 143, 142, 143, -20, -7, 143, 144, 147, + -23, -8, 145, 144, 143, 144, 31, -109, -115, 147, + 147, 144, -92, -10, -115, -75, 145, -75, 146, 12, + -118, 143, 144, 158, -126, 160, -94, -69, -6, -3, + -80, 144, 142, -118, 143, -84, -11, 145, -8, -115, + 144, -75, 26, -83, 12, 159, 143, 142, -76, 142, + -108, -52, 12, 151, 160, 143, -42, -23, 144, 158, + 160, -6, 143, -105, -37, -38, -39, -40, -41, -10, + -6, 79, 10, 143, -115, -115, 142, 144, 147, -10, + -115, -115, 147, 158, 12, -23, -126, -69, -23, -126, + 143, -37, 144, 144, 45, 29, 78, 24, -115, 142, + 143, 143, -52, -126, 146, -124, 10, -4, -86, -6, + 144, 143, -115, -116, -6, 143, 147, -75, -82, 144, + 142, -115, 143, } var yyDef = [...]int{ @@ -2127,7 +2121,7 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:295 + //line php7/php7.y:293 { yylex.(*Parser).rootNode = node.NewRoot(yyDollar[1].list) @@ -2136,463 +2130,463 @@ yydefault: } case 2: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 3: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 4: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 5: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 6: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 7: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 8: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 9: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:302 { yyVAL.token = yyDollar[1].token } case 10: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 11: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 12: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 13: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 14: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 15: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 16: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 17: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 18: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 19: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 20: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 21: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 22: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 23: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 24: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 25: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 26: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 27: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 28: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 29: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 30: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 31: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 32: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 33: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 34: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 35: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 36: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 37: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 38: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 39: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 40: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 41: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 42: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 43: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 44: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 45: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 46: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 47: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 48: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 49: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 50: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 51: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 52: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 53: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 54: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 55: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 56: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 57: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 58: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 59: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 60: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 61: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 62: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 63: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 64: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 65: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 66: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 67: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 68: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 69: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:315 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 70: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:316 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:316 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 72: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:316 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 73: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:316 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 74: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:316 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 75: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:316 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 76: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:321 + //line php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 77: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:323 + //line php7/php7.y:321 { yyVAL.token = yyDollar[1].token } case 78: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:328 + //line php7/php7.y:326 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -2600,13 +2594,13 @@ yydefault: } case 79: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:334 + //line php7/php7.y:332 { yyVAL.list = []node.Node{} } case 80: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:339 + //line php7/php7.y:337 { namePart := name.NewNamePart(yyDollar[1].token.Value) yyVAL.list = []node.Node{namePart} @@ -2619,7 +2613,7 @@ yydefault: } case 81: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:350 + //line php7/php7.y:348 { namePart := name.NewNamePart(yyDollar[3].token.Value) yyVAL.list = append(yyDollar[1].list, namePart) @@ -2633,7 +2627,7 @@ yydefault: } case 82: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:365 + //line php7/php7.y:363 { yyVAL.node = name.NewName(yyDollar[1].list) @@ -2642,7 +2636,7 @@ yydefault: } case 83: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:372 + //line php7/php7.y:370 { yyVAL.node = name.NewRelative(yyDollar[3].list) @@ -2655,7 +2649,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:383 + //line php7/php7.y:381 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) @@ -2667,44 +2661,44 @@ yydefault: } case 85: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:396 + //line php7/php7.y:394 { // error yyVAL.node = nil } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:401 + //line php7/php7.y:399 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:403 + //line php7/php7.y:401 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:405 + //line php7/php7.y:403 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:407 + //line php7/php7.y:405 { yyVAL.node = yyDollar[1].node } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:409 + //line php7/php7.y:407 { yyVAL.node = yyDollar[1].node } case 91: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:411 + //line php7/php7.y:409 { yyVAL.node = stmt.NewHaltCompiler() @@ -2719,7 +2713,7 @@ yydefault: } case 92: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:424 + //line php7/php7.y:422 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, nil) @@ -2734,7 +2728,7 @@ yydefault: } case 93: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:437 + //line php7/php7.y:435 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, yyDollar[4].list) @@ -2750,7 +2744,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:451 + //line php7/php7.y:449 { yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) @@ -2764,7 +2758,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:463 + //line php7/php7.y:461 { yyVAL.node = yyDollar[2].node @@ -2777,7 +2771,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:474 + //line php7/php7.y:472 { yyVAL.node = yyDollar[3].node.(*stmt.GroupUse).SetUseType(yyDollar[2].node) @@ -2790,7 +2784,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:485 + //line php7/php7.y:483 { yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) @@ -2803,7 +2797,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:496 + //line php7/php7.y:494 { yyVAL.node = stmt.NewUseList(yyDollar[2].node, yyDollar[3].list) @@ -2816,7 +2810,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:507 + //line php7/php7.y:505 { yyVAL.node = stmt.NewConstList(yyDollar[2].list) @@ -2829,7 +2823,7 @@ yydefault: } case 100: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:521 + //line php7/php7.y:519 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -2841,7 +2835,7 @@ yydefault: } case 101: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:531 + //line php7/php7.y:529 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -2853,7 +2847,7 @@ yydefault: } case 102: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:544 + //line php7/php7.y:542 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) @@ -2872,7 +2866,7 @@ yydefault: } case 103: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:561 + //line php7/php7.y:559 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -2892,7 +2886,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:582 + //line php7/php7.y:580 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) @@ -2911,7 +2905,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:599 + //line php7/php7.y:597 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -2931,19 +2925,19 @@ yydefault: } case 106: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:620 + //line php7/php7.y:618 { yyVAL.token = nil } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:622 + //line php7/php7.y:620 { yyVAL.token = yyDollar[1].token } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:627 + //line php7/php7.y:625 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2952,13 +2946,13 @@ yydefault: } case 109: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:634 + //line php7/php7.y:632 { yyVAL.list = []node.Node{yyDollar[1].node} } case 110: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:639 + //line php7/php7.y:637 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2967,13 +2961,13 @@ yydefault: } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:646 + //line php7/php7.y:644 { yyVAL.list = []node.Node{yyDollar[1].node} } case 112: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:651 + //line php7/php7.y:649 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2982,25 +2976,25 @@ yydefault: } case 113: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:658 + //line php7/php7.y:656 { yyVAL.list = []node.Node{yyDollar[1].node} } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:663 + //line php7/php7.y:661 { yyVAL.node = yyDollar[1].node } case 115: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:665 + //line php7/php7.y:663 { yyVAL.node = yyDollar[2].node.(*stmt.Use).SetUseType(yyDollar[1].node) } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:670 + //line php7/php7.y:668 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -3011,7 +3005,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:679 + //line php7/php7.y:677 { name := name.NewName(yyDollar[1].list) alias := node.NewIdentifier(yyDollar[3].token.Value) @@ -3028,13 +3022,13 @@ yydefault: } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:697 + //line php7/php7.y:695 { yyVAL.node = yyDollar[1].node } case 119: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:699 + //line php7/php7.y:697 { yyVAL.node = yyDollar[2].node @@ -3043,7 +3037,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:709 + //line php7/php7.y:707 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3052,13 +3046,13 @@ yydefault: } case 121: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:716 + //line php7/php7.y:714 { yyVAL.list = []node.Node{yyDollar[1].node} } case 122: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:721 + //line php7/php7.y:719 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3066,50 +3060,50 @@ yydefault: } case 123: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:727 + //line php7/php7.y:725 { yyVAL.list = []node.Node{} } case 124: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:732 + //line php7/php7.y:730 { // error yyVAL.node = nil } case 125: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:737 + //line php7/php7.y:735 { yyVAL.node = yyDollar[1].node } case 126: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:739 + //line php7/php7.y:737 { yyVAL.node = yyDollar[1].node } case 127: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:741 + //line php7/php7.y:739 { yyVAL.node = yyDollar[1].node } case 128: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:743 + //line php7/php7.y:741 { yyVAL.node = yyDollar[1].node } case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:745 + //line php7/php7.y:743 { yyVAL.node = yyDollar[1].node } case 130: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:747 + //line php7/php7.y:745 { yyVAL.node = stmt.NewHaltCompiler() @@ -3124,7 +3118,7 @@ yydefault: } case 131: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:762 + //line php7/php7.y:760 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -3137,28 +3131,31 @@ yydefault: } case 132: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:773 + //line php7/php7.y:771 { yyVAL.node = yyDollar[1].node } case 133: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:775 + //line php7/php7.y:773 { yyVAL.node = yyDollar[1].node } case 134: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:777 + //line php7/php7.y:775 { - if yyDollar[5].altSyntaxNode.isAlt { - yyVAL.node = stmt.NewAltWhile(yyDollar[3].node, yyDollar[5].altSyntaxNode.node) - } else { - yyVAL.node = stmt.NewWhile(yyDollar[3].node, yyDollar[5].altSyntaxNode.node) + switch n := yyDollar[5].node.(type) { + case *stmt.While: + n.Cond = yyDollar[3].node + case *stmt.AltWhile: + n.Cond = yyDollar[3].node } + yyVAL.node = yyDollar[5].node + // save position - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].altSyntaxNode.node)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) // save comments yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.WhileToken) @@ -3167,7 +3164,7 @@ yydefault: } case 135: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:793 + //line php7/php7.y:794 { yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[5].node) @@ -3183,16 +3180,23 @@ yydefault: } case 136: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:807 + //line php7/php7.y:808 { - if yyDollar[9].altSyntaxNode.isAlt { - yyVAL.node = stmt.NewAltFor(yyDollar[3].list, yyDollar[5].list, yyDollar[7].list, yyDollar[9].altSyntaxNode.node) - } else { - yyVAL.node = stmt.NewFor(yyDollar[3].list, yyDollar[5].list, yyDollar[7].list, yyDollar[9].altSyntaxNode.node) + switch n := yyDollar[9].node.(type) { + case *stmt.For: + n.Init = yyDollar[3].list + n.Cond = yyDollar[5].list + n.Loop = yyDollar[7].list + case *stmt.AltFor: + n.Init = yyDollar[3].list + n.Cond = yyDollar[5].list + n.Loop = yyDollar[7].list } + yyVAL.node = yyDollar[9].node + // save position - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].altSyntaxNode.node)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node)) // save comments yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.ForToken) @@ -3203,7 +3207,7 @@ yydefault: } case 137: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:825 + //line php7/php7.y:833 { switch n := yyDollar[5].node.(type) { case *stmt.Switch: @@ -3226,7 +3230,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:846 + //line php7/php7.y:854 { yyVAL.node = stmt.NewBreak(yyDollar[2].node) @@ -3239,7 +3243,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:857 + //line php7/php7.y:865 { yyVAL.node = stmt.NewContinue(yyDollar[2].node) @@ -3252,7 +3256,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:868 + //line php7/php7.y:876 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) @@ -3265,7 +3269,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:879 + //line php7/php7.y:887 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) @@ -3278,7 +3282,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:890 + //line php7/php7.y:898 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) @@ -3291,7 +3295,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:901 + //line php7/php7.y:909 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) @@ -3304,7 +3308,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:912 + //line php7/php7.y:920 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) @@ -3316,7 +3320,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:922 + //line php7/php7.y:930 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) @@ -3328,7 +3332,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:932 + //line php7/php7.y:940 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) @@ -3346,16 +3350,23 @@ yydefault: } case 147: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:948 + //line php7/php7.y:956 { - if yyDollar[7].altSyntaxNode.isAlt { - yyVAL.node = stmt.NewAltForeach(yyDollar[3].node, nil, yyDollar[5].foreachVariable.node, yyDollar[7].altSyntaxNode.node, yyDollar[5].foreachVariable.byRef) - } else { - yyVAL.node = stmt.NewForeach(yyDollar[3].node, nil, yyDollar[5].foreachVariable.node, yyDollar[7].altSyntaxNode.node, yyDollar[5].foreachVariable.byRef) + switch n := yyDollar[7].node.(type) { + case *stmt.Foreach: + n.Expr = yyDollar[3].node + n.ByRef = yyDollar[5].foreachVariable.byRef + n.Variable = yyDollar[5].foreachVariable.node + case *stmt.AltForeach: + n.Expr = yyDollar[3].node + n.ByRef = yyDollar[5].foreachVariable.byRef + n.Variable = yyDollar[5].foreachVariable.node } + yyVAL.node = yyDollar[7].node + // save position - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[7].altSyntaxNode.node)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[7].node)) // save comments yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.ForeachToken) @@ -3365,16 +3376,25 @@ yydefault: } case 148: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:965 + //line php7/php7.y:980 { - if yyDollar[9].altSyntaxNode.isAlt { - yyVAL.node = stmt.NewAltForeach(yyDollar[3].node, yyDollar[5].node, yyDollar[7].foreachVariable.node, yyDollar[9].altSyntaxNode.node, yyDollar[7].foreachVariable.byRef) - } else { - yyVAL.node = stmt.NewForeach(yyDollar[3].node, yyDollar[5].node, yyDollar[7].foreachVariable.node, yyDollar[9].altSyntaxNode.node, yyDollar[7].foreachVariable.byRef) + switch n := yyDollar[9].node.(type) { + case *stmt.Foreach: + n.Expr = yyDollar[3].node + n.Key = yyDollar[5].node + n.ByRef = yyDollar[7].foreachVariable.byRef + n.Variable = yyDollar[7].foreachVariable.node + case *stmt.AltForeach: + n.Expr = yyDollar[3].node + n.Key = yyDollar[5].node + n.ByRef = yyDollar[7].foreachVariable.byRef + n.Variable = yyDollar[7].foreachVariable.node } + yyVAL.node = yyDollar[9].node + // save position - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].altSyntaxNode.node)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node)) // save comments yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.ForeachToken) @@ -3385,7 +3405,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:983 + //line php7/php7.y:1007 { yyVAL.node = stmt.NewDeclare(yyDollar[3].list, yyDollar[5].node) @@ -3399,7 +3419,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:995 + //line php7/php7.y:1019 { yyVAL.node = stmt.NewNop() @@ -3411,7 +3431,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1005 + //line php7/php7.y:1029 { if yyDollar[6].node == nil { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3428,7 +3448,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1020 + //line php7/php7.y:1044 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) @@ -3441,7 +3461,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1031 + //line php7/php7.y:1055 { label := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewGoto(label) @@ -3457,7 +3477,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1045 + //line php7/php7.y:1069 { label := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewLabel(label) @@ -3472,13 +3492,13 @@ yydefault: } case 155: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1060 + //line php7/php7.y:1084 { yyVAL.list = []node.Node{} } case 156: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1062 + //line php7/php7.y:1086 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[5].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -3500,13 +3520,13 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1084 + //line php7/php7.y:1108 { yyVAL.list = []node.Node{yyDollar[1].node} } case 158: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1086 + //line php7/php7.y:1110 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3515,13 +3535,13 @@ yydefault: } case 159: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1096 + //line php7/php7.y:1120 { yyVAL.node = nil } case 160: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1098 + //line php7/php7.y:1122 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) @@ -3535,13 +3555,13 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1113 + //line php7/php7.y:1137 { yyVAL.list = []node.Node{yyDollar[1].node} } case 162: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1115 + //line php7/php7.y:1139 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3550,13 +3570,13 @@ yydefault: } case 163: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1125 + //line php7/php7.y:1149 { yyVAL.node = yyDollar[1].node } case 164: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:1130 + //line php7/php7.y:1154 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewFunction(name, yyDollar[2].boolWithToken.value, yyDollar[6].list, yyDollar[8].node, yyDollar[10].list, yyDollar[4].str) @@ -3578,31 +3598,31 @@ yydefault: } case 165: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1153 + //line php7/php7.y:1177 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 166: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1155 + //line php7/php7.y:1179 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 167: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1160 + //line php7/php7.y:1184 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 168: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1162 + //line php7/php7.y:1186 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 169: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1167 + //line php7/php7.y:1191 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewClass(name, yyDollar[1].list, nil, yyDollar[4].node, yyDollar[5].list, yyDollar[8].list, yyDollar[6].str) @@ -3625,7 +3645,7 @@ yydefault: } case 170: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:1188 + //line php7/php7.y:1212 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewClass(name, nil, nil, yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str) @@ -3648,19 +3668,19 @@ yydefault: } case 171: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1212 + //line php7/php7.y:1236 { yyVAL.list = []node.Node{yyDollar[1].node} } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1214 + //line php7/php7.y:1238 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1219 + //line php7/php7.y:1243 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3672,7 +3692,7 @@ yydefault: } case 174: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1229 + //line php7/php7.y:1253 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3684,7 +3704,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1242 + //line php7/php7.y:1266 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewTrait(name, yyDollar[5].list, yyDollar[3].str) @@ -3701,7 +3721,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1260 + //line php7/php7.y:1284 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewInterface(name, yyDollar[3].list, yyDollar[6].list, yyDollar[4].str) @@ -3721,13 +3741,13 @@ yydefault: } case 177: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1281 + //line php7/php7.y:1305 { yyVAL.node = nil } case 178: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1283 + //line php7/php7.y:1307 { yyVAL.node = yyDollar[2].node @@ -3736,13 +3756,13 @@ yydefault: } case 179: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1293 + //line php7/php7.y:1317 { yyVAL.list = nil } case 180: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1295 + //line php7/php7.y:1319 { yyVAL.list = yyDollar[2].list @@ -3751,13 +3771,13 @@ yydefault: } case 181: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1305 + //line php7/php7.y:1329 { yyVAL.list = nil } case 182: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1307 + //line php7/php7.y:1331 { yyVAL.list = yyDollar[2].list @@ -3766,13 +3786,13 @@ yydefault: } case 183: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1317 + //line php7/php7.y:1341 { yyVAL.foreachVariable = foreachVariable{yyDollar[1].node, false} } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1319 + //line php7/php7.y:1343 { yyVAL.foreachVariable = foreachVariable{yyDollar[2].node, true} @@ -3784,7 +3804,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1329 + //line php7/php7.y:1353 { list := expr.NewList(yyDollar[3].list) yyVAL.foreachVariable = foreachVariable{list, false} @@ -3799,7 +3819,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1342 + //line php7/php7.y:1366 { list := expr.NewShortList(yyDollar[2].list) yyVAL.foreachVariable = foreachVariable{list, false} @@ -3813,53 +3833,63 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1357 + //line php7/php7.y:1381 { - yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} + yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) } case 188: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1359 + //line php7/php7.y:1388 { - yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} + stmtList := stmt.NewStmtList(yyDollar[2].list) + yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) // save position - yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yylex.(*Parser).comments.AddFromToken(yyVAL.altSyntaxNode.node, yyDollar[1].token, comment.ColonToken) - yylex.(*Parser).comments.AddFromToken(yyVAL.altSyntaxNode.node, yyDollar[3].token, comment.EndforToken) - yylex.(*Parser).comments.AddFromToken(yyVAL.altSyntaxNode.node, yyDollar[4].token, comment.SemiColonToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.ColonToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[3].token, comment.EndforToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[4].token, comment.SemiColonToken) } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1374 + //line php7/php7.y:1405 { - yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} + yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node, false) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) } case 190: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1376 + //line php7/php7.y:1412 { - yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} + stmtList := stmt.NewStmtList(yyDollar[2].list) + yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList, false) // save position - yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yylex.(*Parser).comments.AddFromToken(yyVAL.altSyntaxNode.node, yyDollar[1].token, comment.ColonToken) - yylex.(*Parser).comments.AddFromToken(yyVAL.altSyntaxNode.node, yyDollar[3].token, comment.EndforeachToken) - yylex.(*Parser).comments.AddFromToken(yyVAL.altSyntaxNode.node, yyDollar[4].token, comment.SemiColonToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.ColonToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[3].token, comment.EndforeachToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[4].token, comment.SemiColonToken) } case 191: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1391 + //line php7/php7.y:1429 { yyVAL.node = yyDollar[1].node } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1393 + //line php7/php7.y:1431 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -3873,7 +3903,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1408 + //line php7/php7.y:1446 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -3888,7 +3918,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1421 + //line php7/php7.y:1459 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -3904,7 +3934,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1435 + //line php7/php7.y:1473 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -3920,7 +3950,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1449 + //line php7/php7.y:1487 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -3938,13 +3968,13 @@ yydefault: } case 197: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1468 + //line php7/php7.y:1506 { yyVAL.list = []node.Node{} } case 198: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1470 + //line php7/php7.y:1508 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yyVAL.list = append(yyDollar[1].list, _case) @@ -3958,7 +3988,7 @@ yydefault: } case 199: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1482 + //line php7/php7.y:1520 { _default := stmt.NewDefault(yyDollar[4].list) yyVAL.list = append(yyDollar[1].list, _default) @@ -3972,39 +4002,44 @@ yydefault: } case 200: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1497 + //line php7/php7.y:1535 { yyVAL.token = yyDollar[1].token } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1499 + //line php7/php7.y:1537 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1504 + //line php7/php7.y:1542 { - yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} + yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) } case 203: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1506 + //line php7/php7.y:1549 { - yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} + stmtList := stmt.NewStmtList(yyDollar[2].list) + yyVAL.node = stmt.NewAltWhile(nil, stmtList) // save position - yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yylex.(*Parser).comments.AddFromToken(yyVAL.altSyntaxNode.node, yyDollar[1].token, comment.ColonToken) - yylex.(*Parser).comments.AddFromToken(yyVAL.altSyntaxNode.node, yyDollar[3].token, comment.EndwhileToken) - yylex.(*Parser).comments.AddFromToken(yyVAL.altSyntaxNode.node, yyDollar[4].token, comment.SemiColonToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.ColonToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[3].token, comment.EndwhileToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[4].token, comment.SemiColonToken) } case 204: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1521 + //line php7/php7.y:1566 { yyVAL.node = stmt.NewIf(yyDollar[3].node, yyDollar[5].node, nil, nil) @@ -4018,7 +4053,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1533 + //line php7/php7.y:1578 { _elseIf := stmt.NewElseIf(yyDollar[4].node, yyDollar[6].node) yyVAL.node = yyDollar[1].node.(*stmt.If).AddElseIf(_elseIf) @@ -4034,13 +4069,13 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1550 + //line php7/php7.y:1595 { yyVAL.node = yyDollar[1].node } case 207: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1552 + //line php7/php7.y:1597 { _else := stmt.NewElse(yyDollar[3].node) yyVAL.node = yyDollar[1].node.(*stmt.If).SetElse(_else) @@ -4054,7 +4089,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1567 + //line php7/php7.y:1612 { stmts := stmt.NewStmtList(yyDollar[6].list) yyVAL.node = stmt.NewAltIf(yyDollar[3].node, stmts, nil, nil) @@ -4071,7 +4106,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1582 + //line php7/php7.y:1627 { stmts := stmt.NewStmtList(yyDollar[7].list) _elseIf := stmt.NewAltElseIf(yyDollar[4].node, stmts) @@ -4089,7 +4124,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1601 + //line php7/php7.y:1646 { yyVAL.node = yyDollar[1].node @@ -4102,7 +4137,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1612 + //line php7/php7.y:1657 { stmts := stmt.NewStmtList(yyDollar[4].list) _else := stmt.NewAltElse(stmts) @@ -4121,25 +4156,25 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1632 + //line php7/php7.y:1677 { yyVAL.list = yyDollar[1].list } case 213: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1634 + //line php7/php7.y:1679 { yyVAL.list = nil } case 214: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1639 + //line php7/php7.y:1684 { yyVAL.list = []node.Node{yyDollar[1].node} } case 215: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1641 + //line php7/php7.y:1686 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4148,7 +4183,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1651 + //line php7/php7.y:1696 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4187,7 +4222,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1688 + //line php7/php7.y:1733 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4226,25 +4261,25 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1728 + //line php7/php7.y:1773 { yyVAL.node = nil } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1730 + //line php7/php7.y:1775 { yyVAL.node = yyDollar[1].node } case 220: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1735 + //line php7/php7.y:1780 { yyVAL.node = yyDollar[1].node } case 221: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1737 + //line php7/php7.y:1782 { yyVAL.node = node.NewNullable(yyDollar[2].node) @@ -4256,7 +4291,7 @@ yydefault: } case 222: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1750 + //line php7/php7.y:1795 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4268,7 +4303,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1760 + //line php7/php7.y:1805 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4280,19 +4315,19 @@ yydefault: } case 224: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1770 + //line php7/php7.y:1815 { yyVAL.node = yyDollar[1].node } case 225: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1775 + //line php7/php7.y:1820 { yyVAL.node = nil } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1777 + //line php7/php7.y:1822 { yyVAL.node = yyDollar[2].node @@ -4301,7 +4336,7 @@ yydefault: } case 227: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1787 + //line php7/php7.y:1832 { yyVAL.node = node.NewArgumentList(nil) @@ -4310,7 +4345,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1794 + //line php7/php7.y:1839 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -4319,13 +4354,13 @@ yydefault: } case 229: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1804 + //line php7/php7.y:1849 { yyVAL.list = []node.Node{yyDollar[1].node} } case 230: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1806 + //line php7/php7.y:1851 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4334,7 +4369,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1816 + //line php7/php7.y:1861 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) @@ -4343,7 +4378,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1823 + //line php7/php7.y:1868 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4355,7 +4390,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1836 + //line php7/php7.y:1881 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4364,19 +4399,19 @@ yydefault: } case 234: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1843 + //line php7/php7.y:1888 { yyVAL.list = []node.Node{yyDollar[1].node} } case 235: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1848 + //line php7/php7.y:1893 { yyVAL.node = yyDollar[1].node } case 236: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1853 + //line php7/php7.y:1898 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4385,13 +4420,13 @@ yydefault: } case 237: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1860 + //line php7/php7.y:1905 { yyVAL.list = []node.Node{yyDollar[1].node} } case 238: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1865 + //line php7/php7.y:1910 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4407,7 +4442,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1879 + //line php7/php7.y:1924 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4424,19 +4459,19 @@ yydefault: } case 240: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1897 + //line php7/php7.y:1942 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 241: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1899 + //line php7/php7.y:1944 { yyVAL.list = []node.Node{} } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1904 + //line php7/php7.y:1949 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4448,7 +4483,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1914 + //line php7/php7.y:1959 { yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) @@ -4461,7 +4496,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1925 + //line php7/php7.y:1970 { var adaptationList *stmt.TraitAdaptationList @@ -4483,7 +4518,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-10 : yypt+1] - //line php7/php7.y:1945 + //line php7/php7.y:1990 { name := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewClassMethod(name, yyDollar[1].list, yyDollar[3].boolWithToken.value, yyDollar[7].list, yyDollar[9].node, yyDollar[10].node, yyDollar[5].str) @@ -4507,13 +4542,13 @@ yydefault: } case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1970 + //line php7/php7.y:2015 { yyVAL.list = []node.Node{yyDollar[1].node} } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1972 + //line php7/php7.y:2017 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4522,7 +4557,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1982 + //line php7/php7.y:2027 { yyVAL.node = stmt.NewNop() @@ -4534,7 +4569,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1992 + //line php7/php7.y:2037 { yyVAL.node = stmt.NewTraitAdaptationList(nil) @@ -4546,7 +4581,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2002 + //line php7/php7.y:2047 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -4558,19 +4593,19 @@ yydefault: } case 251: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2015 + //line php7/php7.y:2060 { yyVAL.list = []node.Node{yyDollar[1].node} } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2017 + //line php7/php7.y:2062 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 253: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2022 + //line php7/php7.y:2067 { yyVAL.node = yyDollar[1].node @@ -4579,7 +4614,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2029 + //line php7/php7.y:2074 { yyVAL.node = yyDollar[1].node @@ -4588,7 +4623,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2039 + //line php7/php7.y:2084 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -4600,7 +4635,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2052 + //line php7/php7.y:2097 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -4615,7 +4650,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2065 + //line php7/php7.y:2110 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -4630,7 +4665,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2078 + //line php7/php7.y:2123 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -4645,7 +4680,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2091 + //line php7/php7.y:2136 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -4657,7 +4692,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2104 + //line php7/php7.y:2149 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -4671,13 +4706,13 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2116 + //line php7/php7.y:2161 { yyVAL.node = yyDollar[1].node } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2121 + //line php7/php7.y:2166 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -4692,7 +4727,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2137 + //line php7/php7.y:2182 { yyVAL.node = stmt.NewNop() @@ -4704,7 +4739,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2147 + //line php7/php7.y:2192 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -4717,13 +4752,13 @@ yydefault: } case 265: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2161 + //line php7/php7.y:2206 { yyVAL.list = yyDollar[1].list } case 266: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2163 + //line php7/php7.y:2208 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -4736,31 +4771,31 @@ yydefault: } case 267: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2177 + //line php7/php7.y:2222 { yyVAL.list = nil } case 268: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2179 + //line php7/php7.y:2224 { yyVAL.list = yyDollar[1].list } case 269: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2184 + //line php7/php7.y:2229 { yyVAL.list = []node.Node{yyDollar[1].node} } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2186 + //line php7/php7.y:2231 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 271: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2191 + //line php7/php7.y:2236 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4772,7 +4807,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2201 + //line php7/php7.y:2246 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4784,7 +4819,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2211 + //line php7/php7.y:2256 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4796,7 +4831,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2221 + //line php7/php7.y:2266 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4808,7 +4843,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2231 + //line php7/php7.y:2276 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4820,7 +4855,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2241 + //line php7/php7.y:2286 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4832,7 +4867,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2254 + //line php7/php7.y:2299 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4841,13 +4876,13 @@ yydefault: } case 278: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2261 + //line php7/php7.y:2306 { yyVAL.list = []node.Node{yyDollar[1].node} } case 279: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2266 + //line php7/php7.y:2311 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4863,7 +4898,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2280 + //line php7/php7.y:2325 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4880,7 +4915,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2298 + //line php7/php7.y:2343 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4889,13 +4924,13 @@ yydefault: } case 282: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2305 + //line php7/php7.y:2350 { yyVAL.list = []node.Node{yyDollar[1].node} } case 283: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2310 + //line php7/php7.y:2355 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -4910,7 +4945,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2326 + //line php7/php7.y:2371 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -4925,7 +4960,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2342 + //line php7/php7.y:2387 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4934,31 +4969,31 @@ yydefault: } case 286: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2349 + //line php7/php7.y:2394 { yyVAL.list = []node.Node{yyDollar[1].node} } case 287: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2354 + //line php7/php7.y:2399 { yyVAL.node = yyDollar[1].node } case 288: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2359 + //line php7/php7.y:2404 { yyVAL.list = nil } case 289: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2361 + //line php7/php7.y:2406 { yyVAL.list = yyDollar[1].list } case 290: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2366 + //line php7/php7.y:2411 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4967,13 +5002,13 @@ yydefault: } case 291: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2373 + //line php7/php7.y:2418 { yyVAL.list = []node.Node{yyDollar[1].node} } case 292: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:2378 + //line php7/php7.y:2423 { if yyDollar[2].node != nil { yyVAL.node = stmt.NewClass(nil, nil, yyDollar[2].node.(*node.ArgumentList), yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str) @@ -4997,7 +5032,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2403 + //line php7/php7.y:2448 { if yyDollar[3].node != nil { yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].node.(*node.ArgumentList)) @@ -5012,7 +5047,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2416 + //line php7/php7.y:2461 { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) @@ -5024,7 +5059,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2429 + //line php7/php7.y:2474 { list := expr.NewList(yyDollar[3].list) yyVAL.node = assign.NewAssign(list, yyDollar[6].node) @@ -5041,7 +5076,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:2444 + //line php7/php7.y:2489 { shortList := expr.NewShortList(yyDollar[2].list) yyVAL.node = assign.NewAssign(shortList, yyDollar[5].node) @@ -5057,7 +5092,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2458 + //line php7/php7.y:2503 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -5069,7 +5104,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2468 + //line php7/php7.y:2513 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) @@ -5082,7 +5117,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2479 + //line php7/php7.y:2524 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5094,7 +5129,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2489 + //line php7/php7.y:2534 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5106,7 +5141,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2499 + //line php7/php7.y:2544 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5118,7 +5153,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2509 + //line php7/php7.y:2554 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5130,7 +5165,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2519 + //line php7/php7.y:2564 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5142,7 +5177,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2529 + //line php7/php7.y:2574 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5154,7 +5189,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2539 + //line php7/php7.y:2584 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5166,7 +5201,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2549 + //line php7/php7.y:2594 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5178,7 +5213,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2559 + //line php7/php7.y:2604 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5190,7 +5225,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2569 + //line php7/php7.y:2614 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5202,7 +5237,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2579 + //line php7/php7.y:2624 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5214,7 +5249,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2589 + //line php7/php7.y:2634 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5226,7 +5261,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2599 + //line php7/php7.y:2644 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5238,7 +5273,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2609 + //line php7/php7.y:2654 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5250,7 +5285,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2619 + //line php7/php7.y:2664 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5262,7 +5297,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2629 + //line php7/php7.y:2674 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5274,7 +5309,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2639 + //line php7/php7.y:2684 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5286,7 +5321,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2649 + //line php7/php7.y:2694 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5298,7 +5333,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2659 + //line php7/php7.y:2704 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5310,7 +5345,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2669 + //line php7/php7.y:2714 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -5322,7 +5357,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2679 + //line php7/php7.y:2724 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -5334,7 +5369,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2689 + //line php7/php7.y:2734 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -5346,7 +5381,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2699 + //line php7/php7.y:2744 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5358,7 +5393,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2709 + //line php7/php7.y:2754 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5370,7 +5405,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2719 + //line php7/php7.y:2764 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5382,7 +5417,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2729 + //line php7/php7.y:2774 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5394,7 +5429,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2739 + //line php7/php7.y:2784 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5406,7 +5441,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2749 + //line php7/php7.y:2794 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5418,7 +5453,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2759 + //line php7/php7.y:2804 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5430,7 +5465,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2769 + //line php7/php7.y:2814 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5442,7 +5477,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2779 + //line php7/php7.y:2824 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5454,7 +5489,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2789 + //line php7/php7.y:2834 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5466,7 +5501,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2799 + //line php7/php7.y:2844 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5478,7 +5513,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2809 + //line php7/php7.y:2854 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5490,7 +5525,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2819 + //line php7/php7.y:2864 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -5502,7 +5537,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2829 + //line php7/php7.y:2874 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -5514,7 +5549,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2839 + //line php7/php7.y:2884 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -5526,7 +5561,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2849 + //line php7/php7.y:2894 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -5538,7 +5573,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2859 + //line php7/php7.y:2904 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -5550,7 +5585,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2869 + //line php7/php7.y:2914 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -5562,7 +5597,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2879 + //line php7/php7.y:2924 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -5574,7 +5609,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2889 + //line php7/php7.y:2934 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -5586,7 +5621,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2899 + //line php7/php7.y:2944 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -5598,7 +5633,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2909 + //line php7/php7.y:2954 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -5610,7 +5645,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2919 + //line php7/php7.y:2964 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -5622,7 +5657,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2929 + //line php7/php7.y:2974 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -5634,7 +5669,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2939 + //line php7/php7.y:2984 { yyVAL.node = binary.NewSpaceship(yyDollar[1].node, yyDollar[3].node) @@ -5646,7 +5681,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2949 + //line php7/php7.y:2994 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -5658,7 +5693,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2959 + //line php7/php7.y:3004 { yyVAL.node = yyDollar[2].node @@ -5668,13 +5703,13 @@ yydefault: } case 348: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2967 + //line php7/php7.y:3012 { yyVAL.node = yyDollar[1].node } case 349: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:2969 + //line php7/php7.y:3014 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -5687,7 +5722,7 @@ yydefault: } case 350: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2980 + //line php7/php7.y:3025 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -5700,7 +5735,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2991 + //line php7/php7.y:3036 { yyVAL.node = binary.NewCoalesce(yyDollar[1].node, yyDollar[3].node) @@ -5712,13 +5747,13 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3001 + //line php7/php7.y:3046 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3003 + //line php7/php7.y:3048 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -5730,7 +5765,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3013 + //line php7/php7.y:3058 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -5742,7 +5777,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3023 + //line php7/php7.y:3068 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -5754,7 +5789,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3033 + //line php7/php7.y:3078 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -5766,7 +5801,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3043 + //line php7/php7.y:3088 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -5778,7 +5813,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3053 + //line php7/php7.y:3098 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -5790,7 +5825,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3063 + //line php7/php7.y:3108 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -5802,7 +5837,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3073 + //line php7/php7.y:3118 { if strings.EqualFold(yyDollar[1].token.Value, "die") { yyVAL.node = expr.NewDie(yyDollar[2].node) @@ -5818,7 +5853,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3087 + //line php7/php7.y:3132 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -5830,13 +5865,13 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3097 + //line php7/php7.y:3142 { yyVAL.node = yyDollar[1].node } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3099 + //line php7/php7.y:3144 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -5849,7 +5884,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3110 + //line php7/php7.y:3155 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -5861,7 +5896,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3120 + //line php7/php7.y:3165 { yyVAL.node = expr.NewYield(nil, nil) @@ -5873,7 +5908,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3130 + //line php7/php7.y:3175 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -5885,7 +5920,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3140 + //line php7/php7.y:3185 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -5898,7 +5933,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3151 + //line php7/php7.y:3196 { yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) @@ -5910,7 +5945,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:3161 + //line php7/php7.y:3206 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].list, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].boolWithToken.value, yyDollar[3].str) @@ -5929,7 +5964,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-12 : yypt+1] - //line php7/php7.y:3178 + //line php7/php7.y:3223 { yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].list, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].boolWithToken.value, yyDollar[4].str) @@ -5949,38 +5984,38 @@ yydefault: } case 371: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3199 + //line php7/php7.y:3244 { yyVAL.str = yylex.(*Parser).PhpDocComment yylex.(*Parser).PhpDocComment = "" } case 372: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3207 + //line php7/php7.y:3252 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 373: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3209 + //line php7/php7.y:3254 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 374: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3214 + //line php7/php7.y:3259 { yyVAL.list = []node.Node{} } case 375: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3216 + //line php7/php7.y:3261 { yyVAL.list = yyDollar[3].list } case 376: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3221 + //line php7/php7.y:3266 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5989,13 +6024,13 @@ yydefault: } case 377: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3228 + //line php7/php7.y:3273 { yyVAL.list = []node.Node{yyDollar[1].node} } case 378: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3233 + //line php7/php7.y:3278 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -6011,7 +6046,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3247 + //line php7/php7.y:3292 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[2].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -6028,7 +6063,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3265 + //line php7/php7.y:3310 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6037,7 +6072,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3272 + //line php7/php7.y:3317 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6049,7 +6084,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3282 + //line php7/php7.y:3327 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6061,7 +6096,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3292 + //line php7/php7.y:3337 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6070,7 +6105,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3302 + //line php7/php7.y:3347 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6082,67 +6117,67 @@ yydefault: } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3312 + //line php7/php7.y:3357 { yyVAL.node = yyDollar[1].node } case 386: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3317 + //line php7/php7.y:3362 { yyVAL.node = yyDollar[1].node } case 387: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3319 + //line php7/php7.y:3364 { yyVAL.node = yyDollar[1].node } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3324 + //line php7/php7.y:3369 { yyVAL.node = nil } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3326 + //line php7/php7.y:3371 { yyVAL.node = yyDollar[2].node } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3331 + //line php7/php7.y:3376 { yyVAL.list = []node.Node{} } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3333 + //line php7/php7.y:3378 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} } case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3335 + //line php7/php7.y:3380 { yyVAL.list = yyDollar[1].list } case 393: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3340 + //line php7/php7.y:3385 { yyVAL.node = nil } case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3342 + //line php7/php7.y:3387 { yyVAL.node = yyDollar[1].node } case 395: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3347 + //line php7/php7.y:3392 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -6156,7 +6191,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3359 + //line php7/php7.y:3404 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -6169,7 +6204,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3370 + //line php7/php7.y:3415 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -6181,7 +6216,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3383 + //line php7/php7.y:3428 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -6193,7 +6228,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3393 + //line php7/php7.y:3438 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -6205,7 +6240,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3403 + //line php7/php7.y:3448 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6217,7 +6252,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3413 + //line php7/php7.y:3458 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6229,7 +6264,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3423 + //line php7/php7.y:3468 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6241,7 +6276,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3433 + //line php7/php7.y:3478 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6253,7 +6288,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3443 + //line php7/php7.y:3488 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6265,7 +6300,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3453 + //line php7/php7.y:3498 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6277,7 +6312,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3463 + //line php7/php7.y:3508 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6289,7 +6324,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3473 + //line php7/php7.y:3518 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6301,7 +6336,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3483 + //line php7/php7.y:3528 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -6315,7 +6350,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3495 + //line php7/php7.y:3540 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -6327,7 +6362,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3505 + //line php7/php7.y:3550 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -6339,7 +6374,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3515 + //line php7/php7.y:3560 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -6351,19 +6386,19 @@ yydefault: } case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3525 + //line php7/php7.y:3570 { yyVAL.node = yyDollar[1].node } case 413: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3527 + //line php7/php7.y:3572 { yyVAL.node = yyDollar[1].node } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3532 + //line php7/php7.y:3577 { yyVAL.node = expr.NewConstFetch(yyDollar[1].node) @@ -6372,7 +6407,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3539 + //line php7/php7.y:3584 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -6387,7 +6422,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3552 + //line php7/php7.y:3597 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -6402,43 +6437,43 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3568 + //line php7/php7.y:3613 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3570 + //line php7/php7.y:3615 { yyVAL.node = yyDollar[1].node } case 419: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3575 + //line php7/php7.y:3620 { yyVAL.node = nil } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3577 + //line php7/php7.y:3622 { yyVAL.node = yyDollar[1].node } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3582 + //line php7/php7.y:3627 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3587 + //line php7/php7.y:3632 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3589 + //line php7/php7.y:3634 { yyVAL.node = yyDollar[2].node @@ -6448,19 +6483,19 @@ yydefault: } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3597 + //line php7/php7.y:3642 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3602 + //line php7/php7.y:3647 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3604 + //line php7/php7.y:3649 { yyVAL.node = yyDollar[2].node @@ -6470,19 +6505,19 @@ yydefault: } case 427: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3612 + //line php7/php7.y:3657 { yyVAL.node = yyDollar[1].node } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3617 + //line php7/php7.y:3662 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3619 + //line php7/php7.y:3664 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6495,7 +6530,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3630 + //line php7/php7.y:3675 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6508,7 +6543,7 @@ yydefault: } case 431: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3641 + //line php7/php7.y:3686 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6521,7 +6556,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3652 + //line php7/php7.y:3697 { yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6533,25 +6568,25 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3662 + //line php7/php7.y:3707 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3667 + //line php7/php7.y:3712 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3669 + //line php7/php7.y:3714 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3671 + //line php7/php7.y:3716 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6563,7 +6598,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3684 + //line php7/php7.y:3729 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yyVAL.node = expr.NewVariable(name) @@ -6577,7 +6612,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3696 + //line php7/php7.y:3741 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -6591,7 +6626,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3708 + //line php7/php7.y:3753 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -6603,7 +6638,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3721 + //line php7/php7.y:3766 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6615,7 +6650,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3731 + //line php7/php7.y:3776 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6627,13 +6662,13 @@ yydefault: } case 442: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3744 + //line php7/php7.y:3789 { yyVAL.node = yyDollar[1].node } case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3746 + //line php7/php7.y:3791 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6646,7 +6681,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3757 + //line php7/php7.y:3802 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6659,7 +6694,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3768 + //line php7/php7.y:3813 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6671,7 +6706,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3778 + //line php7/php7.y:3823 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6683,7 +6718,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3788 + //line php7/php7.y:3833 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6695,7 +6730,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3801 + //line php7/php7.y:3846 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6707,7 +6742,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3811 + //line php7/php7.y:3856 { yyVAL.node = yyDollar[2].node @@ -6717,13 +6752,13 @@ yydefault: } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3819 + //line php7/php7.y:3864 { yyVAL.node = yyDollar[1].node } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3824 + //line php7/php7.y:3869 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6735,7 +6770,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3834 + //line php7/php7.y:3879 { yyVAL.node = yyDollar[2].node @@ -6745,13 +6780,13 @@ yydefault: } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3842 + //line php7/php7.y:3887 { yyVAL.node = yyDollar[1].node } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3847 + //line php7/php7.y:3892 { if yyDollar[1].list[len(yyDollar[1].list)-1] == nil { yyVAL.list = yyDollar[1].list[:len(yyDollar[1].list)-1] @@ -6761,19 +6796,19 @@ yydefault: } case 455: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3858 + //line php7/php7.y:3903 { yyVAL.node = nil } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3860 + //line php7/php7.y:3905 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3865 + //line php7/php7.y:3910 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6782,13 +6817,13 @@ yydefault: } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3872 + //line php7/php7.y:3917 { yyVAL.list = []node.Node{yyDollar[1].node} } case 459: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3877 + //line php7/php7.y:3922 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) @@ -6800,7 +6835,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3887 + //line php7/php7.y:3932 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false) @@ -6809,7 +6844,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3894 + //line php7/php7.y:3939 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[4].node, true) @@ -6822,7 +6857,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3905 + //line php7/php7.y:3950 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[2].node, true) @@ -6834,7 +6869,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:3915 + //line php7/php7.y:3960 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[5].list) @@ -6852,7 +6887,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3931 + //line php7/php7.y:3976 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[3].list) @@ -6869,13 +6904,13 @@ yydefault: } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3949 + //line php7/php7.y:3994 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3951 + //line php7/php7.y:3996 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -6888,13 +6923,13 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3962 + //line php7/php7.y:4007 { yyVAL.list = []node.Node{yyDollar[1].node} } case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3964 + //line php7/php7.y:4009 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -6907,7 +6942,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3978 + //line php7/php7.y:4023 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yyVAL.node = expr.NewVariable(name) @@ -6921,7 +6956,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3990 + //line php7/php7.y:4035 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -6939,7 +6974,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4006 + //line php7/php7.y:4051 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -6959,7 +6994,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4024 + //line php7/php7.y:4069 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -6972,7 +7007,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4035 + //line php7/php7.y:4080 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = expr.NewVariable(name) @@ -6988,7 +7023,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:4049 + //line php7/php7.y:4094 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -7008,13 +7043,13 @@ yydefault: } case 475: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4067 + //line php7/php7.y:4112 { yyVAL.node = yyDollar[2].node } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4073 + //line php7/php7.y:4118 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -7026,7 +7061,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4083 + //line php7/php7.y:4128 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -7043,7 +7078,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4098 + //line php7/php7.y:4143 { var lnumber *scalar.Lnumber // TODO: add option to handle 64 bit integer @@ -7074,7 +7109,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4127 + //line php7/php7.y:4172 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yyVAL.node = expr.NewVariable(identifier) @@ -7088,7 +7123,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:4142 + //line php7/php7.y:4187 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -7105,7 +7140,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4157 + //line php7/php7.y:4202 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -7119,7 +7154,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4169 + //line php7/php7.y:4214 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -7131,7 +7166,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4179 + //line php7/php7.y:4224 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -7143,7 +7178,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4189 + //line php7/php7.y:4234 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -7157,7 +7192,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4201 + //line php7/php7.y:4246 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -7169,7 +7204,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4211 + //line php7/php7.y:4256 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -7181,13 +7216,13 @@ yydefault: } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4224 + //line php7/php7.y:4269 { yyVAL.list = []node.Node{yyDollar[1].node} } case 488: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4226 + //line php7/php7.y:4271 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -7196,7 +7231,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4236 + //line php7/php7.y:4281 { yyVAL.node = yyDollar[1].node } diff --git a/php7/php7.y b/php7/php7.y index 47b09c1..71a13a8 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -26,7 +26,6 @@ import ( list []node.Node foreachVariable foreachVariable str string - altSyntaxNode altSyntaxNode } %type $unk @@ -266,6 +265,7 @@ import ( %type trait_adaptations %type switch_case_list %type method_body +%type foreach_statement for_statement while_statement %type member_modifier %type use_type @@ -284,8 +284,6 @@ import ( %type backup_doc_comment -%type while_statement for_statement foreach_statement - %% ///////////////////////////////////////////////////////////////////////// @@ -775,14 +773,17 @@ statement: { $$ = $1; } | T_WHILE '(' expr ')' while_statement { - if ($5.isAlt) { - $$ = stmt.NewAltWhile($3, $5.node) - } else { - $$ = stmt.NewWhile($3, $5.node) + switch n := $5.(type) { + case *stmt.While : + n.Cond = $3 + case *stmt.AltWhile : + n.Cond = $3 } + $$ = $5 + // save position - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5.node)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.WhileToken) @@ -805,14 +806,21 @@ statement: } | T_FOR '(' for_exprs ';' for_exprs ';' for_exprs ')' for_statement { - if ($9.isAlt) { - $$ = stmt.NewAltFor($3, $5, $7, $9.node) - } else { - $$ = stmt.NewFor($3, $5, $7, $9.node) + switch n := $9.(type) { + case *stmt.For : + n.Init = $3 + n.Cond = $5 + n.Loop = $7 + case *stmt.AltFor : + n.Init = $3 + n.Cond = $5 + n.Loop = $7 } + $$ = $9 + // save position - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9.node)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9)) // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ForToken) @@ -946,14 +954,21 @@ statement: } | T_FOREACH '(' expr T_AS foreach_variable ')' foreach_statement { - if ($7.isAlt) { - $$ = stmt.NewAltForeach($3, nil, $5.node, $7.node, $5.byRef) - } else { - $$ = stmt.NewForeach($3, nil, $5.node, $7.node, $5.byRef) + switch n := $7.(type) { + case *stmt.Foreach : + n.Expr = $3 + n.ByRef = $5.byRef + n.Variable = $5.node + case *stmt.AltForeach : + n.Expr = $3 + n.ByRef = $5.byRef + n.Variable = $5.node } + $$ = $7 + // save position - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $7.node)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $7)) // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ForeachToken) @@ -963,14 +978,23 @@ statement: } | T_FOREACH '(' expr T_AS variable T_DOUBLE_ARROW foreach_variable ')' foreach_statement { - if ($9.isAlt) { - $$ = stmt.NewAltForeach($3, $5, $7.node, $9.node, $7.byRef) - } else { - $$ = stmt.NewForeach($3, $5, $7.node, $9.node, $7.byRef) + switch n := $9.(type) { + case *stmt.Foreach : + n.Expr = $3 + n.Key = $5 + n.ByRef = $7.byRef + n.Variable = $7.node + case *stmt.AltForeach : + n.Expr = $3 + n.Key = $5 + n.ByRef = $7.byRef + n.Variable = $7.node } + $$ = $9 + // save position - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9.node)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9)) // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ForeachToken) @@ -1354,35 +1378,49 @@ foreach_variable: for_statement: statement - { $$ = altSyntaxNode{$1, false} } - | ':' inner_statement_list T_ENDFOR ';' { - $$ = altSyntaxNode{stmt.NewStmtList($2), true} + $$ = stmt.NewFor(nil, nil, nil, $1) // save position - yylex.(*Parser).positions.AddPosition($$.node, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) + } + | ':' inner_statement_list T_ENDFOR ';' + { + stmtList := stmt.NewStmtList($2) + $$ = stmt.NewAltFor(nil, nil, nil, stmtList) + + // save position + yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - yylex.(*Parser).comments.AddFromToken($$.node, $1, comment.ColonToken) - yylex.(*Parser).comments.AddFromToken($$.node, $3, comment.EndforToken) - yylex.(*Parser).comments.AddFromToken($$.node, $4, comment.SemiColonToken) + yylex.(*Parser).comments.AddFromToken($$, $1, comment.ColonToken) + yylex.(*Parser).comments.AddFromToken($$, $3, comment.EndforToken) + yylex.(*Parser).comments.AddFromToken($$, $4, comment.SemiColonToken) } ; foreach_statement: statement - { $$ = altSyntaxNode{$1, false} } - | ':' inner_statement_list T_ENDFOREACH ';' { - $$ = altSyntaxNode{stmt.NewStmtList($2), true} + $$ = stmt.NewForeach(nil, nil, nil, $1, false) // save position - yylex.(*Parser).positions.AddPosition($$.node, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) + } + | ':' inner_statement_list T_ENDFOREACH ';' + { + stmtList := stmt.NewStmtList($2) + $$ = stmt.NewAltForeach(nil, nil, nil, stmtList, false) + + // save position + yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - yylex.(*Parser).comments.AddFromToken($$.node, $1, comment.ColonToken) - yylex.(*Parser).comments.AddFromToken($$.node, $3, comment.EndforeachToken) - yylex.(*Parser).comments.AddFromToken($$.node, $4, comment.SemiColonToken) + yylex.(*Parser).comments.AddFromToken($$, $1, comment.ColonToken) + yylex.(*Parser).comments.AddFromToken($$, $3, comment.EndforeachToken) + yylex.(*Parser).comments.AddFromToken($$, $4, comment.SemiColonToken) } ; @@ -1501,18 +1539,25 @@ case_separator: while_statement: statement - { $$ = altSyntaxNode{$1, false} } - | ':' inner_statement_list T_ENDWHILE ';' { - $$ = altSyntaxNode{stmt.NewStmtList($2), true} + $$ = stmt.NewWhile(nil, $1) // save position - yylex.(*Parser).positions.AddPosition($$.node, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) + } + | ':' inner_statement_list T_ENDWHILE ';' + { + stmtList := stmt.NewStmtList($2) + $$ = stmt.NewAltWhile(nil, stmtList) + + // save position + yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - yylex.(*Parser).comments.AddFromToken($$.node, $1, comment.ColonToken) - yylex.(*Parser).comments.AddFromToken($$.node, $3, comment.EndwhileToken) - yylex.(*Parser).comments.AddFromToken($$.node, $4, comment.SemiColonToken) + yylex.(*Parser).comments.AddFromToken($$, $1, comment.ColonToken) + yylex.(*Parser).comments.AddFromToken($$, $3, comment.EndwhileToken) + yylex.(*Parser).comments.AddFromToken($$, $4, comment.SemiColonToken) } ; @@ -4249,8 +4294,3 @@ type boolWithToken struct { value bool token *scanner.Token } - -type altSyntaxNode struct { - node node.Node - isAlt bool -} \ No newline at end of file