diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 4e710f5..7a2f3d7 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -1004,16 +1004,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 62 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 783 +#define YYLAST 721 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 169 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 106 /* YYNRULES -- Number of rules. */ -#define YYNRULES 261 +#define YYNRULES 262 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 473 +#define YYNSTATES 474 #define YYMAXUTOK 406 @@ -1082,27 +1082,27 @@ static const yytype_int16 yyrline[] = 390, 397, 400, 404, 418, 424, 433, 450, 454, 457, 466, 480, 483, 488, 502, 515, 522, 529, 540, 541, 545, 546, 550, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 568, 569, 570, 580, 586, 592, 600, 601, - 610, 619, 632, 639, 650, 651, 661, 670, 671, 675, - 687, 691, 695, 709, 710, 713, 714, 725, 726, 730, - 740, 753, 760, 764, 768, 775, 778, 784, 796, 797, - 801, 805, 806, 810, 815, 816, 820, 825, 829, 830, - 834, 835, 839, 840, 844, 848, 849, 850, 856, 857, - 861, 862, 863, 864, 865, 866, 873, 874, 878, 879, - 883, 884, 888, 898, 899, 900, 901, 902, 906, 907, - 908, 909, 910, 911, 912, 913, 914, 915, 916, 920, - 921, 925, 926, 927, 928, 929, 933, 934, 935, 936, - 937, 938, 939, 940, 941, 942, 943, 947, 948, 952, - 953, 954, 955, 961, 962, 963, 964, 968, 969, 973, - 974, 978, 979, 980, 981, 982, 983, 984, 988, 989, - 993, 997, 1001, 1002, 1003, 1004, 1005, 1006, 1010, 1014, - 1018, 1022, 1023, 1024, 1025, 1029, 1030, 1031, 1032, 1033, - 1037, 1041, 1042, 1046, 1047, 1051, 1055, 1059, 1071, 1072, - 1082, 1083, 1087, 1088, 1097, 1098, 1103, 1114, 1123, 1124, - 1129, 1130, 1135, 1136, 1141, 1142, 1147, 1148, 1157, 1158, - 1162, 1166, 1170, 1177, 1190, 1198, 1208, 1227, 1228, 1229, - 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1241, 1250, 1251, - 1256, 1257 + 563, 564, 565, 569, 570, 571, 581, 587, 593, 601, + 602, 611, 620, 633, 640, 651, 652, 662, 671, 672, + 676, 688, 692, 696, 710, 711, 714, 715, 726, 727, + 731, 741, 754, 761, 765, 769, 776, 779, 785, 797, + 798, 802, 806, 807, 811, 816, 817, 821, 826, 830, + 831, 835, 836, 840, 841, 845, 849, 850, 851, 857, + 858, 862, 863, 864, 865, 866, 867, 874, 875, 879, + 880, 884, 885, 889, 899, 900, 901, 902, 903, 907, + 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, + 921, 922, 926, 927, 928, 929, 930, 934, 935, 936, + 937, 938, 939, 940, 941, 942, 943, 944, 948, 949, + 953, 954, 955, 956, 962, 963, 964, 965, 969, 970, + 974, 975, 979, 980, 981, 982, 983, 984, 985, 989, + 990, 994, 998, 1002, 1003, 1004, 1005, 1006, 1007, 1011, + 1015, 1019, 1023, 1024, 1025, 1026, 1030, 1031, 1032, 1033, + 1034, 1038, 1042, 1043, 1047, 1048, 1052, 1056, 1060, 1072, + 1073, 1083, 1084, 1088, 1089, 1098, 1099, 1104, 1115, 1124, + 1125, 1130, 1131, 1136, 1137, 1142, 1143, 1148, 1149, 1158, + 1159, 1163, 1167, 1171, 1178, 1191, 1199, 1209, 1228, 1229, + 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1242, 1251, + 1252, 1257, 1258 }; #endif @@ -1203,12 +1203,12 @@ static const yytype_int16 yytoknum[] = }; #endif -#define YYPACT_NINF (-287) +#define YYPACT_NINF (-318) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-259) +#define YYTABLE_NINF (-260) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -1217,54 +1217,54 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 510, -2, 32, 56, 120, 32, -14, 36, 71, 130, - 32, 32, 3, 45, 200, 95, 95, 95, 257, 92, - -287, 163, -287, 163, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, 2, -287, 277, 134, -287, - 151, 228, -287, 196, 196, 32, 316, 32, 205, -287, - -66, 202, 202, 32, -287, 206, 166, -287, -287, -287, - -287, -287, -287, 505, -287, 244, -287, -287, 218, 2, - 20, -287, 23, -287, 336, 10, 337, 224, 32, 32, - 266, -287, 259, 182, 345, 347, 347, 311, 32, 32, - -287, 190, 200, -287, 191, 350, 346, 193, 197, -287, - -287, -287, 2, 251, 241, 2, 113, -287, -287, -287, - -287, -287, -287, -287, -287, 208, 207, -287, -287, -287, - -287, -287, -287, -287, -287, -287, 332, -62, 182, 247, - -287, 347, 372, -16, 233, -57, -287, 272, -287, 272, - -287, -287, -287, -287, -287, 377, -287, -287, 247, -287, - -287, 312, -287, -287, 20, -287, -287, 247, 312, 247, - 78, -287, -287, 10, -287, 380, 280, 387, 271, 150, - 229, 230, 234, 148, 279, 235, 325, -287, 226, -12, - 352, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, 305, -287, 51, - 236, -287, 247, 345, -287, 356, -287, -287, 243, 60, - -287, 315, 240, -287, 35, 113, 2, 242, -287, 110, - 113, -12, 361, -24, -287, 324, -287, 158, 81, -287, - 280, 8, 14, 360, 159, 247, 247, -34, 87, 253, - 325, 540, 247, -91, 250, -76, 247, 247, 325, -287, - 325, 77, 256, 12, 325, 325, 325, 325, 325, 325, - 325, 325, 325, 325, 325, 325, 325, 325, 325, 350, - 32, -287, 417, 10, -12, -287, 316, 10, -287, 377, - 16, 266, -287, 247, -287, 418, -287, -287, -287, -287, - 247, -287, -287, -287, -287, 247, 247, 347, -287, 260, - -287, -287, 263, -287, -287, -287, -287, 109, -287, 387, - -287, -287, 247, -287, -287, 258, -287, -287, -287, -287, - -287, -287, 338, 116, 65, 98, 247, 247, -287, 360, - 333, -40, -287, -287, -287, 318, 474, 559, 325, 268, - 226, -287, 334, 278, 559, 559, 559, 559, 424, 424, - 424, 424, -91, -91, -74, -74, -74, -59, 270, -287, - -287, 99, -287, 111, -287, 280, -287, 276, -287, 273, - -287, 30, -287, 373, -287, -287, -287, -12, -12, -287, - 438, 439, -287, 351, -287, -287, 133, -287, 247, 158, - 247, 247, -287, 74, 171, 282, -287, 325, 559, 226, - 285, 141, -287, -287, -287, -287, 287, 358, -287, -287, - -287, 382, 383, 386, 366, 16, 458, -287, -287, -287, - 341, -287, 301, 302, -287, -287, -70, 303, -12, 128, - -287, 247, -287, 540, 306, 143, -287, -287, 30, 16, - -287, -287, -287, 16, 363, 308, 247, -287, -287, -287, - -287, -287, -12, -287, -287, -287, -287, 657, 372, -21, - 309, 247, 145, 247, -287, 15, -12, -287, -287, -12, - 304, 310, -287 + 511, 7, 39, 125, 147, 39, -37, 71, 95, 103, + 39, 39, -19, 6, 225, 96, 96, 96, 237, 72, + -318, 150, -318, 150, -318, -318, -318, -318, -318, -318, + -318, -318, -318, -318, -318, 10, -318, 246, 135, -318, + 98, 190, -318, 179, 179, 39, 307, 39, 195, -318, + -63, 192, 192, 39, -318, 200, 158, -318, -318, -318, + -318, -318, -318, 506, -318, 245, -318, -318, 219, 10, + 20, -318, 26, -318, 338, 9, 341, 226, 39, 39, + 268, -318, 261, 189, 350, 351, 351, 313, 39, 39, + -318, 194, 225, -318, 196, 352, 349, 198, 199, -318, + -318, -318, 10, 264, 254, 10, 45, -318, -318, -318, + -318, -318, -318, -318, -318, 212, 211, -318, -318, -318, + -318, -318, -318, -318, -318, -318, 339, -62, 189, 248, + -318, 351, 378, 66, 240, -57, -318, 278, -318, 278, + -318, -318, -318, -318, -318, 385, -318, -318, 248, -318, + -318, 320, -318, -318, 20, -318, -318, 248, 320, 248, + 79, -318, -318, 9, -318, 394, 291, 396, 281, -122, + 242, 244, 247, 149, 280, 239, 326, -318, 227, 2, + 353, -318, -318, -318, -318, -318, -318, -318, -318, -318, + -318, -318, -318, -318, -318, -318, -318, 321, -318, -86, + 250, -318, 248, 350, -318, 371, -318, -318, 257, 30, + -318, 328, 255, -318, 36, 45, 10, 256, -318, -34, + 45, 2, 377, -16, -318, 333, -318, 310, 58, -318, + 291, 8, 14, 375, 161, 248, 248, 117, 133, 266, + 326, 541, 248, 44, 269, -55, 248, 248, 326, -318, + 326, -8, 267, -54, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 352, + 39, -318, 429, 9, 2, -318, 307, 9, -318, 385, + 13, 268, -318, 248, -318, 431, -318, -318, -318, -318, + 248, -318, -318, -318, -318, 248, 248, 351, -318, 276, + -318, -318, 282, -318, -318, -318, -318, -318, 90, -318, + 396, -318, -318, 248, -318, -318, 283, -318, -318, -318, + -318, -318, -318, 357, 172, 77, 134, 248, 248, -318, + 375, 344, 97, -318, -318, -318, 340, 475, 560, 326, + 288, 227, -318, 354, 295, 560, 560, 560, 560, 425, + 425, 425, 425, 44, 44, 55, 55, 55, -94, 290, + -318, -318, 108, -318, 142, -318, 291, -318, -3, -318, + 293, -318, 29, -318, 392, -318, -318, -318, 2, 2, + -318, 452, 455, -318, 363, -318, -318, 144, -318, 248, + 310, 248, 248, -318, 114, 140, 299, -318, 326, 560, + 227, 302, 151, -318, -318, -318, -318, 303, 374, -318, + -318, -318, 397, 398, 399, 379, 13, 472, -318, -318, + -318, 358, -318, 314, 316, -318, -318, 48, 322, 2, + 146, -318, 248, -318, 541, 323, 152, -318, -318, 29, + 13, -318, -318, -318, 13, 277, 325, 248, -318, -318, + -318, -318, -318, 2, -318, -318, -318, -318, 364, 378, + -22, 329, 248, 160, 248, -318, 15, 2, -318, -318, + 2, 330, 327, -318 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1272,70 +1272,70 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 29, 29, 29, 0, 259, + 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 29, 29, 29, 0, 260, 3, 20, 18, 20, 17, 8, 9, 7, 11, 16, - 13, 14, 12, 15, 10, 0, 238, 0, 228, 71, - 32, 0, 43, 49, 49, 0, 0, 0, 0, 227, - 0, 69, 69, 0, 41, 0, 240, 241, 28, 25, - 27, 26, 1, 239, 2, 0, 6, 5, 119, 0, - 80, 81, 111, 67, 0, 129, 0, 0, 0, 0, - 105, 36, 0, 75, 0, 0, 0, 0, 0, 0, - 42, 0, 0, 4, 0, 0, 99, 0, 0, 93, - 94, 92, 0, 96, 0, 0, 125, 229, 210, 213, - 215, 216, 211, 212, 217, 0, 128, 130, 205, 206, - 207, 214, 208, 209, 31, 30, 0, 0, 75, 0, - 70, 0, 0, 0, 0, 105, 77, 39, 37, 39, - 68, 65, 66, 243, 242, 0, 118, 98, 0, 88, - 87, 111, 84, 83, 85, 95, 91, 0, 111, 0, - 0, 89, 33, 0, 48, 0, 239, 0, 0, 201, - 0, 0, 0, 0, 0, 0, 0, 203, 0, 104, - 133, 140, 141, 142, 135, 137, 143, 136, 156, 144, - 145, 146, 147, 139, 134, 149, 150, 0, 260, 0, - 0, 73, 0, 0, 76, 0, 35, 40, 23, 0, - 21, 102, 100, 126, 237, 125, 0, 110, 112, 117, - 125, 121, 123, 120, 131, 0, 46, 0, 0, 50, - 239, 99, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 152, 0, 151, 0, 0, 0, 0, 0, 153, + 13, 14, 12, 15, 10, 0, 239, 0, 229, 72, + 32, 0, 43, 49, 49, 0, 0, 0, 0, 228, + 0, 70, 70, 0, 41, 0, 241, 242, 28, 25, + 27, 26, 1, 240, 2, 0, 6, 5, 120, 0, + 81, 82, 112, 68, 0, 130, 0, 0, 0, 0, + 106, 36, 0, 76, 0, 0, 0, 0, 0, 0, + 42, 0, 0, 4, 0, 0, 100, 0, 0, 94, + 95, 93, 0, 97, 0, 0, 126, 230, 211, 214, + 216, 217, 212, 213, 218, 0, 129, 131, 206, 207, + 208, 215, 209, 210, 31, 30, 0, 0, 76, 0, + 71, 0, 0, 0, 0, 106, 78, 39, 37, 39, + 69, 66, 67, 244, 243, 0, 119, 99, 0, 89, + 88, 112, 85, 84, 86, 96, 92, 0, 112, 0, + 0, 90, 33, 0, 48, 0, 240, 0, 0, 202, + 0, 0, 0, 0, 0, 0, 0, 204, 0, 105, + 134, 141, 142, 143, 136, 138, 144, 137, 157, 145, + 146, 147, 148, 140, 135, 150, 151, 0, 261, 0, + 0, 74, 0, 0, 77, 0, 35, 40, 23, 0, + 21, 103, 101, 127, 238, 126, 0, 111, 113, 118, + 126, 122, 124, 121, 132, 0, 46, 0, 0, 50, + 240, 100, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 153, 0, 152, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 74, 0, 0, 79, 78, 0, 0, 19, 0, - 0, 105, 101, 0, 235, 0, 236, 132, 82, 86, - 0, 116, 115, 114, 90, 0, 0, 0, 54, 0, - 57, 56, 0, 61, 55, 60, 53, 64, 45, 0, - 47, 188, 0, 202, 204, 0, 192, 193, 194, 195, - 196, 197, 0, 0, 0, 0, 0, 0, 175, 0, - 0, 0, 148, 138, 167, 168, 0, 163, 0, 0, - 0, 154, 0, 166, 165, 181, 182, 183, 184, 185, - 186, 187, 158, 157, 160, 159, 161, 162, 0, 34, - 261, 0, 38, 0, 22, 239, 103, 218, 220, 0, - 222, 233, 221, 107, 127, 234, 113, 124, 122, 44, - 0, 0, 62, 0, 52, 51, 0, 179, 0, 0, - 0, 0, 173, 0, 0, 0, 198, 0, 164, 0, - 0, 0, 155, 199, 72, 24, 0, 0, 255, 247, - 253, 251, 254, 249, 0, 0, 0, 232, 226, 230, - 0, 97, 0, 0, 63, 189, 0, 0, 177, 0, - 176, 0, 180, 200, 0, 0, 171, 169, 233, 0, - 250, 252, 248, 0, 219, 234, 0, 58, 59, 190, - 191, 174, 178, 172, 170, 223, 244, 256, 0, 109, - 0, 0, 0, 0, 106, 0, 257, 245, 231, 108, - 201, 0, 246 + 0, 75, 0, 0, 80, 79, 0, 0, 19, 0, + 0, 106, 102, 0, 236, 0, 237, 133, 83, 87, + 0, 117, 116, 115, 91, 0, 0, 0, 54, 0, + 57, 56, 0, 62, 61, 55, 60, 53, 65, 45, + 0, 47, 189, 0, 203, 205, 0, 193, 194, 195, + 196, 197, 198, 0, 0, 0, 0, 0, 0, 176, + 0, 0, 0, 149, 139, 168, 169, 0, 164, 0, + 0, 0, 155, 0, 167, 166, 182, 183, 184, 185, + 186, 187, 188, 159, 158, 161, 160, 162, 163, 0, + 34, 262, 0, 38, 0, 22, 240, 104, 219, 221, + 0, 223, 234, 222, 108, 128, 235, 114, 125, 123, + 44, 0, 0, 63, 0, 52, 51, 0, 180, 0, + 0, 0, 0, 174, 0, 0, 0, 199, 0, 165, + 0, 0, 0, 156, 200, 73, 24, 0, 0, 256, + 248, 254, 252, 255, 250, 0, 0, 0, 233, 227, + 231, 0, 98, 0, 0, 64, 190, 0, 0, 178, + 0, 177, 0, 181, 201, 0, 0, 172, 170, 234, + 0, 251, 253, 249, 0, 220, 235, 0, 58, 59, + 191, 192, 175, 179, 173, 171, 224, 245, 257, 0, + 110, 0, 0, 0, 0, 107, 0, 258, 246, 232, + 109, 202, 0, 247 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -287, -287, -287, 414, -287, 455, -287, 210, -287, 96, - -287, -287, -287, -287, 203, -78, 348, -287, -287, -287, - 440, -287, 176, 97, -287, -287, 442, -287, -287, -287, - 362, -287, -287, 288, -156, -69, -287, 6, -64, -50, - -287, -287, -60, 261, -287, -287, -287, -122, -287, -287, - 54, -287, 211, -287, -287, 29, -235, -287, -97, 212, - -129, -124, -287, -287, -287, -287, -287, -287, 265, -287, - -287, -287, -287, -287, -287, -287, -287, -287, 49, -71, - -84, -287, -287, -86, -287, -287, -287, -286, 76, -287, - -287, -287, 1, -287, 80, 307, -287, -287, -287, -287, - 427, -287, -287, -287, -287, 58 + -318, -318, -318, 422, -318, 470, -318, 217, -318, 166, + -318, -318, -318, -318, 241, -78, 376, -318, -318, -318, + 458, -318, 193, 126, -318, -318, 467, -318, -318, -318, + 395, -318, -318, 317, -156, -48, -318, 88, -64, -49, + -318, -318, -65, 294, -318, -318, -318, -116, -318, -318, + 35, -318, 232, -318, -318, 61, -238, -318, -173, 251, + -129, -124, -318, -318, -318, -318, -318, -318, 292, -318, + -318, -318, -318, -318, -318, -318, -318, -318, 64, -66, + -84, -318, -318, -88, -318, -318, -318, -317, 87, -318, + -318, -318, 1, -318, 92, 331, -318, -318, -318, -318, + 443, -318, -318, -318, -318, 80 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -1343,15 +1343,15 @@ static const yytype_int16 yydefgoto[] = { -1, 18, 19, 20, 21, 66, 209, 210, 22, 59, 23, 125, 24, 25, 82, 137, 206, 26, 27, 28, - 78, 228, 229, 307, 384, 29, 88, 30, 31, 32, + 78, 228, 229, 308, 385, 29, 88, 30, 31, 32, 133, 33, 135, 136, 34, 151, 152, 153, 71, 102, - 103, 156, 72, 148, 211, 281, 282, 130, 421, 464, + 103, 156, 72, 148, 211, 281, 282, 130, 422, 465, 106, 217, 218, 293, 96, 161, 212, 115, 116, 213, 214, 180, 181, 182, 183, 184, 185, 186, 238, 187, - 188, 189, 190, 191, 322, 192, 193, 194, 195, 196, - 118, 119, 120, 121, 122, 123, 366, 367, 368, 369, - 370, 48, 371, 417, 418, 419, 287, 35, 36, 56, - 57, 372, 414, 467, 64, 199 + 188, 189, 190, 191, 323, 192, 193, 194, 195, 196, + 118, 119, 120, 121, 122, 123, 367, 368, 369, 370, + 371, 48, 372, 418, 419, 420, 287, 35, 36, 56, + 57, 373, 415, 468, 64, 199 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1359,168 +1359,156 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 179, 138, 138, 39, 117, 98, 42, 331, 139, 146, - 226, 49, 50, 204, 108, 109, 110, 313, 470, 38, - 147, 129, 105, 85, 37, 463, 296, 165, 219, 99, - 221, 223, 99, 284, 246, 38, 158, 68, 284, 254, - 246, 70, 154, 200, 237, 154, 80, 138, 83, 245, - 241, 247, 243, 197, 90, 68, 254, 247, 166, 40, - 100, 43, 86, 100, 53, 265, 266, 267, 268, 201, - 269, 254, 236, 274, 310, 97, 246, 386, 51, 127, - 128, 169, 108, 109, 110, 268, 246, 269, 333, 141, - 142, 44, 224, 247, 449, 104, 101, 143, 246, 101, - 54, 167, 269, 247, 216, 401, 323, 324, 52, 111, - 203, 341, 60, 61, 244, 247, 241, 334, 335, 170, - 171, 172, 396, 41, 336, 45, 337, 283, 342, 444, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 246, 283, 289, 112, 113, - 416, 169, 108, 109, 110, 285, 154, 457, 173, 373, - 46, 219, 247, 159, 435, 69, 377, 378, 390, 315, - 314, 177, 311, 338, 326, 246, 361, 111, 114, 365, - 363, 160, 298, 358, 246, 391, 430, 222, 299, 170, - 171, 172, 247, 327, 174, 291, 300, 393, 394, 328, - 339, 247, 117, 55, 327, 215, 117, 175, 382, 406, - 392, 459, 220, 138, 398, 271, 112, 113, 272, 379, - 246, 292, 301, 47, 278, 383, 246, 279, 173, 169, - 108, 109, 110, 176, 177, 58, 389, 247, 246, 302, - 451, 178, 303, 247, 288, 308, 114, 111, 309, 294, - 169, 108, 109, 110, 236, 247, 304, 62, 63, 426, - 305, 428, 429, 404, 174, 395, 163, 170, 171, 172, - 65, 359, 306, 433, 431, 405, 400, 175, 163, 68, - 73, 246, 169, 108, 109, 110, 112, 113, 170, 171, - 172, 316, 317, 318, 319, 320, 321, 425, 247, 74, - 283, 407, 452, 176, 177, 437, 173, 454, 283, 468, - 283, 178, 272, 231, 75, 232, 114, 76, 77, 81, - 239, 171, 172, 84, 87, 111, 91, 173, 169, 108, - 109, 110, 466, 92, 469, 434, 94, 95, 408, 107, - 126, 124, 174, 409, 129, 132, 111, 131, 134, 410, - 411, 108, 140, 69, 145, 175, 110, 149, 147, 173, - 155, 150, 157, 174, 112, 113, 412, 171, 172, 248, - -256, 413, 162, 164, 163, 198, 175, 202, 111, 205, - 208, 176, 177, 225, 104, 112, 113, 14, 407, 178, - 227, 230, 233, 234, 114, 240, 242, 235, 270, 273, - 276, 249, 176, 177, 280, 173, 277, 283, 175, 290, - 178, 295, 297, 68, 332, 114, 329, 112, 113, 340, - 360, 375, 387, 380, 111, 408, 381, 388, 246, 338, - 409, 399, 403, 402, 176, 177, 410, 411, 420, 269, - 415, 240, 178, -224, 422, 423, 432, 114, 250, 436, - 424, 438, 439, 412, 175, 440, 441, -256, 413, 442, - 443, 445, 446, 112, 113, 447, 448, 450, 251, 232, - 453, 458, 465, 249, 472, 252, 253, 93, 67, 362, - 176, 177, 254, 255, 79, 385, 427, 207, 178, 364, - 168, 275, 312, 114, 89, 374, 256, 257, 258, 259, - 260, 376, 325, 261, 262, -258, 263, 264, 265, 266, - 267, 268, 1, 269, 471, 456, 462, 1, 455, 144, - 2, 286, 0, 249, 0, 2, 0, 3, 0, 0, - -225, 4, 3, 0, 0, 0, 4, 5, 0, 0, - 6, 7, 5, 0, 0, 6, 7, 0, 253, 0, - 0, 0, 8, 9, 254, 0, 0, 8, 9, 0, - 0, 0, 0, 10, 0, 0, 0, 0, 10, 0, - 250, -259, -259, 0, 0, -259, -259, 0, 263, 264, - 265, 266, 267, 268, 397, 269, 0, 11, 0, 249, - 330, 12, 11, 0, 0, 0, 12, 0, 253, 0, - 0, 0, 0, 0, 254, 255, 13, 0, 249, 0, - 0, 13, 14, 0, 0, 0, 0, 14, 256, 257, - 258, 259, 260, 0, 0, 261, 262, 0, 263, 264, - 265, 266, 267, 268, 0, 269, 250, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 16, 17, 0, - 0, 15, 16, 17, 0, -259, 330, 0, 0, 0, - 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, - 254, 255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 407, 253, 256, 257, 258, 259, 260, 254, - -259, 261, 262, 0, 263, 264, 265, 266, 267, 268, - 0, 269, 0, -259, -259, -259, 259, 260, 0, 0, - 261, 262, 0, 263, 264, 265, 266, 267, 268, 408, - 269, 0, 0, 0, 409, 0, 0, 0, 0, 0, - 410, 411, 0, 0, 460, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 412, 0, 0, - 0, 0, 413, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 461 + 179, 138, 138, 39, 332, 98, 42, 146, 139, 117, + 226, 49, 50, 108, 109, 110, 38, 314, 471, 204, + 147, 129, 408, 105, 464, 53, 85, 165, 219, 99, + 221, 223, 284, 37, 296, 99, 254, 154, 43, 284, + 154, 231, 38, 232, 237, 342, 80, 138, 83, 245, + 241, 291, 243, 197, 90, 246, 51, 158, 166, 409, + 100, 54, 343, 68, 410, 86, 100, 269, 44, 201, + 411, 412, 247, 274, 311, 387, 246, 292, 271, 127, + 128, 272, 169, 108, 109, 110, 52, 413, 339, 141, + 142, -257, 414, 247, 246, 159, 101, 224, 104, 445, + 362, 167, 101, 402, 364, 216, 324, 325, 111, 334, + 203, 247, 246, 160, 244, 340, 241, 335, 336, 68, + 170, 171, 172, 70, 337, 200, 338, 458, 40, 247, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 283, 246, 112, 113, 417, + 41, 154, 169, 108, 109, 110, 285, 97, 246, 173, + 45, 219, 436, 247, -225, 374, 378, 379, 289, 316, + 315, 177, 312, 69, 254, 247, 366, 114, 111, 143, + 391, 359, 60, 61, 46, 254, 215, 246, 222, 383, + 170, 171, 172, 220, 278, 174, 47, 279, 394, 395, + 265, 266, 267, 268, 247, 269, 384, 117, 175, 460, + 407, 117, 450, 138, 268, 399, 269, 112, 113, 380, + 327, 392, 309, 236, 246, 310, 431, 246, 55, 173, + 169, 108, 109, 110, 176, 177, 58, 62, 63, 328, + 328, 247, 178, 432, 247, 329, 393, 114, 111, 73, + 246, 169, 108, 109, 110, 236, 246, 65, 452, 397, + 427, 75, 429, 430, 283, 174, 396, 247, 170, 171, + 172, 360, 405, 247, 434, 163, 288, 401, 175, 76, + 68, 294, 246, 169, 108, 109, 110, 112, 113, 170, + 171, 172, 390, 317, 318, 319, 320, 321, 322, 247, + 74, 77, 408, 453, 176, 177, 406, 173, 426, 163, + 81, 283, 178, 84, 87, 438, 455, 114, 283, 283, + 91, 239, 171, 172, 469, 92, 111, 272, 173, 169, + 108, 109, 110, 467, 298, 470, 435, 94, 95, 409, + 299, 107, 126, 174, 410, 124, 129, 111, 300, 131, + 411, 412, 132, 134, 140, 108, 175, 69, 110, 145, + 173, 147, 149, 150, 174, 112, 113, 413, 171, 172, + 248, -257, 414, 155, 301, 157, 162, 175, 163, 111, + 164, 198, 176, 177, 202, 205, 112, 113, 208, 408, + 178, 302, 104, 303, 304, 114, 240, 225, 14, 227, + 242, 230, 249, 176, 177, 233, 173, 234, 305, 175, + 235, 178, 306, 273, 270, 276, 114, 280, 112, 113, + 277, 297, 283, 290, 307, 111, 409, 295, 68, 330, + 341, 410, 361, 333, 376, 176, 177, 411, 412, 381, + 339, 461, 240, 178, -226, 382, 389, 388, 114, 250, + 246, 400, 404, 403, 413, 175, 269, 421, 423, 414, + 416, 424, 425, 433, 112, 113, 437, 439, 440, 251, + 441, 442, 443, 444, 249, 446, 252, 253, 448, 447, + 449, 176, 177, 254, 255, 93, 451, 454, 459, 178, + 462, 473, 466, 67, 114, 232, 365, 256, 257, 258, + 259, 260, 79, 386, 261, 262, -259, 263, 264, 265, + 266, 267, 268, 1, 269, 207, 428, 363, 1, 89, + 275, 2, 377, 168, 249, 313, 2, 457, 3, 326, + 472, 456, 4, 3, 375, 144, 0, 4, 5, 463, + 0, 6, 7, 5, 0, 286, 6, 7, 0, 253, + 0, 0, 0, 8, 9, 254, 0, 0, 8, 9, + 0, 0, 0, 0, 10, 0, 0, 0, 0, 10, + 0, 250, -260, -260, 0, 0, -260, -260, 0, 263, + 264, 265, 266, 267, 268, 398, 269, 0, 11, 0, + 249, 331, 12, 11, 0, 0, 0, 12, 0, 253, + 0, 0, 0, 0, 0, 254, 255, 13, 0, 249, + 0, 0, 13, 14, 0, 0, 0, 0, 14, 256, + 257, 258, 259, 260, 0, 0, 261, 262, 0, 263, + 264, 265, 266, 267, 268, 0, 269, 250, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 16, 17, + 0, 0, 15, 16, 17, 0, -260, 331, 0, 0, + 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, + 0, 254, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 253, 256, 257, 258, 259, 260, + 254, -260, 261, 262, 0, 263, 264, 265, 266, 267, + 268, 0, 269, 0, -260, -260, -260, 259, 260, 0, + 0, 261, 262, 0, 263, 264, 265, 266, 267, 268, + 0, 269 }; static const yytype_int16 yycheck[] = { - 129, 85, 86, 2, 75, 69, 5, 242, 86, 95, - 166, 10, 11, 135, 4, 5, 6, 3, 3, 3, - 12, 78, 72, 89, 26, 46, 50, 89, 157, 9, - 159, 160, 9, 3, 110, 3, 105, 53, 3, 130, - 110, 35, 102, 59, 173, 105, 45, 131, 47, 178, - 174, 127, 176, 131, 53, 53, 130, 127, 120, 3, - 40, 75, 128, 40, 19, 156, 157, 158, 159, 133, - 161, 130, 106, 202, 230, 69, 110, 312, 75, 78, - 79, 3, 4, 5, 6, 159, 110, 161, 164, 88, - 89, 105, 163, 127, 164, 72, 76, 91, 110, 76, - 55, 163, 161, 127, 154, 340, 235, 236, 105, 99, - 167, 99, 16, 17, 178, 127, 240, 246, 247, 41, - 42, 43, 162, 3, 248, 89, 250, 167, 116, 415, + 129, 85, 86, 2, 242, 69, 5, 95, 86, 75, + 166, 10, 11, 4, 5, 6, 3, 3, 3, 135, + 12, 78, 25, 72, 46, 19, 89, 89, 157, 9, + 159, 160, 3, 26, 50, 9, 130, 102, 75, 3, + 105, 163, 3, 165, 173, 99, 45, 131, 47, 178, + 174, 85, 176, 131, 53, 110, 75, 105, 120, 62, + 40, 55, 116, 53, 67, 128, 40, 161, 105, 133, + 73, 74, 127, 202, 230, 313, 110, 111, 164, 78, + 79, 167, 3, 4, 5, 6, 105, 90, 96, 88, + 89, 94, 95, 127, 110, 50, 76, 163, 72, 416, + 273, 163, 76, 341, 277, 154, 235, 236, 99, 164, + 167, 127, 110, 68, 178, 123, 240, 246, 247, 53, + 41, 42, 43, 35, 248, 59, 250, 444, 3, 127, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 110, 167, 216, 138, 139, - 120, 3, 4, 5, 6, 120, 216, 443, 80, 281, - 89, 290, 127, 50, 399, 163, 295, 296, 103, 233, - 156, 156, 164, 96, 87, 110, 273, 99, 168, 163, - 277, 68, 24, 269, 110, 87, 112, 109, 30, 41, - 42, 43, 127, 106, 116, 85, 38, 326, 327, 112, - 123, 127, 273, 3, 106, 151, 277, 129, 99, 365, - 112, 446, 158, 297, 338, 164, 138, 139, 167, 297, - 110, 111, 64, 93, 164, 116, 110, 167, 80, 3, - 4, 5, 6, 155, 156, 140, 120, 127, 110, 81, - 112, 163, 84, 127, 215, 164, 168, 99, 167, 220, - 3, 4, 5, 6, 106, 127, 98, 0, 166, 388, - 102, 390, 391, 164, 116, 329, 167, 41, 42, 43, - 107, 270, 114, 397, 103, 164, 340, 129, 167, 53, - 3, 110, 3, 4, 5, 6, 138, 139, 41, 42, - 43, 132, 133, 134, 135, 136, 137, 164, 127, 165, - 167, 25, 431, 155, 156, 164, 80, 164, 167, 164, - 167, 163, 167, 163, 163, 165, 168, 89, 122, 3, - 41, 42, 43, 118, 122, 99, 120, 80, 3, 4, - 5, 6, 461, 167, 463, 399, 92, 119, 62, 3, - 116, 4, 116, 67, 78, 163, 99, 88, 3, 73, - 74, 4, 41, 163, 163, 129, 6, 164, 12, 80, - 109, 164, 121, 116, 138, 139, 90, 42, 43, 17, - 94, 95, 164, 41, 167, 3, 129, 144, 99, 107, - 3, 155, 156, 3, 72, 138, 139, 107, 25, 163, - 3, 120, 163, 163, 168, 116, 161, 163, 93, 163, - 44, 49, 155, 156, 89, 80, 163, 167, 129, 167, - 163, 50, 88, 53, 164, 168, 163, 138, 139, 163, - 3, 3, 164, 163, 99, 62, 163, 89, 110, 96, - 67, 163, 162, 99, 155, 156, 73, 74, 65, 161, - 167, 116, 163, 167, 6, 6, 164, 168, 96, 164, - 99, 164, 94, 90, 129, 73, 73, 94, 95, 73, - 94, 3, 121, 138, 139, 164, 164, 164, 116, 165, - 164, 163, 163, 49, 164, 123, 124, 63, 23, 276, - 155, 156, 130, 131, 44, 309, 389, 139, 163, 279, - 128, 203, 231, 168, 52, 283, 144, 145, 146, 147, - 148, 290, 237, 151, 152, 0, 154, 155, 156, 157, - 158, 159, 7, 161, 465, 439, 458, 7, 438, 92, - 15, 214, -1, 49, -1, 15, -1, 22, -1, -1, - 167, 26, 22, -1, -1, -1, 26, 32, -1, -1, - 35, 36, 32, -1, -1, 35, 36, -1, 124, -1, - -1, -1, 47, 48, 130, -1, -1, 47, 48, -1, - -1, -1, -1, 58, -1, -1, -1, -1, 58, -1, - 96, 147, 148, -1, -1, 151, 152, -1, 154, 155, - 156, 157, 158, 159, 110, 161, -1, 82, -1, 49, - 116, 86, 82, -1, -1, -1, 86, -1, 124, -1, - -1, -1, -1, -1, 130, 131, 101, -1, 49, -1, - -1, 101, 107, -1, -1, -1, -1, 107, 144, 145, - 146, 147, 148, -1, -1, 151, 152, -1, 154, 155, - 156, 157, 158, 159, -1, 161, 96, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 141, 142, 143, -1, - -1, 141, 142, 143, -1, 96, 116, -1, -1, -1, - -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, - 130, 131, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 25, 124, 144, 145, 146, 147, 148, 130, - 131, 151, 152, -1, 154, 155, 156, 157, 158, 159, - -1, 161, -1, 144, 145, 146, 147, 148, -1, -1, - 151, 152, -1, 154, 155, 156, 157, 158, 159, 62, - 161, -1, -1, -1, 67, -1, -1, -1, -1, -1, - 73, 74, -1, -1, 77, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, - -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 126 + 264, 265, 266, 267, 268, 167, 110, 138, 139, 120, + 3, 216, 3, 4, 5, 6, 120, 69, 110, 80, + 89, 290, 400, 127, 167, 281, 295, 296, 216, 233, + 156, 156, 164, 163, 130, 127, 163, 168, 99, 91, + 103, 269, 16, 17, 89, 130, 151, 110, 109, 99, + 41, 42, 43, 158, 164, 116, 93, 167, 327, 328, + 156, 157, 158, 159, 127, 161, 116, 273, 129, 447, + 366, 277, 164, 297, 159, 339, 161, 138, 139, 297, + 87, 87, 164, 106, 110, 167, 112, 110, 3, 80, + 3, 4, 5, 6, 155, 156, 140, 0, 166, 106, + 106, 127, 163, 103, 127, 112, 112, 168, 99, 3, + 110, 3, 4, 5, 6, 106, 110, 107, 112, 162, + 389, 163, 391, 392, 167, 116, 330, 127, 41, 42, + 43, 270, 164, 127, 398, 167, 215, 341, 129, 89, + 53, 220, 110, 3, 4, 5, 6, 138, 139, 41, + 42, 43, 120, 132, 133, 134, 135, 136, 137, 127, + 165, 122, 25, 432, 155, 156, 164, 80, 164, 167, + 3, 167, 163, 118, 122, 164, 164, 168, 167, 167, + 120, 41, 42, 43, 164, 167, 99, 167, 80, 3, + 4, 5, 6, 462, 24, 464, 400, 92, 119, 62, + 30, 3, 116, 116, 67, 4, 78, 99, 38, 88, + 73, 74, 163, 3, 41, 4, 129, 163, 6, 163, + 80, 12, 164, 164, 116, 138, 139, 90, 42, 43, + 17, 94, 95, 109, 64, 121, 164, 129, 167, 99, + 41, 3, 155, 156, 144, 107, 138, 139, 3, 25, + 163, 81, 72, 83, 84, 168, 116, 3, 107, 3, + 161, 120, 49, 155, 156, 163, 80, 163, 98, 129, + 163, 163, 102, 163, 93, 44, 168, 89, 138, 139, + 163, 88, 167, 167, 114, 99, 62, 50, 53, 163, + 163, 67, 3, 164, 3, 155, 156, 73, 74, 163, + 96, 77, 116, 163, 167, 163, 89, 164, 168, 96, + 110, 163, 162, 99, 90, 129, 161, 65, 6, 95, + 167, 6, 99, 164, 138, 139, 164, 164, 94, 116, + 73, 73, 73, 94, 49, 3, 123, 124, 164, 121, + 164, 155, 156, 130, 131, 63, 164, 164, 163, 163, + 126, 164, 163, 23, 168, 165, 279, 144, 145, 146, + 147, 148, 44, 310, 151, 152, 0, 154, 155, 156, + 157, 158, 159, 7, 161, 139, 390, 276, 7, 52, + 203, 15, 290, 128, 49, 231, 15, 440, 22, 237, + 466, 439, 26, 22, 283, 92, -1, 26, 32, 459, + -1, 35, 36, 32, -1, 214, 35, 36, -1, 124, + -1, -1, -1, 47, 48, 130, -1, -1, 47, 48, + -1, -1, -1, -1, 58, -1, -1, -1, -1, 58, + -1, 96, 147, 148, -1, -1, 151, 152, -1, 154, + 155, 156, 157, 158, 159, 110, 161, -1, 82, -1, + 49, 116, 86, 82, -1, -1, -1, 86, -1, 124, + -1, -1, -1, -1, -1, 130, 131, 101, -1, 49, + -1, -1, 101, 107, -1, -1, -1, -1, 107, 144, + 145, 146, 147, 148, -1, -1, 151, 152, -1, 154, + 155, 156, 157, 158, 159, -1, 161, 96, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 141, 142, 143, + -1, -1, 141, 142, 143, -1, 96, 116, -1, -1, + -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, + -1, 130, 131, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 124, 144, 145, 146, 147, 148, + 130, 131, 151, 152, -1, 154, 155, 156, 157, 158, + 159, -1, 161, -1, 144, 145, 146, 147, 148, -1, + -1, 151, 152, -1, 154, 155, 156, 157, 158, 159, + -1, 161 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1557,24 +1545,24 @@ static const yytype_int16 yystos[] = 93, 164, 167, 163, 229, 202, 44, 163, 164, 167, 89, 214, 215, 167, 3, 120, 264, 265, 224, 204, 167, 85, 111, 222, 224, 50, 50, 88, 24, 30, - 38, 64, 81, 84, 98, 102, 114, 192, 164, 167, - 203, 164, 212, 3, 156, 207, 132, 133, 134, 135, - 136, 137, 243, 229, 229, 237, 87, 106, 112, 163, - 116, 225, 164, 164, 229, 229, 230, 230, 96, 123, - 163, 99, 116, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 252, 261, - 3, 227, 183, 227, 176, 163, 255, 256, 257, 258, - 259, 261, 270, 216, 228, 3, 221, 229, 229, 184, - 163, 163, 99, 116, 193, 191, 225, 164, 89, 120, - 103, 87, 112, 229, 229, 207, 162, 110, 230, 163, - 207, 225, 99, 162, 164, 164, 203, 25, 62, 67, - 73, 74, 90, 95, 271, 167, 120, 262, 263, 264, - 65, 217, 6, 6, 99, 164, 229, 192, 229, 229, - 112, 103, 164, 230, 207, 225, 164, 164, 164, 94, - 73, 73, 73, 94, 256, 3, 121, 164, 164, 164, - 164, 112, 229, 164, 164, 263, 257, 256, 163, 225, - 77, 126, 274, 46, 218, 163, 229, 272, 164, 229, - 3, 247, 164 + 38, 64, 81, 83, 84, 98, 102, 114, 192, 164, + 167, 203, 164, 212, 3, 156, 207, 132, 133, 134, + 135, 136, 137, 243, 229, 229, 237, 87, 106, 112, + 163, 116, 225, 164, 164, 229, 229, 230, 230, 96, + 123, 163, 99, 116, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 252, + 261, 3, 227, 183, 227, 176, 163, 255, 256, 257, + 258, 259, 261, 270, 216, 228, 3, 221, 229, 229, + 184, 163, 163, 99, 116, 193, 191, 225, 164, 89, + 120, 103, 87, 112, 229, 229, 207, 162, 110, 230, + 163, 207, 225, 99, 162, 164, 164, 203, 25, 62, + 67, 73, 74, 90, 95, 271, 167, 120, 262, 263, + 264, 65, 217, 6, 6, 99, 164, 229, 192, 229, + 229, 112, 103, 164, 230, 207, 225, 164, 164, 164, + 94, 73, 73, 73, 94, 256, 3, 121, 164, 164, + 164, 164, 112, 229, 164, 164, 263, 257, 256, 163, + 225, 77, 126, 274, 46, 218, 163, 229, 272, 164, + 229, 3, 247, 164 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1586,27 +1574,27 @@ static const yytype_int16 yyr1[] = 179, 180, 181, 181, 182, 182, 183, 184, 185, 185, 186, 187, 187, 187, 188, 188, 188, 188, 189, 189, 190, 190, 191, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 193, 193, 193, 194, 194, 194, 195, 195, - 196, 197, 198, 198, 199, 199, 200, 201, 201, 202, - 203, 203, 203, 204, 204, 205, 205, 206, 206, 207, - 207, 208, 209, 209, 209, 210, 210, 211, 212, 212, - 213, 214, 214, 215, 216, 216, 217, 217, 218, 218, - 219, 219, 220, 220, 221, 222, 222, 222, 223, 223, - 224, 224, 224, 224, 224, 224, 225, 225, 226, 226, - 227, 227, 228, 229, 229, 229, 229, 229, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, - 231, 232, 232, 232, 232, 232, 233, 233, 233, 233, - 233, 233, 233, 233, 233, 233, 233, 234, 234, 235, - 235, 235, 235, 236, 236, 236, 236, 237, 237, 238, - 238, 239, 239, 239, 239, 239, 239, 239, 240, 240, - 241, 242, 243, 243, 243, 243, 243, 243, 244, 245, - 246, 247, 247, 247, 247, 248, 248, 248, 248, 248, - 249, 250, 250, 251, 251, 252, 253, 254, 255, 255, - 256, 256, 257, 257, 258, 258, 259, 260, 261, 261, - 262, 262, 263, 263, 264, 264, 265, 265, 266, 266, - 267, 268, 268, 269, 270, 270, 270, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 272, 273, 273, - 274, 274 + 192, 192, 192, 193, 193, 193, 194, 194, 194, 195, + 195, 196, 197, 198, 198, 199, 199, 200, 201, 201, + 202, 203, 203, 203, 204, 204, 205, 205, 206, 206, + 207, 207, 208, 209, 209, 209, 210, 210, 211, 212, + 212, 213, 214, 214, 215, 216, 216, 217, 217, 218, + 218, 219, 219, 220, 220, 221, 222, 222, 222, 223, + 223, 224, 224, 224, 224, 224, 224, 225, 225, 226, + 226, 227, 227, 228, 229, 229, 229, 229, 229, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 231, 231, 232, 232, 232, 232, 232, 233, 233, 233, + 233, 233, 233, 233, 233, 233, 233, 233, 234, 234, + 235, 235, 235, 235, 236, 236, 236, 236, 237, 237, + 238, 238, 239, 239, 239, 239, 239, 239, 239, 240, + 240, 241, 242, 243, 243, 243, 243, 243, 243, 244, + 245, 246, 247, 247, 247, 247, 248, 248, 248, 248, + 248, 249, 250, 250, 251, 251, 252, 253, 254, 255, + 255, 256, 256, 257, 257, 258, 258, 259, 260, 261, + 261, 262, 262, 263, 263, 264, 264, 265, 265, 266, + 266, 267, 268, 268, 269, 270, 270, 270, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 272, 273, + 273, 274, 274 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1618,27 +1606,27 @@ static const yytype_int8 yyr2[] = 4, 1, 2, 5, 7, 5, 1, 1, 3, 0, 5, 2, 3, 2, 8, 7, 6, 7, 3, 0, 1, 3, 3, 1, 1, 1, 1, 1, 4, 4, - 1, 1, 1, 2, 0, 4, 4, 3, 2, 0, - 4, 2, 8, 5, 3, 0, 5, 1, 3, 3, - 2, 2, 6, 1, 1, 1, 3, 3, 3, 3, - 5, 2, 1, 1, 1, 1, 0, 7, 1, 0, - 1, 1, 0, 2, 2, 0, 4, 0, 2, 0, - 3, 0, 1, 3, 2, 1, 1, 0, 2, 0, - 2, 2, 4, 2, 4, 0, 1, 3, 1, 0, - 1, 3, 2, 1, 1, 1, 1, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, - 1, 2, 2, 2, 3, 4, 1, 3, 3, 3, - 3, 3, 3, 3, 4, 3, 3, 3, 3, 5, - 6, 5, 6, 4, 6, 3, 5, 4, 5, 4, - 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, - 6, 6, 1, 1, 1, 1, 1, 1, 4, 4, - 5, 1, 3, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 0, 4, 4, 3, 2, + 0, 4, 2, 8, 5, 3, 0, 5, 1, 3, + 3, 2, 2, 6, 1, 1, 1, 3, 3, 3, + 3, 5, 2, 1, 1, 1, 1, 0, 7, 1, + 0, 1, 1, 0, 2, 2, 0, 4, 0, 2, + 0, 3, 0, 1, 3, 2, 1, 1, 0, 2, + 0, 2, 2, 4, 2, 4, 0, 1, 3, 1, + 0, 1, 3, 2, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 1, 1, 1, 4, 1, 3, 2, 1, 1, 3, - 1, 5, 1, 0, 2, 1, 1, 0, 1, 0, - 2, 1, 3, 3, 4, 6, 8, 1, 2, 1, - 2, 1, 2, 1, 1, 1, 0, 1, 1, 0, - 1, 3 + 1, 1, 2, 2, 2, 3, 4, 1, 3, 3, + 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, + 5, 6, 5, 6, 4, 6, 3, 5, 4, 5, + 4, 5, 3, 3, 3, 3, 3, 3, 3, 3, + 5, 6, 6, 1, 1, 1, 1, 1, 1, 4, + 4, 5, 1, 3, 1, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 1, 1, 1, 4, 1, 3, 2, 1, 1, + 3, 1, 5, 1, 0, 2, 1, 1, 0, 1, + 0, 2, 1, 3, 3, 4, 6, 8, 1, 2, + 1, 2, 1, 2, 1, 1, 1, 0, 1, 1, + 0, 1, 3 }; @@ -2192,25 +2180,25 @@ yydestruct (const char *yymsg, case 3: /* IDENTIFIER */ #line 149 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2196 "bison_parser.cpp" +#line 2184 "bison_parser.cpp" break; case 4: /* STRING */ #line 149 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2202 "bison_parser.cpp" +#line 2190 "bison_parser.cpp" break; case 5: /* FLOATVAL */ #line 147 "bison_parser.y" { } -#line 2208 "bison_parser.cpp" +#line 2196 "bison_parser.cpp" break; case 6: /* INTVAL */ #line 147 "bison_parser.y" { } -#line 2214 "bison_parser.cpp" +#line 2202 "bison_parser.cpp" break; case 171: /* statement_list */ @@ -2223,19 +2211,19 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).stmt_vec)); } -#line 2227 "bison_parser.cpp" +#line 2215 "bison_parser.cpp" break; case 172: /* statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2233 "bison_parser.cpp" +#line 2221 "bison_parser.cpp" break; case 173: /* preparable_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2239 "bison_parser.cpp" +#line 2227 "bison_parser.cpp" break; case 174: /* opt_hints */ @@ -2248,7 +2236,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2252 "bison_parser.cpp" +#line 2240 "bison_parser.cpp" break; case 175: /* hint_list */ @@ -2261,85 +2249,85 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2265 "bison_parser.cpp" +#line 2253 "bison_parser.cpp" break; case 176: /* hint */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2271 "bison_parser.cpp" +#line 2259 "bison_parser.cpp" break; case 177: /* transaction_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).transaction_stmt)); } -#line 2277 "bison_parser.cpp" +#line 2265 "bison_parser.cpp" break; case 179: /* prepare_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).prep_stmt)); } -#line 2283 "bison_parser.cpp" +#line 2271 "bison_parser.cpp" break; case 180: /* prepare_target_query */ #line 149 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2289 "bison_parser.cpp" +#line 2277 "bison_parser.cpp" break; case 181: /* execute_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).exec_stmt)); } -#line 2295 "bison_parser.cpp" +#line 2283 "bison_parser.cpp" break; case 182: /* import_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).import_stmt)); } -#line 2301 "bison_parser.cpp" +#line 2289 "bison_parser.cpp" break; case 183: /* file_type */ #line 147 "bison_parser.y" { } -#line 2307 "bison_parser.cpp" +#line 2295 "bison_parser.cpp" break; case 184: /* file_path */ #line 149 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2313 "bison_parser.cpp" +#line 2301 "bison_parser.cpp" break; case 185: /* opt_file_type */ #line 147 "bison_parser.y" { } -#line 2319 "bison_parser.cpp" +#line 2307 "bison_parser.cpp" break; case 186: /* export_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).export_stmt)); } -#line 2325 "bison_parser.cpp" +#line 2313 "bison_parser.cpp" break; case 187: /* show_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).show_stmt)); } -#line 2331 "bison_parser.cpp" +#line 2319 "bison_parser.cpp" break; case 188: /* create_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).create_stmt)); } -#line 2337 "bison_parser.cpp" +#line 2325 "bison_parser.cpp" break; case 189: /* opt_not_exists */ #line 147 "bison_parser.y" { } -#line 2343 "bison_parser.cpp" +#line 2331 "bison_parser.cpp" break; case 190: /* column_def_commalist */ @@ -2352,55 +2340,55 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).column_vec)); } -#line 2356 "bison_parser.cpp" +#line 2344 "bison_parser.cpp" break; case 191: /* column_def */ #line 158 "bison_parser.y" { delete (((*yyvaluep).column_t)); } -#line 2362 "bison_parser.cpp" +#line 2350 "bison_parser.cpp" break; case 192: /* column_type */ #line 147 "bison_parser.y" { } -#line 2368 "bison_parser.cpp" +#line 2356 "bison_parser.cpp" break; case 193: /* opt_column_nullable */ #line 147 "bison_parser.y" { } -#line 2374 "bison_parser.cpp" +#line 2362 "bison_parser.cpp" break; case 194: /* drop_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).drop_stmt)); } -#line 2380 "bison_parser.cpp" +#line 2368 "bison_parser.cpp" break; case 195: /* opt_exists */ #line 147 "bison_parser.y" { } -#line 2386 "bison_parser.cpp" +#line 2374 "bison_parser.cpp" break; case 196: /* delete_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2392 "bison_parser.cpp" +#line 2380 "bison_parser.cpp" break; case 197: /* truncate_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2398 "bison_parser.cpp" +#line 2386 "bison_parser.cpp" break; case 198: /* insert_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).insert_stmt)); } -#line 2404 "bison_parser.cpp" +#line 2392 "bison_parser.cpp" break; case 199: /* opt_column_list */ @@ -2413,13 +2401,13 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2417 "bison_parser.cpp" +#line 2405 "bison_parser.cpp" break; case 200: /* update_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } -#line 2423 "bison_parser.cpp" +#line 2411 "bison_parser.cpp" break; case 201: /* update_clause_commalist */ @@ -2432,73 +2420,73 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).update_vec)); } -#line 2436 "bison_parser.cpp" +#line 2424 "bison_parser.cpp" break; case 202: /* update_clause */ #line 158 "bison_parser.y" { delete (((*yyvaluep).update_t)); } -#line 2442 "bison_parser.cpp" +#line 2430 "bison_parser.cpp" break; case 203: /* select_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2448 "bison_parser.cpp" +#line 2436 "bison_parser.cpp" break; case 204: /* select_within_set_operation */ #line 158 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2454 "bison_parser.cpp" +#line 2442 "bison_parser.cpp" break; case 205: /* select_within_set_operation_no_parentheses */ #line 158 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2460 "bison_parser.cpp" +#line 2448 "bison_parser.cpp" break; case 206: /* select_with_paren */ #line 158 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2466 "bison_parser.cpp" +#line 2454 "bison_parser.cpp" break; case 207: /* select_no_paren */ #line 158 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2472 "bison_parser.cpp" +#line 2460 "bison_parser.cpp" break; case 208: /* set_operator */ #line 158 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2478 "bison_parser.cpp" +#line 2466 "bison_parser.cpp" break; case 209: /* set_type */ #line 158 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2484 "bison_parser.cpp" +#line 2472 "bison_parser.cpp" break; case 210: /* opt_all */ #line 147 "bison_parser.y" { } -#line 2490 "bison_parser.cpp" +#line 2478 "bison_parser.cpp" break; case 211: /* select_clause */ #line 158 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2496 "bison_parser.cpp" +#line 2484 "bison_parser.cpp" break; case 212: /* opt_distinct */ #line 147 "bison_parser.y" { } -#line 2502 "bison_parser.cpp" +#line 2490 "bison_parser.cpp" break; case 213: /* select_list */ @@ -2511,37 +2499,37 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2515 "bison_parser.cpp" +#line 2503 "bison_parser.cpp" break; case 214: /* opt_from_clause */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2521 "bison_parser.cpp" +#line 2509 "bison_parser.cpp" break; case 215: /* from_clause */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2527 "bison_parser.cpp" +#line 2515 "bison_parser.cpp" break; case 216: /* opt_where */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2533 "bison_parser.cpp" +#line 2521 "bison_parser.cpp" break; case 217: /* opt_group */ #line 158 "bison_parser.y" { delete (((*yyvaluep).group_t)); } -#line 2539 "bison_parser.cpp" +#line 2527 "bison_parser.cpp" break; case 218: /* opt_having */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2545 "bison_parser.cpp" +#line 2533 "bison_parser.cpp" break; case 219: /* opt_order */ @@ -2554,7 +2542,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2558 "bison_parser.cpp" +#line 2546 "bison_parser.cpp" break; case 220: /* order_list */ @@ -2567,31 +2555,31 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2571 "bison_parser.cpp" +#line 2559 "bison_parser.cpp" break; case 221: /* order_desc */ #line 158 "bison_parser.y" { delete (((*yyvaluep).order)); } -#line 2577 "bison_parser.cpp" +#line 2565 "bison_parser.cpp" break; case 222: /* opt_order_type */ #line 147 "bison_parser.y" { } -#line 2583 "bison_parser.cpp" +#line 2571 "bison_parser.cpp" break; case 223: /* opt_top */ #line 158 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2589 "bison_parser.cpp" +#line 2577 "bison_parser.cpp" break; case 224: /* opt_limit */ #line 158 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2595 "bison_parser.cpp" +#line 2583 "bison_parser.cpp" break; case 225: /* expr_list */ @@ -2604,7 +2592,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2608 "bison_parser.cpp" +#line 2596 "bison_parser.cpp" break; case 226: /* opt_literal_list */ @@ -2617,7 +2605,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2621 "bison_parser.cpp" +#line 2609 "bison_parser.cpp" break; case 227: /* literal_list */ @@ -2630,187 +2618,187 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2634 "bison_parser.cpp" +#line 2622 "bison_parser.cpp" break; case 228: /* expr_alias */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2640 "bison_parser.cpp" +#line 2628 "bison_parser.cpp" break; case 229: /* expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2646 "bison_parser.cpp" +#line 2634 "bison_parser.cpp" break; case 230: /* operand */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2652 "bison_parser.cpp" +#line 2640 "bison_parser.cpp" break; case 231: /* scalar_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2658 "bison_parser.cpp" +#line 2646 "bison_parser.cpp" break; case 232: /* unary_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2664 "bison_parser.cpp" +#line 2652 "bison_parser.cpp" break; case 233: /* binary_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2670 "bison_parser.cpp" +#line 2658 "bison_parser.cpp" break; case 234: /* logic_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2676 "bison_parser.cpp" +#line 2664 "bison_parser.cpp" break; case 235: /* in_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2682 "bison_parser.cpp" +#line 2670 "bison_parser.cpp" break; case 236: /* case_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2688 "bison_parser.cpp" +#line 2676 "bison_parser.cpp" break; case 237: /* case_list */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2694 "bison_parser.cpp" +#line 2682 "bison_parser.cpp" break; case 238: /* exists_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2700 "bison_parser.cpp" +#line 2688 "bison_parser.cpp" break; case 239: /* comp_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2706 "bison_parser.cpp" +#line 2694 "bison_parser.cpp" break; case 240: /* function_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2712 "bison_parser.cpp" +#line 2700 "bison_parser.cpp" break; case 241: /* extract_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2718 "bison_parser.cpp" +#line 2706 "bison_parser.cpp" break; case 242: /* cast_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2724 "bison_parser.cpp" +#line 2712 "bison_parser.cpp" break; case 243: /* datetime_field */ #line 147 "bison_parser.y" { } -#line 2730 "bison_parser.cpp" +#line 2718 "bison_parser.cpp" break; case 244: /* array_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2736 "bison_parser.cpp" +#line 2724 "bison_parser.cpp" break; case 245: /* array_index */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2742 "bison_parser.cpp" +#line 2730 "bison_parser.cpp" break; case 246: /* between_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2748 "bison_parser.cpp" +#line 2736 "bison_parser.cpp" break; case 247: /* column_name */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2754 "bison_parser.cpp" +#line 2742 "bison_parser.cpp" break; case 248: /* literal */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2760 "bison_parser.cpp" +#line 2748 "bison_parser.cpp" break; case 249: /* string_literal */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2766 "bison_parser.cpp" +#line 2754 "bison_parser.cpp" break; case 250: /* bool_literal */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2772 "bison_parser.cpp" +#line 2760 "bison_parser.cpp" break; case 251: /* num_literal */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2778 "bison_parser.cpp" +#line 2766 "bison_parser.cpp" break; case 252: /* int_literal */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2784 "bison_parser.cpp" +#line 2772 "bison_parser.cpp" break; case 253: /* null_literal */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2790 "bison_parser.cpp" +#line 2778 "bison_parser.cpp" break; case 254: /* param_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2796 "bison_parser.cpp" +#line 2784 "bison_parser.cpp" break; case 255: /* table_ref */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2802 "bison_parser.cpp" +#line 2790 "bison_parser.cpp" break; case 256: /* table_ref_atomic */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2808 "bison_parser.cpp" +#line 2796 "bison_parser.cpp" break; case 257: /* nonjoin_table_ref_atomic */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2814 "bison_parser.cpp" +#line 2802 "bison_parser.cpp" break; case 258: /* table_ref_commalist */ @@ -2823,91 +2811,91 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_vec)); } -#line 2827 "bison_parser.cpp" +#line 2815 "bison_parser.cpp" break; case 259: /* table_ref_name */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2833 "bison_parser.cpp" +#line 2821 "bison_parser.cpp" break; case 260: /* table_ref_name_no_alias */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2839 "bison_parser.cpp" +#line 2827 "bison_parser.cpp" break; case 261: /* table_name */ #line 148 "bison_parser.y" { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } -#line 2845 "bison_parser.cpp" +#line 2833 "bison_parser.cpp" break; case 262: /* table_alias */ #line 158 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2851 "bison_parser.cpp" +#line 2839 "bison_parser.cpp" break; case 263: /* opt_table_alias */ #line 158 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2857 "bison_parser.cpp" +#line 2845 "bison_parser.cpp" break; case 264: /* alias */ #line 158 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2863 "bison_parser.cpp" +#line 2851 "bison_parser.cpp" break; case 265: /* opt_alias */ #line 158 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2869 "bison_parser.cpp" +#line 2857 "bison_parser.cpp" break; case 266: /* opt_with_clause */ #line 158 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2875 "bison_parser.cpp" +#line 2863 "bison_parser.cpp" break; case 267: /* with_clause */ #line 158 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2881 "bison_parser.cpp" +#line 2869 "bison_parser.cpp" break; case 268: /* with_description_list */ #line 158 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2887 "bison_parser.cpp" +#line 2875 "bison_parser.cpp" break; case 269: /* with_description */ #line 158 "bison_parser.y" { delete (((*yyvaluep).with_description_t)); } -#line 2893 "bison_parser.cpp" +#line 2881 "bison_parser.cpp" break; case 270: /* join_clause */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2899 "bison_parser.cpp" +#line 2887 "bison_parser.cpp" break; case 271: /* opt_join_type */ #line 147 "bison_parser.y" { } -#line 2905 "bison_parser.cpp" +#line 2893 "bison_parser.cpp" break; case 272: /* join_condition */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2911 "bison_parser.cpp" +#line 2899 "bison_parser.cpp" break; case 274: /* ident_commalist */ @@ -2920,7 +2908,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2924 "bison_parser.cpp" +#line 2912 "bison_parser.cpp" break; default: @@ -3042,7 +3030,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 3046 "bison_parser.cpp" +#line 3034 "bison_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -3270,7 +3258,7 @@ yyreduce: } delete (yyvsp[-1].stmt_vec); } -#line 3274 "bison_parser.cpp" +#line 3262 "bison_parser.cpp" break; case 3: @@ -3281,7 +3269,7 @@ yyreduce: (yyval.stmt_vec) = new std::vector(); (yyval.stmt_vec)->push_back((yyvsp[0].statement)); } -#line 3285 "bison_parser.cpp" +#line 3273 "bison_parser.cpp" break; case 4: @@ -3292,7 +3280,7 @@ yyreduce: (yyvsp[-2].stmt_vec)->push_back((yyvsp[0].statement)); (yyval.stmt_vec) = (yyvsp[-2].stmt_vec); } -#line 3296 "bison_parser.cpp" +#line 3284 "bison_parser.cpp" break; case 5: @@ -3301,7 +3289,7 @@ yyreduce: (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3305 "bison_parser.cpp" +#line 3293 "bison_parser.cpp" break; case 6: @@ -3310,7 +3298,7 @@ yyreduce: (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3314 "bison_parser.cpp" +#line 3302 "bison_parser.cpp" break; case 7: @@ -3318,7 +3306,7 @@ yyreduce: { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 3322 "bison_parser.cpp" +#line 3310 "bison_parser.cpp" break; case 8: @@ -3326,7 +3314,7 @@ yyreduce: { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 3330 "bison_parser.cpp" +#line 3318 "bison_parser.cpp" break; case 9: @@ -3334,85 +3322,85 @@ yyreduce: { (yyval.statement) = (yyvsp[0].export_stmt); } -#line 3338 "bison_parser.cpp" +#line 3326 "bison_parser.cpp" break; case 10: #line 326 "bison_parser.y" { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 3344 "bison_parser.cpp" +#line 3332 "bison_parser.cpp" break; case 11: #line 327 "bison_parser.y" { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 3350 "bison_parser.cpp" +#line 3338 "bison_parser.cpp" break; case 12: #line 328 "bison_parser.y" { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 3356 "bison_parser.cpp" +#line 3344 "bison_parser.cpp" break; case 13: #line 329 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3362 "bison_parser.cpp" +#line 3350 "bison_parser.cpp" break; case 14: #line 330 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3368 "bison_parser.cpp" +#line 3356 "bison_parser.cpp" break; case 15: #line 331 "bison_parser.y" { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 3374 "bison_parser.cpp" +#line 3362 "bison_parser.cpp" break; case 16: #line 332 "bison_parser.y" { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 3380 "bison_parser.cpp" +#line 3368 "bison_parser.cpp" break; case 17: #line 333 "bison_parser.y" { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 3386 "bison_parser.cpp" +#line 3374 "bison_parser.cpp" break; case 18: #line 334 "bison_parser.y" { (yyval.statement) = (yyvsp[0].transaction_stmt); } -#line 3392 "bison_parser.cpp" +#line 3380 "bison_parser.cpp" break; case 19: #line 343 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 3398 "bison_parser.cpp" +#line 3386 "bison_parser.cpp" break; case 20: #line 344 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 3404 "bison_parser.cpp" +#line 3392 "bison_parser.cpp" break; case 21: #line 349 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3410 "bison_parser.cpp" +#line 3398 "bison_parser.cpp" break; case 22: #line 350 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3416 "bison_parser.cpp" +#line 3404 "bison_parser.cpp" break; case 23: @@ -3421,7 +3409,7 @@ yyreduce: (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 3425 "bison_parser.cpp" +#line 3413 "bison_parser.cpp" break; case 24: @@ -3431,7 +3419,7 @@ yyreduce: (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 3435 "bison_parser.cpp" +#line 3423 "bison_parser.cpp" break; case 25: @@ -3439,7 +3427,7 @@ yyreduce: { (yyval.transaction_stmt) = new TransactionStatement(kBeginTransaction); } -#line 3443 "bison_parser.cpp" +#line 3431 "bison_parser.cpp" break; case 26: @@ -3447,7 +3435,7 @@ yyreduce: { (yyval.transaction_stmt) = new TransactionStatement(kRollbackTransaction); } -#line 3451 "bison_parser.cpp" +#line 3439 "bison_parser.cpp" break; case 27: @@ -3455,7 +3443,7 @@ yyreduce: { (yyval.transaction_stmt) = new TransactionStatement(kCommitTransaction); } -#line 3459 "bison_parser.cpp" +#line 3447 "bison_parser.cpp" break; case 30: @@ -3465,7 +3453,7 @@ yyreduce: (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 3469 "bison_parser.cpp" +#line 3457 "bison_parser.cpp" break; case 32: @@ -3474,7 +3462,7 @@ yyreduce: (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 3478 "bison_parser.cpp" +#line 3466 "bison_parser.cpp" break; case 33: @@ -3484,7 +3472,7 @@ yyreduce: (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 3488 "bison_parser.cpp" +#line 3476 "bison_parser.cpp" break; case 34: @@ -3495,7 +3483,7 @@ yyreduce: (yyval.import_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.import_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 3499 "bison_parser.cpp" +#line 3487 "bison_parser.cpp" break; case 35: @@ -3506,7 +3494,7 @@ yyreduce: (yyval.import_stmt)->schema = (yyvsp[-3].table_name).schema; (yyval.import_stmt)->tableName = (yyvsp[-3].table_name).name; } -#line 3510 "bison_parser.cpp" +#line 3498 "bison_parser.cpp" break; case 36: @@ -3525,13 +3513,13 @@ yyreduce: } free((yyvsp[0].sval)); } -#line 3529 "bison_parser.cpp" +#line 3517 "bison_parser.cpp" break; case 37: #line 450 "bison_parser.y" { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 3535 "bison_parser.cpp" +#line 3523 "bison_parser.cpp" break; case 38: @@ -3539,13 +3527,13 @@ yyreduce: { (yyval.import_type_t) = (yyvsp[0].import_type_t); } -#line 3543 "bison_parser.cpp" +#line 3531 "bison_parser.cpp" break; case 39: #line 457 "bison_parser.y" { (yyval.import_type_t) = kImportAuto; } -#line 3549 "bison_parser.cpp" +#line 3537 "bison_parser.cpp" break; case 40: @@ -3556,7 +3544,7 @@ yyreduce: (yyval.export_stmt)->schema = (yyvsp[-3].table_name).schema; (yyval.export_stmt)->tableName = (yyvsp[-3].table_name).name; } -#line 3560 "bison_parser.cpp" +#line 3548 "bison_parser.cpp" break; case 41: @@ -3564,7 +3552,7 @@ yyreduce: { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3568 "bison_parser.cpp" +#line 3556 "bison_parser.cpp" break; case 42: @@ -3574,7 +3562,7 @@ yyreduce: (yyval.show_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.show_stmt)->name = (yyvsp[0].table_name).name; } -#line 3578 "bison_parser.cpp" +#line 3566 "bison_parser.cpp" break; case 43: @@ -3584,7 +3572,7 @@ yyreduce: (yyval.show_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.show_stmt)->name = (yyvsp[0].table_name).name; } -#line 3588 "bison_parser.cpp" +#line 3576 "bison_parser.cpp" break; case 44: @@ -3602,7 +3590,7 @@ yyreduce: free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3606 "bison_parser.cpp" +#line 3594 "bison_parser.cpp" break; case 45: @@ -3614,7 +3602,7 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->columns = (yyvsp[-1].column_vec); } -#line 3618 "bison_parser.cpp" +#line 3606 "bison_parser.cpp" break; case 46: @@ -3626,7 +3614,7 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3630 "bison_parser.cpp" +#line 3618 "bison_parser.cpp" break; case 47: @@ -3639,31 +3627,31 @@ yyreduce: (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3643 "bison_parser.cpp" +#line 3631 "bison_parser.cpp" break; case 48: #line 540 "bison_parser.y" { (yyval.bval) = true; } -#line 3649 "bison_parser.cpp" +#line 3637 "bison_parser.cpp" break; case 49: #line 541 "bison_parser.y" { (yyval.bval) = false; } -#line 3655 "bison_parser.cpp" +#line 3643 "bison_parser.cpp" break; case 50: #line 545 "bison_parser.y" { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } -#line 3661 "bison_parser.cpp" +#line 3649 "bison_parser.cpp" break; case 51: #line 546 "bison_parser.y" { (yyvsp[-2].column_vec)->push_back((yyvsp[0].column_t)); (yyval.column_vec) = (yyvsp[-2].column_vec); } -#line 3667 "bison_parser.cpp" +#line 3655 "bison_parser.cpp" break; case 52: @@ -3671,148 +3659,154 @@ yyreduce: { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].bval)); } -#line 3675 "bison_parser.cpp" +#line 3663 "bison_parser.cpp" break; case 53: #line 556 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3681 "bison_parser.cpp" +#line 3669 "bison_parser.cpp" break; case 54: #line 557 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3687 "bison_parser.cpp" +#line 3675 "bison_parser.cpp" break; case 55: #line 558 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 3693 "bison_parser.cpp" +#line 3681 "bison_parser.cpp" break; case 56: #line 559 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 3699 "bison_parser.cpp" +#line 3687 "bison_parser.cpp" break; case 57: #line 560 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 3705 "bison_parser.cpp" +#line 3693 "bison_parser.cpp" break; case 58: #line 561 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3711 "bison_parser.cpp" +#line 3699 "bison_parser.cpp" break; case 59: #line 562 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3717 "bison_parser.cpp" +#line 3705 "bison_parser.cpp" break; case 60: #line 563 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 3723 "bison_parser.cpp" +#line 3711 "bison_parser.cpp" break; case 61: #line 564 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3729 "bison_parser.cpp" +#line 3717 "bison_parser.cpp" break; case 62: -#line 568 "bison_parser.y" - { (yyval.bval) = true; } -#line 3735 "bison_parser.cpp" +#line 565 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::DATE}; } +#line 3723 "bison_parser.cpp" break; case 63: #line 569 "bison_parser.y" - { (yyval.bval) = false; } -#line 3741 "bison_parser.cpp" + { (yyval.bval) = true; } +#line 3729 "bison_parser.cpp" break; case 64: #line 570 "bison_parser.y" - { (yyval.bval) = false; } -#line 3747 "bison_parser.cpp" + { (yyval.bval) = false; } +#line 3735 "bison_parser.cpp" break; case 65: -#line 580 "bison_parser.y" +#line 571 "bison_parser.y" + { (yyval.bval) = false; } +#line 3741 "bison_parser.cpp" + break; + + case 66: +#line 581 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropTable); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 3758 "bison_parser.cpp" +#line 3752 "bison_parser.cpp" break; - case 66: -#line 586 "bison_parser.y" + case 67: +#line 587 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropView); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 3769 "bison_parser.cpp" +#line 3763 "bison_parser.cpp" break; - case 67: -#line 592 "bison_parser.y" + case 68: +#line 593 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 3779 "bison_parser.cpp" - break; - - case 68: -#line 600 "bison_parser.y" - { (yyval.bval) = true; } -#line 3785 "bison_parser.cpp" +#line 3773 "bison_parser.cpp" break; case 69: #line 601 "bison_parser.y" - { (yyval.bval) = false; } -#line 3791 "bison_parser.cpp" + { (yyval.bval) = true; } +#line 3779 "bison_parser.cpp" break; case 70: -#line 610 "bison_parser.y" +#line 602 "bison_parser.y" + { (yyval.bval) = false; } +#line 3785 "bison_parser.cpp" + break; + + case 71: +#line 611 "bison_parser.y" { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[-1].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[-1].table_name).name; (yyval.delete_stmt)->expr = (yyvsp[0].expr); } -#line 3802 "bison_parser.cpp" +#line 3796 "bison_parser.cpp" break; - case 71: -#line 619 "bison_parser.y" + case 72: +#line 620 "bison_parser.y" { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 3812 "bison_parser.cpp" +#line 3806 "bison_parser.cpp" break; - case 72: -#line 632 "bison_parser.y" + case 73: +#line 633 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -3820,11 +3814,11 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 3824 "bison_parser.cpp" +#line 3818 "bison_parser.cpp" break; - case 73: -#line 639 "bison_parser.y" + case 74: +#line 640 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -3832,74 +3826,74 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 3836 "bison_parser.cpp" - break; - - case 74: -#line 650 "bison_parser.y" - { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 3842 "bison_parser.cpp" +#line 3830 "bison_parser.cpp" break; case 75: #line 651 "bison_parser.y" - { (yyval.str_vec) = nullptr; } -#line 3848 "bison_parser.cpp" + { (yyval.str_vec) = (yyvsp[-1].str_vec); } +#line 3836 "bison_parser.cpp" break; case 76: -#line 661 "bison_parser.y" +#line 652 "bison_parser.y" + { (yyval.str_vec) = nullptr; } +#line 3842 "bison_parser.cpp" + break; + + case 77: +#line 662 "bison_parser.y" { (yyval.update_stmt) = new UpdateStatement(); (yyval.update_stmt)->table = (yyvsp[-3].table); (yyval.update_stmt)->updates = (yyvsp[-1].update_vec); (yyval.update_stmt)->where = (yyvsp[0].expr); } -#line 3859 "bison_parser.cpp" - break; - - case 77: -#line 670 "bison_parser.y" - { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 3865 "bison_parser.cpp" +#line 3853 "bison_parser.cpp" break; case 78: #line 671 "bison_parser.y" - { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 3871 "bison_parser.cpp" + { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } +#line 3859 "bison_parser.cpp" break; case 79: -#line 675 "bison_parser.y" +#line 672 "bison_parser.y" + { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } +#line 3865 "bison_parser.cpp" + break; + + case 80: +#line 676 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 3881 "bison_parser.cpp" +#line 3875 "bison_parser.cpp" break; - case 80: -#line 687 "bison_parser.y" + case 81: +#line 688 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 3890 "bison_parser.cpp" +#line 3884 "bison_parser.cpp" break; - case 81: -#line 691 "bison_parser.y" + case 82: +#line 692 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 3899 "bison_parser.cpp" +#line 3893 "bison_parser.cpp" break; - case 82: -#line 695 "bison_parser.y" + case 83: +#line 696 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -3911,17 +3905,17 @@ yyreduce: (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 3915 "bison_parser.cpp" - break; - - case 85: -#line 713 "bison_parser.y" - { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 3921 "bison_parser.cpp" +#line 3909 "bison_parser.cpp" break; case 86: #line 714 "bison_parser.y" + { (yyval.select_stmt) = (yyvsp[0].select_stmt); } +#line 3915 "bison_parser.cpp" + break; + + case 87: +#line 715 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -3930,23 +3924,23 @@ yyreduce: (yyval.select_stmt)->setOperations->push_back((yyvsp[-1].set_operator_t)); (yyval.select_stmt)->setOperations->back()->nestedSelectStatement = (yyvsp[0].select_stmt); } -#line 3934 "bison_parser.cpp" - break; - - case 87: -#line 725 "bison_parser.y" - { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3940 "bison_parser.cpp" +#line 3928 "bison_parser.cpp" break; case 88: #line 726 "bison_parser.y" - { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3946 "bison_parser.cpp" + { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } +#line 3934 "bison_parser.cpp" break; case 89: -#line 730 "bison_parser.y" +#line 727 "bison_parser.y" + { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } +#line 3940 "bison_parser.cpp" + break; + + case 90: +#line 731 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); (yyval.select_stmt)->order = (yyvsp[-1].order_vec); @@ -3957,11 +3951,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3961 "bison_parser.cpp" +#line 3955 "bison_parser.cpp" break; - case 90: -#line 740 "bison_parser.y" + case 91: +#line 741 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -3972,63 +3966,63 @@ yyreduce: (yyval.select_stmt)->setOperations->back()->resultOrder = (yyvsp[-1].order_vec); (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); } -#line 3976 "bison_parser.cpp" +#line 3970 "bison_parser.cpp" break; - case 91: -#line 753 "bison_parser.y" + case 92: +#line 754 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 3985 "bison_parser.cpp" +#line 3979 "bison_parser.cpp" break; - case 92: -#line 760 "bison_parser.y" + case 93: +#line 761 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 3994 "bison_parser.cpp" +#line 3988 "bison_parser.cpp" break; - case 93: -#line 764 "bison_parser.y" + case 94: +#line 765 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 4003 "bison_parser.cpp" +#line 3997 "bison_parser.cpp" break; - case 94: -#line 768 "bison_parser.y" + case 95: +#line 769 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 4012 "bison_parser.cpp" - break; - - case 95: -#line 775 "bison_parser.y" - { - (yyval.bval) = true; - } -#line 4020 "bison_parser.cpp" +#line 4006 "bison_parser.cpp" break; case 96: -#line 778 "bison_parser.y" - { - (yyval.bval) = false; - } -#line 4028 "bison_parser.cpp" +#line 776 "bison_parser.y" + { + (yyval.bval) = true; + } +#line 4014 "bison_parser.cpp" break; case 97: -#line 784 "bison_parser.y" +#line 779 "bison_parser.y" + { + (yyval.bval) = false; + } +#line 4022 "bison_parser.cpp" + break; + + case 98: +#line 785 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -4038,213 +4032,213 @@ yyreduce: (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 4042 "bison_parser.cpp" - break; - - case 98: -#line 796 "bison_parser.y" - { (yyval.bval) = true; } -#line 4048 "bison_parser.cpp" +#line 4036 "bison_parser.cpp" break; case 99: #line 797 "bison_parser.y" - { (yyval.bval) = false; } -#line 4054 "bison_parser.cpp" + { (yyval.bval) = true; } +#line 4042 "bison_parser.cpp" break; - case 101: -#line 805 "bison_parser.y" - { (yyval.table) = (yyvsp[0].table); } -#line 4060 "bison_parser.cpp" + case 100: +#line 798 "bison_parser.y" + { (yyval.bval) = false; } +#line 4048 "bison_parser.cpp" break; case 102: #line 806 "bison_parser.y" - { (yyval.table) = nullptr; } -#line 4066 "bison_parser.cpp" + { (yyval.table) = (yyvsp[0].table); } +#line 4054 "bison_parser.cpp" break; case 103: -#line 810 "bison_parser.y" - { (yyval.table) = (yyvsp[0].table); } -#line 4072 "bison_parser.cpp" +#line 807 "bison_parser.y" + { (yyval.table) = nullptr; } +#line 4060 "bison_parser.cpp" break; case 104: -#line 815 "bison_parser.y" - { (yyval.expr) = (yyvsp[0].expr); } -#line 4078 "bison_parser.cpp" +#line 811 "bison_parser.y" + { (yyval.table) = (yyvsp[0].table); } +#line 4066 "bison_parser.cpp" break; case 105: #line 816 "bison_parser.y" - { (yyval.expr) = nullptr; } -#line 4084 "bison_parser.cpp" + { (yyval.expr) = (yyvsp[0].expr); } +#line 4072 "bison_parser.cpp" break; case 106: -#line 820 "bison_parser.y" +#line 817 "bison_parser.y" + { (yyval.expr) = nullptr; } +#line 4078 "bison_parser.cpp" + break; + + case 107: +#line 821 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 4094 "bison_parser.cpp" - break; - - case 107: -#line 825 "bison_parser.y" - { (yyval.group_t) = nullptr; } -#line 4100 "bison_parser.cpp" +#line 4088 "bison_parser.cpp" break; case 108: -#line 829 "bison_parser.y" - { (yyval.expr) = (yyvsp[0].expr); } -#line 4106 "bison_parser.cpp" +#line 826 "bison_parser.y" + { (yyval.group_t) = nullptr; } +#line 4094 "bison_parser.cpp" break; case 109: #line 830 "bison_parser.y" - { (yyval.expr) = nullptr; } -#line 4112 "bison_parser.cpp" + { (yyval.expr) = (yyvsp[0].expr); } +#line 4100 "bison_parser.cpp" break; case 110: -#line 834 "bison_parser.y" - { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 4118 "bison_parser.cpp" +#line 831 "bison_parser.y" + { (yyval.expr) = nullptr; } +#line 4106 "bison_parser.cpp" break; case 111: #line 835 "bison_parser.y" - { (yyval.order_vec) = nullptr; } -#line 4124 "bison_parser.cpp" + { (yyval.order_vec) = (yyvsp[0].order_vec); } +#line 4112 "bison_parser.cpp" break; case 112: -#line 839 "bison_parser.y" - { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 4130 "bison_parser.cpp" +#line 836 "bison_parser.y" + { (yyval.order_vec) = nullptr; } +#line 4118 "bison_parser.cpp" break; case 113: #line 840 "bison_parser.y" - { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 4136 "bison_parser.cpp" + { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } +#line 4124 "bison_parser.cpp" break; case 114: -#line 844 "bison_parser.y" - { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 4142 "bison_parser.cpp" +#line 841 "bison_parser.y" + { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } +#line 4130 "bison_parser.cpp" break; case 115: -#line 848 "bison_parser.y" - { (yyval.order_type) = kOrderAsc; } -#line 4148 "bison_parser.cpp" +#line 845 "bison_parser.y" + { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } +#line 4136 "bison_parser.cpp" break; case 116: #line 849 "bison_parser.y" - { (yyval.order_type) = kOrderDesc; } -#line 4154 "bison_parser.cpp" + { (yyval.order_type) = kOrderAsc; } +#line 4142 "bison_parser.cpp" break; case 117: #line 850 "bison_parser.y" - { (yyval.order_type) = kOrderAsc; } -#line 4160 "bison_parser.cpp" + { (yyval.order_type) = kOrderDesc; } +#line 4148 "bison_parser.cpp" break; case 118: -#line 856 "bison_parser.y" - { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4166 "bison_parser.cpp" +#line 851 "bison_parser.y" + { (yyval.order_type) = kOrderAsc; } +#line 4154 "bison_parser.cpp" break; case 119: #line 857 "bison_parser.y" - { (yyval.limit) = nullptr; } -#line 4172 "bison_parser.cpp" + { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } +#line 4160 "bison_parser.cpp" break; case 120: -#line 861 "bison_parser.y" - { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4178 "bison_parser.cpp" +#line 858 "bison_parser.y" + { (yyval.limit) = nullptr; } +#line 4166 "bison_parser.cpp" break; case 121: #line 862 "bison_parser.y" - { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4184 "bison_parser.cpp" + { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } +#line 4172 "bison_parser.cpp" break; case 122: #line 863 "bison_parser.y" - { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4190 "bison_parser.cpp" + { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } +#line 4178 "bison_parser.cpp" break; case 123: #line 864 "bison_parser.y" - { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 4196 "bison_parser.cpp" + { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 4184 "bison_parser.cpp" break; case 124: #line 865 "bison_parser.y" - { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4202 "bison_parser.cpp" + { (yyval.limit) = new LimitDescription(nullptr, nullptr); } +#line 4190 "bison_parser.cpp" break; case 125: #line 866 "bison_parser.y" - { (yyval.limit) = nullptr; } -#line 4208 "bison_parser.cpp" + { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } +#line 4196 "bison_parser.cpp" break; case 126: -#line 873 "bison_parser.y" - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4214 "bison_parser.cpp" +#line 867 "bison_parser.y" + { (yyval.limit) = nullptr; } +#line 4202 "bison_parser.cpp" break; case 127: #line 874 "bison_parser.y" - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4220 "bison_parser.cpp" + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 4208 "bison_parser.cpp" break; case 128: -#line 878 "bison_parser.y" - { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4226 "bison_parser.cpp" +#line 875 "bison_parser.y" + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 4214 "bison_parser.cpp" break; case 129: #line 879 "bison_parser.y" - { (yyval.expr_vec) = nullptr; } -#line 4232 "bison_parser.cpp" + { (yyval.expr_vec) = (yyvsp[0].expr_vec); } +#line 4220 "bison_parser.cpp" break; case 130: -#line 883 "bison_parser.y" - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4238 "bison_parser.cpp" +#line 880 "bison_parser.y" + { (yyval.expr_vec) = nullptr; } +#line 4226 "bison_parser.cpp" break; case 131: #line 884 "bison_parser.y" - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4244 "bison_parser.cpp" + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 4232 "bison_parser.cpp" break; case 132: -#line 888 "bison_parser.y" +#line 885 "bison_parser.y" + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 4238 "bison_parser.cpp" + break; + + case 133: +#line 889 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -4252,421 +4246,421 @@ yyreduce: delete (yyvsp[0].alias_t); } } +#line 4250 "bison_parser.cpp" + break; + + case 139: +#line 907 "bison_parser.y" + { (yyval.expr) = (yyvsp[-1].expr); } #line 4256 "bison_parser.cpp" break; - case 138: -#line 906 "bison_parser.y" - { (yyval.expr) = (yyvsp[-1].expr); } -#line 4262 "bison_parser.cpp" - break; - - case 148: -#line 916 "bison_parser.y" + case 149: +#line 917 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4268 "bison_parser.cpp" - break; - - case 151: -#line 925 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4274 "bison_parser.cpp" +#line 4262 "bison_parser.cpp" break; case 152: #line 926 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4280 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } +#line 4268 "bison_parser.cpp" break; case 153: #line 927 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4286 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } +#line 4274 "bison_parser.cpp" break; case 154: #line 928 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4292 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } +#line 4280 "bison_parser.cpp" break; case 155: #line 929 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4298 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } +#line 4286 "bison_parser.cpp" break; - case 157: -#line 934 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4304 "bison_parser.cpp" + case 156: +#line 930 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } +#line 4292 "bison_parser.cpp" break; case 158: #line 935 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4310 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } +#line 4298 "bison_parser.cpp" break; case 159: #line 936 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4316 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } +#line 4304 "bison_parser.cpp" break; case 160: #line 937 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4322 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } +#line 4310 "bison_parser.cpp" break; case 161: #line 938 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4328 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } +#line 4316 "bison_parser.cpp" break; case 162: #line 939 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4334 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } +#line 4322 "bison_parser.cpp" break; case 163: #line 940 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4340 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } +#line 4328 "bison_parser.cpp" break; case 164: #line 941 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4346 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } +#line 4334 "bison_parser.cpp" break; case 165: #line 942 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4352 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } +#line 4340 "bison_parser.cpp" break; case 166: #line 943 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4358 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } +#line 4346 "bison_parser.cpp" break; case 167: -#line 947 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4364 "bison_parser.cpp" +#line 944 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } +#line 4352 "bison_parser.cpp" break; case 168: #line 948 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4370 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } +#line 4358 "bison_parser.cpp" break; case 169: -#line 952 "bison_parser.y" - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4376 "bison_parser.cpp" +#line 949 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } +#line 4364 "bison_parser.cpp" break; case 170: #line 953 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4382 "bison_parser.cpp" + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } +#line 4370 "bison_parser.cpp" break; case 171: #line 954 "bison_parser.y" - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4388 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } +#line 4376 "bison_parser.cpp" break; case 172: #line 955 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4394 "bison_parser.cpp" + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } +#line 4382 "bison_parser.cpp" break; case 173: -#line 961 "bison_parser.y" - { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4400 "bison_parser.cpp" +#line 956 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } +#line 4388 "bison_parser.cpp" break; case 174: #line 962 "bison_parser.y" - { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4406 "bison_parser.cpp" + { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } +#line 4394 "bison_parser.cpp" break; case 175: #line 963 "bison_parser.y" - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4412 "bison_parser.cpp" + { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } +#line 4400 "bison_parser.cpp" break; case 176: #line 964 "bison_parser.y" - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4418 "bison_parser.cpp" + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } +#line 4406 "bison_parser.cpp" break; case 177: -#line 968 "bison_parser.y" - { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4424 "bison_parser.cpp" +#line 965 "bison_parser.y" + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } +#line 4412 "bison_parser.cpp" break; case 178: #line 969 "bison_parser.y" - { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4430 "bison_parser.cpp" + { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } +#line 4418 "bison_parser.cpp" break; case 179: -#line 973 "bison_parser.y" - { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 4436 "bison_parser.cpp" +#line 970 "bison_parser.y" + { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } +#line 4424 "bison_parser.cpp" break; case 180: #line 974 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 4442 "bison_parser.cpp" + { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } +#line 4430 "bison_parser.cpp" break; case 181: -#line 978 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4448 "bison_parser.cpp" +#line 975 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } +#line 4436 "bison_parser.cpp" break; case 182: #line 979 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4454 "bison_parser.cpp" +#line 4442 "bison_parser.cpp" break; case 183: #line 980 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 4460 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } +#line 4448 "bison_parser.cpp" break; case 184: #line 981 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 4466 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } +#line 4454 "bison_parser.cpp" break; case 185: #line 982 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 4472 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } +#line 4460 "bison_parser.cpp" break; case 186: #line 983 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 4478 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } +#line 4466 "bison_parser.cpp" break; case 187: #line 984 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 4484 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } +#line 4472 "bison_parser.cpp" break; case 188: -#line 988 "bison_parser.y" - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } -#line 4490 "bison_parser.cpp" +#line 985 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } +#line 4478 "bison_parser.cpp" break; case 189: #line 989 "bison_parser.y" - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 4496 "bison_parser.cpp" + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } +#line 4484 "bison_parser.cpp" break; case 190: -#line 993 "bison_parser.y" - { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 4502 "bison_parser.cpp" +#line 990 "bison_parser.y" + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } +#line 4490 "bison_parser.cpp" break; case 191: -#line 997 "bison_parser.y" - { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4508 "bison_parser.cpp" +#line 994 "bison_parser.y" + { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } +#line 4496 "bison_parser.cpp" break; case 192: -#line 1001 "bison_parser.y" - { (yyval.datetime_field) = kDatetimeSecond; } -#line 4514 "bison_parser.cpp" +#line 998 "bison_parser.y" + { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } +#line 4502 "bison_parser.cpp" break; case 193: #line 1002 "bison_parser.y" - { (yyval.datetime_field) = kDatetimeMinute; } -#line 4520 "bison_parser.cpp" + { (yyval.datetime_field) = kDatetimeSecond; } +#line 4508 "bison_parser.cpp" break; case 194: #line 1003 "bison_parser.y" - { (yyval.datetime_field) = kDatetimeHour; } -#line 4526 "bison_parser.cpp" + { (yyval.datetime_field) = kDatetimeMinute; } +#line 4514 "bison_parser.cpp" break; case 195: #line 1004 "bison_parser.y" - { (yyval.datetime_field) = kDatetimeDay; } -#line 4532 "bison_parser.cpp" + { (yyval.datetime_field) = kDatetimeHour; } +#line 4520 "bison_parser.cpp" break; case 196: #line 1005 "bison_parser.y" - { (yyval.datetime_field) = kDatetimeMonth; } -#line 4538 "bison_parser.cpp" + { (yyval.datetime_field) = kDatetimeDay; } +#line 4526 "bison_parser.cpp" break; case 197: #line 1006 "bison_parser.y" - { (yyval.datetime_field) = kDatetimeYear; } -#line 4544 "bison_parser.cpp" + { (yyval.datetime_field) = kDatetimeMonth; } +#line 4532 "bison_parser.cpp" break; case 198: -#line 1010 "bison_parser.y" - { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 4550 "bison_parser.cpp" +#line 1007 "bison_parser.y" + { (yyval.datetime_field) = kDatetimeYear; } +#line 4538 "bison_parser.cpp" break; case 199: -#line 1014 "bison_parser.y" - { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 4556 "bison_parser.cpp" +#line 1011 "bison_parser.y" + { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } +#line 4544 "bison_parser.cpp" break; case 200: -#line 1018 "bison_parser.y" - { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4562 "bison_parser.cpp" +#line 1015 "bison_parser.y" + { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } +#line 4550 "bison_parser.cpp" break; case 201: -#line 1022 "bison_parser.y" - { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 4568 "bison_parser.cpp" +#line 1019 "bison_parser.y" + { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 4556 "bison_parser.cpp" break; case 202: #line 1023 "bison_parser.y" - { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 4574 "bison_parser.cpp" + { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } +#line 4562 "bison_parser.cpp" break; case 203: #line 1024 "bison_parser.y" - { (yyval.expr) = Expr::makeStar(); } -#line 4580 "bison_parser.cpp" + { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } +#line 4568 "bison_parser.cpp" break; case 204: #line 1025 "bison_parser.y" - { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 4586 "bison_parser.cpp" + { (yyval.expr) = Expr::makeStar(); } +#line 4574 "bison_parser.cpp" break; - case 210: -#line 1037 "bison_parser.y" - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 4592 "bison_parser.cpp" + case 205: +#line 1026 "bison_parser.y" + { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } +#line 4580 "bison_parser.cpp" break; case 211: -#line 1041 "bison_parser.y" - { (yyval.expr) = Expr::makeLiteral(true); } -#line 4598 "bison_parser.cpp" +#line 1038 "bison_parser.y" + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } +#line 4586 "bison_parser.cpp" break; case 212: #line 1042 "bison_parser.y" - { (yyval.expr) = Expr::makeLiteral(false); } -#line 4604 "bison_parser.cpp" + { (yyval.expr) = Expr::makeLiteral(true); } +#line 4592 "bison_parser.cpp" break; case 213: -#line 1046 "bison_parser.y" - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 4610 "bison_parser.cpp" +#line 1043 "bison_parser.y" + { (yyval.expr) = Expr::makeLiteral(false); } +#line 4598 "bison_parser.cpp" break; - case 215: -#line 1051 "bison_parser.y" - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 4616 "bison_parser.cpp" + case 214: +#line 1047 "bison_parser.y" + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } +#line 4604 "bison_parser.cpp" break; case 216: -#line 1055 "bison_parser.y" - { (yyval.expr) = Expr::makeNullLiteral(); } -#line 4622 "bison_parser.cpp" +#line 1052 "bison_parser.y" + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } +#line 4610 "bison_parser.cpp" break; case 217: -#line 1059 "bison_parser.y" +#line 1056 "bison_parser.y" + { (yyval.expr) = Expr::makeNullLiteral(); } +#line 4616 "bison_parser.cpp" + break; + + case 218: +#line 1060 "bison_parser.y" { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); yyloc.param_list.push_back((yyval.expr)); } -#line 4632 "bison_parser.cpp" +#line 4626 "bison_parser.cpp" break; - case 219: -#line 1072 "bison_parser.y" + case 220: +#line 1073 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); auto tbl = new TableRef(kTableCrossProduct); tbl->list = (yyvsp[-2].table_vec); (yyval.table) = tbl; } -#line 4643 "bison_parser.cpp" +#line 4637 "bison_parser.cpp" break; - case 223: -#line 1088 "bison_parser.y" + case 224: +#line 1089 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 4654 "bison_parser.cpp" - break; - - case 224: -#line 1097 "bison_parser.y" - { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 4660 "bison_parser.cpp" +#line 4648 "bison_parser.cpp" break; case 225: #line 1098 "bison_parser.y" - { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 4666 "bison_parser.cpp" + { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } +#line 4654 "bison_parser.cpp" break; case 226: -#line 1103 "bison_parser.y" +#line 1099 "bison_parser.y" + { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } +#line 4660 "bison_parser.cpp" + break; + + case 227: +#line 1104 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -4674,103 +4668,103 @@ yyreduce: tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 4678 "bison_parser.cpp" +#line 4672 "bison_parser.cpp" break; - case 227: -#line 1114 "bison_parser.y" + case 228: +#line 1115 "bison_parser.y" { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; (yyval.table)->name = (yyvsp[0].table_name).name; } -#line 4688 "bison_parser.cpp" - break; - - case 228: -#line 1123 "bison_parser.y" - { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} -#line 4694 "bison_parser.cpp" +#line 4682 "bison_parser.cpp" break; case 229: #line 1124 "bison_parser.y" + { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} +#line 4688 "bison_parser.cpp" + break; + + case 230: +#line 1125 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } +#line 4694 "bison_parser.cpp" + break; + + case 232: +#line 1131 "bison_parser.y" + { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } #line 4700 "bison_parser.cpp" break; - case 231: -#line 1130 "bison_parser.y" - { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 4706 "bison_parser.cpp" - break; - - case 233: -#line 1136 "bison_parser.y" - { (yyval.alias_t) = nullptr; } -#line 4712 "bison_parser.cpp" - break; - case 234: -#line 1141 "bison_parser.y" - { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 4718 "bison_parser.cpp" +#line 1137 "bison_parser.y" + { (yyval.alias_t) = nullptr; } +#line 4706 "bison_parser.cpp" break; case 235: #line 1142 "bison_parser.y" + { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } +#line 4712 "bison_parser.cpp" + break; + + case 236: +#line 1143 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } +#line 4718 "bison_parser.cpp" + break; + + case 238: +#line 1149 "bison_parser.y" + { (yyval.alias_t) = nullptr; } #line 4724 "bison_parser.cpp" break; - case 237: -#line 1148 "bison_parser.y" - { (yyval.alias_t) = nullptr; } + case 240: +#line 1159 "bison_parser.y" + { (yyval.with_description_vec) = nullptr; } #line 4730 "bison_parser.cpp" break; - case 239: -#line 1158 "bison_parser.y" - { (yyval.with_description_vec) = nullptr; } + case 241: +#line 1163 "bison_parser.y" + { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } #line 4736 "bison_parser.cpp" break; - case 240: -#line 1162 "bison_parser.y" - { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 4742 "bison_parser.cpp" - break; - - case 241: -#line 1166 "bison_parser.y" + case 242: +#line 1167 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 4751 "bison_parser.cpp" +#line 4745 "bison_parser.cpp" break; - case 242: -#line 1170 "bison_parser.y" + case 243: +#line 1171 "bison_parser.y" { (yyvsp[-2].with_description_vec)->push_back((yyvsp[0].with_description_t)); (yyval.with_description_vec) = (yyvsp[-2].with_description_vec); } -#line 4760 "bison_parser.cpp" +#line 4754 "bison_parser.cpp" break; - case 243: -#line 1177 "bison_parser.y" + case 244: +#line 1178 "bison_parser.y" { (yyval.with_description_t) = new WithDescription(); (yyval.with_description_t)->alias = (yyvsp[-2].sval); (yyval.with_description_t)->select = (yyvsp[0].select_stmt); } -#line 4770 "bison_parser.cpp" +#line 4764 "bison_parser.cpp" break; - case 244: -#line 1191 "bison_parser.y" + case 245: +#line 1192 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -4778,11 +4772,11 @@ yyreduce: (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 4782 "bison_parser.cpp" +#line 4776 "bison_parser.cpp" break; - case 245: -#line 1199 "bison_parser.y" + case 246: +#line 1200 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -4791,11 +4785,11 @@ yyreduce: (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 4795 "bison_parser.cpp" +#line 4789 "bison_parser.cpp" break; - case 246: -#line 1209 "bison_parser.y" + case 247: +#line 1210 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -4811,83 +4805,83 @@ yyreduce: (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 4815 "bison_parser.cpp" - break; - - case 247: -#line 1227 "bison_parser.y" - { (yyval.uval) = kJoinInner; } -#line 4821 "bison_parser.cpp" +#line 4809 "bison_parser.cpp" break; case 248: #line 1228 "bison_parser.y" - { (yyval.uval) = kJoinLeft; } -#line 4827 "bison_parser.cpp" + { (yyval.uval) = kJoinInner; } +#line 4815 "bison_parser.cpp" break; case 249: #line 1229 "bison_parser.y" { (yyval.uval) = kJoinLeft; } -#line 4833 "bison_parser.cpp" +#line 4821 "bison_parser.cpp" break; case 250: #line 1230 "bison_parser.y" - { (yyval.uval) = kJoinRight; } -#line 4839 "bison_parser.cpp" + { (yyval.uval) = kJoinLeft; } +#line 4827 "bison_parser.cpp" break; case 251: #line 1231 "bison_parser.y" { (yyval.uval) = kJoinRight; } -#line 4845 "bison_parser.cpp" +#line 4833 "bison_parser.cpp" break; case 252: #line 1232 "bison_parser.y" - { (yyval.uval) = kJoinFull; } -#line 4851 "bison_parser.cpp" + { (yyval.uval) = kJoinRight; } +#line 4839 "bison_parser.cpp" break; case 253: #line 1233 "bison_parser.y" { (yyval.uval) = kJoinFull; } -#line 4857 "bison_parser.cpp" +#line 4845 "bison_parser.cpp" break; case 254: #line 1234 "bison_parser.y" { (yyval.uval) = kJoinFull; } -#line 4863 "bison_parser.cpp" +#line 4851 "bison_parser.cpp" break; case 255: #line 1235 "bison_parser.y" - { (yyval.uval) = kJoinCross; } -#line 4869 "bison_parser.cpp" + { (yyval.uval) = kJoinFull; } +#line 4857 "bison_parser.cpp" break; case 256: #line 1236 "bison_parser.y" - { (yyval.uval) = kJoinInner; } -#line 4875 "bison_parser.cpp" + { (yyval.uval) = kJoinCross; } +#line 4863 "bison_parser.cpp" break; - case 260: -#line 1256 "bison_parser.y" - { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 4881 "bison_parser.cpp" + case 257: +#line 1237 "bison_parser.y" + { (yyval.uval) = kJoinInner; } +#line 4869 "bison_parser.cpp" break; case 261: #line 1257 "bison_parser.y" + { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } +#line 4875 "bison_parser.cpp" + break; + + case 262: +#line 1258 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 4887 "bison_parser.cpp" +#line 4881 "bison_parser.cpp" break; -#line 4891 "bison_parser.cpp" +#line 4885 "bison_parser.cpp" default: break; } @@ -5117,7 +5111,7 @@ yyreturn: return yyresult; } -#line 1260 "bison_parser.y" +#line 1261 "bison_parser.y" /********************************* ** Section 4: Additional C code diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 8a097e8..8d92e0d 100755 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -562,6 +562,7 @@ column_type: | CHAR '(' INTVAL ')' { $$ = ColumnType{DataType::CHAR, $3}; } | TEXT { $$ = ColumnType{DataType::TEXT}; } | DATETIME { $$ = ColumnType{DataType::DATETIME}; } + | DATE { $$ = ColumnType{DataType::DATE}; } ; opt_column_nullable: diff --git a/src/sql/ColumnType.h b/src/sql/ColumnType.h index 43d7802..e5e10ec 100755 --- a/src/sql/ColumnType.h +++ b/src/sql/ColumnType.h @@ -13,7 +13,8 @@ namespace hsql { CHAR, VARCHAR, TEXT, - DATETIME + DATETIME, + DATE }; // Represents the type of a column, e.g., FLOAT or VARCHAR(10) diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index b075659..6b422c3 100755 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -57,6 +57,9 @@ namespace hsql { case DataType::DATETIME: stream << "DATETIME"; break; + case DataType::DATE: + stream << "DATE"; + break; } return stream; } diff --git a/test/select_tests.cpp b/test/select_tests.cpp index 5b96853..3093ceb 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -737,4 +737,18 @@ TEST(WithClauseDouble) { ASSERT_EQ(stmt->selectList->size(), 1); ASSERT_STREQ(stmt->selectList->at(0)->name, "nameA"); ASSERT_STREQ(stmt->fromTable->name, "a"); -} \ No newline at end of file +} + +TEST(CastAsDate) { + TEST_PARSE_SINGLE_SQL( + "SELECT CAST(ID AS DATE) FROM TEST", + kStmtSelect, + SelectStatement, + result, + stmt); + + ASSERT_TRUE(result.isValid()); + ASSERT_EQ(1, stmt->selectList->size()); + ASSERT_STREQ("CAST", stmt->selectList->front()->name); + ASSERT_EQ(DataType::DATE, stmt->selectList->front()->columnType.data_type); +}