diff --git a/src/parser/ast.h b/src/parser/ast.h index e6815784d6a62410335bcbf4ceafd5ee2ea2f7d0..aca8b707b46b6f444b4a746e44062cf12df57e6d 100644 --- a/src/parser/ast.h +++ b/src/parser/ast.h @@ -9,6 +9,7 @@ MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. */ #pragma once +#include <utility> #include <vector> #include <string> #include <memory> @@ -41,7 +42,7 @@ namespace ast { }; enum SetKnobType { - EnableNestLoop, EnableSortMerge + EnableNestLoop, EnableSortMerge, EnableOutputFile }; // Base class for tree nodes @@ -234,6 +235,15 @@ namespace ast { } }; + struct LoadStmt : public TreeNode { + std::string file_name; + std::string table_name; + + explicit LoadStmt(std::string &filename_, std::string &tablename_) : file_name(std::move(filename_)), + table_name(std::move(tablename_)) { + } + }; + struct InsertStmt : public TreeNode { std::string tab_name; std::vector<std::shared_ptr<Value> > vals; diff --git a/src/parser/ast_printer.h b/src/parser/ast_printer.h index 6f2bc3affc82c4091e05a6da3b4d0fd5a307ff4d..c131551f6585c0b1be10e65cb51b84c98a73eccf 100644 --- a/src/parser/ast_printer.h +++ b/src/parser/ast_printer.h @@ -73,6 +73,19 @@ namespace ast { return m.at(op); } + static std::string knobType2str(SetKnobType type) { + static std::map<SetKnobType, std::string> m{ + {EnableNestLoop, "EnableNestLoop"}, + {EnableSortMerge, "EnableSortMerge"}, + {EnableOutputFile, "EnableOutputFile"} + }; + return m.at(type); + } + + static std::string boolType2str(bool type) { + return type ? "true" : "false"; + } + template<typename T> static void print_node_list(std::vector<T> nodes, int offset) { std::cout << offset2string(offset); @@ -161,6 +174,14 @@ namespace ast { print_node(x->lhs, offset); print_val(op2str(x->op), offset); print_node(x->rhs, offset); + } else if (auto x = std::dynamic_pointer_cast<LoadStmt>(node)) { + std::cout << "LOAD\n"; + print_val(x->file_name, offset); + print_val(x->table_name, offset); + } else if (auto x = std::dynamic_pointer_cast<SetStmt>(node)) { + std::cout << "SET_KNOB\n"; + print_val(knobType2str(x->set_knob_type_), offset); + print_val(boolType2str(x->bool_val_), offset); } else if (auto x = std::dynamic_pointer_cast<InsertStmt>(node)) { std::cout << "INSERT\n"; print_val(x->tab_name, offset); diff --git a/src/parser/lex.l b/src/parser/lex.l index 8e0cf65c30a86b7e36175a4d510de15db93dc392..8d951da609d8ea02f77c00027df3646bc170bc5a 100644 --- a/src/parser/lex.l +++ b/src/parser/lex.l @@ -40,6 +40,7 @@ value_int {sign}?{digit}+ value_float {sign}?{digit}+\.({digit}+)? value_string '[^']*' single_op ";"|"("|")"|","|"*"|"="|">"|"<"|"." +file_path \.\.[0-9a-zA-Z_\/\.\-]+ %x STATE_COMMENT @@ -96,6 +97,10 @@ single_op ";"|"("|")"|","|"*"|"="|">"|"<"|"." "HAVING" { return HAVING; } "IN" { return IN; } "STATIC_CHECKPOINT" { return STATIC_CHECKPOINT; } +"LOAD" { return LOAD; } +"OUTPUT_FILE" { return OUTPUT_FILE; } +"ON" { return ON; } +"OFF" { return OFF; } "TRUE" { yylval->sv_bool = true; return VALUE_BOOL; @@ -127,6 +132,10 @@ single_op ";"|"("|")"|","|"*"|"="|">"|"<"|"." {value_string} { yylval->sv_str = std::string(yytext + 1, strlen(yytext) - 2); return VALUE_STRING; +} +{file_path} { + yylval->sv_str = yytext; + return FILE_PATH; } /* EOF */ <<EOF>> { return T_EOF; } diff --git a/src/parser/lex.yy.c b/src/parser/lex.yy.c index 95edeb77556a7d71055a1294fc855f6915a7ea7f..affcf5b671a69192d44d6bc23ae214905e1719e2 100644 --- a/src/parser/lex.yy.c +++ b/src/parser/lex.yy.c @@ -379,8 +379,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 61 -#define YY_END_OF_BUFFER 62 +#define YY_NUM_RULES 66 +#define YY_END_OF_BUFFER 67 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -388,32 +388,34 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[222] = +static const flex_int16_t yy_accept[242] = { 0, - 0, 0, 0, 0, 62, 60, 6, 7, 7, 60, - 60, 55, 60, 60, 60, 57, 55, 55, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 3, 4, 6, - 7, 54, 0, 59, 57, 5, 1, 58, 52, 53, - 51, 56, 56, 56, 44, 56, 36, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 47, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 2, 5, 58, 56, 31, - 37, 56, 56, 56, 56, 56, 56, 56, 56, 56, - - 56, 56, 56, 56, 56, 56, 56, 56, 56, 27, - 56, 41, 42, 56, 56, 56, 25, 56, 56, 43, - 56, 56, 56, 56, 56, 56, 56, 28, 56, 56, - 56, 56, 17, 16, 56, 33, 56, 56, 22, 56, - 56, 34, 56, 56, 19, 32, 56, 56, 56, 8, - 56, 56, 49, 56, 56, 56, 11, 9, 56, 40, - 56, 56, 56, 50, 29, 45, 56, 30, 56, 35, - 56, 56, 56, 15, 56, 56, 23, 10, 14, 21, - 56, 46, 18, 56, 26, 56, 13, 24, 20, 56, - 56, 56, 56, 56, 12, 56, 56, 56, 56, 56, - - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 38, 56, 56, 39, 56, 48, + 0, 0, 0, 0, 67, 65, 6, 7, 7, 65, + 65, 59, 65, 65, 59, 65, 61, 59, 59, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 3, + 4, 6, 7, 58, 0, 63, 61, 5, 0, 1, + 62, 56, 57, 55, 60, 60, 60, 44, 60, 36, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 47, 60, 60, 60, 60, 60, 51, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 2, 5, 64, 62, 60, 31, 37, 60, + + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 27, 60, 60, + 41, 42, 52, 60, 60, 60, 60, 25, 60, 60, + 43, 60, 60, 60, 60, 60, 60, 60, 28, 60, + 60, 60, 60, 17, 16, 60, 33, 60, 60, 22, + 60, 60, 34, 60, 60, 19, 32, 49, 60, 60, + 60, 60, 8, 60, 60, 53, 60, 60, 60, 11, + 9, 60, 40, 60, 60, 60, 54, 29, 45, 60, + 30, 60, 35, 60, 60, 60, 60, 15, 60, 60, + 23, 10, 14, 21, 60, 46, 18, 60, 60, 26, + + 60, 13, 24, 20, 60, 60, 60, 60, 60, 60, + 60, 12, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 50, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 38, 60, 60, 39, 60, 48, 0 } ; @@ -452,133 +454,140 @@ static const YY_CHAR yy_ec[256] = static const YY_CHAR yy_meta[70] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3 + 1, 3, 3, 3, 4, 1, 1, 1, 1, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4 } ; -static const flex_int16_t yy_base[226] = +static const flex_int16_t yy_base[247] = { 0, - 0, 0, 407, 404, 410, 434, 407, 434, 404, 387, - 397, 434, 386, 58, 349, 59, 57, 281, 50, 54, - 50, 55, 47, 62, 49, 76, 48, 60, 0, 101, - 52, 67, 101, 96, 83, 110, 104, 434, 270, 239, - 434, 434, 177, 434, 119, 0, 434, 124, 434, 434, - 434, 0, 101, 113, 115, 112, 0, 123, 113, 122, - 129, 114, 129, 122, 128, 134, 136, 139, 111, 148, - 159, 152, 141, 148, 164, 157, 162, 155, 170, 159, - 174, 160, 179, 172, 180, 434, 0, 87, 173, 0, - 0, 183, 181, 180, 187, 204, 203, 209, 197, 212, - - 197, 201, 214, 208, 202, 216, 210, 223, 224, 215, - 218, 0, 0, 228, 223, 231, 0, 220, 224, 0, - 225, 241, 248, 232, 239, 240, 236, 0, 255, 246, - 247, 250, 0, 0, 259, 0, 268, 257, 0, 258, - 265, 0, 257, 265, 0, 0, 266, 284, 284, 0, - 279, 284, 0, 273, 289, 291, 0, 0, 278, 0, - 296, 298, 299, 0, 0, 0, 300, 0, 290, 0, - 310, 296, 314, 300, 316, 305, 0, 0, 0, 0, - 50, 0, 0, 322, 0, 46, 0, 0, 0, 312, - 317, 329, 329, 321, 0, 330, 321, 324, 340, 328, - - 330, 343, 341, 342, 346, 344, 356, 347, 351, 350, - 354, 354, 367, 367, 0, 372, 364, 0, 360, 0, - 434, 424, 427, 82, 430 + 0, 0, 442, 441, 449, 470, 445, 470, 443, 427, + 438, 470, 426, 58, 427, 429, 59, 57, 418, 50, + 54, 50, 55, 47, 62, 49, 76, 48, 60, 0, + 61, 105, 102, 68, 105, 94, 99, 116, 110, 470, + 421, 426, 470, 470, 333, 470, 76, 0, 0, 470, + 318, 470, 470, 470, 0, 112, 124, 126, 123, 0, + 130, 125, 128, 146, 120, 146, 140, 140, 145, 147, + 148, 75, 154, 163, 159, 168, 75, 156, 166, 0, + 170, 156, 165, 167, 165, 184, 178, 195, 178, 198, + 192, 204, 470, 0, 0, 185, 195, 0, 0, 201, + + 196, 202, 202, 217, 214, 217, 205, 220, 205, 207, + 226, 216, 210, 223, 217, 229, 232, 225, 229, 245, + 0, 0, 0, 247, 238, 245, 256, 0, 241, 245, + 0, 250, 262, 267, 249, 253, 252, 259, 0, 265, + 256, 257, 259, 0, 0, 269, 0, 277, 264, 0, + 269, 272, 0, 267, 274, 0, 0, 0, 280, 282, + 303, 303, 0, 301, 308, 0, 295, 313, 314, 0, + 0, 301, 0, 317, 319, 320, 0, 0, 0, 319, + 0, 309, 0, 310, 326, 313, 331, 318, 330, 319, + 0, 0, 0, 0, 93, 0, 0, 85, 338, 0, + + 56, 0, 0, 0, 328, 337, 338, 353, 352, 344, + 355, 0, 357, 351, 353, 354, 368, 356, 357, 369, + 375, 367, 367, 0, 370, 369, 381, 371, 373, 375, + 374, 378, 390, 389, 0, 398, 394, 0, 391, 0, + 470, 455, 459, 81, 463, 465 } ; -static const flex_int16_t yy_def[226] = +static const flex_int16_t yy_def[247] = { 0, - 221, 1, 222, 222, 221, 221, 221, 221, 221, 221, - 223, 221, 221, 221, 221, 221, 221, 221, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 221, 221, 221, - 221, 221, 223, 221, 221, 225, 221, 221, 221, 221, - 221, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 221, 225, 221, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 0, 221, 221, 221, 221 + 241, 1, 242, 242, 241, 241, 241, 241, 241, 241, + 243, 241, 241, 241, 241, 241, 241, 241, 241, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 241, + 241, 241, 241, 241, 243, 241, 241, 245, 246, 241, + 241, 241, 241, 241, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 241, 245, 246, 241, 244, 244, 244, 244, + + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 0, 241, 241, 241, 241, 241 } ; -static const flex_int16_t yy_nxt[504] = +static const flex_int16_t yy_nxt[540] = { 0, 6, 7, 8, 9, 10, 11, 12, 12, 12, 13, - 12, 14, 12, 15, 16, 12, 17, 12, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 29, 30, 29, 31, 29, 29, 32, 33, 34, 35, - 36, 37, 29, 29, 6, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 29, 30, 29, 31, - 29, 32, 33, 34, 35, 36, 37, 29, 29, 46, - 53, 48, 45, 45, 49, 50, 58, 56, 61, 63, - 71, 65, 54, 59, 52, 68, 60, 55, 75, 64, - 192, 62, 66, 72, 190, 69, 53, 57, 67, 70, - - 76, 88, 58, 56, 61, 63, 71, 65, 54, 59, - 68, 60, 55, 75, 64, 81, 62, 83, 66, 72, - 73, 69, 57, 67, 77, 70, 76, 78, 74, 84, - 85, 48, 82, 45, 89, 90, 91, 92, 88, 79, - 80, 81, 93, 83, 94, 96, 73, 99, 100, 101, - 77, 106, 95, 78, 74, 84, 85, 82, 102, 97, - 89, 90, 91, 92, 79, 80, 98, 103, 93, 104, - 94, 96, 105, 99, 100, 101, 106, 95, 107, 111, - 113, 108, 44, 112, 102, 97, 114, 115, 118, 119, - 120, 98, 116, 103, 121, 104, 109, 110, 105, 122, - - 117, 123, 124, 125, 107, 111, 113, 108, 112, 126, - 127, 129, 114, 115, 118, 119, 120, 128, 116, 130, - 121, 109, 110, 131, 122, 117, 132, 123, 124, 125, - 133, 134, 135, 138, 126, 136, 127, 129, 137, 139, - 40, 140, 128, 141, 142, 130, 143, 144, 145, 131, - 146, 147, 132, 148, 149, 152, 133, 134, 135, 138, - 136, 150, 151, 137, 153, 139, 140, 154, 158, 141, - 142, 155, 143, 144, 145, 156, 146, 147, 157, 148, - 149, 152, 159, 86, 160, 161, 150, 151, 162, 163, - 153, 164, 166, 154, 158, 165, 155, 167, 51, 168, - - 156, 169, 170, 157, 171, 172, 173, 174, 159, 160, - 161, 175, 176, 162, 177, 163, 178, 164, 166, 179, - 165, 180, 181, 167, 168, 182, 169, 170, 183, 184, - 171, 172, 173, 174, 185, 186, 175, 187, 176, 188, - 177, 178, 189, 191, 193, 179, 195, 180, 181, 194, - 196, 182, 197, 183, 198, 184, 199, 47, 200, 185, - 201, 186, 187, 202, 205, 188, 203, 189, 204, 191, - 193, 206, 195, 207, 194, 208, 196, 209, 197, 210, - 198, 211, 199, 200, 212, 201, 213, 214, 215, 202, - 205, 203, 216, 204, 217, 218, 219, 206, 220, 207, - - 45, 208, 44, 209, 42, 210, 41, 211, 40, 221, - 212, 213, 39, 214, 215, 39, 221, 221, 216, 221, - 217, 218, 219, 220, 38, 38, 38, 43, 43, 43, - 87, 221, 87, 5, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - - 221, 221, 221 + 12, 14, 15, 16, 17, 12, 18, 12, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 30, 33, 30, 30, 34, 35, 36, 37, + 38, 39, 30, 30, 6, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 30, 33, + 30, 34, 35, 36, 37, 38, 39, 30, 30, 48, + 56, 51, 47, 47, 52, 53, 61, 59, 64, 66, + 74, 68, 57, 62, 55, 71, 63, 58, 51, 67, + 47, 65, 69, 75, 76, 72, 56, 60, 70, 73, + + 208, 83, 61, 59, 64, 66, 74, 68, 57, 62, + 71, 63, 58, 88, 67, 114, 65, 121, 69, 75, + 76, 72, 60, 70, 77, 73, 79, 83, 84, 206, + 89, 85, 78, 90, 80, 91, 92, 205, 81, 88, + 114, 82, 121, 86, 87, 97, 98, 99, 100, 101, + 77, 104, 79, 107, 84, 89, 102, 85, 78, 90, + 80, 91, 92, 81, 103, 108, 82, 109, 86, 87, + 110, 97, 98, 99, 100, 101, 105, 104, 111, 107, + 112, 113, 102, 106, 115, 116, 119, 120, 122, 103, + 123, 108, 124, 109, 125, 126, 110, 127, 129, 96, + + 117, 118, 105, 130, 111, 128, 112, 113, 106, 131, + 115, 116, 119, 120, 122, 132, 123, 133, 124, 125, + 134, 126, 135, 127, 129, 117, 118, 136, 138, 130, + 128, 137, 139, 140, 141, 131, 142, 143, 144, 145, + 146, 132, 133, 147, 148, 149, 134, 150, 135, 151, + 152, 153, 154, 136, 138, 155, 137, 139, 156, 140, + 141, 157, 142, 143, 144, 145, 146, 158, 147, 148, + 159, 149, 160, 150, 151, 161, 152, 153, 154, 162, + 165, 155, 163, 164, 156, 166, 167, 157, 168, 169, + 170, 171, 172, 158, 173, 174, 159, 175, 160, 176, + + 177, 161, 178, 179, 180, 162, 165, 163, 164, 181, + 182, 166, 167, 168, 169, 170, 183, 171, 172, 173, + 174, 184, 175, 185, 186, 176, 177, 178, 187, 179, + 180, 188, 96, 189, 181, 182, 190, 191, 46, 192, + 193, 183, 194, 195, 196, 199, 184, 197, 198, 185, + 186, 200, 201, 203, 187, 202, 204, 188, 189, 207, + 209, 211, 190, 191, 192, 210, 193, 212, 194, 195, + 196, 199, 197, 198, 213, 214, 200, 215, 201, 203, + 202, 204, 216, 217, 220, 207, 209, 211, 218, 219, + 210, 221, 224, 212, 222, 223, 225, 226, 227, 228, + + 213, 214, 229, 215, 230, 231, 232, 234, 216, 217, + 220, 233, 235, 218, 219, 236, 237, 221, 224, 222, + 223, 238, 225, 226, 227, 228, 239, 42, 229, 240, + 230, 231, 232, 234, 93, 54, 233, 50, 235, 49, + 47, 236, 237, 46, 44, 43, 42, 238, 241, 41, + 41, 241, 239, 241, 240, 40, 40, 40, 40, 45, + 45, 45, 45, 94, 241, 94, 94, 95, 95, 5, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241 } ; -static const flex_int16_t yy_chk[504] = +static const flex_int16_t yy_chk[540] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -587,55 +596,58 @@ static const flex_int16_t yy_chk[504] = 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, 14, - 19, 16, 14, 16, 17, 17, 21, 20, 22, 23, - 27, 24, 19, 21, 224, 25, 21, 19, 31, 23, - 186, 22, 24, 28, 181, 26, 19, 20, 24, 26, - - 32, 88, 21, 20, 22, 23, 27, 24, 19, 21, - 25, 21, 19, 31, 23, 34, 22, 35, 24, 28, - 30, 26, 20, 24, 33, 26, 32, 33, 30, 36, - 37, 45, 34, 45, 53, 54, 55, 56, 48, 33, - 33, 34, 58, 35, 59, 60, 30, 62, 63, 64, - 33, 69, 59, 33, 30, 36, 37, 34, 65, 61, - 53, 54, 55, 56, 33, 33, 61, 66, 58, 67, - 59, 60, 68, 62, 63, 64, 69, 59, 70, 72, - 74, 71, 43, 73, 65, 61, 75, 76, 78, 79, - 80, 61, 77, 66, 81, 67, 71, 71, 68, 82, - - 77, 83, 84, 85, 70, 72, 74, 71, 73, 89, - 92, 94, 75, 76, 78, 79, 80, 93, 77, 95, - 81, 71, 71, 96, 82, 77, 97, 83, 84, 85, - 98, 99, 100, 103, 89, 101, 92, 94, 102, 104, - 40, 105, 93, 106, 107, 95, 108, 109, 110, 96, - 111, 114, 97, 115, 116, 121, 98, 99, 100, 103, - 101, 118, 119, 102, 122, 104, 105, 123, 127, 106, - 107, 124, 108, 109, 110, 125, 111, 114, 126, 115, - 116, 121, 129, 39, 130, 131, 118, 119, 132, 135, - 122, 137, 140, 123, 127, 138, 124, 141, 18, 143, - - 125, 144, 147, 126, 148, 149, 151, 152, 129, 130, - 131, 154, 155, 132, 156, 135, 159, 137, 140, 161, - 138, 162, 163, 141, 143, 167, 144, 147, 169, 171, - 148, 149, 151, 152, 172, 173, 154, 174, 155, 175, - 156, 159, 176, 184, 190, 161, 191, 162, 163, 190, - 192, 167, 193, 169, 194, 171, 196, 15, 197, 172, - 198, 173, 174, 199, 202, 175, 200, 176, 201, 184, - 190, 203, 191, 204, 190, 205, 192, 206, 193, 207, - 194, 208, 196, 197, 209, 198, 210, 211, 212, 199, - 202, 200, 213, 201, 214, 216, 217, 203, 219, 204, - - 13, 205, 11, 206, 10, 207, 9, 208, 7, 5, - 209, 210, 4, 211, 212, 3, 0, 0, 213, 0, - 214, 216, 217, 219, 222, 222, 222, 223, 223, 223, - 225, 0, 225, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - - 221, 221, 221 + 20, 17, 14, 17, 18, 18, 22, 21, 23, 24, + 28, 25, 20, 22, 244, 26, 22, 20, 47, 24, + 47, 23, 25, 29, 31, 27, 20, 21, 25, 27, + + 201, 34, 22, 21, 23, 24, 28, 25, 20, 22, + 26, 22, 20, 36, 24, 72, 23, 77, 25, 29, + 31, 27, 21, 25, 32, 27, 33, 34, 35, 198, + 36, 35, 32, 37, 33, 38, 39, 195, 33, 36, + 72, 33, 77, 35, 35, 56, 57, 58, 59, 61, + 32, 63, 33, 65, 35, 36, 62, 35, 32, 37, + 33, 38, 39, 33, 62, 66, 33, 67, 35, 35, + 68, 56, 57, 58, 59, 61, 64, 63, 69, 65, + 70, 71, 62, 64, 73, 74, 75, 76, 78, 62, + 79, 66, 81, 67, 82, 83, 68, 84, 85, 96, + + 74, 74, 64, 86, 69, 84, 70, 71, 64, 87, + 73, 74, 75, 76, 78, 88, 79, 89, 81, 82, + 90, 83, 91, 84, 85, 74, 74, 92, 100, 86, + 84, 97, 101, 102, 103, 87, 104, 105, 106, 107, + 108, 88, 89, 109, 110, 111, 90, 112, 91, 113, + 114, 115, 116, 92, 100, 117, 97, 101, 118, 102, + 103, 119, 104, 105, 106, 107, 108, 120, 109, 110, + 124, 111, 125, 112, 113, 126, 114, 115, 116, 127, + 132, 117, 129, 130, 118, 133, 134, 119, 135, 136, + 137, 138, 140, 120, 141, 142, 124, 143, 125, 146, + + 148, 126, 149, 151, 152, 127, 132, 129, 130, 154, + 155, 133, 134, 135, 136, 137, 159, 138, 140, 141, + 142, 160, 143, 161, 162, 146, 148, 149, 164, 151, + 152, 165, 51, 167, 154, 155, 168, 169, 45, 172, + 174, 159, 175, 176, 180, 185, 160, 182, 184, 161, + 162, 186, 187, 189, 164, 188, 190, 165, 167, 199, + 205, 206, 168, 169, 172, 205, 174, 207, 175, 176, + 180, 185, 182, 184, 208, 209, 186, 210, 187, 189, + 188, 190, 211, 213, 216, 199, 205, 206, 214, 215, + 205, 217, 220, 207, 218, 219, 221, 222, 223, 225, + + 208, 209, 226, 210, 227, 228, 229, 231, 211, 213, + 216, 230, 232, 214, 215, 233, 234, 217, 220, 218, + 219, 236, 221, 222, 223, 225, 237, 42, 226, 239, + 227, 228, 229, 231, 41, 19, 230, 16, 232, 15, + 13, 233, 234, 11, 10, 9, 7, 236, 5, 4, + 3, 0, 237, 0, 239, 242, 242, 242, 242, 243, + 243, 243, 243, 245, 0, 245, 245, 246, 246, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241 } ; static yy_state_type yy_last_accepting_state; @@ -677,9 +689,9 @@ char *yytext; } \ } -#line 681 "lex.yy.c" +#line 693 "lex.yy.c" -#line 683 "lex.yy.c" +#line 695 "lex.yy.c" #define INITIAL 0 #define STATE_COMMENT 1 @@ -913,11 +925,11 @@ YY_DECL } { -#line 46 "lex.l" +#line 47 "lex.l" -#line 48 "lex.l" +#line 49 "lex.l" /* block comment */ -#line 921 "lex.yy.c" +#line 933 "lex.yy.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -944,13 +956,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 222 ) + if ( yy_current_state >= 242 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 434 ); + while ( yy_base[yy_current_state] != 470 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -976,344 +988,372 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 49 "lex.l" +#line 50 "lex.l" { BEGIN(STATE_COMMENT); } YY_BREAK case 2: YY_RULE_SETUP -#line 50 "lex.l" +#line 51 "lex.l" { BEGIN(INITIAL); } YY_BREAK case 3: /* rule 3 can match eol */ YY_RULE_SETUP -#line 51 "lex.l" +#line 52 "lex.l" { /* ignore the text of the comment */ } YY_BREAK case 4: YY_RULE_SETUP -#line 52 "lex.l" +#line 53 "lex.l" { /* ignore *'s that aren't part of */ } YY_BREAK /* single line comment */ case 5: YY_RULE_SETUP -#line 54 "lex.l" +#line 55 "lex.l" { /* ignore single line comment */ } YY_BREAK /* white space and new line */ case 6: YY_RULE_SETUP -#line 56 "lex.l" +#line 57 "lex.l" { /* ignore white space */ } YY_BREAK case 7: /* rule 7 can match eol */ YY_RULE_SETUP -#line 57 "lex.l" +#line 58 "lex.l" { /* ignore new line */ } YY_BREAK /* keywords */ case 8: YY_RULE_SETUP -#line 59 "lex.l" +#line 60 "lex.l" { return SHOW; } YY_BREAK case 9: YY_RULE_SETUP -#line 60 "lex.l" +#line 61 "lex.l" { return TXN_BEGIN; } YY_BREAK case 10: YY_RULE_SETUP -#line 61 "lex.l" +#line 62 "lex.l" { return TXN_COMMIT; } YY_BREAK case 11: YY_RULE_SETUP -#line 62 "lex.l" +#line 63 "lex.l" { return TXN_ABORT; } YY_BREAK case 12: YY_RULE_SETUP -#line 63 "lex.l" +#line 64 "lex.l" { return TXN_ROLLBACK; } YY_BREAK case 13: YY_RULE_SETUP -#line 64 "lex.l" +#line 65 "lex.l" { return TABLES; } YY_BREAK case 14: YY_RULE_SETUP -#line 65 "lex.l" +#line 66 "lex.l" { return CREATE; } YY_BREAK case 15: YY_RULE_SETUP -#line 66 "lex.l" +#line 67 "lex.l" { return TABLE; } YY_BREAK case 16: YY_RULE_SETUP -#line 67 "lex.l" +#line 68 "lex.l" { return DROP; } YY_BREAK case 17: YY_RULE_SETUP -#line 68 "lex.l" +#line 69 "lex.l" { return DESC; } YY_BREAK case 18: YY_RULE_SETUP -#line 69 "lex.l" +#line 70 "lex.l" { return INSERT; } YY_BREAK case 19: YY_RULE_SETUP -#line 70 "lex.l" +#line 71 "lex.l" { return INTO; } YY_BREAK case 20: YY_RULE_SETUP -#line 71 "lex.l" +#line 72 "lex.l" { return VALUES; } YY_BREAK case 21: YY_RULE_SETUP -#line 72 "lex.l" +#line 73 "lex.l" { return DELETE; } YY_BREAK case 22: YY_RULE_SETUP -#line 73 "lex.l" +#line 74 "lex.l" { return FROM; } YY_BREAK case 23: YY_RULE_SETUP -#line 74 "lex.l" +#line 75 "lex.l" { return WHERE; } YY_BREAK case 24: YY_RULE_SETUP -#line 75 "lex.l" +#line 76 "lex.l" { return UPDATE; } YY_BREAK case 25: YY_RULE_SETUP -#line 76 "lex.l" +#line 77 "lex.l" { return SET; } YY_BREAK case 26: YY_RULE_SETUP -#line 77 "lex.l" +#line 78 "lex.l" { return SELECT; } YY_BREAK case 27: YY_RULE_SETUP -#line 78 "lex.l" +#line 79 "lex.l" { return INT; } YY_BREAK case 28: YY_RULE_SETUP -#line 79 "lex.l" +#line 80 "lex.l" { return CHAR; } YY_BREAK case 29: YY_RULE_SETUP -#line 80 "lex.l" +#line 81 "lex.l" { return FLOAT; } YY_BREAK case 30: YY_RULE_SETUP -#line 81 "lex.l" +#line 82 "lex.l" { return INDEX; } YY_BREAK case 31: YY_RULE_SETUP -#line 82 "lex.l" +#line 83 "lex.l" { return AND; } YY_BREAK case 32: YY_RULE_SETUP -#line 83 "lex.l" +#line 84 "lex.l" {return JOIN;} YY_BREAK case 33: YY_RULE_SETUP -#line 84 "lex.l" +#line 85 "lex.l" { return EXIT; } YY_BREAK case 34: YY_RULE_SETUP -#line 85 "lex.l" +#line 86 "lex.l" { return HELP; } YY_BREAK case 35: YY_RULE_SETUP -#line 86 "lex.l" +#line 87 "lex.l" { return ORDER; } YY_BREAK case 36: YY_RULE_SETUP -#line 87 "lex.l" +#line 88 "lex.l" { return BY; } YY_BREAK case 37: YY_RULE_SETUP -#line 88 "lex.l" +#line 89 "lex.l" { return ASC; } YY_BREAK case 38: YY_RULE_SETUP -#line 89 "lex.l" +#line 90 "lex.l" { return ENABLE_NESTLOOP; } YY_BREAK case 39: YY_RULE_SETUP -#line 90 "lex.l" +#line 91 "lex.l" { return ENABLE_SORTMERGE; } YY_BREAK case 40: YY_RULE_SETUP -#line 91 "lex.l" +#line 92 "lex.l" { return COUNT; } YY_BREAK case 41: YY_RULE_SETUP -#line 92 "lex.l" +#line 93 "lex.l" { return MAX; } YY_BREAK case 42: YY_RULE_SETUP -#line 93 "lex.l" +#line 94 "lex.l" { return MIN; } YY_BREAK case 43: YY_RULE_SETUP -#line 94 "lex.l" +#line 95 "lex.l" { return SUM; } YY_BREAK case 44: YY_RULE_SETUP -#line 95 "lex.l" +#line 96 "lex.l" { return AS; } YY_BREAK case 45: YY_RULE_SETUP -#line 96 "lex.l" +#line 97 "lex.l" { return GROUP; } YY_BREAK case 46: YY_RULE_SETUP -#line 97 "lex.l" +#line 98 "lex.l" { return HAVING; } YY_BREAK case 47: YY_RULE_SETUP -#line 98 "lex.l" +#line 99 "lex.l" { return IN; } YY_BREAK case 48: YY_RULE_SETUP -#line 99 "lex.l" +#line 100 "lex.l" { return STATIC_CHECKPOINT; } YY_BREAK case 49: YY_RULE_SETUP -#line 100 "lex.l" +#line 101 "lex.l" +{ return LOAD; } + YY_BREAK +case 50: +YY_RULE_SETUP +#line 102 "lex.l" +{ return OUTPUT_FILE; } + YY_BREAK +case 51: +YY_RULE_SETUP +#line 103 "lex.l" +{ return ON; } + YY_BREAK +case 52: +YY_RULE_SETUP +#line 104 "lex.l" +{ return OFF; } + YY_BREAK +case 53: +YY_RULE_SETUP +#line 105 "lex.l" { yylval->sv_bool = true; return VALUE_BOOL; } YY_BREAK -case 50: +case 54: YY_RULE_SETUP -#line 104 "lex.l" +#line 109 "lex.l" { yylval->sv_bool = false; return VALUE_BOOL; } YY_BREAK /* operators */ -case 51: +case 55: YY_RULE_SETUP -#line 109 "lex.l" +#line 114 "lex.l" { return GEQ; } YY_BREAK -case 52: +case 56: YY_RULE_SETUP -#line 110 "lex.l" +#line 115 "lex.l" { return LEQ; } YY_BREAK -case 53: +case 57: YY_RULE_SETUP -#line 111 "lex.l" +#line 116 "lex.l" { return NEQ; } YY_BREAK -case 54: +case 58: YY_RULE_SETUP -#line 112 "lex.l" +#line 117 "lex.l" { return NEQ; } YY_BREAK -case 55: +case 59: YY_RULE_SETUP -#line 113 "lex.l" +#line 118 "lex.l" { return yytext[0]; } YY_BREAK /* id */ -case 56: +case 60: YY_RULE_SETUP -#line 115 "lex.l" +#line 120 "lex.l" { yylval->sv_str = yytext; return IDENTIFIER; } YY_BREAK /* literals */ -case 57: +case 61: YY_RULE_SETUP -#line 120 "lex.l" +#line 125 "lex.l" { yylval->sv_int = atoi(yytext); return VALUE_INT; } YY_BREAK -case 58: +case 62: YY_RULE_SETUP -#line 124 "lex.l" +#line 129 "lex.l" { yylval->sv_float = atof(yytext); return VALUE_FLOAT; } YY_BREAK -case 59: -/* rule 59 can match eol */ +case 63: +/* rule 63 can match eol */ YY_RULE_SETUP -#line 128 "lex.l" +#line 133 "lex.l" { yylval->sv_str = std::string(yytext + 1, strlen(yytext) - 2); return VALUE_STRING; } YY_BREAK +case 64: +YY_RULE_SETUP +#line 137 "lex.l" +{ + yylval->sv_str = yytext; + return FILE_PATH; +} + YY_BREAK /* EOF */ case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(STATE_COMMENT): -#line 133 "lex.l" +#line 142 "lex.l" { return T_EOF; } YY_BREAK /* unexpected char */ -case 60: +case 65: YY_RULE_SETUP -#line 135 "lex.l" +#line 144 "lex.l" { std::cerr << "Lexer Error: unexpected character " << yytext[0] << std::endl; } YY_BREAK -case 61: +case 66: YY_RULE_SETUP -#line 136 "lex.l" +#line 145 "lex.l" ECHO; YY_BREAK -#line 1317 "lex.yy.c" +#line 1357 "lex.yy.c" case YY_END_OF_BUFFER: { @@ -1608,7 +1648,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 222 ) + if ( yy_current_state >= 242 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -1636,11 +1676,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 222 ) + if ( yy_current_state >= 242 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 221); + yy_is_jam = (yy_current_state == 241); return yy_is_jam ? 0 : yy_current_state; } @@ -2279,6 +2319,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 136 "lex.l" +#line 145 "lex.l" diff --git a/src/parser/lex.yy.cpp b/src/parser/lex.yy.cpp index 8c726eb24b0b2f89ca3aa5d92cc0f526759cd058..e69f209e40221c9dfaf6b18b30ded20100ce30e2 100644 --- a/src/parser/lex.yy.cpp +++ b/src/parser/lex.yy.cpp @@ -379,8 +379,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 61 -#define YY_END_OF_BUFFER 62 +#define YY_NUM_RULES 66 +#define YY_END_OF_BUFFER 67 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -388,32 +388,34 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[222] = +static const flex_int16_t yy_accept[242] = { 0, - 0, 0, 0, 0, 62, 60, 6, 7, 7, 60, - 60, 55, 60, 60, 60, 57, 55, 55, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 3, 4, 6, - 7, 54, 0, 59, 57, 5, 1, 58, 52, 53, - 51, 56, 56, 56, 44, 56, 36, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 47, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 2, 5, 58, 56, 31, - 37, 56, 56, 56, 56, 56, 56, 56, 56, 56, - - 56, 56, 56, 56, 56, 56, 56, 56, 56, 27, - 56, 41, 42, 56, 56, 56, 25, 56, 56, 43, - 56, 56, 56, 56, 56, 56, 56, 28, 56, 56, - 56, 56, 17, 16, 56, 33, 56, 56, 22, 56, - 56, 34, 56, 56, 19, 32, 56, 56, 56, 8, - 56, 56, 49, 56, 56, 56, 11, 9, 56, 40, - 56, 56, 56, 50, 29, 45, 56, 30, 56, 35, - 56, 56, 56, 15, 56, 56, 23, 10, 14, 21, - 56, 46, 18, 56, 26, 56, 13, 24, 20, 56, - 56, 56, 56, 56, 12, 56, 56, 56, 56, 56, - - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 38, 56, 56, 39, 56, 48, + 0, 0, 0, 0, 67, 65, 6, 7, 7, 65, + 65, 59, 65, 65, 59, 65, 61, 59, 59, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 3, + 4, 6, 7, 58, 0, 63, 61, 5, 0, 1, + 62, 56, 57, 55, 60, 60, 60, 44, 60, 36, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 47, 60, 60, 60, 60, 60, 51, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 2, 5, 64, 62, 60, 31, 37, 60, + + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 27, 60, 60, + 41, 42, 52, 60, 60, 60, 60, 25, 60, 60, + 43, 60, 60, 60, 60, 60, 60, 60, 28, 60, + 60, 60, 60, 17, 16, 60, 33, 60, 60, 22, + 60, 60, 34, 60, 60, 19, 32, 49, 60, 60, + 60, 60, 8, 60, 60, 53, 60, 60, 60, 11, + 9, 60, 40, 60, 60, 60, 54, 29, 45, 60, + 30, 60, 35, 60, 60, 60, 60, 15, 60, 60, + 23, 10, 14, 21, 60, 46, 18, 60, 60, 26, + + 60, 13, 24, 20, 60, 60, 60, 60, 60, 60, + 60, 12, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 50, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 38, 60, 60, 39, 60, 48, 0 } ; @@ -452,133 +454,140 @@ static const YY_CHAR yy_ec[256] = static const YY_CHAR yy_meta[70] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3 + 1, 3, 3, 3, 4, 1, 1, 1, 1, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4 } ; -static const flex_int16_t yy_base[226] = +static const flex_int16_t yy_base[247] = { 0, - 0, 0, 407, 404, 410, 434, 407, 434, 404, 387, - 397, 434, 386, 58, 349, 59, 57, 281, 50, 54, - 50, 55, 47, 62, 49, 76, 48, 60, 0, 101, - 52, 67, 101, 96, 83, 110, 104, 434, 270, 239, - 434, 434, 177, 434, 119, 0, 434, 124, 434, 434, - 434, 0, 101, 113, 115, 112, 0, 123, 113, 122, - 129, 114, 129, 122, 128, 134, 136, 139, 111, 148, - 159, 152, 141, 148, 164, 157, 162, 155, 170, 159, - 174, 160, 179, 172, 180, 434, 0, 87, 173, 0, - 0, 183, 181, 180, 187, 204, 203, 209, 197, 212, - - 197, 201, 214, 208, 202, 216, 210, 223, 224, 215, - 218, 0, 0, 228, 223, 231, 0, 220, 224, 0, - 225, 241, 248, 232, 239, 240, 236, 0, 255, 246, - 247, 250, 0, 0, 259, 0, 268, 257, 0, 258, - 265, 0, 257, 265, 0, 0, 266, 284, 284, 0, - 279, 284, 0, 273, 289, 291, 0, 0, 278, 0, - 296, 298, 299, 0, 0, 0, 300, 0, 290, 0, - 310, 296, 314, 300, 316, 305, 0, 0, 0, 0, - 50, 0, 0, 322, 0, 46, 0, 0, 0, 312, - 317, 329, 329, 321, 0, 330, 321, 324, 340, 328, - - 330, 343, 341, 342, 346, 344, 356, 347, 351, 350, - 354, 354, 367, 367, 0, 372, 364, 0, 360, 0, - 434, 424, 427, 82, 430 + 0, 0, 442, 441, 449, 470, 445, 470, 443, 427, + 438, 470, 426, 58, 427, 429, 59, 57, 418, 50, + 54, 50, 55, 47, 62, 49, 76, 48, 60, 0, + 61, 105, 102, 68, 105, 94, 99, 116, 110, 470, + 421, 426, 470, 470, 333, 470, 76, 0, 0, 470, + 318, 470, 470, 470, 0, 112, 124, 126, 123, 0, + 130, 125, 128, 146, 120, 146, 140, 140, 145, 147, + 148, 75, 154, 163, 159, 168, 75, 156, 166, 0, + 170, 156, 165, 167, 165, 184, 178, 195, 178, 198, + 192, 204, 470, 0, 0, 185, 195, 0, 0, 201, + + 196, 202, 202, 217, 214, 217, 205, 220, 205, 207, + 226, 216, 210, 223, 217, 229, 232, 225, 229, 245, + 0, 0, 0, 247, 238, 245, 256, 0, 241, 245, + 0, 250, 262, 267, 249, 253, 252, 259, 0, 265, + 256, 257, 259, 0, 0, 269, 0, 277, 264, 0, + 269, 272, 0, 267, 274, 0, 0, 0, 280, 282, + 303, 303, 0, 301, 308, 0, 295, 313, 314, 0, + 0, 301, 0, 317, 319, 320, 0, 0, 0, 319, + 0, 309, 0, 310, 326, 313, 331, 318, 330, 319, + 0, 0, 0, 0, 93, 0, 0, 85, 338, 0, + + 56, 0, 0, 0, 328, 337, 338, 353, 352, 344, + 355, 0, 357, 351, 353, 354, 368, 356, 357, 369, + 375, 367, 367, 0, 370, 369, 381, 371, 373, 375, + 374, 378, 390, 389, 0, 398, 394, 0, 391, 0, + 470, 455, 459, 81, 463, 465 } ; -static const flex_int16_t yy_def[226] = +static const flex_int16_t yy_def[247] = { 0, - 221, 1, 222, 222, 221, 221, 221, 221, 221, 221, - 223, 221, 221, 221, 221, 221, 221, 221, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 221, 221, 221, - 221, 221, 223, 221, 221, 225, 221, 221, 221, 221, - 221, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 221, 225, 221, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 0, 221, 221, 221, 221 + 241, 1, 242, 242, 241, 241, 241, 241, 241, 241, + 243, 241, 241, 241, 241, 241, 241, 241, 241, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 241, + 241, 241, 241, 241, 243, 241, 241, 245, 246, 241, + 241, 241, 241, 241, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 241, 245, 246, 241, 244, 244, 244, 244, + + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 0, 241, 241, 241, 241, 241 } ; -static const flex_int16_t yy_nxt[504] = +static const flex_int16_t yy_nxt[540] = { 0, 6, 7, 8, 9, 10, 11, 12, 12, 12, 13, - 12, 14, 12, 15, 16, 12, 17, 12, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 29, 30, 29, 31, 29, 29, 32, 33, 34, 35, - 36, 37, 29, 29, 6, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 29, 30, 29, 31, - 29, 32, 33, 34, 35, 36, 37, 29, 29, 46, - 53, 48, 45, 45, 49, 50, 58, 56, 61, 63, - 71, 65, 54, 59, 52, 68, 60, 55, 75, 64, - 192, 62, 66, 72, 190, 69, 53, 57, 67, 70, - - 76, 88, 58, 56, 61, 63, 71, 65, 54, 59, - 68, 60, 55, 75, 64, 81, 62, 83, 66, 72, - 73, 69, 57, 67, 77, 70, 76, 78, 74, 84, - 85, 48, 82, 45, 89, 90, 91, 92, 88, 79, - 80, 81, 93, 83, 94, 96, 73, 99, 100, 101, - 77, 106, 95, 78, 74, 84, 85, 82, 102, 97, - 89, 90, 91, 92, 79, 80, 98, 103, 93, 104, - 94, 96, 105, 99, 100, 101, 106, 95, 107, 111, - 113, 108, 44, 112, 102, 97, 114, 115, 118, 119, - 120, 98, 116, 103, 121, 104, 109, 110, 105, 122, - - 117, 123, 124, 125, 107, 111, 113, 108, 112, 126, - 127, 129, 114, 115, 118, 119, 120, 128, 116, 130, - 121, 109, 110, 131, 122, 117, 132, 123, 124, 125, - 133, 134, 135, 138, 126, 136, 127, 129, 137, 139, - 40, 140, 128, 141, 142, 130, 143, 144, 145, 131, - 146, 147, 132, 148, 149, 152, 133, 134, 135, 138, - 136, 150, 151, 137, 153, 139, 140, 154, 158, 141, - 142, 155, 143, 144, 145, 156, 146, 147, 157, 148, - 149, 152, 159, 86, 160, 161, 150, 151, 162, 163, - 153, 164, 166, 154, 158, 165, 155, 167, 51, 168, - - 156, 169, 170, 157, 171, 172, 173, 174, 159, 160, - 161, 175, 176, 162, 177, 163, 178, 164, 166, 179, - 165, 180, 181, 167, 168, 182, 169, 170, 183, 184, - 171, 172, 173, 174, 185, 186, 175, 187, 176, 188, - 177, 178, 189, 191, 193, 179, 195, 180, 181, 194, - 196, 182, 197, 183, 198, 184, 199, 47, 200, 185, - 201, 186, 187, 202, 205, 188, 203, 189, 204, 191, - 193, 206, 195, 207, 194, 208, 196, 209, 197, 210, - 198, 211, 199, 200, 212, 201, 213, 214, 215, 202, - 205, 203, 216, 204, 217, 218, 219, 206, 220, 207, - - 45, 208, 44, 209, 42, 210, 41, 211, 40, 221, - 212, 213, 39, 214, 215, 39, 221, 221, 216, 221, - 217, 218, 219, 220, 38, 38, 38, 43, 43, 43, - 87, 221, 87, 5, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - - 221, 221, 221 + 12, 14, 15, 16, 17, 12, 18, 12, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 30, 33, 30, 30, 34, 35, 36, 37, + 38, 39, 30, 30, 6, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 30, 33, + 30, 34, 35, 36, 37, 38, 39, 30, 30, 48, + 56, 51, 47, 47, 52, 53, 61, 59, 64, 66, + 74, 68, 57, 62, 55, 71, 63, 58, 51, 67, + 47, 65, 69, 75, 76, 72, 56, 60, 70, 73, + + 208, 83, 61, 59, 64, 66, 74, 68, 57, 62, + 71, 63, 58, 88, 67, 114, 65, 121, 69, 75, + 76, 72, 60, 70, 77, 73, 79, 83, 84, 206, + 89, 85, 78, 90, 80, 91, 92, 205, 81, 88, + 114, 82, 121, 86, 87, 97, 98, 99, 100, 101, + 77, 104, 79, 107, 84, 89, 102, 85, 78, 90, + 80, 91, 92, 81, 103, 108, 82, 109, 86, 87, + 110, 97, 98, 99, 100, 101, 105, 104, 111, 107, + 112, 113, 102, 106, 115, 116, 119, 120, 122, 103, + 123, 108, 124, 109, 125, 126, 110, 127, 129, 96, + + 117, 118, 105, 130, 111, 128, 112, 113, 106, 131, + 115, 116, 119, 120, 122, 132, 123, 133, 124, 125, + 134, 126, 135, 127, 129, 117, 118, 136, 138, 130, + 128, 137, 139, 140, 141, 131, 142, 143, 144, 145, + 146, 132, 133, 147, 148, 149, 134, 150, 135, 151, + 152, 153, 154, 136, 138, 155, 137, 139, 156, 140, + 141, 157, 142, 143, 144, 145, 146, 158, 147, 148, + 159, 149, 160, 150, 151, 161, 152, 153, 154, 162, + 165, 155, 163, 164, 156, 166, 167, 157, 168, 169, + 170, 171, 172, 158, 173, 174, 159, 175, 160, 176, + + 177, 161, 178, 179, 180, 162, 165, 163, 164, 181, + 182, 166, 167, 168, 169, 170, 183, 171, 172, 173, + 174, 184, 175, 185, 186, 176, 177, 178, 187, 179, + 180, 188, 96, 189, 181, 182, 190, 191, 46, 192, + 193, 183, 194, 195, 196, 199, 184, 197, 198, 185, + 186, 200, 201, 203, 187, 202, 204, 188, 189, 207, + 209, 211, 190, 191, 192, 210, 193, 212, 194, 195, + 196, 199, 197, 198, 213, 214, 200, 215, 201, 203, + 202, 204, 216, 217, 220, 207, 209, 211, 218, 219, + 210, 221, 224, 212, 222, 223, 225, 226, 227, 228, + + 213, 214, 229, 215, 230, 231, 232, 234, 216, 217, + 220, 233, 235, 218, 219, 236, 237, 221, 224, 222, + 223, 238, 225, 226, 227, 228, 239, 42, 229, 240, + 230, 231, 232, 234, 93, 54, 233, 50, 235, 49, + 47, 236, 237, 46, 44, 43, 42, 238, 241, 41, + 41, 241, 239, 241, 240, 40, 40, 40, 40, 45, + 45, 45, 45, 94, 241, 94, 94, 95, 95, 5, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241 } ; -static const flex_int16_t yy_chk[504] = +static const flex_int16_t yy_chk[540] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -587,55 +596,58 @@ static const flex_int16_t yy_chk[504] = 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, 14, - 19, 16, 14, 16, 17, 17, 21, 20, 22, 23, - 27, 24, 19, 21, 224, 25, 21, 19, 31, 23, - 186, 22, 24, 28, 181, 26, 19, 20, 24, 26, - - 32, 88, 21, 20, 22, 23, 27, 24, 19, 21, - 25, 21, 19, 31, 23, 34, 22, 35, 24, 28, - 30, 26, 20, 24, 33, 26, 32, 33, 30, 36, - 37, 45, 34, 45, 53, 54, 55, 56, 48, 33, - 33, 34, 58, 35, 59, 60, 30, 62, 63, 64, - 33, 69, 59, 33, 30, 36, 37, 34, 65, 61, - 53, 54, 55, 56, 33, 33, 61, 66, 58, 67, - 59, 60, 68, 62, 63, 64, 69, 59, 70, 72, - 74, 71, 43, 73, 65, 61, 75, 76, 78, 79, - 80, 61, 77, 66, 81, 67, 71, 71, 68, 82, - - 77, 83, 84, 85, 70, 72, 74, 71, 73, 89, - 92, 94, 75, 76, 78, 79, 80, 93, 77, 95, - 81, 71, 71, 96, 82, 77, 97, 83, 84, 85, - 98, 99, 100, 103, 89, 101, 92, 94, 102, 104, - 40, 105, 93, 106, 107, 95, 108, 109, 110, 96, - 111, 114, 97, 115, 116, 121, 98, 99, 100, 103, - 101, 118, 119, 102, 122, 104, 105, 123, 127, 106, - 107, 124, 108, 109, 110, 125, 111, 114, 126, 115, - 116, 121, 129, 39, 130, 131, 118, 119, 132, 135, - 122, 137, 140, 123, 127, 138, 124, 141, 18, 143, - - 125, 144, 147, 126, 148, 149, 151, 152, 129, 130, - 131, 154, 155, 132, 156, 135, 159, 137, 140, 161, - 138, 162, 163, 141, 143, 167, 144, 147, 169, 171, - 148, 149, 151, 152, 172, 173, 154, 174, 155, 175, - 156, 159, 176, 184, 190, 161, 191, 162, 163, 190, - 192, 167, 193, 169, 194, 171, 196, 15, 197, 172, - 198, 173, 174, 199, 202, 175, 200, 176, 201, 184, - 190, 203, 191, 204, 190, 205, 192, 206, 193, 207, - 194, 208, 196, 197, 209, 198, 210, 211, 212, 199, - 202, 200, 213, 201, 214, 216, 217, 203, 219, 204, - - 13, 205, 11, 206, 10, 207, 9, 208, 7, 5, - 209, 210, 4, 211, 212, 3, 0, 0, 213, 0, - 214, 216, 217, 219, 222, 222, 222, 223, 223, 223, - 225, 0, 225, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - - 221, 221, 221 + 20, 17, 14, 17, 18, 18, 22, 21, 23, 24, + 28, 25, 20, 22, 244, 26, 22, 20, 47, 24, + 47, 23, 25, 29, 31, 27, 20, 21, 25, 27, + + 201, 34, 22, 21, 23, 24, 28, 25, 20, 22, + 26, 22, 20, 36, 24, 72, 23, 77, 25, 29, + 31, 27, 21, 25, 32, 27, 33, 34, 35, 198, + 36, 35, 32, 37, 33, 38, 39, 195, 33, 36, + 72, 33, 77, 35, 35, 56, 57, 58, 59, 61, + 32, 63, 33, 65, 35, 36, 62, 35, 32, 37, + 33, 38, 39, 33, 62, 66, 33, 67, 35, 35, + 68, 56, 57, 58, 59, 61, 64, 63, 69, 65, + 70, 71, 62, 64, 73, 74, 75, 76, 78, 62, + 79, 66, 81, 67, 82, 83, 68, 84, 85, 96, + + 74, 74, 64, 86, 69, 84, 70, 71, 64, 87, + 73, 74, 75, 76, 78, 88, 79, 89, 81, 82, + 90, 83, 91, 84, 85, 74, 74, 92, 100, 86, + 84, 97, 101, 102, 103, 87, 104, 105, 106, 107, + 108, 88, 89, 109, 110, 111, 90, 112, 91, 113, + 114, 115, 116, 92, 100, 117, 97, 101, 118, 102, + 103, 119, 104, 105, 106, 107, 108, 120, 109, 110, + 124, 111, 125, 112, 113, 126, 114, 115, 116, 127, + 132, 117, 129, 130, 118, 133, 134, 119, 135, 136, + 137, 138, 140, 120, 141, 142, 124, 143, 125, 146, + + 148, 126, 149, 151, 152, 127, 132, 129, 130, 154, + 155, 133, 134, 135, 136, 137, 159, 138, 140, 141, + 142, 160, 143, 161, 162, 146, 148, 149, 164, 151, + 152, 165, 51, 167, 154, 155, 168, 169, 45, 172, + 174, 159, 175, 176, 180, 185, 160, 182, 184, 161, + 162, 186, 187, 189, 164, 188, 190, 165, 167, 199, + 205, 206, 168, 169, 172, 205, 174, 207, 175, 176, + 180, 185, 182, 184, 208, 209, 186, 210, 187, 189, + 188, 190, 211, 213, 216, 199, 205, 206, 214, 215, + 205, 217, 220, 207, 218, 219, 221, 222, 223, 225, + + 208, 209, 226, 210, 227, 228, 229, 231, 211, 213, + 216, 230, 232, 214, 215, 233, 234, 217, 220, 218, + 219, 236, 221, 222, 223, 225, 237, 42, 226, 239, + 227, 228, 229, 231, 41, 19, 230, 16, 232, 15, + 13, 233, 234, 11, 10, 9, 7, 236, 5, 4, + 3, 0, 237, 0, 239, 242, 242, 242, 242, 243, + 243, 243, 243, 245, 0, 245, 245, 246, 246, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241 } ; static yy_state_type yy_last_accepting_state; @@ -677,9 +689,9 @@ char *yytext; } \ } -#line 681 "lex.yy.cpp" +#line 693 "lex.yy.cpp" -#line 683 "lex.yy.cpp" +#line 695 "lex.yy.cpp" #define INITIAL 0 #define STATE_COMMENT 1 @@ -913,11 +925,11 @@ YY_DECL } { -#line 46 "lex.l" +#line 47 "lex.l" -#line 48 "lex.l" +#line 49 "lex.l" /* block comment */ -#line 921 "lex.yy.cpp" +#line 933 "lex.yy.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -944,13 +956,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 222 ) + if ( yy_current_state >= 242 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 434 ); + while ( yy_base[yy_current_state] != 470 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -976,344 +988,372 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 49 "lex.l" +#line 50 "lex.l" { BEGIN(STATE_COMMENT); } YY_BREAK case 2: YY_RULE_SETUP -#line 50 "lex.l" +#line 51 "lex.l" { BEGIN(INITIAL); } YY_BREAK case 3: /* rule 3 can match eol */ YY_RULE_SETUP -#line 51 "lex.l" +#line 52 "lex.l" { /* ignore the text of the comment */ } YY_BREAK case 4: YY_RULE_SETUP -#line 52 "lex.l" +#line 53 "lex.l" { /* ignore *'s that aren't part of */ } YY_BREAK /* single line comment */ case 5: YY_RULE_SETUP -#line 54 "lex.l" +#line 55 "lex.l" { /* ignore single line comment */ } YY_BREAK /* white space and new line */ case 6: YY_RULE_SETUP -#line 56 "lex.l" +#line 57 "lex.l" { /* ignore white space */ } YY_BREAK case 7: /* rule 7 can match eol */ YY_RULE_SETUP -#line 57 "lex.l" +#line 58 "lex.l" { /* ignore new line */ } YY_BREAK /* keywords */ case 8: YY_RULE_SETUP -#line 59 "lex.l" +#line 60 "lex.l" { return SHOW; } YY_BREAK case 9: YY_RULE_SETUP -#line 60 "lex.l" +#line 61 "lex.l" { return TXN_BEGIN; } YY_BREAK case 10: YY_RULE_SETUP -#line 61 "lex.l" +#line 62 "lex.l" { return TXN_COMMIT; } YY_BREAK case 11: YY_RULE_SETUP -#line 62 "lex.l" +#line 63 "lex.l" { return TXN_ABORT; } YY_BREAK case 12: YY_RULE_SETUP -#line 63 "lex.l" +#line 64 "lex.l" { return TXN_ROLLBACK; } YY_BREAK case 13: YY_RULE_SETUP -#line 64 "lex.l" +#line 65 "lex.l" { return TABLES; } YY_BREAK case 14: YY_RULE_SETUP -#line 65 "lex.l" +#line 66 "lex.l" { return CREATE; } YY_BREAK case 15: YY_RULE_SETUP -#line 66 "lex.l" +#line 67 "lex.l" { return TABLE; } YY_BREAK case 16: YY_RULE_SETUP -#line 67 "lex.l" +#line 68 "lex.l" { return DROP; } YY_BREAK case 17: YY_RULE_SETUP -#line 68 "lex.l" +#line 69 "lex.l" { return DESC; } YY_BREAK case 18: YY_RULE_SETUP -#line 69 "lex.l" +#line 70 "lex.l" { return INSERT; } YY_BREAK case 19: YY_RULE_SETUP -#line 70 "lex.l" +#line 71 "lex.l" { return INTO; } YY_BREAK case 20: YY_RULE_SETUP -#line 71 "lex.l" +#line 72 "lex.l" { return VALUES; } YY_BREAK case 21: YY_RULE_SETUP -#line 72 "lex.l" +#line 73 "lex.l" { return DELETE; } YY_BREAK case 22: YY_RULE_SETUP -#line 73 "lex.l" +#line 74 "lex.l" { return FROM; } YY_BREAK case 23: YY_RULE_SETUP -#line 74 "lex.l" +#line 75 "lex.l" { return WHERE; } YY_BREAK case 24: YY_RULE_SETUP -#line 75 "lex.l" +#line 76 "lex.l" { return UPDATE; } YY_BREAK case 25: YY_RULE_SETUP -#line 76 "lex.l" +#line 77 "lex.l" { return SET; } YY_BREAK case 26: YY_RULE_SETUP -#line 77 "lex.l" +#line 78 "lex.l" { return SELECT; } YY_BREAK case 27: YY_RULE_SETUP -#line 78 "lex.l" +#line 79 "lex.l" { return INT; } YY_BREAK case 28: YY_RULE_SETUP -#line 79 "lex.l" +#line 80 "lex.l" { return CHAR; } YY_BREAK case 29: YY_RULE_SETUP -#line 80 "lex.l" +#line 81 "lex.l" { return FLOAT; } YY_BREAK case 30: YY_RULE_SETUP -#line 81 "lex.l" +#line 82 "lex.l" { return INDEX; } YY_BREAK case 31: YY_RULE_SETUP -#line 82 "lex.l" +#line 83 "lex.l" { return AND; } YY_BREAK case 32: YY_RULE_SETUP -#line 83 "lex.l" +#line 84 "lex.l" {return JOIN;} YY_BREAK case 33: YY_RULE_SETUP -#line 84 "lex.l" +#line 85 "lex.l" { return EXIT; } YY_BREAK case 34: YY_RULE_SETUP -#line 85 "lex.l" +#line 86 "lex.l" { return HELP; } YY_BREAK case 35: YY_RULE_SETUP -#line 86 "lex.l" +#line 87 "lex.l" { return ORDER; } YY_BREAK case 36: YY_RULE_SETUP -#line 87 "lex.l" +#line 88 "lex.l" { return BY; } YY_BREAK case 37: YY_RULE_SETUP -#line 88 "lex.l" +#line 89 "lex.l" { return ASC; } YY_BREAK case 38: YY_RULE_SETUP -#line 89 "lex.l" +#line 90 "lex.l" { return ENABLE_NESTLOOP; } YY_BREAK case 39: YY_RULE_SETUP -#line 90 "lex.l" +#line 91 "lex.l" { return ENABLE_SORTMERGE; } YY_BREAK case 40: YY_RULE_SETUP -#line 91 "lex.l" +#line 92 "lex.l" { return COUNT; } YY_BREAK case 41: YY_RULE_SETUP -#line 92 "lex.l" +#line 93 "lex.l" { return MAX; } YY_BREAK case 42: YY_RULE_SETUP -#line 93 "lex.l" +#line 94 "lex.l" { return MIN; } YY_BREAK case 43: YY_RULE_SETUP -#line 94 "lex.l" +#line 95 "lex.l" { return SUM; } YY_BREAK case 44: YY_RULE_SETUP -#line 95 "lex.l" +#line 96 "lex.l" { return AS; } YY_BREAK case 45: YY_RULE_SETUP -#line 96 "lex.l" +#line 97 "lex.l" { return GROUP; } YY_BREAK case 46: YY_RULE_SETUP -#line 97 "lex.l" +#line 98 "lex.l" { return HAVING; } YY_BREAK case 47: YY_RULE_SETUP -#line 98 "lex.l" +#line 99 "lex.l" { return IN; } YY_BREAK case 48: YY_RULE_SETUP -#line 99 "lex.l" +#line 100 "lex.l" { return STATIC_CHECKPOINT; } YY_BREAK case 49: YY_RULE_SETUP -#line 100 "lex.l" +#line 101 "lex.l" +{ return LOAD; } + YY_BREAK +case 50: +YY_RULE_SETUP +#line 102 "lex.l" +{ return OUTPUT_FILE; } + YY_BREAK +case 51: +YY_RULE_SETUP +#line 103 "lex.l" +{ return ON; } + YY_BREAK +case 52: +YY_RULE_SETUP +#line 104 "lex.l" +{ return OFF; } + YY_BREAK +case 53: +YY_RULE_SETUP +#line 105 "lex.l" { yylval->sv_bool = true; return VALUE_BOOL; } YY_BREAK -case 50: +case 54: YY_RULE_SETUP -#line 104 "lex.l" +#line 109 "lex.l" { yylval->sv_bool = false; return VALUE_BOOL; } YY_BREAK /* operators */ -case 51: +case 55: YY_RULE_SETUP -#line 109 "lex.l" +#line 114 "lex.l" { return GEQ; } YY_BREAK -case 52: +case 56: YY_RULE_SETUP -#line 110 "lex.l" +#line 115 "lex.l" { return LEQ; } YY_BREAK -case 53: +case 57: YY_RULE_SETUP -#line 111 "lex.l" +#line 116 "lex.l" { return NEQ; } YY_BREAK -case 54: +case 58: YY_RULE_SETUP -#line 112 "lex.l" +#line 117 "lex.l" { return NEQ; } YY_BREAK -case 55: +case 59: YY_RULE_SETUP -#line 113 "lex.l" +#line 118 "lex.l" { return yytext[0]; } YY_BREAK /* id */ -case 56: +case 60: YY_RULE_SETUP -#line 115 "lex.l" +#line 120 "lex.l" { yylval->sv_str = yytext; return IDENTIFIER; } YY_BREAK /* literals */ -case 57: +case 61: YY_RULE_SETUP -#line 120 "lex.l" +#line 125 "lex.l" { yylval->sv_int = atoi(yytext); return VALUE_INT; } YY_BREAK -case 58: +case 62: YY_RULE_SETUP -#line 124 "lex.l" +#line 129 "lex.l" { yylval->sv_float = atof(yytext); return VALUE_FLOAT; } YY_BREAK -case 59: -/* rule 59 can match eol */ +case 63: +/* rule 63 can match eol */ YY_RULE_SETUP -#line 128 "lex.l" +#line 133 "lex.l" { yylval->sv_str = std::string(yytext + 1, strlen(yytext) - 2); return VALUE_STRING; } YY_BREAK +case 64: +YY_RULE_SETUP +#line 137 "lex.l" +{ + yylval->sv_str = yytext; + return FILE_PATH; +} + YY_BREAK /* EOF */ case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(STATE_COMMENT): -#line 133 "lex.l" +#line 142 "lex.l" { return T_EOF; } YY_BREAK /* unexpected char */ -case 60: +case 65: YY_RULE_SETUP -#line 135 "lex.l" +#line 144 "lex.l" { std::cerr << "Lexer Error: unexpected character " << yytext[0] << std::endl; } YY_BREAK -case 61: +case 66: YY_RULE_SETUP -#line 136 "lex.l" +#line 145 "lex.l" ECHO; YY_BREAK -#line 1317 "lex.yy.cpp" +#line 1357 "lex.yy.cpp" case YY_END_OF_BUFFER: { @@ -1608,7 +1648,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 222 ) + if ( yy_current_state >= 242 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -1636,11 +1676,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 222 ) + if ( yy_current_state >= 242 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 221); + yy_is_jam = (yy_current_state == 241); return yy_is_jam ? 0 : yy_current_state; } @@ -2279,6 +2319,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 136 "lex.l" +#line 145 "lex.l" diff --git a/src/parser/lex.yy.h b/src/parser/lex.yy.h index a897defad273a2ed974a7aa5d9d3273abd8a7be3..5b4cb1a0baec80b3400ab4f74f8a5fa0851e5421 100644 --- a/src/parser/lex.yy.h +++ b/src/parser/lex.yy.h @@ -504,7 +504,7 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 136 "lex.l" +#line 145 "lex.l" #line 511 "lex.yy.h" diff --git a/src/parser/lex.yy.hpp b/src/parser/lex.yy.hpp index adf9b13124fe11c10c2aa24063442113394ad124..7264ca2803f2cfbe9f11b5b74cfb0f5671383ac3 100644 --- a/src/parser/lex.yy.hpp +++ b/src/parser/lex.yy.hpp @@ -504,7 +504,7 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 136 "lex.l" +#line 145 "lex.l" #line 511 "lex.yy.hpp" diff --git a/src/parser/test_parser.cpp b/src/parser/test_parser.cpp index 7bf38d1cab2bf0b541d6cfeed27887573c5370a2..ae494c693fbeb9f62f560062e55253eebbd41b2f 100644 --- a/src/parser/test_parser.cpp +++ b/src/parser/test_parser.cpp @@ -59,7 +59,16 @@ int main() { "select id from grade where score >= (999.0);", // 多级嵌套 "select id from grade where name in (1, 3.45, '4');" }; - for (auto &sql: constValueSubquerySqls) { + std::vector<std::string> PerformanceSqls = { + // 为了å‡å°‘ç¼–å†™è¯æ³•规则工作é‡ï¼Œåœ¨åˆ†æžé˜¶æ®µåˆ¤æ–éžæ³• sqls + "load ../../src/test/performance_test/table_data/warehouse.csv into warehouse;", + "load ../../src/test/performance_test/table_data/city.csv into city;", + "load ../../src/test/performance_test/table_data/city.csv into orders;", + "load ../my.csv into your;", + "set output_file off", + "set output_file on" + }; + for (auto &sql: PerformanceSqls) { std::cout << sql << std::endl; YY_BUFFER_STATE buf = yy_scan_string(sql.c_str()); assert(yyparse() == 0); diff --git a/src/parser/yacc.tab.c b/src/parser/yacc.tab.c index 4e1ba4a3eec0cda0a7d0dbaf61337f4dd2276db3..0ee8fb6b1b8ac29a2e5159c9ef9cc215e7e291e2 100644 --- a/src/parser/yacc.tab.c +++ b/src/parser/yacc.tab.c @@ -171,15 +171,20 @@ extern int yydebug; HAVING = 297, IN = 298, STATIC_CHECKPOINT = 299, - LEQ = 300, - NEQ = 301, - GEQ = 302, - T_EOF = 303, - IDENTIFIER = 304, - VALUE_STRING = 305, - VALUE_INT = 306, - VALUE_FLOAT = 307, - VALUE_BOOL = 308 + LOAD = 300, + OUTPUT_FILE = 301, + ON = 302, + OFF = 303, + LEQ = 304, + NEQ = 305, + GEQ = 306, + T_EOF = 307, + FILE_PATH = 308, + IDENTIFIER = 309, + VALUE_STRING = 310, + VALUE_INT = 311, + VALUE_FLOAT = 312, + VALUE_BOOL = 313 }; #endif @@ -510,21 +515,21 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 50 +#define YYFINAL 53 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 195 +#define YYLAST 203 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 63 +#define YYNTOKENS 68 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 37 /* YYNRULES -- Number of rules. */ -#define YYNRULES 96 +#define YYNRULES 100 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 197 +#define YYNSTATES 204 #define YYUNDEFTOK 2 -#define YYMAXUTOK 308 +#define YYMAXUTOK 313 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -540,9 +545,9 @@ static const yytype_int8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 56, 57, 62, 2, 58, 2, 59, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 54, - 60, 55, 61, 2, 2, 2, 2, 2, 2, 2, + 61, 62, 67, 2, 63, 2, 64, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 59, + 65, 60, 66, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -566,23 +571,25 @@ static const yytype_int8 yytranslate[] = 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53 + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 63, 63, 68, 73, 78, 86, 87, 88, 89, - 90, 94, 98, 102, 106, 113, 117, 124, 131, 135, - 139, 143, 147, 151, 158, 162, 166, 170, 177, 181, - 188, 192, 199, 206, 210, 214, 221, 225, 232, 236, - 240, 244, 251, 255, 262, 263, 270, 274, 281, 285, - 292, 296, 303, 307, 311, 315, 319, 323, 327, 334, - 338, 342, 349, 353, 360, 367, 371, 375, 379, 383, - 387, 391, 395, 402, 406, 410, 417, 421, 425, 432, - 436, 440, 447, 448, 449, 453, 457, 461, 465, 469, - 473, 477, 481, 482, 485, 487, 489 + 0, 63, 63, 68, 73, 78, 83, 88, 96, 97, + 98, 99, 100, 104, 108, 112, 116, 123, 127, 134, + 141, 145, 149, 153, 157, 161, 168, 172, 176, 180, + 184, 191, 195, 202, 206, 213, 220, 224, 228, 235, + 239, 246, 250, 254, 258, 265, 269, 276, 277, 284, + 288, 295, 299, 306, 310, 317, 321, 325, 329, 333, + 337, 341, 348, 352, 356, 363, 367, 374, 381, 385, + 389, 393, 397, 401, 405, 409, 416, 420, 424, 431, + 435, 439, 446, 450, 454, 461, 462, 463, 467, 471, + 475, 479, 483, 487, 491, 495, 496, 497, 500, 502, + 504 }; #endif @@ -597,16 +604,17 @@ static const char *const yytname[] = "FLOAT", "INDEX", "AND", "JOIN", "EXIT", "HELP", "TXN_BEGIN", "TXN_COMMIT", "TXN_ABORT", "TXN_ROLLBACK", "ORDER_BY", "ENABLE_NESTLOOP", "ENABLE_SORTMERGE", "COUNT", "MAX", "MIN", "SUM", "AS", "GROUP", - "HAVING", "IN", "STATIC_CHECKPOINT", "LEQ", "NEQ", "GEQ", "T_EOF", - "IDENTIFIER", "VALUE_STRING", "VALUE_INT", "VALUE_FLOAT", "VALUE_BOOL", - "';'", "'='", "'('", "')'", "','", "'.'", "'<'", "'>'", "'*'", "$accept", - "start", "stmt", "txnStmt", "dbStmt", "setStmt", "ddl", "dml", - "fieldList", "colNameList", "field", "type", "valueList", "value", - "condition", "optWhereClause", "whereClause", "col", "colList", "op", - "expr", "setClauses", "setClause", "asClause", "select_item", - "select_list", "tableList", "opt_order_clause", "order_clause", - "opt_asc_desc", "group_by_clause", "having_clause", "having_clauses", - "set_knob_type", "tbName", "colName", "alias", YY_NULLPTR + "HAVING", "IN", "STATIC_CHECKPOINT", "LOAD", "OUTPUT_FILE", "ON", "OFF", + "LEQ", "NEQ", "GEQ", "T_EOF", "FILE_PATH", "IDENTIFIER", "VALUE_STRING", + "VALUE_INT", "VALUE_FLOAT", "VALUE_BOOL", "';'", "'='", "'('", "')'", + "','", "'.'", "'<'", "'>'", "'*'", "$accept", "start", "stmt", "txnStmt", + "dbStmt", "setStmt", "ddl", "dml", "fieldList", "colNameList", "field", + "type", "valueList", "value", "condition", "optWhereClause", + "whereClause", "col", "colList", "op", "expr", "setClauses", "setClause", + "asClause", "select_item", "select_list", "tableList", + "opt_order_clause", "order_clause", "opt_asc_desc", "group_by_clause", + "having_clause", "having_clauses", "set_knob_type", "tbName", "colName", + "alias", YY_NULLPTR }; #endif @@ -620,17 +628,17 @@ static const yytype_int16 yytoknum[] = 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 59, 61, 40, 41, 44, 46, - 60, 62, 42 + 305, 306, 307, 308, 309, 310, 311, 312, 313, 59, + 61, 40, 41, 44, 46, 60, 62, 42 }; # endif -#define YYPACT_NINF (-145) +#define YYPACT_NINF (-135) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-95) +#define YYTABLE_NINF (-99) #define yytable_value_is_error(Yyn) \ 0 @@ -639,26 +647,27 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 117, 13, 8, 14, -37, 44, 40, -37, 7, 22, - -145, -145, -145, -145, -145, -145, -145, 57, 31, -145, - -145, -145, -145, -145, -145, 49, -37, -37, -145, -37, - -37, -145, -145, -37, -37, 48, -145, -145, 32, 45, - 50, 53, 61, 38, -145, 65, -145, -11, 64, -145, - -145, -145, -37, 71, 72, -145, 75, 121, 116, 85, - 89, -34, 94, 94, 94, 101, -145, -37, 102, 85, - -145, 85, 85, 85, 110, 94, -145, -145, -8, -145, - 113, -145, 100, 112, 114, 115, 119, -145, -145, 10, - -145, -145, -145, 12, -145, 73, 21, -145, 24, 23, - -145, 133, 43, 85, -145, 23, 65, 65, 65, 65, - 65, -37, -37, 129, -145, 85, -145, 118, -145, -145, - -145, 85, -145, -145, -145, -145, -145, 34, -145, 94, - -145, -145, -145, -145, -145, -145, -145, 103, -145, -145, - -145, -145, -145, -145, -145, -145, -145, 157, 135, -145, - 127, -145, -145, 23, -145, -7, -145, -145, -145, 94, - 102, 164, 123, -145, 22, 42, -145, 124, 43, 156, - 167, -145, -145, -2, -145, 94, 111, 102, 94, -37, - -145, 165, -145, 43, 41, -145, 10, 111, -145, -145, - -145, 129, -145, 135, 164, 130, -145 + 98, 16, 15, 43, -29, 12, 29, -29, 38, -1, + -135, -135, -135, -135, -135, -135, 1, -135, 50, -7, + -135, -135, -135, -135, -135, -135, 56, -29, -29, -135, + -29, -29, -135, -135, -29, -29, 66, -135, -135, -135, + -32, 41, 52, 58, 61, 60, -135, 109, -135, -3, + 96, -135, 151, -135, -135, -29, 102, 103, -135, 104, + 155, 150, 114, -135, -135, 111, -10, 116, 116, 116, + 117, -135, -29, 9, 114, -29, -135, 114, 114, 114, + 112, 116, -135, -135, -5, -135, 115, -135, 110, 118, + 121, 122, 123, -135, -135, -8, -135, -135, -135, -135, + 30, -135, 119, 46, -135, 82, 78, -135, 149, 88, + 114, -135, 78, 109, 109, 109, 109, 109, -29, -29, + 135, -135, 114, -135, 120, -135, -135, -135, 114, -135, + -135, -135, -135, -135, 84, -135, 116, -135, -135, -135, + -135, -135, -135, -135, 33, -135, -135, -135, -135, -135, + -135, -135, -135, -135, 161, 136, -135, 130, -135, -135, + 78, -135, 23, -135, -135, -135, 116, 9, 164, 125, + -135, -1, 89, -135, 126, 88, 163, 174, -135, -135, + -2, -135, 116, 101, 9, 116, -29, -135, 171, -135, + 88, 62, -135, -8, 101, -135, -135, -135, 135, -135, + 136, 164, 131, -135 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -667,43 +676,44 @@ static const yytype_int16 yypact[] = static const yytype_int8 yydefact[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 3, 11, 12, 13, 14, 5, 0, 0, 9, - 6, 10, 7, 8, 15, 0, 0, 0, 19, 0, - 0, 94, 21, 0, 0, 0, 92, 93, 0, 0, - 0, 0, 0, 95, 73, 66, 74, 0, 0, 49, - 1, 2, 0, 0, 0, 20, 0, 0, 44, 0, - 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 25, 95, 44, 62, - 0, 17, 0, 0, 0, 0, 0, 96, 65, 44, - 76, 75, 48, 0, 28, 0, 0, 30, 0, 0, - 46, 45, 0, 0, 26, 0, 66, 66, 66, 66, - 66, 0, 0, 86, 18, 0, 33, 0, 35, 32, - 22, 0, 23, 40, 38, 39, 41, 0, 36, 0, - 58, 56, 55, 57, 52, 53, 54, 0, 63, 64, - 68, 69, 70, 71, 72, 78, 77, 0, 91, 29, - 0, 31, 24, 0, 47, 0, 59, 60, 42, 0, - 89, 80, 0, 37, 0, 0, 50, 85, 0, 90, - 0, 27, 34, 0, 43, 0, 0, 0, 0, 0, - 51, 0, 87, 0, 84, 79, 44, 0, 83, 82, - 81, 86, 88, 91, 80, 0, 61 + 6, 5, 13, 14, 15, 16, 0, 7, 0, 0, + 11, 8, 12, 9, 10, 17, 0, 0, 0, 21, + 0, 0, 98, 23, 0, 0, 0, 95, 96, 97, + 0, 0, 0, 0, 0, 99, 76, 69, 77, 0, + 0, 52, 0, 1, 2, 0, 0, 0, 22, 0, + 0, 47, 0, 4, 3, 0, 0, 0, 0, 0, + 0, 70, 0, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 28, 99, 47, 65, 0, 19, 0, 0, + 0, 0, 0, 100, 68, 47, 79, 78, 51, 26, + 0, 31, 0, 0, 33, 0, 0, 49, 48, 0, + 0, 29, 0, 69, 69, 69, 69, 69, 0, 0, + 89, 20, 0, 36, 0, 38, 35, 24, 0, 25, + 43, 41, 42, 44, 0, 39, 0, 61, 59, 58, + 60, 55, 56, 57, 0, 66, 67, 71, 72, 73, + 74, 75, 81, 80, 0, 94, 32, 0, 34, 27, + 0, 50, 0, 62, 63, 45, 0, 92, 83, 0, + 40, 0, 0, 53, 88, 0, 93, 0, 30, 37, + 0, 46, 0, 0, 0, 0, 0, 54, 0, 90, + 0, 87, 82, 47, 0, 86, 85, 84, 89, 91, + 94, 83, 0, 64 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -145, -145, -145, -145, -145, -145, -145, -145, -145, 120, - 69, -145, 33, -89, 60, -70, -145, -57, -145, -144, - -136, -145, 83, 5, -67, 26, 15, -3, -145, -145, - 1, -145, 2, -145, -4, -38, -145 + -135, -135, -135, -135, -135, -135, -135, -135, -135, 113, + 72, -135, 34, -98, 59, -82, -135, -62, -135, -134, + -108, -135, 87, -17, -72, 27, 13, 0, -135, -135, + 2, -135, 3, -135, -4, -45, -135 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 17, 18, 19, 20, 21, 22, 23, 93, 96, - 94, 119, 127, 156, 100, 76, 101, 45, 167, 137, - 158, 78, 79, 66, 46, 47, 89, 171, 185, 190, - 148, 169, 161, 38, 48, 49, 88 + -1, 18, 19, 20, 21, 22, 23, 24, 100, 103, + 101, 126, 134, 163, 107, 82, 108, 47, 174, 144, + 165, 84, 85, 71, 48, 49, 95, 178, 192, 197, + 155, 176, 168, 40, 50, 51, 94 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -711,50 +721,52 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 32, 91, 67, 35, 83, 84, 85, 86, 104, 75, - 128, 179, 31, 164, 26, 43, 139, 24, 102, 113, - 29, 80, 53, 54, 176, 55, 56, 75, 82, 57, - 58, 92, 27, 95, 97, 97, 111, 25, 30, 187, - 182, 36, 37, 123, 124, 125, 126, 68, 70, 188, - 103, 192, 28, 34, 33, 189, 68, 50, 39, 40, - 41, 42, 52, 90, 163, 80, 128, 59, 112, 114, - 115, 43, 102, 123, 124, 125, 126, 95, 120, 121, - 157, 122, 121, 151, 44, 51, 130, 60, 131, 132, - 133, 152, 153, 168, 116, 117, 118, -94, 134, 174, - 153, 61, 166, 135, 136, 65, 62, 145, 146, 63, - 183, 140, 141, 142, 143, 144, 191, 64, 180, 157, - 1, 184, 2, 69, 3, 4, 5, 71, 72, 6, - 157, 73, 74, 75, 77, 7, 8, 9, 39, 40, - 41, 42, 81, 43, 10, 11, 12, 13, 14, 15, - 87, 43, 43, 123, 124, 125, 126, 106, 129, 155, - 43, 123, 124, 125, 126, 16, 99, 181, 105, 107, - 147, 108, 109, 159, 150, 90, 110, 160, 162, 170, - 172, 177, 175, 178, 149, 164, 138, 196, 165, 154, - 173, 195, 193, 98, 186, 194 + 33, 97, 111, 36, 89, 90, 91, 92, 135, 81, + 72, 186, 81, 120, 146, 63, 64, 86, 118, 109, + 25, 27, 34, 56, 57, 32, 58, 59, 65, 98, + 60, 61, 102, 104, 104, 41, 42, 43, 44, 28, + 26, 183, 35, 171, 45, 41, 42, 43, 44, 30, + 53, 76, 54, 45, 52, 119, 194, 88, 110, 29, + 73, 73, 170, 45, 135, 86, 46, 31, 96, 55, + 195, 99, 37, 38, 109, 189, 196, 102, 130, 131, + 132, 133, 164, 158, 39, 62, 199, 45, 130, 131, + 132, 133, 121, 122, 162, 175, 147, 148, 149, 150, + 151, 1, 66, 2, 173, 3, 4, 5, 127, 128, + 6, 198, 190, 67, 152, 153, 7, 8, 9, 68, + 187, 164, 69, 191, -98, 10, 11, 12, 13, 14, + 15, 137, 164, 130, 131, 132, 133, 138, 139, 140, + 123, 124, 125, 16, 129, 128, 159, 160, 141, 70, + 17, 181, 160, 142, 143, 45, 130, 131, 132, 133, + 74, 75, 188, 77, 78, 79, 80, 81, 83, 87, + 45, 93, 113, 106, 136, 112, 154, 166, 167, 177, + 114, 157, 96, 115, 116, 117, 169, 179, 184, 182, + 185, 171, 105, 203, 156, 161, 172, 145, 180, 193, + 200, 202, 0, 201 }; -static const yytype_uint8 yycheck[] = +static const yytype_int16 yycheck[] = { - 4, 68, 13, 7, 61, 62, 63, 64, 78, 17, - 99, 13, 49, 20, 6, 49, 105, 4, 75, 89, - 6, 59, 26, 27, 168, 29, 30, 17, 62, 33, - 34, 69, 24, 71, 72, 73, 26, 24, 24, 183, - 176, 34, 35, 50, 51, 52, 53, 58, 52, 8, - 58, 187, 44, 13, 10, 14, 58, 0, 36, 37, - 38, 39, 13, 67, 153, 103, 155, 19, 58, 57, - 58, 49, 129, 50, 51, 52, 53, 115, 57, 58, - 137, 57, 58, 121, 62, 54, 43, 55, 45, 46, - 47, 57, 58, 160, 21, 22, 23, 59, 55, 57, - 58, 56, 159, 60, 61, 40, 56, 111, 112, 56, - 177, 106, 107, 108, 109, 110, 186, 56, 175, 176, - 3, 178, 5, 59, 7, 8, 9, 56, 56, 12, - 187, 56, 11, 17, 49, 18, 19, 20, 36, 37, - 38, 39, 53, 49, 27, 28, 29, 30, 31, 32, - 49, 49, 49, 50, 51, 52, 53, 57, 25, 56, - 49, 50, 51, 52, 53, 48, 56, 56, 55, 57, - 41, 57, 57, 16, 56, 179, 57, 42, 51, 15, - 57, 25, 58, 16, 115, 20, 103, 57, 155, 129, - 164, 194, 191, 73, 179, 193 + 4, 73, 84, 7, 66, 67, 68, 69, 106, 17, + 13, 13, 17, 95, 112, 47, 48, 62, 26, 81, + 4, 6, 10, 27, 28, 54, 30, 31, 60, 74, + 34, 35, 77, 78, 79, 36, 37, 38, 39, 24, + 24, 175, 13, 20, 54, 36, 37, 38, 39, 6, + 0, 55, 59, 54, 53, 63, 190, 67, 63, 44, + 63, 63, 160, 54, 162, 110, 67, 24, 72, 13, + 8, 75, 34, 35, 136, 183, 14, 122, 55, 56, + 57, 58, 144, 128, 46, 19, 194, 54, 55, 56, + 57, 58, 62, 63, 61, 167, 113, 114, 115, 116, + 117, 3, 61, 5, 166, 7, 8, 9, 62, 63, + 12, 193, 184, 61, 118, 119, 18, 19, 20, 61, + 182, 183, 61, 185, 64, 27, 28, 29, 30, 31, + 32, 43, 194, 55, 56, 57, 58, 49, 50, 51, + 21, 22, 23, 45, 62, 63, 62, 63, 60, 40, + 52, 62, 63, 65, 66, 54, 55, 56, 57, 58, + 64, 10, 61, 61, 61, 61, 11, 17, 54, 58, + 54, 54, 62, 61, 25, 60, 41, 16, 42, 15, + 62, 61, 186, 62, 62, 62, 56, 62, 25, 63, + 16, 20, 79, 62, 122, 136, 162, 110, 171, 186, + 198, 201, -1, 200 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -762,55 +774,58 @@ static const yytype_uint8 yycheck[] = static const yytype_int8 yystos[] = { 0, 3, 5, 7, 8, 9, 12, 18, 19, 20, - 27, 28, 29, 30, 31, 32, 48, 64, 65, 66, - 67, 68, 69, 70, 4, 24, 6, 24, 44, 6, - 24, 49, 97, 10, 13, 97, 34, 35, 96, 36, - 37, 38, 39, 49, 62, 80, 87, 88, 97, 98, - 0, 54, 13, 97, 97, 97, 97, 97, 97, 19, - 55, 56, 56, 56, 56, 40, 86, 13, 58, 59, - 97, 56, 56, 56, 11, 17, 78, 49, 84, 85, - 98, 53, 62, 80, 80, 80, 80, 49, 99, 89, - 97, 87, 98, 71, 73, 98, 72, 98, 72, 56, - 77, 79, 80, 58, 78, 55, 57, 57, 57, 57, - 57, 26, 58, 78, 57, 58, 21, 22, 23, 74, - 57, 58, 57, 50, 51, 52, 53, 75, 76, 25, - 43, 45, 46, 47, 55, 60, 61, 82, 85, 76, - 86, 86, 86, 86, 86, 97, 97, 41, 93, 73, - 56, 98, 57, 58, 77, 56, 76, 80, 83, 16, - 42, 95, 51, 76, 20, 75, 80, 81, 87, 94, - 15, 90, 57, 88, 57, 58, 82, 25, 16, 13, - 80, 56, 83, 87, 80, 91, 89, 82, 8, 14, - 92, 78, 83, 93, 95, 90, 57 + 27, 28, 29, 30, 31, 32, 45, 52, 69, 70, + 71, 72, 73, 74, 75, 4, 24, 6, 24, 44, + 6, 24, 54, 102, 10, 13, 102, 34, 35, 46, + 101, 36, 37, 38, 39, 54, 67, 85, 92, 93, + 102, 103, 53, 0, 59, 13, 102, 102, 102, 102, + 102, 102, 19, 47, 48, 60, 61, 61, 61, 61, + 40, 91, 13, 63, 64, 10, 102, 61, 61, 61, + 11, 17, 83, 54, 89, 90, 103, 58, 67, 85, + 85, 85, 85, 54, 104, 94, 102, 92, 103, 102, + 76, 78, 103, 77, 103, 77, 61, 82, 84, 85, + 63, 83, 60, 62, 62, 62, 62, 62, 26, 63, + 83, 62, 63, 21, 22, 23, 79, 62, 63, 62, + 55, 56, 57, 58, 80, 81, 25, 43, 49, 50, + 51, 60, 65, 66, 87, 90, 81, 91, 91, 91, + 91, 91, 102, 102, 41, 98, 78, 61, 103, 62, + 63, 82, 61, 81, 85, 88, 16, 42, 100, 56, + 81, 20, 80, 85, 86, 92, 99, 15, 95, 62, + 93, 62, 63, 87, 25, 16, 13, 85, 61, 88, + 92, 85, 96, 94, 87, 8, 14, 97, 83, 88, + 98, 100, 95, 62 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int8 yyr1[] = { - 0, 63, 64, 64, 64, 64, 65, 65, 65, 65, - 65, 66, 66, 66, 66, 67, 67, 68, 69, 69, - 69, 69, 69, 69, 70, 70, 70, 70, 71, 71, - 72, 72, 73, 74, 74, 74, 75, 75, 76, 76, - 76, 76, 77, 77, 78, 78, 79, 79, 80, 80, - 81, 81, 82, 82, 82, 82, 82, 82, 82, 83, - 83, 83, 84, 84, 85, 86, 86, 87, 87, 87, - 87, 87, 87, 88, 88, 88, 89, 89, 89, 90, - 90, 91, 92, 92, 92, 93, 93, 94, 94, 94, - 95, 95, 96, 96, 97, 98, 99 + 0, 68, 69, 69, 69, 69, 69, 69, 70, 70, + 70, 70, 70, 71, 71, 71, 71, 72, 72, 73, + 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, + 75, 76, 76, 77, 77, 78, 79, 79, 79, 80, + 80, 81, 81, 81, 81, 82, 82, 83, 83, 84, + 84, 85, 85, 86, 86, 87, 87, 87, 87, 87, + 87, 87, 88, 88, 88, 89, 89, 90, 91, 91, + 92, 92, 92, 92, 92, 92, 93, 93, 93, 94, + 94, 94, 95, 95, 96, 97, 97, 97, 98, 98, + 99, 99, 99, 100, 100, 101, 101, 101, 102, 103, + 104 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_int8 yyr2[] = { - 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 4, 4, 6, 2, - 3, 2, 6, 6, 7, 4, 5, 8, 1, 3, - 1, 3, 2, 1, 4, 1, 1, 3, 1, 1, - 1, 1, 3, 5, 0, 2, 1, 3, 3, 1, - 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 10, 1, 3, 3, 2, 0, 2, 5, 5, - 5, 5, 5, 1, 1, 3, 1, 3, 3, 3, - 0, 2, 1, 1, 0, 3, 0, 3, 5, 0, - 2, 0, 1, 1, 1, 1, 1 + 0, 2, 2, 3, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 4, 4, + 6, 2, 3, 2, 6, 6, 4, 7, 4, 5, + 8, 1, 3, 1, 3, 2, 1, 4, 1, 1, + 3, 1, 1, 1, 1, 3, 5, 0, 2, 1, + 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 10, 1, 3, 3, 2, 0, + 2, 5, 5, 5, 5, 5, 1, 1, 3, 1, + 3, 3, 3, 0, 2, 1, 1, 0, 3, 0, + 3, 5, 0, 2, 0, 1, 1, 1, 1, 1, + 1 }; @@ -1612,680 +1627,712 @@ yyreduce: parse_tree = (yyvsp[-1].sv_node); YYACCEPT; } -#line 1616 "yacc.tab.c" +#line 1631 "yacc.tab.c" break; case 3: #line 69 "yacc.y" { - parse_tree = std::make_shared<Help>(); + parse_tree = std::make_shared<SetStmt>((yyvsp[-1].sv_setKnobType), false); YYACCEPT; } -#line 1625 "yacc.tab.c" +#line 1640 "yacc.tab.c" break; case 4: #line 74 "yacc.y" { - parse_tree = nullptr; + parse_tree = std::make_shared<SetStmt>((yyvsp[-1].sv_setKnobType), true); YYACCEPT; } -#line 1634 "yacc.tab.c" +#line 1649 "yacc.tab.c" break; case 5: #line 79 "yacc.y" + { + parse_tree = std::make_shared<Help>(); + YYACCEPT; + } +#line 1658 "yacc.tab.c" + break; + + case 6: +#line 84 "yacc.y" { parse_tree = nullptr; YYACCEPT; } -#line 1643 "yacc.tab.c" +#line 1667 "yacc.tab.c" break; - case 11: -#line 95 "yacc.y" + case 7: +#line 89 "yacc.y" + { + parse_tree = nullptr; + YYACCEPT; + } +#line 1676 "yacc.tab.c" + break; + + case 13: +#line 105 "yacc.y" { (yyval.sv_node) = std::make_shared<TxnBegin>(); } -#line 1651 "yacc.tab.c" +#line 1684 "yacc.tab.c" break; - case 12: -#line 99 "yacc.y" + case 14: +#line 109 "yacc.y" { (yyval.sv_node) = std::make_shared<TxnCommit>(); } -#line 1659 "yacc.tab.c" +#line 1692 "yacc.tab.c" break; - case 13: -#line 103 "yacc.y" + case 15: +#line 113 "yacc.y" { (yyval.sv_node) = std::make_shared<TxnAbort>(); } -#line 1667 "yacc.tab.c" +#line 1700 "yacc.tab.c" break; - case 14: -#line 107 "yacc.y" + case 16: +#line 117 "yacc.y" { (yyval.sv_node) = std::make_shared<TxnRollback>(); } -#line 1675 "yacc.tab.c" +#line 1708 "yacc.tab.c" break; - case 15: -#line 114 "yacc.y" + case 17: +#line 124 "yacc.y" { (yyval.sv_node) = std::make_shared<ShowTables>(); } -#line 1683 "yacc.tab.c" +#line 1716 "yacc.tab.c" break; - case 16: -#line 118 "yacc.y" + case 18: +#line 128 "yacc.y" { (yyval.sv_node) = std::make_shared<ShowIndexs>((yyvsp[0].sv_str)); } -#line 1691 "yacc.tab.c" +#line 1724 "yacc.tab.c" break; - case 17: -#line 125 "yacc.y" + case 19: +#line 135 "yacc.y" { (yyval.sv_node) = std::make_shared<SetStmt>((yyvsp[-2].sv_setKnobType), (yyvsp[0].sv_bool)); } -#line 1699 "yacc.tab.c" +#line 1732 "yacc.tab.c" break; - case 18: -#line 132 "yacc.y" + case 20: +#line 142 "yacc.y" { (yyval.sv_node) = std::make_shared<CreateTable>((yyvsp[-3].sv_str), (yyvsp[-1].sv_fields)); } -#line 1707 "yacc.tab.c" +#line 1740 "yacc.tab.c" break; - case 19: -#line 136 "yacc.y" + case 21: +#line 146 "yacc.y" { (yyval.sv_node) = std::make_shared<CreateStaticCheckpoint>(); } -#line 1715 "yacc.tab.c" +#line 1748 "yacc.tab.c" break; - case 20: -#line 140 "yacc.y" + case 22: +#line 150 "yacc.y" { (yyval.sv_node) = std::make_shared<DropTable>((yyvsp[0].sv_str)); } -#line 1723 "yacc.tab.c" +#line 1756 "yacc.tab.c" break; - case 21: -#line 144 "yacc.y" + case 23: +#line 154 "yacc.y" { (yyval.sv_node) = std::make_shared<DescTable>((yyvsp[0].sv_str)); } -#line 1731 "yacc.tab.c" +#line 1764 "yacc.tab.c" break; - case 22: -#line 148 "yacc.y" + case 24: +#line 158 "yacc.y" { (yyval.sv_node) = std::make_shared<CreateIndex>((yyvsp[-3].sv_str), (yyvsp[-1].sv_strs)); } -#line 1739 "yacc.tab.c" +#line 1772 "yacc.tab.c" break; - case 23: -#line 152 "yacc.y" + case 25: +#line 162 "yacc.y" { (yyval.sv_node) = std::make_shared<DropIndex>((yyvsp[-3].sv_str), (yyvsp[-1].sv_strs)); } -#line 1747 "yacc.tab.c" +#line 1780 "yacc.tab.c" break; - case 24: -#line 159 "yacc.y" + case 26: +#line 169 "yacc.y" + { + (yyval.sv_node) = std::make_shared<LoadStmt>((yyvsp[-2].sv_str), (yyvsp[0].sv_str)); + } +#line 1788 "yacc.tab.c" + break; + + case 27: +#line 173 "yacc.y" { (yyval.sv_node) = std::make_shared<InsertStmt>((yyvsp[-4].sv_str), (yyvsp[-1].sv_vals)); } -#line 1755 "yacc.tab.c" +#line 1796 "yacc.tab.c" break; - case 25: -#line 163 "yacc.y" + case 28: +#line 177 "yacc.y" { (yyval.sv_node) = std::make_shared<DeleteStmt>((yyvsp[-1].sv_str), (yyvsp[0].sv_conds)); } -#line 1763 "yacc.tab.c" +#line 1804 "yacc.tab.c" break; - case 26: -#line 167 "yacc.y" + case 29: +#line 181 "yacc.y" { (yyval.sv_node) = std::make_shared<UpdateStmt>((yyvsp[-3].sv_str), (yyvsp[-1].sv_set_clauses), (yyvsp[0].sv_conds)); } -#line 1771 "yacc.tab.c" +#line 1812 "yacc.tab.c" break; - case 27: -#line 171 "yacc.y" + case 30: +#line 185 "yacc.y" { (yyval.sv_node) = std::static_pointer_cast<Expr>(std::make_shared<SelectStmt>((yyvsp[-6].sv_bounds), (yyvsp[-4].sv_strs), (yyvsp[-3].sv_conds), (yyvsp[-2].sv_cols), (yyvsp[-1].sv_havings), (yyvsp[0].sv_orderby))); } -#line 1779 "yacc.tab.c" +#line 1820 "yacc.tab.c" break; - case 28: -#line 178 "yacc.y" + case 31: +#line 192 "yacc.y" { (yyval.sv_fields) = std::vector<std::shared_ptr<Field>>{(yyvsp[0].sv_field)}; } -#line 1787 "yacc.tab.c" +#line 1828 "yacc.tab.c" break; - case 29: -#line 182 "yacc.y" + case 32: +#line 196 "yacc.y" { (yyval.sv_fields).push_back((yyvsp[0].sv_field)); } -#line 1795 "yacc.tab.c" +#line 1836 "yacc.tab.c" break; - case 30: -#line 189 "yacc.y" + case 33: +#line 203 "yacc.y" { (yyval.sv_strs) = std::vector<std::string>{(yyvsp[0].sv_str)}; } -#line 1803 "yacc.tab.c" +#line 1844 "yacc.tab.c" break; - case 31: -#line 193 "yacc.y" + case 34: +#line 207 "yacc.y" { (yyval.sv_strs).push_back((yyvsp[0].sv_str)); } -#line 1811 "yacc.tab.c" +#line 1852 "yacc.tab.c" break; - case 32: -#line 200 "yacc.y" + case 35: +#line 214 "yacc.y" { (yyval.sv_field) = std::make_shared<ColDef>((yyvsp[-1].sv_str), (yyvsp[0].sv_type_len)); } -#line 1819 "yacc.tab.c" +#line 1860 "yacc.tab.c" break; - case 33: -#line 207 "yacc.y" + case 36: +#line 221 "yacc.y" { (yyval.sv_type_len) = std::make_shared<TypeLen>(SV_TYPE_INT, sizeof(int)); } -#line 1827 "yacc.tab.c" +#line 1868 "yacc.tab.c" break; - case 34: -#line 211 "yacc.y" + case 37: +#line 225 "yacc.y" { (yyval.sv_type_len) = std::make_shared<TypeLen>(SV_TYPE_STRING, (yyvsp[-1].sv_int)); } -#line 1835 "yacc.tab.c" +#line 1876 "yacc.tab.c" break; - case 35: -#line 215 "yacc.y" + case 38: +#line 229 "yacc.y" { (yyval.sv_type_len) = std::make_shared<TypeLen>(SV_TYPE_FLOAT, sizeof(float)); } -#line 1843 "yacc.tab.c" +#line 1884 "yacc.tab.c" break; - case 36: -#line 222 "yacc.y" + case 39: +#line 236 "yacc.y" { (yyval.sv_vals) = std::vector<std::shared_ptr<Value>>{(yyvsp[0].sv_val)}; } -#line 1851 "yacc.tab.c" +#line 1892 "yacc.tab.c" break; - case 37: -#line 226 "yacc.y" + case 40: +#line 240 "yacc.y" { (yyval.sv_vals).push_back((yyvsp[0].sv_val)); } -#line 1859 "yacc.tab.c" +#line 1900 "yacc.tab.c" break; - case 38: -#line 233 "yacc.y" + case 41: +#line 247 "yacc.y" { (yyval.sv_val) = std::make_shared<IntLit>((yyvsp[0].sv_int)); } -#line 1867 "yacc.tab.c" +#line 1908 "yacc.tab.c" break; - case 39: -#line 237 "yacc.y" + case 42: +#line 251 "yacc.y" { (yyval.sv_val) = std::make_shared<FloatLit>((yyvsp[0].sv_float)); } -#line 1875 "yacc.tab.c" +#line 1916 "yacc.tab.c" break; - case 40: -#line 241 "yacc.y" + case 43: +#line 255 "yacc.y" { (yyval.sv_val) = std::make_shared<StringLit>((yyvsp[0].sv_str)); } -#line 1883 "yacc.tab.c" +#line 1924 "yacc.tab.c" break; - case 41: -#line 245 "yacc.y" + case 44: +#line 259 "yacc.y" { (yyval.sv_val) = std::make_shared<BoolLit>((yyvsp[0].sv_bool)); } -#line 1891 "yacc.tab.c" +#line 1932 "yacc.tab.c" break; - case 42: -#line 252 "yacc.y" + case 45: +#line 266 "yacc.y" { (yyval.sv_cond) = std::make_shared<BinaryExpr>((yyvsp[-2].sv_col), (yyvsp[-1].sv_comp_op), (yyvsp[0].sv_expr)); } -#line 1899 "yacc.tab.c" +#line 1940 "yacc.tab.c" break; - case 43: -#line 256 "yacc.y" + case 46: +#line 270 "yacc.y" { (yyval.sv_cond) = std::make_shared<BinaryExpr>((yyvsp[-4].sv_col), (yyvsp[-3].sv_comp_op), (yyvsp[-1].sv_vals)); } -#line 1907 "yacc.tab.c" +#line 1948 "yacc.tab.c" break; - case 44: -#line 262 "yacc.y" + case 47: +#line 276 "yacc.y" { /* ignore*/ } -#line 1913 "yacc.tab.c" +#line 1954 "yacc.tab.c" break; - case 45: -#line 264 "yacc.y" + case 48: +#line 278 "yacc.y" { (yyval.sv_conds) = (yyvsp[0].sv_conds); } -#line 1921 "yacc.tab.c" +#line 1962 "yacc.tab.c" break; - case 46: -#line 271 "yacc.y" + case 49: +#line 285 "yacc.y" { (yyval.sv_conds) = std::vector<std::shared_ptr<BinaryExpr>>{(yyvsp[0].sv_cond)}; } -#line 1929 "yacc.tab.c" +#line 1970 "yacc.tab.c" break; - case 47: -#line 275 "yacc.y" + case 50: +#line 289 "yacc.y" { (yyval.sv_conds).push_back((yyvsp[0].sv_cond)); } -#line 1937 "yacc.tab.c" +#line 1978 "yacc.tab.c" break; - case 48: -#line 282 "yacc.y" + case 51: +#line 296 "yacc.y" { (yyval.sv_col) = std::make_shared<Col>((yyvsp[-2].sv_str), (yyvsp[0].sv_str)); } -#line 1945 "yacc.tab.c" +#line 1986 "yacc.tab.c" break; - case 49: -#line 286 "yacc.y" + case 52: +#line 300 "yacc.y" { (yyval.sv_col) = std::make_shared<Col>("", (yyvsp[0].sv_str)); } -#line 1953 "yacc.tab.c" +#line 1994 "yacc.tab.c" break; - case 50: -#line 293 "yacc.y" + case 53: +#line 307 "yacc.y" { (yyval.sv_cols) = std::vector<std::shared_ptr<Col>>{(yyvsp[0].sv_col)}; } -#line 1961 "yacc.tab.c" +#line 2002 "yacc.tab.c" break; - case 51: -#line 297 "yacc.y" + case 54: +#line 311 "yacc.y" { (yyval.sv_cols).push_back((yyvsp[0].sv_col)); } -#line 1969 "yacc.tab.c" +#line 2010 "yacc.tab.c" break; - case 52: -#line 304 "yacc.y" + case 55: +#line 318 "yacc.y" { (yyval.sv_comp_op) = SV_OP_EQ; } -#line 1977 "yacc.tab.c" +#line 2018 "yacc.tab.c" break; - case 53: -#line 308 "yacc.y" + case 56: +#line 322 "yacc.y" { (yyval.sv_comp_op) = SV_OP_LT; } -#line 1985 "yacc.tab.c" +#line 2026 "yacc.tab.c" break; - case 54: -#line 312 "yacc.y" + case 57: +#line 326 "yacc.y" { (yyval.sv_comp_op) = SV_OP_GT; } -#line 1993 "yacc.tab.c" +#line 2034 "yacc.tab.c" break; - case 55: -#line 316 "yacc.y" + case 58: +#line 330 "yacc.y" { (yyval.sv_comp_op) = SV_OP_NE; } -#line 2001 "yacc.tab.c" +#line 2042 "yacc.tab.c" break; - case 56: -#line 320 "yacc.y" + case 59: +#line 334 "yacc.y" { (yyval.sv_comp_op) = SV_OP_LE; } -#line 2009 "yacc.tab.c" +#line 2050 "yacc.tab.c" break; - case 57: -#line 324 "yacc.y" + case 60: +#line 338 "yacc.y" { (yyval.sv_comp_op) = SV_OP_GE; } -#line 2017 "yacc.tab.c" +#line 2058 "yacc.tab.c" break; - case 58: -#line 328 "yacc.y" + case 61: +#line 342 "yacc.y" { (yyval.sv_comp_op) = SV_OP_IN; } -#line 2025 "yacc.tab.c" +#line 2066 "yacc.tab.c" break; - case 59: -#line 335 "yacc.y" + case 62: +#line 349 "yacc.y" { (yyval.sv_expr) = std::static_pointer_cast<Expr>((yyvsp[0].sv_val)); } -#line 2033 "yacc.tab.c" +#line 2074 "yacc.tab.c" break; - case 60: -#line 339 "yacc.y" + case 63: +#line 353 "yacc.y" { (yyval.sv_expr) = std::static_pointer_cast<Expr>((yyvsp[0].sv_col)); } -#line 2041 "yacc.tab.c" +#line 2082 "yacc.tab.c" break; - case 61: -#line 343 "yacc.y" + case 64: +#line 357 "yacc.y" { (yyval.sv_expr) = std::make_shared<SelectStmt>((yyvsp[-7].sv_bounds), (yyvsp[-5].sv_strs), (yyvsp[-4].sv_conds), (yyvsp[-3].sv_cols), (yyvsp[-2].sv_havings), (yyvsp[-1].sv_orderby)); } -#line 2049 "yacc.tab.c" +#line 2090 "yacc.tab.c" break; - case 62: -#line 350 "yacc.y" + case 65: +#line 364 "yacc.y" { (yyval.sv_set_clauses) = std::vector<std::shared_ptr<SetClause>>{(yyvsp[0].sv_set_clause)}; } -#line 2057 "yacc.tab.c" +#line 2098 "yacc.tab.c" break; - case 63: -#line 354 "yacc.y" + case 66: +#line 368 "yacc.y" { (yyval.sv_set_clauses).push_back((yyvsp[0].sv_set_clause)); } -#line 2065 "yacc.tab.c" +#line 2106 "yacc.tab.c" break; - case 64: -#line 361 "yacc.y" + case 67: +#line 375 "yacc.y" { (yyval.sv_set_clause) = std::make_shared<SetClause>((yyvsp[-2].sv_str), (yyvsp[0].sv_val)); } -#line 2073 "yacc.tab.c" +#line 2114 "yacc.tab.c" break; - case 65: -#line 368 "yacc.y" + case 68: +#line 382 "yacc.y" { (yyval.sv_str) = (yyvsp[0].sv_str); } -#line 2081 "yacc.tab.c" +#line 2122 "yacc.tab.c" break; - case 66: -#line 371 "yacc.y" + case 69: +#line 385 "yacc.y" { (yyval.sv_str) = ""; } -#line 2087 "yacc.tab.c" +#line 2128 "yacc.tab.c" break; - case 67: -#line 376 "yacc.y" + case 70: +#line 390 "yacc.y" { (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-1].sv_col), AGG_COL, (yyvsp[0].sv_str)); } -#line 2095 "yacc.tab.c" +#line 2136 "yacc.tab.c" break; - case 68: -#line 380 "yacc.y" + case 71: +#line 394 "yacc.y" { (yyval.sv_bound) = std::make_shared<BoundExpr>(std::make_shared<Col>("", ""), AGG_COUNT, (yyvsp[0].sv_str)); } -#line 2103 "yacc.tab.c" +#line 2144 "yacc.tab.c" break; - case 69: -#line 384 "yacc.y" + case 72: +#line 398 "yacc.y" { (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_COUNT, (yyvsp[0].sv_str)); } -#line 2111 "yacc.tab.c" +#line 2152 "yacc.tab.c" break; - case 70: -#line 388 "yacc.y" + case 73: +#line 402 "yacc.y" { (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_MAX, (yyvsp[0].sv_str)); } -#line 2119 "yacc.tab.c" +#line 2160 "yacc.tab.c" break; - case 71: -#line 392 "yacc.y" + case 74: +#line 406 "yacc.y" { (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_MIN, (yyvsp[0].sv_str)); } -#line 2127 "yacc.tab.c" +#line 2168 "yacc.tab.c" break; - case 72: -#line 396 "yacc.y" + case 75: +#line 410 "yacc.y" { (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_SUM, (yyvsp[0].sv_str)); } -#line 2135 "yacc.tab.c" +#line 2176 "yacc.tab.c" break; - case 73: -#line 403 "yacc.y" + case 76: +#line 417 "yacc.y" { (yyval.sv_bounds) = {}; } -#line 2143 "yacc.tab.c" +#line 2184 "yacc.tab.c" break; - case 74: -#line 407 "yacc.y" + case 77: +#line 421 "yacc.y" { (yyval.sv_bounds) = std::vector<std::shared_ptr<BoundExpr>>{(yyvsp[0].sv_bound)}; } -#line 2151 "yacc.tab.c" +#line 2192 "yacc.tab.c" break; - case 75: -#line 411 "yacc.y" + case 78: +#line 425 "yacc.y" { (yyval.sv_bounds).push_back((yyvsp[0].sv_bound)); } -#line 2159 "yacc.tab.c" +#line 2200 "yacc.tab.c" break; - case 76: -#line 418 "yacc.y" + case 79: +#line 432 "yacc.y" { (yyval.sv_strs) = std::vector<std::string>{(yyvsp[0].sv_str)}; } -#line 2167 "yacc.tab.c" +#line 2208 "yacc.tab.c" break; - case 77: -#line 422 "yacc.y" + case 80: +#line 436 "yacc.y" { (yyval.sv_strs).push_back((yyvsp[0].sv_str)); } -#line 2175 "yacc.tab.c" +#line 2216 "yacc.tab.c" break; - case 78: -#line 426 "yacc.y" + case 81: +#line 440 "yacc.y" { (yyval.sv_strs).push_back((yyvsp[0].sv_str)); } -#line 2183 "yacc.tab.c" +#line 2224 "yacc.tab.c" break; - case 79: -#line 433 "yacc.y" + case 82: +#line 447 "yacc.y" { (yyval.sv_orderby) = (yyvsp[0].sv_orderby); } -#line 2191 "yacc.tab.c" +#line 2232 "yacc.tab.c" break; - case 80: -#line 436 "yacc.y" + case 83: +#line 450 "yacc.y" { /* ignore*/ } -#line 2197 "yacc.tab.c" +#line 2238 "yacc.tab.c" break; - case 81: -#line 441 "yacc.y" + case 84: +#line 455 "yacc.y" { (yyval.sv_orderby) = std::make_shared<OrderBy>((yyvsp[-1].sv_col), (yyvsp[0].sv_orderby_dir)); } -#line 2205 "yacc.tab.c" +#line 2246 "yacc.tab.c" break; - case 82: -#line 447 "yacc.y" + case 85: +#line 461 "yacc.y" { (yyval.sv_orderby_dir) = OrderBy_ASC; } -#line 2211 "yacc.tab.c" +#line 2252 "yacc.tab.c" break; - case 83: -#line 448 "yacc.y" + case 86: +#line 462 "yacc.y" { (yyval.sv_orderby_dir) = OrderBy_DESC; } -#line 2217 "yacc.tab.c" +#line 2258 "yacc.tab.c" break; - case 84: -#line 449 "yacc.y" + case 87: +#line 463 "yacc.y" { (yyval.sv_orderby_dir) = OrderBy_DEFAULT; } -#line 2223 "yacc.tab.c" +#line 2264 "yacc.tab.c" break; - case 85: -#line 454 "yacc.y" + case 88: +#line 468 "yacc.y" { (yyval.sv_cols) = (yyvsp[0].sv_cols); } -#line 2231 "yacc.tab.c" +#line 2272 "yacc.tab.c" break; - case 86: -#line 457 "yacc.y" + case 89: +#line 471 "yacc.y" { /* ignore*/ } -#line 2237 "yacc.tab.c" +#line 2278 "yacc.tab.c" break; - case 87: -#line 462 "yacc.y" + case 90: +#line 476 "yacc.y" { (yyval.sv_havings).emplace_back(std::make_shared<HavingExpr>((yyvsp[-2].sv_bound), (yyvsp[-1].sv_comp_op), (yyvsp[0].sv_expr))); } -#line 2245 "yacc.tab.c" +#line 2286 "yacc.tab.c" break; - case 88: -#line 466 "yacc.y" + case 91: +#line 480 "yacc.y" { (yyval.sv_havings).emplace_back(std::make_shared<HavingExpr>((yyvsp[-2].sv_bound), (yyvsp[-1].sv_comp_op), (yyvsp[0].sv_expr))); } -#line 2253 "yacc.tab.c" +#line 2294 "yacc.tab.c" break; - case 89: -#line 469 "yacc.y" + case 92: +#line 483 "yacc.y" { /* ignore*/ } -#line 2259 "yacc.tab.c" +#line 2300 "yacc.tab.c" break; - case 90: -#line 474 "yacc.y" + case 93: +#line 488 "yacc.y" { (yyval.sv_havings) = (yyvsp[0].sv_havings); } -#line 2267 "yacc.tab.c" +#line 2308 "yacc.tab.c" break; - case 91: -#line 477 "yacc.y" + case 94: +#line 491 "yacc.y" { /* ignore*/ } -#line 2273 "yacc.tab.c" +#line 2314 "yacc.tab.c" break; - case 92: -#line 481 "yacc.y" - { (yyval.sv_setKnobType) = EnableNestLoop; } -#line 2279 "yacc.tab.c" + case 95: +#line 495 "yacc.y" + { (yyval.sv_setKnobType) = EnableNestLoop; } +#line 2320 "yacc.tab.c" break; - case 93: -#line 482 "yacc.y" + case 96: +#line 496 "yacc.y" { (yyval.sv_setKnobType) = EnableSortMerge; } -#line 2285 "yacc.tab.c" +#line 2326 "yacc.tab.c" + break; + + case 97: +#line 497 "yacc.y" + { (yyval.sv_setKnobType) = EnableOutputFile; } +#line 2332 "yacc.tab.c" break; -#line 2289 "yacc.tab.c" +#line 2336 "yacc.tab.c" default: break; } @@ -2523,5 +2570,5 @@ yyreturn: #endif return yyresult; } -#line 490 "yacc.y" +#line 505 "yacc.y" diff --git a/src/parser/yacc.tab.cpp b/src/parser/yacc.tab.cpp index 76f293bc437e4a21d12751929ccca2ce801c074c..3f7bb7ccde3edd6e8f7554446f7c7fcaa7a6b711 100644 --- a/src/parser/yacc.tab.cpp +++ b/src/parser/yacc.tab.cpp @@ -171,15 +171,20 @@ extern int yydebug; HAVING = 297, IN = 298, STATIC_CHECKPOINT = 299, - LEQ = 300, - NEQ = 301, - GEQ = 302, - T_EOF = 303, - IDENTIFIER = 304, - VALUE_STRING = 305, - VALUE_INT = 306, - VALUE_FLOAT = 307, - VALUE_BOOL = 308 + LOAD = 300, + OUTPUT_FILE = 301, + ON = 302, + OFF = 303, + LEQ = 304, + NEQ = 305, + GEQ = 306, + T_EOF = 307, + FILE_PATH = 308, + IDENTIFIER = 309, + VALUE_STRING = 310, + VALUE_INT = 311, + VALUE_FLOAT = 312, + VALUE_BOOL = 313 }; #endif @@ -510,21 +515,21 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 50 +#define YYFINAL 53 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 195 +#define YYLAST 203 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 63 +#define YYNTOKENS 68 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 37 /* YYNRULES -- Number of rules. */ -#define YYNRULES 96 +#define YYNRULES 100 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 197 +#define YYNSTATES 204 #define YYUNDEFTOK 2 -#define YYMAXUTOK 308 +#define YYMAXUTOK 313 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -540,9 +545,9 @@ static const yytype_int8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 56, 57, 62, 2, 58, 2, 59, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 54, - 60, 55, 61, 2, 2, 2, 2, 2, 2, 2, + 61, 62, 67, 2, 63, 2, 64, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 59, + 65, 60, 66, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -566,23 +571,25 @@ static const yytype_int8 yytranslate[] = 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53 + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 63, 63, 68, 73, 78, 86, 87, 88, 89, - 90, 94, 98, 102, 106, 113, 117, 124, 131, 135, - 139, 143, 147, 151, 158, 162, 166, 170, 177, 181, - 188, 192, 199, 206, 210, 214, 221, 225, 232, 236, - 240, 244, 251, 255, 262, 263, 270, 274, 281, 285, - 292, 296, 303, 307, 311, 315, 319, 323, 327, 334, - 338, 342, 349, 353, 360, 367, 371, 375, 379, 383, - 387, 391, 395, 402, 406, 410, 417, 421, 425, 432, - 436, 440, 447, 448, 449, 453, 457, 461, 465, 469, - 473, 477, 481, 482, 485, 487, 489 + 0, 63, 63, 68, 73, 78, 83, 88, 96, 97, + 98, 99, 100, 104, 108, 112, 116, 123, 127, 134, + 141, 145, 149, 153, 157, 161, 168, 172, 176, 180, + 184, 191, 195, 202, 206, 213, 220, 224, 228, 235, + 239, 246, 250, 254, 258, 265, 269, 276, 277, 284, + 288, 295, 299, 306, 310, 317, 321, 325, 329, 333, + 337, 341, 348, 352, 356, 363, 367, 374, 381, 385, + 389, 393, 397, 401, 405, 409, 416, 420, 424, 431, + 435, 439, 446, 450, 454, 461, 462, 463, 467, 471, + 475, 479, 483, 487, 491, 495, 496, 497, 500, 502, + 504 }; #endif @@ -597,16 +604,17 @@ static const char *const yytname[] = "FLOAT", "INDEX", "AND", "JOIN", "EXIT", "HELP", "TXN_BEGIN", "TXN_COMMIT", "TXN_ABORT", "TXN_ROLLBACK", "ORDER_BY", "ENABLE_NESTLOOP", "ENABLE_SORTMERGE", "COUNT", "MAX", "MIN", "SUM", "AS", "GROUP", - "HAVING", "IN", "STATIC_CHECKPOINT", "LEQ", "NEQ", "GEQ", "T_EOF", - "IDENTIFIER", "VALUE_STRING", "VALUE_INT", "VALUE_FLOAT", "VALUE_BOOL", - "';'", "'='", "'('", "')'", "','", "'.'", "'<'", "'>'", "'*'", "$accept", - "start", "stmt", "txnStmt", "dbStmt", "setStmt", "ddl", "dml", - "fieldList", "colNameList", "field", "type", "valueList", "value", - "condition", "optWhereClause", "whereClause", "col", "colList", "op", - "expr", "setClauses", "setClause", "asClause", "select_item", - "select_list", "tableList", "opt_order_clause", "order_clause", - "opt_asc_desc", "group_by_clause", "having_clause", "having_clauses", - "set_knob_type", "tbName", "colName", "alias", YY_NULLPTR + "HAVING", "IN", "STATIC_CHECKPOINT", "LOAD", "OUTPUT_FILE", "ON", "OFF", + "LEQ", "NEQ", "GEQ", "T_EOF", "FILE_PATH", "IDENTIFIER", "VALUE_STRING", + "VALUE_INT", "VALUE_FLOAT", "VALUE_BOOL", "';'", "'='", "'('", "')'", + "','", "'.'", "'<'", "'>'", "'*'", "$accept", "start", "stmt", "txnStmt", + "dbStmt", "setStmt", "ddl", "dml", "fieldList", "colNameList", "field", + "type", "valueList", "value", "condition", "optWhereClause", + "whereClause", "col", "colList", "op", "expr", "setClauses", "setClause", + "asClause", "select_item", "select_list", "tableList", + "opt_order_clause", "order_clause", "opt_asc_desc", "group_by_clause", + "having_clause", "having_clauses", "set_knob_type", "tbName", "colName", + "alias", YY_NULLPTR }; #endif @@ -620,17 +628,17 @@ static const yytype_int16 yytoknum[] = 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 59, 61, 40, 41, 44, 46, - 60, 62, 42 + 305, 306, 307, 308, 309, 310, 311, 312, 313, 59, + 61, 40, 41, 44, 46, 60, 62, 42 }; # endif -#define YYPACT_NINF (-145) +#define YYPACT_NINF (-135) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-95) +#define YYTABLE_NINF (-99) #define yytable_value_is_error(Yyn) \ 0 @@ -639,26 +647,27 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 117, 13, 8, 14, -37, 44, 40, -37, 7, 22, - -145, -145, -145, -145, -145, -145, -145, 57, 31, -145, - -145, -145, -145, -145, -145, 49, -37, -37, -145, -37, - -37, -145, -145, -37, -37, 48, -145, -145, 32, 45, - 50, 53, 61, 38, -145, 65, -145, -11, 64, -145, - -145, -145, -37, 71, 72, -145, 75, 121, 116, 85, - 89, -34, 94, 94, 94, 101, -145, -37, 102, 85, - -145, 85, 85, 85, 110, 94, -145, -145, -8, -145, - 113, -145, 100, 112, 114, 115, 119, -145, -145, 10, - -145, -145, -145, 12, -145, 73, 21, -145, 24, 23, - -145, 133, 43, 85, -145, 23, 65, 65, 65, 65, - 65, -37, -37, 129, -145, 85, -145, 118, -145, -145, - -145, 85, -145, -145, -145, -145, -145, 34, -145, 94, - -145, -145, -145, -145, -145, -145, -145, 103, -145, -145, - -145, -145, -145, -145, -145, -145, -145, 157, 135, -145, - 127, -145, -145, 23, -145, -7, -145, -145, -145, 94, - 102, 164, 123, -145, 22, 42, -145, 124, 43, 156, - 167, -145, -145, -2, -145, 94, 111, 102, 94, -37, - -145, 165, -145, 43, 41, -145, 10, 111, -145, -145, - -145, 129, -145, 135, 164, 130, -145 + 98, 16, 15, 43, -29, 12, 29, -29, 38, -1, + -135, -135, -135, -135, -135, -135, 1, -135, 50, -7, + -135, -135, -135, -135, -135, -135, 56, -29, -29, -135, + -29, -29, -135, -135, -29, -29, 66, -135, -135, -135, + -32, 41, 52, 58, 61, 60, -135, 109, -135, -3, + 96, -135, 151, -135, -135, -29, 102, 103, -135, 104, + 155, 150, 114, -135, -135, 111, -10, 116, 116, 116, + 117, -135, -29, 9, 114, -29, -135, 114, 114, 114, + 112, 116, -135, -135, -5, -135, 115, -135, 110, 118, + 121, 122, 123, -135, -135, -8, -135, -135, -135, -135, + 30, -135, 119, 46, -135, 82, 78, -135, 149, 88, + 114, -135, 78, 109, 109, 109, 109, 109, -29, -29, + 135, -135, 114, -135, 120, -135, -135, -135, 114, -135, + -135, -135, -135, -135, 84, -135, 116, -135, -135, -135, + -135, -135, -135, -135, 33, -135, -135, -135, -135, -135, + -135, -135, -135, -135, 161, 136, -135, 130, -135, -135, + 78, -135, 23, -135, -135, -135, 116, 9, 164, 125, + -135, -1, 89, -135, 126, 88, 163, 174, -135, -135, + -2, -135, 116, 101, 9, 116, -29, -135, 171, -135, + 88, 62, -135, -8, 101, -135, -135, -135, 135, -135, + 136, 164, 131, -135 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -667,43 +676,44 @@ static const yytype_int16 yypact[] = static const yytype_int8 yydefact[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 3, 11, 12, 13, 14, 5, 0, 0, 9, - 6, 10, 7, 8, 15, 0, 0, 0, 19, 0, - 0, 94, 21, 0, 0, 0, 92, 93, 0, 0, - 0, 0, 0, 95, 73, 66, 74, 0, 0, 49, - 1, 2, 0, 0, 0, 20, 0, 0, 44, 0, - 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 25, 95, 44, 62, - 0, 17, 0, 0, 0, 0, 0, 96, 65, 44, - 76, 75, 48, 0, 28, 0, 0, 30, 0, 0, - 46, 45, 0, 0, 26, 0, 66, 66, 66, 66, - 66, 0, 0, 86, 18, 0, 33, 0, 35, 32, - 22, 0, 23, 40, 38, 39, 41, 0, 36, 0, - 58, 56, 55, 57, 52, 53, 54, 0, 63, 64, - 68, 69, 70, 71, 72, 78, 77, 0, 91, 29, - 0, 31, 24, 0, 47, 0, 59, 60, 42, 0, - 89, 80, 0, 37, 0, 0, 50, 85, 0, 90, - 0, 27, 34, 0, 43, 0, 0, 0, 0, 0, - 51, 0, 87, 0, 84, 79, 44, 0, 83, 82, - 81, 86, 88, 91, 80, 0, 61 + 6, 5, 13, 14, 15, 16, 0, 7, 0, 0, + 11, 8, 12, 9, 10, 17, 0, 0, 0, 21, + 0, 0, 98, 23, 0, 0, 0, 95, 96, 97, + 0, 0, 0, 0, 0, 99, 76, 69, 77, 0, + 0, 52, 0, 1, 2, 0, 0, 0, 22, 0, + 0, 47, 0, 4, 3, 0, 0, 0, 0, 0, + 0, 70, 0, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 28, 99, 47, 65, 0, 19, 0, 0, + 0, 0, 0, 100, 68, 47, 79, 78, 51, 26, + 0, 31, 0, 0, 33, 0, 0, 49, 48, 0, + 0, 29, 0, 69, 69, 69, 69, 69, 0, 0, + 89, 20, 0, 36, 0, 38, 35, 24, 0, 25, + 43, 41, 42, 44, 0, 39, 0, 61, 59, 58, + 60, 55, 56, 57, 0, 66, 67, 71, 72, 73, + 74, 75, 81, 80, 0, 94, 32, 0, 34, 27, + 0, 50, 0, 62, 63, 45, 0, 92, 83, 0, + 40, 0, 0, 53, 88, 0, 93, 0, 30, 37, + 0, 46, 0, 0, 0, 0, 0, 54, 0, 90, + 0, 87, 82, 47, 0, 86, 85, 84, 89, 91, + 94, 83, 0, 64 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -145, -145, -145, -145, -145, -145, -145, -145, -145, 120, - 69, -145, 33, -89, 60, -70, -145, -57, -145, -144, - -136, -145, 83, 5, -67, 26, 15, -3, -145, -145, - 1, -145, 2, -145, -4, -38, -145 + -135, -135, -135, -135, -135, -135, -135, -135, -135, 113, + 72, -135, 34, -98, 59, -82, -135, -62, -135, -134, + -108, -135, 87, -17, -72, 27, 13, 0, -135, -135, + 2, -135, 3, -135, -4, -45, -135 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 17, 18, 19, 20, 21, 22, 23, 93, 96, - 94, 119, 127, 156, 100, 76, 101, 45, 167, 137, - 158, 78, 79, 66, 46, 47, 89, 171, 185, 190, - 148, 169, 161, 38, 48, 49, 88 + -1, 18, 19, 20, 21, 22, 23, 24, 100, 103, + 101, 126, 134, 163, 107, 82, 108, 47, 174, 144, + 165, 84, 85, 71, 48, 49, 95, 178, 192, 197, + 155, 176, 168, 40, 50, 51, 94 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -711,50 +721,52 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 32, 91, 67, 35, 83, 84, 85, 86, 104, 75, - 128, 179, 31, 164, 26, 43, 139, 24, 102, 113, - 29, 80, 53, 54, 176, 55, 56, 75, 82, 57, - 58, 92, 27, 95, 97, 97, 111, 25, 30, 187, - 182, 36, 37, 123, 124, 125, 126, 68, 70, 188, - 103, 192, 28, 34, 33, 189, 68, 50, 39, 40, - 41, 42, 52, 90, 163, 80, 128, 59, 112, 114, - 115, 43, 102, 123, 124, 125, 126, 95, 120, 121, - 157, 122, 121, 151, 44, 51, 130, 60, 131, 132, - 133, 152, 153, 168, 116, 117, 118, -94, 134, 174, - 153, 61, 166, 135, 136, 65, 62, 145, 146, 63, - 183, 140, 141, 142, 143, 144, 191, 64, 180, 157, - 1, 184, 2, 69, 3, 4, 5, 71, 72, 6, - 157, 73, 74, 75, 77, 7, 8, 9, 39, 40, - 41, 42, 81, 43, 10, 11, 12, 13, 14, 15, - 87, 43, 43, 123, 124, 125, 126, 106, 129, 155, - 43, 123, 124, 125, 126, 16, 99, 181, 105, 107, - 147, 108, 109, 159, 150, 90, 110, 160, 162, 170, - 172, 177, 175, 178, 149, 164, 138, 196, 165, 154, - 173, 195, 193, 98, 186, 194 + 33, 97, 111, 36, 89, 90, 91, 92, 135, 81, + 72, 186, 81, 120, 146, 63, 64, 86, 118, 109, + 25, 27, 34, 56, 57, 32, 58, 59, 65, 98, + 60, 61, 102, 104, 104, 41, 42, 43, 44, 28, + 26, 183, 35, 171, 45, 41, 42, 43, 44, 30, + 53, 76, 54, 45, 52, 119, 194, 88, 110, 29, + 73, 73, 170, 45, 135, 86, 46, 31, 96, 55, + 195, 99, 37, 38, 109, 189, 196, 102, 130, 131, + 132, 133, 164, 158, 39, 62, 199, 45, 130, 131, + 132, 133, 121, 122, 162, 175, 147, 148, 149, 150, + 151, 1, 66, 2, 173, 3, 4, 5, 127, 128, + 6, 198, 190, 67, 152, 153, 7, 8, 9, 68, + 187, 164, 69, 191, -98, 10, 11, 12, 13, 14, + 15, 137, 164, 130, 131, 132, 133, 138, 139, 140, + 123, 124, 125, 16, 129, 128, 159, 160, 141, 70, + 17, 181, 160, 142, 143, 45, 130, 131, 132, 133, + 74, 75, 188, 77, 78, 79, 80, 81, 83, 87, + 45, 93, 113, 106, 136, 112, 154, 166, 167, 177, + 114, 157, 96, 115, 116, 117, 169, 179, 184, 182, + 185, 171, 105, 203, 156, 161, 172, 145, 180, 193, + 200, 202, 0, 201 }; -static const yytype_uint8 yycheck[] = +static const yytype_int16 yycheck[] = { - 4, 68, 13, 7, 61, 62, 63, 64, 78, 17, - 99, 13, 49, 20, 6, 49, 105, 4, 75, 89, - 6, 59, 26, 27, 168, 29, 30, 17, 62, 33, - 34, 69, 24, 71, 72, 73, 26, 24, 24, 183, - 176, 34, 35, 50, 51, 52, 53, 58, 52, 8, - 58, 187, 44, 13, 10, 14, 58, 0, 36, 37, - 38, 39, 13, 67, 153, 103, 155, 19, 58, 57, - 58, 49, 129, 50, 51, 52, 53, 115, 57, 58, - 137, 57, 58, 121, 62, 54, 43, 55, 45, 46, - 47, 57, 58, 160, 21, 22, 23, 59, 55, 57, - 58, 56, 159, 60, 61, 40, 56, 111, 112, 56, - 177, 106, 107, 108, 109, 110, 186, 56, 175, 176, - 3, 178, 5, 59, 7, 8, 9, 56, 56, 12, - 187, 56, 11, 17, 49, 18, 19, 20, 36, 37, - 38, 39, 53, 49, 27, 28, 29, 30, 31, 32, - 49, 49, 49, 50, 51, 52, 53, 57, 25, 56, - 49, 50, 51, 52, 53, 48, 56, 56, 55, 57, - 41, 57, 57, 16, 56, 179, 57, 42, 51, 15, - 57, 25, 58, 16, 115, 20, 103, 57, 155, 129, - 164, 194, 191, 73, 179, 193 + 4, 73, 84, 7, 66, 67, 68, 69, 106, 17, + 13, 13, 17, 95, 112, 47, 48, 62, 26, 81, + 4, 6, 10, 27, 28, 54, 30, 31, 60, 74, + 34, 35, 77, 78, 79, 36, 37, 38, 39, 24, + 24, 175, 13, 20, 54, 36, 37, 38, 39, 6, + 0, 55, 59, 54, 53, 63, 190, 67, 63, 44, + 63, 63, 160, 54, 162, 110, 67, 24, 72, 13, + 8, 75, 34, 35, 136, 183, 14, 122, 55, 56, + 57, 58, 144, 128, 46, 19, 194, 54, 55, 56, + 57, 58, 62, 63, 61, 167, 113, 114, 115, 116, + 117, 3, 61, 5, 166, 7, 8, 9, 62, 63, + 12, 193, 184, 61, 118, 119, 18, 19, 20, 61, + 182, 183, 61, 185, 64, 27, 28, 29, 30, 31, + 32, 43, 194, 55, 56, 57, 58, 49, 50, 51, + 21, 22, 23, 45, 62, 63, 62, 63, 60, 40, + 52, 62, 63, 65, 66, 54, 55, 56, 57, 58, + 64, 10, 61, 61, 61, 61, 11, 17, 54, 58, + 54, 54, 62, 61, 25, 60, 41, 16, 42, 15, + 62, 61, 186, 62, 62, 62, 56, 62, 25, 63, + 16, 20, 79, 62, 122, 136, 162, 110, 171, 186, + 198, 201, -1, 200 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -762,55 +774,58 @@ static const yytype_uint8 yycheck[] = static const yytype_int8 yystos[] = { 0, 3, 5, 7, 8, 9, 12, 18, 19, 20, - 27, 28, 29, 30, 31, 32, 48, 64, 65, 66, - 67, 68, 69, 70, 4, 24, 6, 24, 44, 6, - 24, 49, 97, 10, 13, 97, 34, 35, 96, 36, - 37, 38, 39, 49, 62, 80, 87, 88, 97, 98, - 0, 54, 13, 97, 97, 97, 97, 97, 97, 19, - 55, 56, 56, 56, 56, 40, 86, 13, 58, 59, - 97, 56, 56, 56, 11, 17, 78, 49, 84, 85, - 98, 53, 62, 80, 80, 80, 80, 49, 99, 89, - 97, 87, 98, 71, 73, 98, 72, 98, 72, 56, - 77, 79, 80, 58, 78, 55, 57, 57, 57, 57, - 57, 26, 58, 78, 57, 58, 21, 22, 23, 74, - 57, 58, 57, 50, 51, 52, 53, 75, 76, 25, - 43, 45, 46, 47, 55, 60, 61, 82, 85, 76, - 86, 86, 86, 86, 86, 97, 97, 41, 93, 73, - 56, 98, 57, 58, 77, 56, 76, 80, 83, 16, - 42, 95, 51, 76, 20, 75, 80, 81, 87, 94, - 15, 90, 57, 88, 57, 58, 82, 25, 16, 13, - 80, 56, 83, 87, 80, 91, 89, 82, 8, 14, - 92, 78, 83, 93, 95, 90, 57 + 27, 28, 29, 30, 31, 32, 45, 52, 69, 70, + 71, 72, 73, 74, 75, 4, 24, 6, 24, 44, + 6, 24, 54, 102, 10, 13, 102, 34, 35, 46, + 101, 36, 37, 38, 39, 54, 67, 85, 92, 93, + 102, 103, 53, 0, 59, 13, 102, 102, 102, 102, + 102, 102, 19, 47, 48, 60, 61, 61, 61, 61, + 40, 91, 13, 63, 64, 10, 102, 61, 61, 61, + 11, 17, 83, 54, 89, 90, 103, 58, 67, 85, + 85, 85, 85, 54, 104, 94, 102, 92, 103, 102, + 76, 78, 103, 77, 103, 77, 61, 82, 84, 85, + 63, 83, 60, 62, 62, 62, 62, 62, 26, 63, + 83, 62, 63, 21, 22, 23, 79, 62, 63, 62, + 55, 56, 57, 58, 80, 81, 25, 43, 49, 50, + 51, 60, 65, 66, 87, 90, 81, 91, 91, 91, + 91, 91, 102, 102, 41, 98, 78, 61, 103, 62, + 63, 82, 61, 81, 85, 88, 16, 42, 100, 56, + 81, 20, 80, 85, 86, 92, 99, 15, 95, 62, + 93, 62, 63, 87, 25, 16, 13, 85, 61, 88, + 92, 85, 96, 94, 87, 8, 14, 97, 83, 88, + 98, 100, 95, 62 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int8 yyr1[] = { - 0, 63, 64, 64, 64, 64, 65, 65, 65, 65, - 65, 66, 66, 66, 66, 67, 67, 68, 69, 69, - 69, 69, 69, 69, 70, 70, 70, 70, 71, 71, - 72, 72, 73, 74, 74, 74, 75, 75, 76, 76, - 76, 76, 77, 77, 78, 78, 79, 79, 80, 80, - 81, 81, 82, 82, 82, 82, 82, 82, 82, 83, - 83, 83, 84, 84, 85, 86, 86, 87, 87, 87, - 87, 87, 87, 88, 88, 88, 89, 89, 89, 90, - 90, 91, 92, 92, 92, 93, 93, 94, 94, 94, - 95, 95, 96, 96, 97, 98, 99 + 0, 68, 69, 69, 69, 69, 69, 69, 70, 70, + 70, 70, 70, 71, 71, 71, 71, 72, 72, 73, + 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, + 75, 76, 76, 77, 77, 78, 79, 79, 79, 80, + 80, 81, 81, 81, 81, 82, 82, 83, 83, 84, + 84, 85, 85, 86, 86, 87, 87, 87, 87, 87, + 87, 87, 88, 88, 88, 89, 89, 90, 91, 91, + 92, 92, 92, 92, 92, 92, 93, 93, 93, 94, + 94, 94, 95, 95, 96, 97, 97, 97, 98, 98, + 99, 99, 99, 100, 100, 101, 101, 101, 102, 103, + 104 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_int8 yyr2[] = { - 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 4, 4, 6, 2, - 3, 2, 6, 6, 7, 4, 5, 8, 1, 3, - 1, 3, 2, 1, 4, 1, 1, 3, 1, 1, - 1, 1, 3, 5, 0, 2, 1, 3, 3, 1, - 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 10, 1, 3, 3, 2, 0, 2, 5, 5, - 5, 5, 5, 1, 1, 3, 1, 3, 3, 3, - 0, 2, 1, 1, 0, 3, 0, 3, 5, 0, - 2, 0, 1, 1, 1, 1, 1 + 0, 2, 2, 3, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 4, 4, + 6, 2, 3, 2, 6, 6, 4, 7, 4, 5, + 8, 1, 3, 1, 3, 2, 1, 4, 1, 1, + 3, 1, 1, 1, 1, 3, 5, 0, 2, 1, + 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 10, 1, 3, 3, 2, 0, + 2, 5, 5, 5, 5, 5, 1, 1, 3, 1, + 3, 3, 3, 0, 2, 1, 1, 0, 3, 0, + 3, 5, 0, 2, 0, 1, 1, 1, 1, 1, + 1 }; @@ -1612,680 +1627,712 @@ yyreduce: parse_tree = (yyvsp[-1].sv_node); YYACCEPT; } -#line 1616 "yacc.tab.cpp" +#line 1631 "yacc.tab.cpp" break; case 3: #line 69 "yacc.y" { - parse_tree = std::make_shared<Help>(); + parse_tree = std::make_shared<SetStmt>((yyvsp[-1].sv_setKnobType), false); YYACCEPT; } -#line 1625 "yacc.tab.cpp" +#line 1640 "yacc.tab.cpp" break; case 4: #line 74 "yacc.y" { - parse_tree = nullptr; + parse_tree = std::make_shared<SetStmt>((yyvsp[-1].sv_setKnobType), true); YYACCEPT; } -#line 1634 "yacc.tab.cpp" +#line 1649 "yacc.tab.cpp" break; case 5: #line 79 "yacc.y" + { + parse_tree = std::make_shared<Help>(); + YYACCEPT; + } +#line 1658 "yacc.tab.cpp" + break; + + case 6: +#line 84 "yacc.y" { parse_tree = nullptr; YYACCEPT; } -#line 1643 "yacc.tab.cpp" +#line 1667 "yacc.tab.cpp" break; - case 11: -#line 95 "yacc.y" + case 7: +#line 89 "yacc.y" + { + parse_tree = nullptr; + YYACCEPT; + } +#line 1676 "yacc.tab.cpp" + break; + + case 13: +#line 105 "yacc.y" { (yyval.sv_node) = std::make_shared<TxnBegin>(); } -#line 1651 "yacc.tab.cpp" +#line 1684 "yacc.tab.cpp" break; - case 12: -#line 99 "yacc.y" + case 14: +#line 109 "yacc.y" { (yyval.sv_node) = std::make_shared<TxnCommit>(); } -#line 1659 "yacc.tab.cpp" +#line 1692 "yacc.tab.cpp" break; - case 13: -#line 103 "yacc.y" + case 15: +#line 113 "yacc.y" { (yyval.sv_node) = std::make_shared<TxnAbort>(); } -#line 1667 "yacc.tab.cpp" +#line 1700 "yacc.tab.cpp" break; - case 14: -#line 107 "yacc.y" + case 16: +#line 117 "yacc.y" { (yyval.sv_node) = std::make_shared<TxnRollback>(); } -#line 1675 "yacc.tab.cpp" +#line 1708 "yacc.tab.cpp" break; - case 15: -#line 114 "yacc.y" + case 17: +#line 124 "yacc.y" { (yyval.sv_node) = std::make_shared<ShowTables>(); } -#line 1683 "yacc.tab.cpp" +#line 1716 "yacc.tab.cpp" break; - case 16: -#line 118 "yacc.y" + case 18: +#line 128 "yacc.y" { (yyval.sv_node) = std::make_shared<ShowIndexs>((yyvsp[0].sv_str)); } -#line 1691 "yacc.tab.cpp" +#line 1724 "yacc.tab.cpp" break; - case 17: -#line 125 "yacc.y" + case 19: +#line 135 "yacc.y" { (yyval.sv_node) = std::make_shared<SetStmt>((yyvsp[-2].sv_setKnobType), (yyvsp[0].sv_bool)); } -#line 1699 "yacc.tab.cpp" +#line 1732 "yacc.tab.cpp" break; - case 18: -#line 132 "yacc.y" + case 20: +#line 142 "yacc.y" { (yyval.sv_node) = std::make_shared<CreateTable>((yyvsp[-3].sv_str), (yyvsp[-1].sv_fields)); } -#line 1707 "yacc.tab.cpp" +#line 1740 "yacc.tab.cpp" break; - case 19: -#line 136 "yacc.y" + case 21: +#line 146 "yacc.y" { (yyval.sv_node) = std::make_shared<CreateStaticCheckpoint>(); } -#line 1715 "yacc.tab.cpp" +#line 1748 "yacc.tab.cpp" break; - case 20: -#line 140 "yacc.y" + case 22: +#line 150 "yacc.y" { (yyval.sv_node) = std::make_shared<DropTable>((yyvsp[0].sv_str)); } -#line 1723 "yacc.tab.cpp" +#line 1756 "yacc.tab.cpp" break; - case 21: -#line 144 "yacc.y" + case 23: +#line 154 "yacc.y" { (yyval.sv_node) = std::make_shared<DescTable>((yyvsp[0].sv_str)); } -#line 1731 "yacc.tab.cpp" +#line 1764 "yacc.tab.cpp" break; - case 22: -#line 148 "yacc.y" + case 24: +#line 158 "yacc.y" { (yyval.sv_node) = std::make_shared<CreateIndex>((yyvsp[-3].sv_str), (yyvsp[-1].sv_strs)); } -#line 1739 "yacc.tab.cpp" +#line 1772 "yacc.tab.cpp" break; - case 23: -#line 152 "yacc.y" + case 25: +#line 162 "yacc.y" { (yyval.sv_node) = std::make_shared<DropIndex>((yyvsp[-3].sv_str), (yyvsp[-1].sv_strs)); } -#line 1747 "yacc.tab.cpp" +#line 1780 "yacc.tab.cpp" break; - case 24: -#line 159 "yacc.y" + case 26: +#line 169 "yacc.y" + { + (yyval.sv_node) = std::make_shared<LoadStmt>((yyvsp[-2].sv_str), (yyvsp[0].sv_str)); + } +#line 1788 "yacc.tab.cpp" + break; + + case 27: +#line 173 "yacc.y" { (yyval.sv_node) = std::make_shared<InsertStmt>((yyvsp[-4].sv_str), (yyvsp[-1].sv_vals)); } -#line 1755 "yacc.tab.cpp" +#line 1796 "yacc.tab.cpp" break; - case 25: -#line 163 "yacc.y" + case 28: +#line 177 "yacc.y" { (yyval.sv_node) = std::make_shared<DeleteStmt>((yyvsp[-1].sv_str), (yyvsp[0].sv_conds)); } -#line 1763 "yacc.tab.cpp" +#line 1804 "yacc.tab.cpp" break; - case 26: -#line 167 "yacc.y" + case 29: +#line 181 "yacc.y" { (yyval.sv_node) = std::make_shared<UpdateStmt>((yyvsp[-3].sv_str), (yyvsp[-1].sv_set_clauses), (yyvsp[0].sv_conds)); } -#line 1771 "yacc.tab.cpp" +#line 1812 "yacc.tab.cpp" break; - case 27: -#line 171 "yacc.y" + case 30: +#line 185 "yacc.y" { (yyval.sv_node) = std::static_pointer_cast<Expr>(std::make_shared<SelectStmt>((yyvsp[-6].sv_bounds), (yyvsp[-4].sv_strs), (yyvsp[-3].sv_conds), (yyvsp[-2].sv_cols), (yyvsp[-1].sv_havings), (yyvsp[0].sv_orderby))); } -#line 1779 "yacc.tab.cpp" +#line 1820 "yacc.tab.cpp" break; - case 28: -#line 178 "yacc.y" + case 31: +#line 192 "yacc.y" { (yyval.sv_fields) = std::vector<std::shared_ptr<Field>>{(yyvsp[0].sv_field)}; } -#line 1787 "yacc.tab.cpp" +#line 1828 "yacc.tab.cpp" break; - case 29: -#line 182 "yacc.y" + case 32: +#line 196 "yacc.y" { (yyval.sv_fields).push_back((yyvsp[0].sv_field)); } -#line 1795 "yacc.tab.cpp" +#line 1836 "yacc.tab.cpp" break; - case 30: -#line 189 "yacc.y" + case 33: +#line 203 "yacc.y" { (yyval.sv_strs) = std::vector<std::string>{(yyvsp[0].sv_str)}; } -#line 1803 "yacc.tab.cpp" +#line 1844 "yacc.tab.cpp" break; - case 31: -#line 193 "yacc.y" + case 34: +#line 207 "yacc.y" { (yyval.sv_strs).push_back((yyvsp[0].sv_str)); } -#line 1811 "yacc.tab.cpp" +#line 1852 "yacc.tab.cpp" break; - case 32: -#line 200 "yacc.y" + case 35: +#line 214 "yacc.y" { (yyval.sv_field) = std::make_shared<ColDef>((yyvsp[-1].sv_str), (yyvsp[0].sv_type_len)); } -#line 1819 "yacc.tab.cpp" +#line 1860 "yacc.tab.cpp" break; - case 33: -#line 207 "yacc.y" + case 36: +#line 221 "yacc.y" { (yyval.sv_type_len) = std::make_shared<TypeLen>(SV_TYPE_INT, sizeof(int)); } -#line 1827 "yacc.tab.cpp" +#line 1868 "yacc.tab.cpp" break; - case 34: -#line 211 "yacc.y" + case 37: +#line 225 "yacc.y" { (yyval.sv_type_len) = std::make_shared<TypeLen>(SV_TYPE_STRING, (yyvsp[-1].sv_int)); } -#line 1835 "yacc.tab.cpp" +#line 1876 "yacc.tab.cpp" break; - case 35: -#line 215 "yacc.y" + case 38: +#line 229 "yacc.y" { (yyval.sv_type_len) = std::make_shared<TypeLen>(SV_TYPE_FLOAT, sizeof(float)); } -#line 1843 "yacc.tab.cpp" +#line 1884 "yacc.tab.cpp" break; - case 36: -#line 222 "yacc.y" + case 39: +#line 236 "yacc.y" { (yyval.sv_vals) = std::vector<std::shared_ptr<Value>>{(yyvsp[0].sv_val)}; } -#line 1851 "yacc.tab.cpp" +#line 1892 "yacc.tab.cpp" break; - case 37: -#line 226 "yacc.y" + case 40: +#line 240 "yacc.y" { (yyval.sv_vals).push_back((yyvsp[0].sv_val)); } -#line 1859 "yacc.tab.cpp" +#line 1900 "yacc.tab.cpp" break; - case 38: -#line 233 "yacc.y" + case 41: +#line 247 "yacc.y" { (yyval.sv_val) = std::make_shared<IntLit>((yyvsp[0].sv_int)); } -#line 1867 "yacc.tab.cpp" +#line 1908 "yacc.tab.cpp" break; - case 39: -#line 237 "yacc.y" + case 42: +#line 251 "yacc.y" { (yyval.sv_val) = std::make_shared<FloatLit>((yyvsp[0].sv_float)); } -#line 1875 "yacc.tab.cpp" +#line 1916 "yacc.tab.cpp" break; - case 40: -#line 241 "yacc.y" + case 43: +#line 255 "yacc.y" { (yyval.sv_val) = std::make_shared<StringLit>((yyvsp[0].sv_str)); } -#line 1883 "yacc.tab.cpp" +#line 1924 "yacc.tab.cpp" break; - case 41: -#line 245 "yacc.y" + case 44: +#line 259 "yacc.y" { (yyval.sv_val) = std::make_shared<BoolLit>((yyvsp[0].sv_bool)); } -#line 1891 "yacc.tab.cpp" +#line 1932 "yacc.tab.cpp" break; - case 42: -#line 252 "yacc.y" + case 45: +#line 266 "yacc.y" { (yyval.sv_cond) = std::make_shared<BinaryExpr>((yyvsp[-2].sv_col), (yyvsp[-1].sv_comp_op), (yyvsp[0].sv_expr)); } -#line 1899 "yacc.tab.cpp" +#line 1940 "yacc.tab.cpp" break; - case 43: -#line 256 "yacc.y" + case 46: +#line 270 "yacc.y" { (yyval.sv_cond) = std::make_shared<BinaryExpr>((yyvsp[-4].sv_col), (yyvsp[-3].sv_comp_op), (yyvsp[-1].sv_vals)); } -#line 1907 "yacc.tab.cpp" +#line 1948 "yacc.tab.cpp" break; - case 44: -#line 262 "yacc.y" + case 47: +#line 276 "yacc.y" { /* ignore*/ } -#line 1913 "yacc.tab.cpp" +#line 1954 "yacc.tab.cpp" break; - case 45: -#line 264 "yacc.y" + case 48: +#line 278 "yacc.y" { (yyval.sv_conds) = (yyvsp[0].sv_conds); } -#line 1921 "yacc.tab.cpp" +#line 1962 "yacc.tab.cpp" break; - case 46: -#line 271 "yacc.y" + case 49: +#line 285 "yacc.y" { (yyval.sv_conds) = std::vector<std::shared_ptr<BinaryExpr>>{(yyvsp[0].sv_cond)}; } -#line 1929 "yacc.tab.cpp" +#line 1970 "yacc.tab.cpp" break; - case 47: -#line 275 "yacc.y" + case 50: +#line 289 "yacc.y" { (yyval.sv_conds).push_back((yyvsp[0].sv_cond)); } -#line 1937 "yacc.tab.cpp" +#line 1978 "yacc.tab.cpp" break; - case 48: -#line 282 "yacc.y" + case 51: +#line 296 "yacc.y" { (yyval.sv_col) = std::make_shared<Col>((yyvsp[-2].sv_str), (yyvsp[0].sv_str)); } -#line 1945 "yacc.tab.cpp" +#line 1986 "yacc.tab.cpp" break; - case 49: -#line 286 "yacc.y" + case 52: +#line 300 "yacc.y" { (yyval.sv_col) = std::make_shared<Col>("", (yyvsp[0].sv_str)); } -#line 1953 "yacc.tab.cpp" +#line 1994 "yacc.tab.cpp" break; - case 50: -#line 293 "yacc.y" + case 53: +#line 307 "yacc.y" { (yyval.sv_cols) = std::vector<std::shared_ptr<Col>>{(yyvsp[0].sv_col)}; } -#line 1961 "yacc.tab.cpp" +#line 2002 "yacc.tab.cpp" break; - case 51: -#line 297 "yacc.y" + case 54: +#line 311 "yacc.y" { (yyval.sv_cols).push_back((yyvsp[0].sv_col)); } -#line 1969 "yacc.tab.cpp" +#line 2010 "yacc.tab.cpp" break; - case 52: -#line 304 "yacc.y" + case 55: +#line 318 "yacc.y" { (yyval.sv_comp_op) = SV_OP_EQ; } -#line 1977 "yacc.tab.cpp" +#line 2018 "yacc.tab.cpp" break; - case 53: -#line 308 "yacc.y" + case 56: +#line 322 "yacc.y" { (yyval.sv_comp_op) = SV_OP_LT; } -#line 1985 "yacc.tab.cpp" +#line 2026 "yacc.tab.cpp" break; - case 54: -#line 312 "yacc.y" + case 57: +#line 326 "yacc.y" { (yyval.sv_comp_op) = SV_OP_GT; } -#line 1993 "yacc.tab.cpp" +#line 2034 "yacc.tab.cpp" break; - case 55: -#line 316 "yacc.y" + case 58: +#line 330 "yacc.y" { (yyval.sv_comp_op) = SV_OP_NE; } -#line 2001 "yacc.tab.cpp" +#line 2042 "yacc.tab.cpp" break; - case 56: -#line 320 "yacc.y" + case 59: +#line 334 "yacc.y" { (yyval.sv_comp_op) = SV_OP_LE; } -#line 2009 "yacc.tab.cpp" +#line 2050 "yacc.tab.cpp" break; - case 57: -#line 324 "yacc.y" + case 60: +#line 338 "yacc.y" { (yyval.sv_comp_op) = SV_OP_GE; } -#line 2017 "yacc.tab.cpp" +#line 2058 "yacc.tab.cpp" break; - case 58: -#line 328 "yacc.y" + case 61: +#line 342 "yacc.y" { (yyval.sv_comp_op) = SV_OP_IN; } -#line 2025 "yacc.tab.cpp" +#line 2066 "yacc.tab.cpp" break; - case 59: -#line 335 "yacc.y" + case 62: +#line 349 "yacc.y" { (yyval.sv_expr) = std::static_pointer_cast<Expr>((yyvsp[0].sv_val)); } -#line 2033 "yacc.tab.cpp" +#line 2074 "yacc.tab.cpp" break; - case 60: -#line 339 "yacc.y" + case 63: +#line 353 "yacc.y" { (yyval.sv_expr) = std::static_pointer_cast<Expr>((yyvsp[0].sv_col)); } -#line 2041 "yacc.tab.cpp" +#line 2082 "yacc.tab.cpp" break; - case 61: -#line 343 "yacc.y" + case 64: +#line 357 "yacc.y" { (yyval.sv_expr) = std::make_shared<SelectStmt>((yyvsp[-7].sv_bounds), (yyvsp[-5].sv_strs), (yyvsp[-4].sv_conds), (yyvsp[-3].sv_cols), (yyvsp[-2].sv_havings), (yyvsp[-1].sv_orderby)); } -#line 2049 "yacc.tab.cpp" +#line 2090 "yacc.tab.cpp" break; - case 62: -#line 350 "yacc.y" + case 65: +#line 364 "yacc.y" { (yyval.sv_set_clauses) = std::vector<std::shared_ptr<SetClause>>{(yyvsp[0].sv_set_clause)}; } -#line 2057 "yacc.tab.cpp" +#line 2098 "yacc.tab.cpp" break; - case 63: -#line 354 "yacc.y" + case 66: +#line 368 "yacc.y" { (yyval.sv_set_clauses).push_back((yyvsp[0].sv_set_clause)); } -#line 2065 "yacc.tab.cpp" +#line 2106 "yacc.tab.cpp" break; - case 64: -#line 361 "yacc.y" + case 67: +#line 375 "yacc.y" { (yyval.sv_set_clause) = std::make_shared<SetClause>((yyvsp[-2].sv_str), (yyvsp[0].sv_val)); } -#line 2073 "yacc.tab.cpp" +#line 2114 "yacc.tab.cpp" break; - case 65: -#line 368 "yacc.y" + case 68: +#line 382 "yacc.y" { (yyval.sv_str) = (yyvsp[0].sv_str); } -#line 2081 "yacc.tab.cpp" +#line 2122 "yacc.tab.cpp" break; - case 66: -#line 371 "yacc.y" + case 69: +#line 385 "yacc.y" { (yyval.sv_str) = ""; } -#line 2087 "yacc.tab.cpp" +#line 2128 "yacc.tab.cpp" break; - case 67: -#line 376 "yacc.y" + case 70: +#line 390 "yacc.y" { (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-1].sv_col), AGG_COL, (yyvsp[0].sv_str)); } -#line 2095 "yacc.tab.cpp" +#line 2136 "yacc.tab.cpp" break; - case 68: -#line 380 "yacc.y" + case 71: +#line 394 "yacc.y" { (yyval.sv_bound) = std::make_shared<BoundExpr>(std::make_shared<Col>("", ""), AGG_COUNT, (yyvsp[0].sv_str)); } -#line 2103 "yacc.tab.cpp" +#line 2144 "yacc.tab.cpp" break; - case 69: -#line 384 "yacc.y" + case 72: +#line 398 "yacc.y" { (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_COUNT, (yyvsp[0].sv_str)); } -#line 2111 "yacc.tab.cpp" +#line 2152 "yacc.tab.cpp" break; - case 70: -#line 388 "yacc.y" + case 73: +#line 402 "yacc.y" { (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_MAX, (yyvsp[0].sv_str)); } -#line 2119 "yacc.tab.cpp" +#line 2160 "yacc.tab.cpp" break; - case 71: -#line 392 "yacc.y" + case 74: +#line 406 "yacc.y" { (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_MIN, (yyvsp[0].sv_str)); } -#line 2127 "yacc.tab.cpp" +#line 2168 "yacc.tab.cpp" break; - case 72: -#line 396 "yacc.y" + case 75: +#line 410 "yacc.y" { (yyval.sv_bound) = std::make_shared<BoundExpr>((yyvsp[-2].sv_col), AGG_SUM, (yyvsp[0].sv_str)); } -#line 2135 "yacc.tab.cpp" +#line 2176 "yacc.tab.cpp" break; - case 73: -#line 403 "yacc.y" + case 76: +#line 417 "yacc.y" { (yyval.sv_bounds) = {}; } -#line 2143 "yacc.tab.cpp" +#line 2184 "yacc.tab.cpp" break; - case 74: -#line 407 "yacc.y" + case 77: +#line 421 "yacc.y" { (yyval.sv_bounds) = std::vector<std::shared_ptr<BoundExpr>>{(yyvsp[0].sv_bound)}; } -#line 2151 "yacc.tab.cpp" +#line 2192 "yacc.tab.cpp" break; - case 75: -#line 411 "yacc.y" + case 78: +#line 425 "yacc.y" { (yyval.sv_bounds).push_back((yyvsp[0].sv_bound)); } -#line 2159 "yacc.tab.cpp" +#line 2200 "yacc.tab.cpp" break; - case 76: -#line 418 "yacc.y" + case 79: +#line 432 "yacc.y" { (yyval.sv_strs) = std::vector<std::string>{(yyvsp[0].sv_str)}; } -#line 2167 "yacc.tab.cpp" +#line 2208 "yacc.tab.cpp" break; - case 77: -#line 422 "yacc.y" + case 80: +#line 436 "yacc.y" { (yyval.sv_strs).push_back((yyvsp[0].sv_str)); } -#line 2175 "yacc.tab.cpp" +#line 2216 "yacc.tab.cpp" break; - case 78: -#line 426 "yacc.y" + case 81: +#line 440 "yacc.y" { (yyval.sv_strs).push_back((yyvsp[0].sv_str)); } -#line 2183 "yacc.tab.cpp" +#line 2224 "yacc.tab.cpp" break; - case 79: -#line 433 "yacc.y" + case 82: +#line 447 "yacc.y" { (yyval.sv_orderby) = (yyvsp[0].sv_orderby); } -#line 2191 "yacc.tab.cpp" +#line 2232 "yacc.tab.cpp" break; - case 80: -#line 436 "yacc.y" + case 83: +#line 450 "yacc.y" { /* ignore*/ } -#line 2197 "yacc.tab.cpp" +#line 2238 "yacc.tab.cpp" break; - case 81: -#line 441 "yacc.y" + case 84: +#line 455 "yacc.y" { (yyval.sv_orderby) = std::make_shared<OrderBy>((yyvsp[-1].sv_col), (yyvsp[0].sv_orderby_dir)); } -#line 2205 "yacc.tab.cpp" +#line 2246 "yacc.tab.cpp" break; - case 82: -#line 447 "yacc.y" + case 85: +#line 461 "yacc.y" { (yyval.sv_orderby_dir) = OrderBy_ASC; } -#line 2211 "yacc.tab.cpp" +#line 2252 "yacc.tab.cpp" break; - case 83: -#line 448 "yacc.y" + case 86: +#line 462 "yacc.y" { (yyval.sv_orderby_dir) = OrderBy_DESC; } -#line 2217 "yacc.tab.cpp" +#line 2258 "yacc.tab.cpp" break; - case 84: -#line 449 "yacc.y" + case 87: +#line 463 "yacc.y" { (yyval.sv_orderby_dir) = OrderBy_DEFAULT; } -#line 2223 "yacc.tab.cpp" +#line 2264 "yacc.tab.cpp" break; - case 85: -#line 454 "yacc.y" + case 88: +#line 468 "yacc.y" { (yyval.sv_cols) = (yyvsp[0].sv_cols); } -#line 2231 "yacc.tab.cpp" +#line 2272 "yacc.tab.cpp" break; - case 86: -#line 457 "yacc.y" + case 89: +#line 471 "yacc.y" { /* ignore*/ } -#line 2237 "yacc.tab.cpp" +#line 2278 "yacc.tab.cpp" break; - case 87: -#line 462 "yacc.y" + case 90: +#line 476 "yacc.y" { (yyval.sv_havings).emplace_back(std::make_shared<HavingExpr>((yyvsp[-2].sv_bound), (yyvsp[-1].sv_comp_op), (yyvsp[0].sv_expr))); } -#line 2245 "yacc.tab.cpp" +#line 2286 "yacc.tab.cpp" break; - case 88: -#line 466 "yacc.y" + case 91: +#line 480 "yacc.y" { (yyval.sv_havings).emplace_back(std::make_shared<HavingExpr>((yyvsp[-2].sv_bound), (yyvsp[-1].sv_comp_op), (yyvsp[0].sv_expr))); } -#line 2253 "yacc.tab.cpp" +#line 2294 "yacc.tab.cpp" break; - case 89: -#line 469 "yacc.y" + case 92: +#line 483 "yacc.y" { /* ignore*/ } -#line 2259 "yacc.tab.cpp" +#line 2300 "yacc.tab.cpp" break; - case 90: -#line 474 "yacc.y" + case 93: +#line 488 "yacc.y" { (yyval.sv_havings) = (yyvsp[0].sv_havings); } -#line 2267 "yacc.tab.cpp" +#line 2308 "yacc.tab.cpp" break; - case 91: -#line 477 "yacc.y" + case 94: +#line 491 "yacc.y" { /* ignore*/ } -#line 2273 "yacc.tab.cpp" +#line 2314 "yacc.tab.cpp" break; - case 92: -#line 481 "yacc.y" - { (yyval.sv_setKnobType) = EnableNestLoop; } -#line 2279 "yacc.tab.cpp" + case 95: +#line 495 "yacc.y" + { (yyval.sv_setKnobType) = EnableNestLoop; } +#line 2320 "yacc.tab.cpp" break; - case 93: -#line 482 "yacc.y" + case 96: +#line 496 "yacc.y" { (yyval.sv_setKnobType) = EnableSortMerge; } -#line 2285 "yacc.tab.cpp" +#line 2326 "yacc.tab.cpp" + break; + + case 97: +#line 497 "yacc.y" + { (yyval.sv_setKnobType) = EnableOutputFile; } +#line 2332 "yacc.tab.cpp" break; -#line 2289 "yacc.tab.cpp" +#line 2336 "yacc.tab.cpp" default: break; } @@ -2523,5 +2570,5 @@ yyreturn: #endif return yyresult; } -#line 490 "yacc.y" +#line 505 "yacc.y" diff --git a/src/parser/yacc.tab.h b/src/parser/yacc.tab.h index 3df0232a3c7cab7f8ea7381c64bdb286f0b99243..da391e269a6945b9f4b5d37904ed754b64b91bd2 100644 --- a/src/parser/yacc.tab.h +++ b/src/parser/yacc.tab.h @@ -91,15 +91,20 @@ extern int yydebug; HAVING = 297, IN = 298, STATIC_CHECKPOINT = 299, - LEQ = 300, - NEQ = 301, - GEQ = 302, - T_EOF = 303, - IDENTIFIER = 304, - VALUE_STRING = 305, - VALUE_INT = 306, - VALUE_FLOAT = 307, - VALUE_BOOL = 308 + LOAD = 300, + OUTPUT_FILE = 301, + ON = 302, + OFF = 303, + LEQ = 304, + NEQ = 305, + GEQ = 306, + T_EOF = 307, + FILE_PATH = 308, + IDENTIFIER = 309, + VALUE_STRING = 310, + VALUE_INT = 311, + VALUE_FLOAT = 312, + VALUE_BOOL = 313 }; #endif diff --git a/src/parser/yacc.tab.hpp b/src/parser/yacc.tab.hpp index 0b490b26a2db49337e51f52dfe43d84cd6903c97..a4148a7e4c13204ba5702d87fe4b1313a7188a8a 100644 --- a/src/parser/yacc.tab.hpp +++ b/src/parser/yacc.tab.hpp @@ -91,15 +91,20 @@ extern int yydebug; HAVING = 297, IN = 298, STATIC_CHECKPOINT = 299, - LEQ = 300, - NEQ = 301, - GEQ = 302, - T_EOF = 303, - IDENTIFIER = 304, - VALUE_STRING = 305, - VALUE_INT = 306, - VALUE_FLOAT = 307, - VALUE_BOOL = 308 + LOAD = 300, + OUTPUT_FILE = 301, + ON = 302, + OFF = 303, + LEQ = 304, + NEQ = 305, + GEQ = 306, + T_EOF = 307, + FILE_PATH = 308, + IDENTIFIER = 309, + VALUE_STRING = 310, + VALUE_INT = 311, + VALUE_FLOAT = 312, + VALUE_BOOL = 313 }; #endif diff --git a/src/parser/yacc.y b/src/parser/yacc.y index a4054e153b9dc3ef68d562a61175c67a17254daf..55f431f4ad1087bbd63a89f3f083eb34b9047400 100644 --- a/src/parser/yacc.y +++ b/src/parser/yacc.y @@ -23,13 +23,13 @@ using namespace ast; // keywords %token SHOW TABLES CREATE TABLE DROP DESC INSERT INTO VALUES DELETE FROM ASC ORDER BY WHERE UPDATE SET SELECT INT CHAR FLOAT INDEX AND JOIN EXIT HELP TXN_BEGIN TXN_COMMIT TXN_ABORT TXN_ROLLBACK ORDER_BY ENABLE_NESTLOOP ENABLE_SORTMERGE -COUNT MAX MIN SUM AS GROUP HAVING IN STATIC_CHECKPOINT +COUNT MAX MIN SUM AS GROUP HAVING IN STATIC_CHECKPOINT LOAD OUTPUT_FILE ON OFF // non-keywords %token LEQ NEQ GEQ T_EOF // type-specific tokens -%token <sv_str> IDENTIFIER VALUE_STRING +%token <sv_str> FILE_PATH IDENTIFIER VALUE_STRING %token <sv_int> VALUE_INT %token <sv_float> VALUE_FLOAT %token <sv_bool> VALUE_BOOL @@ -65,6 +65,16 @@ start: parse_tree = $1; YYACCEPT; } + | SET set_knob_type OFF + { + parse_tree = std::make_shared<SetStmt>($2, false); + YYACCEPT; + } + | SET set_knob_type ON + { + parse_tree = std::make_shared<SetStmt>($2, true); + YYACCEPT; + } | HELP { parse_tree = std::make_shared<Help>(); @@ -155,7 +165,11 @@ ddl: ; dml: - INSERT INTO tbName VALUES '(' valueList ')' + LOAD FILE_PATH INTO tbName + { + $$ = std::make_shared<LoadStmt>($2, $4); + } + | INSERT INTO tbName VALUES '(' valueList ')' { $$ = std::make_shared<InsertStmt>($3, $6); } @@ -478,8 +492,9 @@ having_clauses: ; set_knob_type: - ENABLE_NESTLOOP { $$ = EnableNestLoop; } + ENABLE_NESTLOOP { $$ = EnableNestLoop; } | ENABLE_SORTMERGE { $$ = EnableSortMerge; } + | OUTPUT_FILE { $$ = EnableOutputFile; } ; tbName: IDENTIFIER;