From 88ffe4822b55a88798f6df100032c7a94641210e Mon Sep 17 00:00:00 2001 From: alkim0 Date: Wed, 26 Jul 2017 13:09:02 -0400 Subject: [PATCH] Many updates to grammar including support for arrays, ilike, natural joins with no predicates... (#49) * Got ISNULL working * Allow function calls with no arguments * Added no-else cases and arrays * Added more operations including ilike, concat * Added optional all to set operations and fixed natural join * Ran astyle * Used the appropriate star expression Instead of using a ColumnRef with star literal. * NULL expressions now returns true isLiteral * Fixed structure for no-else case clauses * Fixed up grammar conflicts --- .gitignore | 5 +- src/parser/bison_parser.cpp | 2304 +++++++++++++++++++---------------- src/parser/bison_parser.h | 27 +- src/parser/bison_parser.y | 136 ++- src/parser/flex_lexer.cpp | 2229 ++++++++++++++++----------------- src/parser/flex_lexer.h | 2 +- src/parser/flex_lexer.l | 8 +- src/parser/parser_typedef.h | 16 +- src/parser/sql_keywords.txt | 1 + src/sql/Expr.cpp | 73 +- src/sql/Expr.h | 58 +- 11 files changed, 2605 insertions(+), 2254 deletions(-) diff --git a/.gitignore b/.gitignore index 65d07aa..59c419d 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,7 @@ cmake-build-debug/ *.cpp.orig *.h.orig -*.csv \ No newline at end of file +# Vim Swap Files +*.swp + +*.csv diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index fb47e05..63fc7a9 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -88,6 +88,7 @@ #include "flex_lexer.h" #include +#include using namespace hsql; @@ -98,7 +99,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha } -#line 102 "bison_parser.cpp" /* yacc.c:339 */ +#line 103 "bison_parser.cpp" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -136,7 +137,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha extern int hsql_debug; #endif /* "%code requires" blocks. */ -#line 34 "bison_parser.y" /* yacc.c:355 */ +#line 35 "bison_parser.y" /* yacc.c:355 */ // %code requires block @@ -159,7 +160,7 @@ extern int hsql_debug; } \ } -#line 163 "bison_parser.cpp" /* yacc.c:355 */ +#line 164 "bison_parser.cpp" /* yacc.c:355 */ /* Token type. */ #ifndef HSQL_TOKENTYPE @@ -286,14 +287,17 @@ extern int hsql_debug; SQL_ON = 375, SQL_OR = 376, SQL_TO = 377, - SQL_EQUALS = 378, - SQL_NOTEQUALS = 379, - SQL_LESS = 380, - SQL_GREATER = 381, - SQL_LESSEQ = 382, - SQL_GREATEREQ = 383, - SQL_NOTNULL = 384, - SQL_UMINUS = 385 + SQL_ARRAY = 378, + SQL_CONCAT = 379, + SQL_ILIKE = 380, + SQL_EQUALS = 381, + SQL_NOTEQUALS = 382, + SQL_LESS = 383, + SQL_GREATER = 384, + SQL_LESSEQ = 385, + SQL_GREATEREQ = 386, + SQL_NOTNULL = 387, + SQL_UMINUS = 388 }; #endif @@ -302,7 +306,7 @@ extern int hsql_debug; union HSQL_STYPE { -#line 92 "bison_parser.y" /* yacc.c:355 */ +#line 93 "bison_parser.y" /* yacc.c:355 */ double fval; int64_t ival; @@ -339,7 +343,7 @@ union HSQL_STYPE std::vector* expr_vec; std::vector* order_vec; -#line 343 "bison_parser.cpp" /* yacc.c:355 */ +#line 347 "bison_parser.cpp" /* yacc.c:355 */ }; typedef union HSQL_STYPE HSQL_STYPE; @@ -369,7 +373,7 @@ int hsql_parse (hsql::SQLParserResult* result, yyscan_t scanner); /* Copy the second part of user declarations. */ -#line 373 "bison_parser.cpp" /* yacc.c:358 */ +#line 377 "bison_parser.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -613,21 +617,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 48 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 408 +#define YYLAST 559 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 148 +#define YYNTOKENS 151 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 79 +#define YYNNTS 85 /* YYNRULES -- Number of rules. */ -#define YYNRULES 176 +#define YYNRULES 196 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 326 +#define YYNSTATES 362 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 385 +#define YYMAXUTOK 388 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -639,13 +643,13 @@ static const yytype_uint8 yytranslate[] = 0, 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, 137, 2, 2, - 142, 143, 135, 133, 146, 134, 144, 136, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 145, - 126, 123, 127, 147, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 140, 2, 2, + 145, 146, 138, 136, 149, 137, 147, 139, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 148, + 129, 126, 130, 150, 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, 140, 2, 141, 138, 2, 2, 2, 2, 2, + 2, 143, 2, 144, 141, 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, @@ -673,32 +677,34 @@ static const yytype_uint8 yytranslate[] = 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 124, 125, - 128, 129, 130, 131, 132, 139 + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 127, 128, 131, 132, 133, 134, 135, 142 }; #if HSQL_DEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 236, 236, 257, 258, 262, 266, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 291, 292, 297, 298, - 302, 306, 318, 325, 328, 332, 344, 352, 356, 366, - 372, 378, 388, 389, 393, 394, 398, 405, 406, 407, - 408, 418, 422, 426, 438, 446, 458, 464, 474, 475, - 485, 494, 495, 499, 511, 512, 516, 517, 521, 531, - 545, 559, 560, 561, 565, 577, 578, 582, 586, 591, - 592, 596, 601, 605, 606, 609, 610, 614, 615, 619, - 623, 624, 625, 631, 632, 636, 637, 638, 645, 646, - 650, 651, 655, 662, 663, 664, 665, 666, 667, 671, - 672, 673, 674, 675, 676, 680, 681, 682, 686, 687, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 703, - 704, 708, 709, 710, 711, 716, 720, 721, 725, 726, - 727, 728, 729, 730, 734, 738, 742, 743, 747, 748, - 749, 753, 758, 759, 763, 767, 771, 783, 784, 794, - 795, 801, 806, 807, 812, 822, 830, 831, 836, 837, - 841, 842, 850, 862, 863, 864, 865, 866, 867, 868, - 869, 870, 875, 884, 885, 890, 891 + 0, 240, 240, 261, 262, 266, 270, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 295, 296, 301, 302, + 306, 310, 322, 329, 332, 336, 348, 356, 360, 370, + 376, 382, 392, 393, 397, 398, 402, 409, 410, 411, + 412, 422, 426, 430, 442, 450, 462, 468, 478, 479, + 489, 498, 499, 503, 515, 516, 517, 534, 535, 539, + 540, 544, 554, 571, 575, 576, 577, 581, 582, 586, + 598, 599, 603, 607, 612, 613, 617, 622, 626, 627, + 630, 631, 635, 636, 640, 644, 645, 646, 652, 653, + 657, 658, 659, 666, 667, 671, 672, 676, 683, 684, + 685, 686, 687, 691, 692, 693, 694, 695, 696, 697, + 698, 699, 703, 704, 708, 709, 710, 711, 712, 716, + 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, + 730, 731, 735, 736, 737, 738, 743, 745, 749, 750, + 754, 755, 756, 757, 758, 759, 763, 764, 768, 772, + 776, 780, 781, 782, 783, 787, 788, 789, 790, 794, + 799, 800, 804, 808, 812, 824, 825, 835, 836, 840, + 841, 850, 851, 856, 866, 874, 875, 880, 881, 885, + 886, 894, 902, 912, 931, 932, 933, 934, 935, 936, + 937, 938, 943, 952, 953, 958, 959 }; #endif @@ -723,29 +729,31 @@ static const char *const yytname[] = "PART", "PLAN", "SHOW", "TEXT", "THEN", "TIME", "VIEW", "WHEN", "WITH", "ADD", "ALL", "AND", "ASC", "CSV", "END", "FOR", "INT", "KEY", "NOT", "OFF", "SET", "TBL", "TOP", "AS", "BY", "IF", "IN", "IS", "OF", "ON", - "OR", "TO", "'='", "EQUALS", "NOTEQUALS", "'<'", "'>'", "LESS", - "GREATER", "LESSEQ", "GREATEREQ", "NOTNULL", "'+'", "'-'", "'*'", "'/'", - "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", - "'?'", "$accept", "input", "statement_list", "statement", - "preparable_statement", "opt_hints", "hint_list", "hint", + "OR", "TO", "ARRAY", "CONCAT", "ILIKE", "'='", "EQUALS", "NOTEQUALS", + "'<'", "'>'", "LESS", "GREATER", "LESSEQ", "GREATEREQ", "NOTNULL", "'+'", + "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", + "'.'", "';'", "','", "'?'", "$accept", "input", "statement_list", + "statement", "preparable_statement", "opt_hints", "hint_list", "hint", "prepare_statement", "prepare_target_query", "execute_statement", "import_statement", "import_file_type", "file_path", "create_statement", "opt_not_exists", "column_def_commalist", "column_def", "column_type", "drop_statement", "delete_statement", "truncate_statement", "insert_statement", "opt_column_list", "update_statement", "update_clause_commalist", "update_clause", "select_statement", - "select_with_paren", "select_no_paren", "set_operator", "select_clause", - "opt_distinct", "select_list", "from_clause", "opt_where", "opt_group", - "opt_having", "opt_order", "order_list", "order_desc", "opt_order_type", - "opt_top", "opt_limit", "expr_list", "literal_list", "expr_alias", - "expr", "operand", "scalar_expr", "unary_expr", "binary_expr", - "logic_expr", "in_expr", "case_expr", "exists_expr", "comp_expr", - "function_expr", "between_expr", "column_name", "literal", - "string_literal", "num_literal", "int_literal", "star_expr", - "param_expr", "table_ref", "table_ref_atomic", "table_ref_commalist", - "table_ref_name", "table_ref_name_no_alias", "table_name", "alias", - "opt_alias", "join_clause", "opt_join_type", "join_condition", - "opt_semicolon", "ident_commalist", YY_NULLPTR + "select_with_paren", "select_paren_or_clause", "select_no_paren", + "set_operator", "set_type", "opt_all", "select_clause", "opt_distinct", + "select_list", "from_clause", "opt_where", "opt_group", "opt_having", + "opt_order", "order_list", "order_desc", "opt_order_type", "opt_top", + "opt_limit", "expr_list", "literal_list", "expr_alias", "expr", + "operand", "scalar_expr", "unary_expr", "binary_expr", "logic_expr", + "in_expr", "case_expr", "exists_expr", "comp_expr", "function_expr", + "array_expr", "array_index", "between_expr", "column_name", "literal", + "string_literal", "num_literal", "int_literal", "null_literal", + "param_expr", "table_ref", "table_ref_atomic", + "nonjoin_table_ref_atomic", "table_ref_commalist", "table_ref_name", + "table_ref_name_no_alias", "table_name", "alias", "opt_alias", + "join_clause", "opt_join_type", "join_condition", "opt_semicolon", + "ident_commalist", YY_NULLPTR }; #endif @@ -766,59 +774,64 @@ static const yytype_uint16 yytoknum[] = 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 61, 378, 379, 60, 62, 380, 381, - 382, 383, 384, 43, 45, 42, 47, 37, 94, 385, - 91, 93, 40, 41, 46, 59, 44, 63 + 375, 376, 377, 378, 379, 380, 61, 381, 382, 60, + 62, 383, 384, 385, 386, 387, 43, 45, 42, 47, + 37, 94, 388, 91, 93, 40, 41, 46, 59, 44, + 63 }; # endif -#define YYPACT_NINF -227 +#define YYPACT_NINF -259 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-227))) + (!!((Yystate) == (-259))) -#define YYTABLE_NINF -172 +#define YYTABLE_NINF -192 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-172))) + (!!((Yytable_value) == (-192))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 137, -1, 33, 48, 68, -6, 2, 6, -10, -16, - 33, 66, -21, 92, -20, -227, 41, 41, -227, -227, - -227, -227, -227, -227, -227, -227, -227, -227, -227, 29, - 131, 3, -227, 9, 95, 74, 74, 33, 78, 33, - 186, 184, 86, -227, 33, 33, 56, 63, -227, 137, - -227, 128, -227, -227, -227, -227, 99, -227, -21, 144, - -227, 217, 19, 224, 133, 33, 33, 157, -227, 171, - 114, -227, -227, -227, 53, 254, -227, -227, -227, -227, - -227, 116, 53, 203, 203, 186, -227, -227, -227, -227, - -227, -96, -227, -227, -227, -227, -227, -227, -227, 232, - -72, 114, 53, -227, 269, 272, -9, -101, 134, 182, - 76, 8, -227, 14, 200, 139, -227, 12, 110, -227, - -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, - -227, -227, 164, -51, -227, 283, 142, -227, 101, 144, - 144, 243, -227, 19, -227, 178, 288, 179, -60, 207, - -227, -227, -8, 152, -227, 184, 292, 248, 53, 162, - 8, 247, 32, 156, -69, 4, 157, 53, -227, 53, - 304, 53, -227, -227, 8, 8, -57, 172, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 19, 254, -227, 173, 70, -227, 53, -227, -227, -227, - -227, -227, 186, -227, 238, 30, 83, -227, -21, 33, - -227, 319, 19, 53, -227, 180, 58, 248, 246, -227, - -227, -21, -227, 115, -227, 5, -227, 266, -227, -227, - -227, 234, 194, 264, 8, 198, 14, 264, 264, 212, - 212, 212, 212, 32, 32, 206, 206, 206, -227, -227, - -227, 19, -227, 283, -227, -227, 269, -227, -227, -227, - -227, -227, -227, 288, -227, -227, -227, 109, 119, -227, - 8, 214, 225, -227, -227, -227, -227, 273, 299, 4, - 274, -227, 256, -227, 8, 264, 14, 226, 121, 123, - -227, -227, -227, -227, -227, 175, -227, 5, -227, -227, - 191, 229, 4, 53, 247, 233, 125, -227, -227, -227, - 8, -227, 4, 163, -26, -227, -227, 228, 191, 53, - 53, -227, -227, -60, -227, -60 + 8, 44, 76, 85, 86, 68, 19, 28, 14, 26, + 76, 90, -8, 140, 33, -259, 63, 63, -259, -259, + -259, -259, -259, -259, -259, -259, -259, 37, -259, 132, + 186, 43, -259, 51, 120, 92, 92, 76, 98, 76, + 212, 210, 113, -259, 76, 76, 87, 89, -259, 8, + -259, 150, -259, -259, -259, -259, -259, -8, 148, 126, + -8, 187, -259, 248, 7, 252, 161, 76, 76, 202, + -259, 196, 135, -259, -259, -259, 123, 274, -259, -259, + -259, -259, -259, 136, -259, 215, -259, -259, -259, 123, + 215, 212, -259, -259, -259, -259, -259, -259, 31, -259, + -259, -259, -259, -259, -259, -259, -259, 245, -64, 135, + 123, -259, 284, 286, 127, 50, 145, 206, 129, 168, + 146, -259, 55, 232, 166, -259, 52, 169, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, 190, -48, -259, 314, 187, 170, -259, -49, + 187, 275, -259, 7, -259, 208, 321, 211, -39, 241, + -259, -259, 39, 182, -259, 12, 5, 279, 123, 184, + 146, 328, 123, 88, 189, -71, 3, 202, 123, -259, + 123, 327, 123, -259, -259, 146, -259, 146, -69, 188, + -3, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 212, 7, 274, -259, 191, + 45, -259, -259, 123, -259, -259, -259, -259, 212, -259, + 264, -11, 60, -259, -8, 76, -259, 329, 7, -259, + 123, -259, -259, 199, -18, 279, 260, -117, -259, -259, + -8, -259, 185, -259, -259, 17, -259, 298, -259, -259, + -259, 258, 269, 356, 146, 216, 55, -259, 272, 220, + 356, 356, 356, 382, 382, 382, 382, 88, 88, 18, + 18, 18, 32, 223, -259, -259, 7, -259, 314, -259, + -259, 284, -259, -259, -259, -259, -259, -259, 321, -259, + -259, -259, 61, 71, -259, 146, 218, -259, 222, 288, + -259, -259, -259, 302, 304, 3, 289, -259, 261, -259, + 146, 356, 55, 231, 91, -259, -259, 93, -259, -259, + -259, -259, -259, 213, -259, 17, 3, -259, -259, 472, + 230, 3, 123, 328, 234, 99, -259, -259, -259, 146, + -259, -259, -259, 3, 297, -13, -259, -259, 295, 472, + 236, 123, 123, -259, -259, 6, -39, -259, -39, 235, + 239, -259 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -826,65 +839,71 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 0, 0, 0, 0, 174, 3, 17, 17, 15, 8, - 9, 14, 11, 12, 10, 13, 7, 54, 55, 76, - 0, 156, 45, 24, 0, 33, 33, 0, 0, 0, - 0, 66, 0, 155, 0, 0, 0, 0, 1, 173, - 2, 0, 6, 5, 62, 63, 0, 61, 0, 87, - 43, 0, 0, 0, 0, 0, 0, 70, 27, 0, - 49, 144, 83, 65, 0, 0, 41, 42, 57, 56, - 4, 0, 0, 76, 76, 0, 58, 157, 141, 142, - 146, 0, 90, 138, 139, 143, 140, 23, 22, 0, - 0, 49, 0, 44, 0, 0, 0, 136, 0, 0, - 0, 0, 145, 0, 0, 67, 88, 161, 93, 100, - 101, 102, 95, 98, 97, 96, 110, 103, 94, 105, - 107, 106, 0, 70, 51, 0, 75, 77, 82, 87, - 87, 85, 25, 0, 32, 0, 0, 0, 69, 0, - 28, 175, 0, 0, 47, 66, 0, 0, 0, 0, - 0, 109, 108, 0, 0, 0, 70, 0, 159, 0, - 0, 0, 160, 92, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, + 0, 0, 0, 0, 194, 3, 17, 17, 15, 8, + 9, 14, 11, 12, 10, 13, 7, 54, 55, 81, + 0, 175, 45, 24, 0, 33, 33, 0, 0, 0, + 0, 71, 0, 174, 0, 0, 0, 0, 1, 193, + 2, 0, 6, 5, 65, 66, 64, 0, 68, 0, + 0, 92, 43, 0, 0, 0, 0, 0, 0, 75, + 27, 0, 49, 162, 88, 70, 0, 0, 41, 42, + 58, 57, 4, 0, 59, 81, 60, 67, 63, 0, + 81, 0, 61, 176, 159, 160, 163, 164, 0, 95, + 155, 156, 161, 157, 158, 23, 22, 0, 0, 49, + 0, 44, 0, 0, 0, 151, 0, 0, 0, 0, + 0, 153, 0, 0, 72, 93, 180, 98, 105, 106, + 107, 100, 102, 108, 101, 119, 109, 110, 104, 99, + 112, 113, 0, 75, 51, 0, 92, 80, 82, 87, + 92, 90, 25, 0, 32, 0, 0, 0, 74, 0, + 28, 195, 0, 0, 47, 71, 0, 0, 0, 0, + 0, 115, 0, 114, 0, 0, 0, 75, 0, 178, + 0, 0, 0, 179, 97, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 50, 20, 0, 18, 0, 81, 80, 79, - 60, 59, 0, 91, 0, 0, 0, 34, 0, 0, - 48, 0, 0, 0, 137, 0, 0, 0, 0, 104, - 99, 0, 68, 147, 149, 161, 151, 72, 89, 119, - 158, 120, 0, 117, 0, 0, 0, 128, 129, 130, - 131, 132, 133, 112, 111, 114, 113, 115, 116, 53, - 52, 0, 16, 0, 78, 86, 0, 38, 39, 40, - 37, 36, 30, 0, 31, 26, 176, 0, 0, 126, - 0, 0, 0, 170, 169, 163, 164, 168, 167, 0, - 0, 154, 0, 64, 0, 118, 0, 0, 0, 0, - 19, 29, 35, 46, 134, 0, 127, 161, 166, 165, - 152, 148, 0, 0, 135, 0, 0, 123, 121, 21, - 0, 150, 0, 171, 74, 124, 122, 0, 153, 0, - 0, 71, 125, 172, 162, 73 + 0, 0, 0, 0, 0, 0, 0, 0, 50, 20, + 0, 18, 56, 0, 86, 85, 84, 62, 0, 96, + 0, 0, 0, 34, 0, 0, 48, 0, 0, 146, + 0, 152, 154, 0, 0, 0, 0, 0, 111, 103, + 0, 73, 165, 167, 169, 180, 168, 77, 94, 130, + 177, 131, 0, 126, 0, 0, 0, 117, 0, 129, + 128, 140, 141, 142, 143, 144, 145, 121, 120, 123, + 122, 124, 125, 0, 53, 52, 0, 16, 0, 83, + 91, 0, 38, 39, 40, 37, 36, 30, 0, 31, + 26, 196, 0, 0, 138, 0, 0, 148, 0, 0, + 190, 184, 185, 189, 188, 0, 0, 173, 0, 69, + 0, 127, 0, 0, 0, 118, 149, 0, 19, 29, + 35, 46, 147, 0, 139, 180, 0, 187, 186, 171, + 166, 0, 0, 150, 0, 0, 134, 132, 21, 0, + 136, 170, 181, 0, 191, 79, 135, 133, 0, 172, + 0, 0, 0, 76, 137, 0, 192, 182, 78, 151, + 0, 183 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -227, -227, -227, 330, -227, 369, -227, 135, -227, -227, - -227, -227, -227, 136, -227, 357, -227, 140, -227, -227, - -227, -227, -227, 295, -227, -227, 213, -90, 15, -12, - -227, 347, 251, -227, -227, -104, -227, -227, 46, -227, - 211, -227, -227, 35, -164, -182, 241, -81, -76, -227, - -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, - -58, -99, -227, -37, -227, -227, -227, -226, -227, -227, - -227, 0, -227, -219, -227, -227, -227, -227, -227 + -259, -259, -259, 337, -259, 371, -259, 111, -259, -259, + -259, -259, -259, 109, -259, 355, -259, 104, -259, -259, + -259, -259, -259, 287, -259, -259, 204, -191, 9, 354, + -12, 386, -259, -259, 205, 253, -259, -259, -107, -259, + -259, 94, -259, 209, -259, -259, -72, -165, -212, 262, + -88, -80, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, 75, -60, -109, -259, -35, -259, + -259, -259, -258, 100, -259, -259, -259, 0, -259, -227, + -259, -259, -259, -259, -259 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 13, 14, 15, 16, 52, 194, 195, 17, 98, - 18, 19, 69, 149, 20, 65, 206, 207, 261, 21, - 22, 23, 24, 106, 25, 133, 134, 26, 27, 28, - 58, 29, 74, 114, 166, 103, 283, 321, 59, 136, - 137, 199, 41, 86, 115, 91, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 93, 94, 95, 131, 96, 222, 223, 301, 224, - 42, 225, 172, 173, 226, 280, 324, 50, 152 + -1, 13, 14, 15, 16, 52, 210, 211, 17, 106, + 18, 19, 71, 159, 20, 67, 222, 223, 286, 21, + 22, 23, 24, 114, 25, 143, 144, 26, 27, 85, + 28, 57, 58, 88, 29, 76, 123, 177, 111, 309, + 353, 61, 147, 148, 216, 41, 92, 124, 98, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 100, 101, 102, 103, + 104, 241, 242, 243, 330, 244, 42, 245, 183, 184, + 246, 306, 357, 50, 162 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -892,92 +911,122 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 47, 138, 32, 72, 92, 150, 281, 31, 168, 145, - 43, 107, 88, 89, 71, 168, 320, 107, 88, 89, - 71, 148, 102, 88, 89, 71, 30, 46, 9, 192, - 267, 234, 164, 169, 161, 162, 31, 67, 54, 70, - 9, 155, 169, 156, 76, 77, 153, 142, 141, 268, - 143, 33, 171, 300, 108, 257, 107, 88, 89, 71, - 235, 171, 227, 9, 35, 100, 101, 258, 55, 289, - 146, 34, 288, 83, 220, 39, 313, 216, 311, 107, - 88, 89, 71, 37, 161, 203, 318, 38, 229, 109, - 231, 36, 48, 108, 154, 191, 56, 40, 232, 233, - 57, 163, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 169, 138, 159, 160, 264, 170, - 167, 12, 306, 110, 259, 49, 170, 174, 109, 139, - 140, 272, 249, 171, 60, 210, 44, 260, 211, 314, - 51, 273, 111, 112, 1, 215, 221, 61, 111, 112, - 113, 62, 2, 270, 92, 90, 113, 150, 285, 3, - 169, 90, 110, 45, 4, 255, 90, 186, 187, 188, - 189, 5, 6, 274, 200, 201, 63, 275, 197, 171, - 7, 8, 68, 276, 277, 160, 9, 111, 112, 273, - 64, 10, 71, 92, 295, 113, 73, 75, 175, 78, - 90, -171, 278, 169, 198, 271, 79, 85, 304, 265, - 111, 112, 81, 252, 82, 11, 253, 273, 113, 176, - 87, 274, 171, 90, 287, 275, 262, 177, 97, 263, - 102, 276, 277, 178, 317, 179, 180, 181, 323, 325, - 182, 183, 99, 184, 185, 186, 187, 188, 189, 274, - 278, 104, 293, 275, 310, 143, 105, 132, 135, 276, - 277, 279, 294, 175, 308, 167, 309, 167, 316, 143, - 56, 167, 144, 88, 305, 151, 157, -171, 278, 12, - 158, 165, 175, 319, 218, 167, 193, 190, 196, 202, - 204, 205, 209, 208, 212, 214, 284, 9, 178, 219, - 179, 180, 181, 218, 217, 182, 183, 230, 184, 185, - 186, 187, 188, 189, 236, 251, 175, 178, 256, 179, - 180, 181, 266, 269, 182, 183, 282, 184, 185, 186, - 187, 188, 189, 322, 234, 175, 169, 218, -172, -172, - 286, 298, -172, -172, 189, 184, 185, 186, 187, 188, - 189, 178, 175, 179, 180, 181, 218, 296, 182, 183, - 302, 184, 185, 186, 187, 188, 189, 299, 297, 307, - 178, 303, 179, 180, 181, 312, 315, 182, 183, 80, - 184, 185, 186, 187, 188, 189, 53, 178, 290, 179, - 180, 181, 291, 66, 182, 183, 147, 184, 185, 186, - 187, 188, 189, 292, 250, 84, 213, 254, 228 + 47, 149, 32, 160, 99, 74, 31, 237, 231, 359, + 43, 94, 95, 73, 282, 1, 292, 155, 307, 254, + 179, 46, 158, 2, 75, 110, 283, 297, 214, 352, + 3, 180, 178, 289, 175, 4, 208, 69, 171, 72, + 173, 9, 5, 6, 78, 79, 54, 329, 255, 298, + 182, 7, 8, 180, 215, 179, 151, 9, 115, 94, + 95, 73, 10, 180, 317, 293, 84, 108, 109, 84, + 247, 30, 182, 344, 212, 239, 55, 295, 217, 31, + 234, 156, 182, 284, 180, 349, 11, 257, 33, 34, + 171, 314, 249, 219, 251, 116, 285, 96, 341, 39, + 37, 207, 164, 182, 9, 252, 258, 253, 56, 38, + 174, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 149, 115, 94, 95, 73, + 117, 181, 115, 94, 95, 73, 178, 12, 35, 40, + 48, 54, 191, 232, 121, 96, 274, 335, 240, 115, + 94, 95, 73, 12, 180, 233, 191, 97, 229, 204, + 44, 205, 51, 116, 118, 36, 181, 345, 99, 169, + 273, 55, 160, 182, 311, 205, 9, 152, 119, 146, + 153, 49, 163, 280, 150, 226, 185, 45, 227, 62, + 63, 277, 120, 121, 278, 165, 64, 166, 117, 59, + 122, 65, 70, 56, 117, 97, 287, 321, 66, 288, + 153, 299, 191, 96, 186, 323, 99, 322, 73, 96, + 178, 117, 75, 296, 77, 290, 201, 202, 203, 204, + 333, 205, 118, 80, 83, 81, 96, 337, 170, 338, + 178, 89, 153, 300, 313, 347, 119, 301, 178, 87, + 91, 93, 119, 302, 303, 170, 105, 187, 186, 348, + 120, 121, 86, 356, 358, 86, 120, 121, 122, 119, + 107, -191, 304, 97, 122, 110, 112, 142, 188, 97, + 113, 145, 59, 120, 121, 154, 189, 190, 94, 161, + 167, 122, 339, 191, 192, 193, 97, 194, 195, 196, + 334, 187, 197, 198, 168, 199, 200, 201, 202, 203, + 204, 172, 205, 176, 186, 178, 206, 209, 340, 213, + 220, 218, 236, 299, 221, 224, 225, 228, 9, 235, + 250, 190, 291, 256, 305, 238, 276, 191, 192, 193, + 186, 194, 195, 196, 281, 294, 197, 198, 254, 199, + 200, 201, 202, 203, 204, 300, 205, 187, 308, 301, + 180, 312, 315, 205, 324, 302, 303, 316, 325, 350, + 327, 310, 328, 186, 326, 331, 332, 336, 236, 343, + 346, 355, 166, 187, 304, 361, 82, 190, 53, 318, + 319, 68, 320, 191, 192, 193, 157, 194, 195, 196, + 354, 186, 197, 198, 236, 199, 200, 201, 202, 203, + 204, 275, 205, 190, 90, 60, 187, 351, 230, 191, + 192, 193, 279, 194, 195, 196, 342, 186, 197, 198, + 360, 199, 200, 201, 202, 203, 204, 236, 205, 0, + 248, 0, 0, 0, -192, 0, 190, 0, 0, 0, + 0, 0, 191, 192, 193, 0, 194, 195, 196, 0, + 0, 197, 198, 0, 199, 200, 201, 202, 203, 204, + 0, 205, 0, 0, 190, 0, 0, 0, 0, 0, + 191, -192, -192, 0, -192, 195, 196, 0, 0, 197, + 198, 0, 199, 200, 201, 202, 203, 204, 299, 205, + 190, 0, 0, 0, 0, 0, 191, 0, 0, 0, + 0, -192, -192, 0, 0, -192, -192, 0, 199, 200, + 201, 202, 203, 204, 0, 205, 0, 0, 0, 0, + 300, 0, 0, 0, 301, 0, 0, 0, 0, 0, + 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -191, 304 }; -static const yytype_uint16 yycheck[] = +static const yytype_int16 yycheck[] = { - 12, 82, 2, 40, 62, 104, 225, 3, 3, 81, - 10, 3, 4, 5, 6, 3, 42, 3, 4, 5, - 6, 102, 73, 4, 5, 6, 27, 12, 49, 133, - 212, 88, 113, 102, 110, 111, 3, 37, 9, 39, - 49, 142, 102, 144, 44, 45, 55, 143, 85, 213, - 146, 3, 121, 279, 40, 25, 3, 4, 5, 6, - 117, 121, 166, 49, 70, 65, 66, 37, 39, 251, - 142, 3, 236, 58, 143, 85, 302, 158, 297, 3, - 4, 5, 6, 81, 160, 143, 312, 81, 169, 75, - 171, 97, 0, 40, 106, 146, 67, 113, 174, 175, - 71, 113, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 102, 196, 40, 109, 208, 114, - 146, 142, 286, 109, 94, 145, 114, 17, 75, 83, - 84, 221, 190, 121, 3, 143, 70, 107, 146, 303, - 99, 26, 134, 135, 7, 157, 142, 144, 134, 135, - 142, 142, 15, 95, 212, 147, 142, 256, 234, 22, - 102, 147, 109, 97, 27, 202, 147, 135, 136, 137, - 138, 34, 35, 58, 139, 140, 81, 62, 77, 121, - 43, 44, 104, 68, 69, 109, 49, 134, 135, 26, - 116, 54, 6, 251, 270, 142, 12, 111, 88, 143, - 147, 86, 87, 102, 103, 217, 143, 63, 284, 209, - 134, 135, 84, 143, 115, 78, 146, 26, 142, 109, - 3, 58, 121, 147, 236, 62, 143, 117, 4, 146, - 73, 68, 69, 123, 310, 125, 126, 127, 319, 320, - 130, 131, 109, 133, 134, 135, 136, 137, 138, 58, - 87, 80, 143, 62, 79, 146, 142, 3, 142, 68, - 69, 146, 143, 88, 143, 146, 143, 146, 143, 146, - 67, 146, 40, 4, 286, 3, 142, 86, 87, 142, - 98, 81, 88, 120, 109, 146, 3, 123, 146, 46, - 112, 3, 85, 114, 142, 3, 102, 49, 123, 143, - 125, 126, 127, 109, 142, 130, 131, 3, 133, 134, - 135, 136, 137, 138, 142, 142, 88, 123, 80, 125, - 126, 127, 3, 143, 130, 131, 60, 133, 134, 135, - 136, 137, 138, 105, 88, 88, 102, 109, 126, 127, - 142, 68, 130, 131, 138, 133, 134, 135, 136, 137, - 138, 123, 88, 125, 126, 127, 109, 143, 130, 131, - 86, 133, 134, 135, 136, 137, 138, 68, 143, 143, - 123, 115, 125, 126, 127, 146, 143, 130, 131, 49, - 133, 134, 135, 136, 137, 138, 17, 123, 253, 125, - 126, 127, 256, 36, 130, 131, 101, 133, 134, 135, - 136, 137, 138, 263, 191, 58, 155, 196, 167 + 12, 89, 2, 112, 64, 40, 3, 172, 3, 3, + 10, 4, 5, 6, 25, 7, 228, 81, 245, 88, + 3, 12, 110, 15, 12, 73, 37, 144, 77, 42, + 22, 102, 149, 224, 122, 27, 143, 37, 118, 39, + 120, 49, 34, 35, 44, 45, 9, 305, 117, 240, + 121, 43, 44, 102, 103, 3, 91, 49, 3, 4, + 5, 6, 54, 102, 276, 230, 57, 67, 68, 60, + 177, 27, 121, 331, 146, 146, 39, 95, 150, 3, + 168, 145, 121, 94, 102, 343, 78, 90, 3, 3, + 170, 256, 180, 153, 182, 40, 107, 90, 325, 85, + 81, 149, 114, 121, 49, 185, 109, 187, 71, 81, + 122, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 213, 3, 4, 5, 6, + 75, 114, 3, 4, 5, 6, 149, 145, 70, 113, + 0, 9, 124, 138, 138, 90, 206, 312, 145, 3, + 4, 5, 6, 145, 102, 167, 124, 150, 146, 141, + 70, 143, 99, 40, 109, 97, 114, 332, 228, 40, + 205, 39, 281, 121, 254, 143, 49, 146, 123, 85, + 149, 148, 55, 218, 90, 146, 17, 97, 149, 3, + 147, 146, 137, 138, 149, 145, 145, 147, 75, 67, + 145, 81, 104, 71, 75, 150, 146, 146, 116, 149, + 149, 26, 124, 90, 45, 295, 276, 146, 6, 90, + 149, 75, 12, 235, 111, 225, 138, 139, 140, 141, + 310, 143, 109, 146, 84, 146, 90, 146, 109, 146, + 149, 115, 149, 58, 256, 146, 123, 62, 149, 101, + 63, 3, 123, 68, 69, 109, 4, 88, 45, 339, + 137, 138, 57, 351, 352, 60, 137, 138, 145, 123, + 109, 86, 87, 150, 145, 73, 80, 3, 109, 150, + 145, 145, 67, 137, 138, 40, 117, 118, 4, 3, + 145, 145, 79, 124, 125, 126, 150, 128, 129, 130, + 312, 88, 133, 134, 98, 136, 137, 138, 139, 140, + 141, 143, 143, 81, 45, 149, 126, 3, 105, 149, + 112, 46, 109, 26, 3, 114, 85, 145, 49, 145, + 3, 118, 3, 145, 149, 146, 145, 124, 125, 126, + 45, 128, 129, 130, 80, 146, 133, 134, 88, 136, + 137, 138, 139, 140, 141, 58, 143, 88, 60, 62, + 102, 145, 90, 143, 146, 68, 69, 144, 146, 72, + 68, 102, 68, 45, 86, 86, 115, 146, 109, 149, + 146, 145, 147, 88, 87, 146, 49, 118, 17, 278, + 281, 36, 288, 124, 125, 126, 109, 128, 129, 130, + 105, 45, 133, 134, 109, 136, 137, 138, 139, 140, + 141, 207, 143, 118, 60, 29, 88, 120, 165, 124, + 125, 126, 213, 128, 129, 130, 326, 45, 133, 134, + 355, 136, 137, 138, 139, 140, 141, 109, 143, -1, + 178, -1, -1, -1, 88, -1, 118, -1, -1, -1, + -1, -1, 124, 125, 126, -1, 128, 129, 130, -1, + -1, 133, 134, -1, 136, 137, 138, 139, 140, 141, + -1, 143, -1, -1, 118, -1, -1, -1, -1, -1, + 124, 125, 126, -1, 128, 129, 130, -1, -1, 133, + 134, -1, 136, 137, 138, 139, 140, 141, 26, 143, + 118, -1, -1, -1, -1, -1, 124, -1, -1, -1, + -1, 129, 130, -1, -1, 133, 134, -1, 136, 137, + 138, 139, 140, 141, -1, 143, -1, -1, -1, -1, + 58, -1, -1, -1, 62, -1, -1, -1, -1, -1, + 68, 69, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 86, 87 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -985,61 +1034,67 @@ static const yytype_uint16 yycheck[] = static const yytype_uint8 yystos[] = { 0, 7, 15, 22, 27, 34, 35, 43, 44, 49, - 54, 78, 142, 149, 150, 151, 152, 156, 158, 159, - 162, 167, 168, 169, 170, 172, 175, 176, 177, 179, - 27, 3, 219, 3, 3, 70, 97, 81, 81, 85, - 113, 190, 218, 219, 70, 97, 176, 177, 0, 145, - 225, 99, 153, 153, 9, 39, 67, 71, 178, 186, - 3, 144, 142, 81, 116, 163, 163, 219, 104, 160, - 219, 6, 211, 12, 180, 111, 219, 219, 143, 143, - 151, 84, 115, 176, 179, 63, 191, 3, 4, 5, - 147, 193, 208, 209, 210, 211, 213, 4, 157, 109, - 219, 219, 73, 183, 80, 142, 171, 3, 40, 75, - 109, 134, 135, 142, 181, 192, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 212, 3, 173, 174, 142, 187, 188, 195, 186, - 186, 211, 143, 146, 40, 81, 142, 171, 195, 161, - 209, 3, 226, 55, 177, 142, 144, 142, 98, 40, - 109, 196, 196, 177, 195, 81, 182, 146, 3, 102, - 114, 121, 220, 221, 17, 88, 109, 117, 123, 125, - 126, 127, 130, 131, 133, 134, 135, 136, 137, 138, - 123, 146, 183, 3, 154, 155, 146, 77, 103, 189, - 191, 191, 46, 208, 112, 3, 164, 165, 114, 85, - 143, 146, 142, 180, 3, 177, 195, 142, 109, 143, - 143, 142, 214, 215, 217, 219, 222, 183, 194, 195, - 3, 195, 196, 196, 88, 117, 142, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 196, 196, 208, - 174, 142, 143, 146, 188, 211, 80, 25, 37, 94, - 107, 166, 143, 146, 175, 219, 3, 193, 192, 143, - 95, 177, 175, 26, 58, 62, 68, 69, 87, 146, - 223, 221, 60, 184, 102, 196, 142, 177, 192, 193, - 155, 161, 165, 143, 143, 196, 143, 143, 68, 68, - 215, 216, 86, 115, 196, 177, 192, 143, 143, 143, - 79, 221, 146, 215, 192, 143, 143, 196, 215, 120, - 42, 185, 105, 195, 224, 195 + 54, 78, 145, 152, 153, 154, 155, 159, 161, 162, + 165, 170, 171, 172, 173, 175, 178, 179, 181, 185, + 27, 3, 228, 3, 3, 70, 97, 81, 81, 85, + 113, 196, 227, 228, 70, 97, 179, 181, 0, 148, + 234, 99, 156, 156, 9, 39, 71, 182, 183, 67, + 182, 192, 3, 147, 145, 81, 116, 166, 166, 228, + 104, 163, 228, 6, 219, 12, 186, 111, 228, 228, + 146, 146, 154, 84, 179, 180, 185, 101, 184, 115, + 180, 63, 197, 3, 4, 5, 90, 150, 199, 216, + 217, 218, 219, 220, 221, 4, 160, 109, 228, 228, + 73, 189, 80, 145, 174, 3, 40, 75, 109, 123, + 137, 138, 145, 187, 198, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 3, 176, 177, 145, 192, 193, 194, 201, + 192, 219, 146, 149, 40, 81, 145, 174, 201, 164, + 217, 3, 235, 55, 181, 145, 147, 145, 98, 40, + 109, 202, 143, 202, 181, 201, 81, 188, 149, 3, + 102, 114, 121, 229, 230, 17, 45, 88, 109, 117, + 118, 124, 125, 126, 128, 129, 130, 133, 134, 136, + 137, 138, 139, 140, 141, 143, 126, 149, 189, 3, + 157, 158, 197, 149, 77, 103, 195, 197, 46, 216, + 112, 3, 167, 168, 114, 85, 146, 149, 145, 146, + 186, 3, 138, 181, 201, 145, 109, 198, 146, 146, + 145, 222, 223, 224, 226, 228, 231, 189, 200, 201, + 3, 201, 202, 202, 88, 117, 145, 90, 109, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 219, 216, 177, 145, 146, 149, 194, + 219, 80, 25, 37, 94, 107, 169, 146, 149, 178, + 228, 3, 199, 198, 146, 95, 181, 144, 178, 26, + 58, 62, 68, 69, 87, 149, 232, 230, 60, 190, + 102, 202, 145, 181, 198, 90, 144, 199, 158, 164, + 168, 146, 146, 202, 146, 146, 86, 68, 68, 223, + 225, 86, 115, 202, 181, 198, 146, 146, 146, 79, + 105, 230, 224, 149, 223, 198, 146, 146, 202, 223, + 72, 120, 42, 191, 105, 145, 201, 233, 201, 3, + 215, 146 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 148, 149, 150, 150, 151, 151, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 153, 153, 154, 154, - 155, 155, 156, 157, 158, 158, 159, 160, 161, 162, - 162, 162, 163, 163, 164, 164, 165, 166, 166, 166, - 166, 167, 167, 167, 168, 169, 170, 170, 171, 171, - 172, 173, 173, 174, 175, 175, 176, 176, 177, 177, - 177, 178, 178, 178, 179, 180, 180, 181, 182, 183, - 183, 184, 184, 185, 185, 186, 186, 187, 187, 188, - 189, 189, 189, 190, 190, 191, 191, 191, 192, 192, - 193, 193, 194, 195, 195, 195, 195, 195, 195, 196, - 196, 196, 196, 196, 196, 197, 197, 197, 198, 198, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 200, - 200, 201, 201, 201, 201, 202, 203, 203, 204, 204, - 204, 204, 204, 204, 205, 206, 207, 207, 208, 208, - 208, 209, 210, 210, 211, 212, 213, 214, 214, 215, - 215, 215, 216, 216, 217, 218, 219, 219, 220, 220, - 221, 221, 222, 223, 223, 223, 223, 223, 223, 223, - 223, 223, 224, 225, 225, 226, 226 + 0, 151, 152, 153, 153, 154, 154, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 156, 156, 157, 157, + 158, 158, 159, 160, 161, 161, 162, 163, 164, 165, + 165, 165, 166, 166, 167, 167, 168, 169, 169, 169, + 169, 170, 170, 170, 171, 172, 173, 173, 174, 174, + 175, 176, 176, 177, 178, 178, 178, 179, 179, 180, + 180, 181, 181, 182, 183, 183, 183, 184, 184, 185, + 186, 186, 187, 188, 189, 189, 190, 190, 191, 191, + 192, 192, 193, 193, 194, 195, 195, 195, 196, 196, + 197, 197, 197, 198, 198, 199, 199, 200, 201, 201, + 201, 201, 201, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 203, 203, 204, 204, 204, 204, 204, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 206, 206, 207, 207, 207, 207, 208, 208, 209, 209, + 210, 210, 210, 210, 210, 210, 211, 211, 212, 213, + 214, 215, 215, 215, 215, 216, 216, 216, 216, 217, + 218, 218, 219, 220, 221, 222, 222, 223, 223, 224, + 224, 225, 225, 226, 227, 228, 228, 229, 229, 230, + 230, 231, 231, 231, 232, 232, 232, 232, 232, 232, + 232, 232, 233, 234, 234, 235, 235 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1050,18 +1105,20 @@ static const yytype_uint8 yyr2[] = 1, 4, 4, 1, 2, 5, 7, 1, 1, 8, 7, 7, 3, 0, 1, 3, 2, 1, 1, 1, 1, 3, 3, 3, 4, 2, 8, 5, 3, 0, - 5, 1, 3, 3, 1, 1, 3, 3, 3, 5, - 5, 1, 1, 1, 7, 1, 0, 1, 2, 2, - 0, 4, 0, 2, 0, 3, 0, 1, 3, 2, - 1, 1, 0, 2, 0, 2, 4, 0, 1, 3, - 1, 3, 2, 1, 1, 1, 1, 1, 1, 3, - 1, 1, 1, 1, 3, 1, 1, 1, 2, 2, - 1, 3, 3, 3, 3, 3, 3, 3, 4, 3, - 3, 5, 6, 5, 6, 8, 4, 5, 3, 3, - 3, 3, 3, 3, 5, 5, 1, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, - 4, 1, 1, 3, 2, 1, 1, 3, 2, 1, - 1, 0, 6, 1, 1, 2, 2, 1, 1, 1, + 5, 1, 3, 3, 1, 1, 5, 3, 3, 1, + 1, 3, 5, 2, 1, 1, 1, 1, 0, 7, + 1, 0, 1, 2, 2, 0, 4, 0, 2, 0, + 3, 0, 1, 3, 2, 1, 1, 0, 2, 0, + 2, 4, 0, 1, 3, 1, 3, 2, 1, 1, + 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 3, 1, 1, 2, 2, 2, 3, 4, 1, + 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, + 3, 3, 5, 6, 5, 6, 6, 8, 4, 5, + 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, + 5, 1, 3, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, + 4, 1, 3, 2, 1, 1, 3, 2, 1, 1, + 0, 4, 6, 8, 1, 1, 2, 2, 1, 1, 1, 0, 1, 1, 0, 1, 3 }; @@ -1559,31 +1616,31 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio switch (yytype) { case 3: /* IDENTIFIER */ -#line 134 "bison_parser.y" /* yacc.c:1257 */ +#line 135 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1565 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1622 "bison_parser.cpp" /* yacc.c:1257 */ break; case 4: /* STRING */ -#line 134 "bison_parser.y" /* yacc.c:1257 */ +#line 135 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1571 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1628 "bison_parser.cpp" /* yacc.c:1257 */ break; case 5: /* FLOATVAL */ -#line 133 "bison_parser.y" /* yacc.c:1257 */ +#line 134 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1577 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1634 "bison_parser.cpp" /* yacc.c:1257 */ break; case 6: /* INTVAL */ -#line 133 "bison_parser.y" /* yacc.c:1257 */ +#line 134 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1583 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1640 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 150: /* statement_list */ -#line 135 "bison_parser.y" /* yacc.c:1257 */ + case 153: /* statement_list */ +#line 136 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).stmt_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).stmt_vec))) { @@ -1592,23 +1649,23 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).stmt_vec)); } -#line 1596 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1653 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 151: /* statement */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 154: /* statement */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).statement)); } -#line 1602 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1659 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 152: /* preparable_statement */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 155: /* preparable_statement */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).statement)); } -#line 1608 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1665 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 153: /* opt_hints */ -#line 135 "bison_parser.y" /* yacc.c:1257 */ + case 156: /* opt_hints */ +#line 136 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1617,11 +1674,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1621 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1678 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 154: /* hint_list */ -#line 135 "bison_parser.y" /* yacc.c:1257 */ + case 157: /* hint_list */ +#line 136 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1630,65 +1687,65 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1634 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1691 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 155: /* hint */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 158: /* hint */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1640 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1697 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 156: /* prepare_statement */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 159: /* prepare_statement */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).prep_stmt)); } -#line 1646 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1703 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 157: /* prepare_target_query */ -#line 134 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).sval)) ); } -#line 1652 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 158: /* execute_statement */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).exec_stmt)); } -#line 1658 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 159: /* import_statement */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).import_stmt)); } -#line 1664 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 160: /* import_file_type */ -#line 133 "bison_parser.y" /* yacc.c:1257 */ - { } -#line 1670 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 161: /* file_path */ -#line 134 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).sval)) ); } -#line 1676 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 162: /* create_statement */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).create_stmt)); } -#line 1682 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 163: /* opt_not_exists */ -#line 133 "bison_parser.y" /* yacc.c:1257 */ - { } -#line 1688 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 164: /* column_def_commalist */ + case 160: /* prepare_target_query */ #line 135 "bison_parser.y" /* yacc.c:1257 */ + { free( (((*yyvaluep).sval)) ); } +#line 1709 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 161: /* execute_statement */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).exec_stmt)); } +#line 1715 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 162: /* import_statement */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).import_stmt)); } +#line 1721 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 163: /* import_file_type */ +#line 134 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 1727 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 164: /* file_path */ +#line 135 "bison_parser.y" /* yacc.c:1257 */ + { free( (((*yyvaluep).sval)) ); } +#line 1733 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 165: /* create_statement */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).create_stmt)); } +#line 1739 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 166: /* opt_not_exists */ +#line 134 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 1745 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 167: /* column_def_commalist */ +#line 136 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).column_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).column_vec))) { @@ -1697,47 +1754,47 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).column_vec)); } -#line 1701 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1758 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 165: /* column_def */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 168: /* column_def */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).column_t)); } -#line 1707 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1764 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 166: /* column_type */ -#line 133 "bison_parser.y" /* yacc.c:1257 */ + case 169: /* column_type */ +#line 134 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1713 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1770 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 167: /* drop_statement */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 170: /* drop_statement */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).drop_stmt)); } -#line 1719 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1776 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 168: /* delete_statement */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 171: /* delete_statement */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).delete_stmt)); } -#line 1725 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1782 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 169: /* truncate_statement */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 172: /* truncate_statement */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).delete_stmt)); } -#line 1731 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1788 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 170: /* insert_statement */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 173: /* insert_statement */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).insert_stmt)); } -#line 1737 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1794 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 171: /* opt_column_list */ -#line 135 "bison_parser.y" /* yacc.c:1257 */ + case 174: /* opt_column_list */ +#line 136 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -1746,17 +1803,17 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 1750 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1807 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 172: /* update_statement */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 175: /* update_statement */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).update_stmt)); } -#line 1756 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1813 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 173: /* update_clause_commalist */ -#line 135 "bison_parser.y" /* yacc.c:1257 */ + case 176: /* update_clause_commalist */ +#line 136 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).update_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).update_vec))) { @@ -1765,134 +1822,53 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).update_vec)); } -#line 1769 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1826 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 174: /* update_clause */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 177: /* update_clause */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).update_t)); } -#line 1775 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1832 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 175: /* select_statement */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 178: /* select_statement */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1781 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1838 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 176: /* select_with_paren */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 179: /* select_with_paren */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1787 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1844 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 177: /* select_no_paren */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 180: /* select_paren_or_clause */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1793 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1850 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 179: /* select_clause */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 181: /* select_no_paren */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } -#line 1799 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1856 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 180: /* opt_distinct */ -#line 133 "bison_parser.y" /* yacc.c:1257 */ + case 185: /* select_clause */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).select_stmt)); } +#line 1862 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 186: /* opt_distinct */ +#line 134 "bison_parser.y" /* yacc.c:1257 */ { } -#line 1805 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 181: /* select_list */ -#line 135 "bison_parser.y" /* yacc.c:1257 */ - { - if ((((*yyvaluep).expr_vec)) != nullptr) { - for (auto ptr : *(((*yyvaluep).expr_vec))) { - delete ptr; - } - } - delete (((*yyvaluep).expr_vec)); -} -#line 1818 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 182: /* from_clause */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } -#line 1824 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 183: /* opt_where */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 1830 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 184: /* opt_group */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).group_t)); } -#line 1836 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 185: /* opt_having */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 1842 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 186: /* opt_order */ -#line 135 "bison_parser.y" /* yacc.c:1257 */ - { - if ((((*yyvaluep).order_vec)) != nullptr) { - for (auto ptr : *(((*yyvaluep).order_vec))) { - delete ptr; - } - } - delete (((*yyvaluep).order_vec)); -} -#line 1855 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 187: /* order_list */ -#line 135 "bison_parser.y" /* yacc.c:1257 */ - { - if ((((*yyvaluep).order_vec)) != nullptr) { - for (auto ptr : *(((*yyvaluep).order_vec))) { - delete ptr; - } - } - delete (((*yyvaluep).order_vec)); -} #line 1868 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 188: /* order_desc */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).order)); } -#line 1874 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 189: /* opt_order_type */ -#line 133 "bison_parser.y" /* yacc.c:1257 */ - { } -#line 1880 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 190: /* opt_top */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).limit)); } -#line 1886 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 191: /* opt_limit */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).limit)); } -#line 1892 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 192: /* expr_list */ -#line 135 "bison_parser.y" /* yacc.c:1257 */ + case 187: /* select_list */ +#line 136 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1901,156 +1877,261 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } +#line 1881 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 188: /* from_clause */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 1887 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 189: /* opt_where */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 1893 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 190: /* opt_group */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).group_t)); } +#line 1899 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 191: /* opt_having */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } #line 1905 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 193: /* literal_list */ -#line 135 "bison_parser.y" /* yacc.c:1257 */ + case 192: /* opt_order */ +#line 136 "bison_parser.y" /* yacc.c:1257 */ { - if ((((*yyvaluep).expr_vec)) != nullptr) { - for (auto ptr : *(((*yyvaluep).expr_vec))) { + if ((((*yyvaluep).order_vec)) != nullptr) { + for (auto ptr : *(((*yyvaluep).order_vec))) { delete ptr; } } - delete (((*yyvaluep).expr_vec)); + delete (((*yyvaluep).order_vec)); } #line 1918 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 194: /* expr_alias */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 1924 "bison_parser.cpp" /* yacc.c:1257 */ + case 193: /* order_list */ +#line 136 "bison_parser.y" /* yacc.c:1257 */ + { + if ((((*yyvaluep).order_vec)) != nullptr) { + for (auto ptr : *(((*yyvaluep).order_vec))) { + delete ptr; + } + } + delete (((*yyvaluep).order_vec)); +} +#line 1931 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 195: /* expr */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 1930 "bison_parser.cpp" /* yacc.c:1257 */ + case 194: /* order_desc */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).order)); } +#line 1937 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 196: /* operand */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 1936 "bison_parser.cpp" /* yacc.c:1257 */ + case 195: /* opt_order_type */ +#line 134 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 1943 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 197: /* scalar_expr */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 1942 "bison_parser.cpp" /* yacc.c:1257 */ + case 196: /* opt_top */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).limit)); } +#line 1949 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 198: /* unary_expr */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 1948 "bison_parser.cpp" /* yacc.c:1257 */ + case 197: /* opt_limit */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).limit)); } +#line 1955 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 199: /* binary_expr */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 1954 "bison_parser.cpp" /* yacc.c:1257 */ + case 198: /* expr_list */ +#line 136 "bison_parser.y" /* yacc.c:1257 */ + { + if ((((*yyvaluep).expr_vec)) != nullptr) { + for (auto ptr : *(((*yyvaluep).expr_vec))) { + delete ptr; + } + } + delete (((*yyvaluep).expr_vec)); +} +#line 1968 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 200: /* logic_expr */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 1960 "bison_parser.cpp" /* yacc.c:1257 */ + case 199: /* literal_list */ +#line 136 "bison_parser.y" /* yacc.c:1257 */ + { + if ((((*yyvaluep).expr_vec)) != nullptr) { + for (auto ptr : *(((*yyvaluep).expr_vec))) { + delete ptr; + } + } + delete (((*yyvaluep).expr_vec)); +} +#line 1981 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 201: /* in_expr */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 200: /* expr_alias */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1966 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1987 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 202: /* case_expr */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 201: /* expr */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1972 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1993 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 203: /* exists_expr */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 202: /* operand */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1978 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1999 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 204: /* comp_expr */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 203: /* scalar_expr */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1984 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2005 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 205: /* function_expr */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 204: /* unary_expr */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1990 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2011 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 206: /* between_expr */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 205: /* binary_expr */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 1996 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2017 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 207: /* column_name */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 206: /* logic_expr */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2002 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2023 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 208: /* literal */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 207: /* in_expr */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2008 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2029 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 209: /* string_literal */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 208: /* case_expr */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2014 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2035 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 210: /* num_literal */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 209: /* exists_expr */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2020 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2041 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 211: /* int_literal */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 210: /* comp_expr */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2026 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2047 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 212: /* star_expr */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 211: /* function_expr */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2032 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2053 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 213: /* param_expr */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 212: /* array_expr */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } -#line 2038 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2059 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 214: /* table_ref */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 213: /* array_index */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2065 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 214: /* between_expr */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2071 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 215: /* column_name */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2077 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 216: /* literal */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2083 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 217: /* string_literal */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2089 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 218: /* num_literal */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2095 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 219: /* int_literal */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2101 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 220: /* null_literal */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2107 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 221: /* param_expr */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2113 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 222: /* table_ref */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2044 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2119 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 215: /* table_ref_atomic */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 223: /* table_ref_atomic */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2050 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2125 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 216: /* table_ref_commalist */ -#line 135 "bison_parser.y" /* yacc.c:1257 */ + case 224: /* nonjoin_table_ref_atomic */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 2131 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 225: /* table_ref_commalist */ +#line 136 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).table_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).table_vec))) { @@ -2059,59 +2140,59 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).table_vec)); } -#line 2063 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2144 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 217: /* table_ref_name */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 226: /* table_ref_name */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2069 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2150 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 218: /* table_ref_name_no_alias */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 227: /* table_ref_name_no_alias */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).table)); } -#line 2075 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2156 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 219: /* table_name */ -#line 134 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).sval)) ); } -#line 2081 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 220: /* alias */ -#line 134 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).sval)) ); } -#line 2087 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 221: /* opt_alias */ -#line 134 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).sval)) ); } -#line 2093 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 222: /* join_clause */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } -#line 2099 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 223: /* opt_join_type */ -#line 133 "bison_parser.y" /* yacc.c:1257 */ - { } -#line 2105 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 224: /* join_condition */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 2111 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 226: /* ident_commalist */ + case 228: /* table_name */ #line 135 "bison_parser.y" /* yacc.c:1257 */ + { free( (((*yyvaluep).sval)) ); } +#line 2162 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 229: /* alias */ +#line 135 "bison_parser.y" /* yacc.c:1257 */ + { free( (((*yyvaluep).sval)) ); } +#line 2168 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 230: /* opt_alias */ +#line 135 "bison_parser.y" /* yacc.c:1257 */ + { free( (((*yyvaluep).sval)) ); } +#line 2174 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 231: /* join_clause */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 2180 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 232: /* opt_join_type */ +#line 134 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 2186 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 233: /* join_condition */ +#line 144 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2192 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 235: /* ident_commalist */ +#line 136 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2120,7 +2201,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 2124 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2205 "bison_parser.cpp" /* yacc.c:1257 */ break; @@ -2228,7 +2309,7 @@ YYLTYPE yylloc = yyloc_default; yychar = YYEMPTY; /* Cause a token to be read. */ /* User initialization code. */ -#line 71 "bison_parser.y" /* yacc.c:1436 */ +#line 72 "bison_parser.y" /* yacc.c:1429 */ { // Initialize yylloc.first_column = 0; @@ -2238,7 +2319,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.total_column = 0; } -#line 2242 "bison_parser.cpp" /* yacc.c:1436 */ +#line 2323 "bison_parser.cpp" /* yacc.c:1429 */ yylsp[0] = yylloc; goto yysetstate; @@ -2425,7 +2506,7 @@ yyreduce: switch (yyn) { case 2: -#line 236 "bison_parser.y" /* yacc.c:1661 */ +#line 240 "bison_parser.y" /* yacc.c:1646 */ { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -2443,211 +2524,211 @@ yyreduce: } delete (yyvsp[-1].stmt_vec); } -#line 2447 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2528 "bison_parser.cpp" /* yacc.c:1646 */ break; case 3: -#line 257 "bison_parser.y" /* yacc.c:1661 */ +#line 261 "bison_parser.y" /* yacc.c:1646 */ { (yyval.stmt_vec) = new std::vector(); (yyval.stmt_vec)->push_back((yyvsp[0].statement)); } -#line 2453 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2534 "bison_parser.cpp" /* yacc.c:1646 */ break; case 4: -#line 258 "bison_parser.y" /* yacc.c:1661 */ +#line 262 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].stmt_vec)->push_back((yyvsp[0].statement)); (yyval.stmt_vec) = (yyvsp[-2].stmt_vec); } -#line 2459 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2540 "bison_parser.cpp" /* yacc.c:1646 */ break; case 5: -#line 262 "bison_parser.y" /* yacc.c:1661 */ +#line 266 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2468 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2549 "bison_parser.cpp" /* yacc.c:1646 */ break; case 6: -#line 266 "bison_parser.y" /* yacc.c:1661 */ +#line 270 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2477 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2558 "bison_parser.cpp" /* yacc.c:1646 */ break; case 7: -#line 274 "bison_parser.y" /* yacc.c:1661 */ +#line 278 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 2483 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2564 "bison_parser.cpp" /* yacc.c:1646 */ break; case 8: -#line 275 "bison_parser.y" /* yacc.c:1661 */ +#line 279 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 2489 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2570 "bison_parser.cpp" /* yacc.c:1646 */ break; case 9: -#line 276 "bison_parser.y" /* yacc.c:1661 */ +#line 280 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 2495 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2576 "bison_parser.cpp" /* yacc.c:1646 */ break; case 10: -#line 277 "bison_parser.y" /* yacc.c:1661 */ +#line 281 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 2501 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2582 "bison_parser.cpp" /* yacc.c:1646 */ break; case 11: -#line 278 "bison_parser.y" /* yacc.c:1661 */ +#line 282 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2507 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2588 "bison_parser.cpp" /* yacc.c:1646 */ break; case 12: -#line 279 "bison_parser.y" /* yacc.c:1661 */ +#line 283 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2513 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2594 "bison_parser.cpp" /* yacc.c:1646 */ break; case 13: -#line 280 "bison_parser.y" /* yacc.c:1661 */ +#line 284 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 2519 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2600 "bison_parser.cpp" /* yacc.c:1646 */ break; case 14: -#line 281 "bison_parser.y" /* yacc.c:1661 */ +#line 285 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 2525 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2606 "bison_parser.cpp" /* yacc.c:1646 */ break; case 15: -#line 282 "bison_parser.y" /* yacc.c:1661 */ +#line 286 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 2531 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2612 "bison_parser.cpp" /* yacc.c:1646 */ break; case 16: -#line 291 "bison_parser.y" /* yacc.c:1661 */ +#line 295 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 2537 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2618 "bison_parser.cpp" /* yacc.c:1646 */ break; case 17: -#line 292 "bison_parser.y" /* yacc.c:1661 */ +#line 296 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = nullptr; } -#line 2543 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2624 "bison_parser.cpp" /* yacc.c:1646 */ break; case 18: -#line 297 "bison_parser.y" /* yacc.c:1661 */ +#line 301 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 2549 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2630 "bison_parser.cpp" /* yacc.c:1646 */ break; case 19: -#line 298 "bison_parser.y" /* yacc.c:1661 */ +#line 302 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 2555 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2636 "bison_parser.cpp" /* yacc.c:1646 */ break; case 20: -#line 302 "bison_parser.y" /* yacc.c:1661 */ +#line 306 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 2564 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2645 "bison_parser.cpp" /* yacc.c:1646 */ break; case 21: -#line 306 "bison_parser.y" /* yacc.c:1661 */ +#line 310 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 2574 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2655 "bison_parser.cpp" /* yacc.c:1646 */ break; case 22: -#line 318 "bison_parser.y" /* yacc.c:1661 */ +#line 322 "bison_parser.y" /* yacc.c:1646 */ { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 2584 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2665 "bison_parser.cpp" /* yacc.c:1646 */ break; case 24: -#line 328 "bison_parser.y" /* yacc.c:1661 */ +#line 332 "bison_parser.y" /* yacc.c:1646 */ { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 2593 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2674 "bison_parser.cpp" /* yacc.c:1646 */ break; case 25: -#line 332 "bison_parser.y" /* yacc.c:1661 */ +#line 336 "bison_parser.y" /* yacc.c:1646 */ { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 2603 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2684 "bison_parser.cpp" /* yacc.c:1646 */ break; case 26: -#line 344 "bison_parser.y" /* yacc.c:1661 */ +#line 348 "bison_parser.y" /* yacc.c:1646 */ { (yyval.import_stmt) = new ImportStatement((ImportType) (yyvsp[-4].uval)); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); (yyval.import_stmt)->tableName = (yyvsp[0].sval); } -#line 2613 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2694 "bison_parser.cpp" /* yacc.c:1646 */ break; case 27: -#line 352 "bison_parser.y" /* yacc.c:1661 */ +#line 356 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kImportCSV; } -#line 2619 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2700 "bison_parser.cpp" /* yacc.c:1646 */ break; case 28: -#line 356 "bison_parser.y" /* yacc.c:1661 */ +#line 360 "bison_parser.y" /* yacc.c:1646 */ { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 2625 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2706 "bison_parser.cpp" /* yacc.c:1646 */ break; case 29: -#line 366 "bison_parser.y" /* yacc.c:1661 */ +#line 370 "bison_parser.y" /* yacc.c:1646 */ { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); (yyval.create_stmt)->tableName = (yyvsp[-4].sval); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 2636 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2717 "bison_parser.cpp" /* yacc.c:1646 */ break; case 30: -#line 372 "bison_parser.y" /* yacc.c:1661 */ +#line 376 "bison_parser.y" /* yacc.c:1646 */ { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); (yyval.create_stmt)->tableName = (yyvsp[-3].sval); (yyval.create_stmt)->columns = (yyvsp[-1].column_vec); } -#line 2647 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2728 "bison_parser.cpp" /* yacc.c:1646 */ break; case 31: -#line 378 "bison_parser.y" /* yacc.c:1661 */ +#line 382 "bison_parser.y" /* yacc.c:1646 */ { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -2655,207 +2736,180 @@ yyreduce: (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 2659 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2740 "bison_parser.cpp" /* yacc.c:1646 */ break; case 32: -#line 388 "bison_parser.y" /* yacc.c:1661 */ +#line 392 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = true; } -#line 2665 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2746 "bison_parser.cpp" /* yacc.c:1646 */ break; case 33: -#line 389 "bison_parser.y" /* yacc.c:1661 */ +#line 393 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = false; } -#line 2671 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2752 "bison_parser.cpp" /* yacc.c:1646 */ break; case 34: -#line 393 "bison_parser.y" /* yacc.c:1661 */ +#line 397 "bison_parser.y" /* yacc.c:1646 */ { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } -#line 2677 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2758 "bison_parser.cpp" /* yacc.c:1646 */ break; case 35: -#line 394 "bison_parser.y" /* yacc.c:1661 */ +#line 398 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].column_vec)->push_back((yyvsp[0].column_t)); (yyval.column_vec) = (yyvsp[-2].column_vec); } -#line 2683 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2764 "bison_parser.cpp" /* yacc.c:1646 */ break; case 36: -#line 398 "bison_parser.y" /* yacc.c:1661 */ +#line 402 "bison_parser.y" /* yacc.c:1646 */ { (yyval.column_t) = new ColumnDefinition((yyvsp[-1].sval), (ColumnDefinition::DataType) (yyvsp[0].uval)); } -#line 2691 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2772 "bison_parser.cpp" /* yacc.c:1646 */ break; case 37: -#line 405 "bison_parser.y" /* yacc.c:1661 */ +#line 409 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::INT; } -#line 2697 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2778 "bison_parser.cpp" /* yacc.c:1646 */ break; case 38: -#line 406 "bison_parser.y" /* yacc.c:1661 */ +#line 410 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::INT; } -#line 2703 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2784 "bison_parser.cpp" /* yacc.c:1646 */ break; case 39: -#line 407 "bison_parser.y" /* yacc.c:1661 */ +#line 411 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::DOUBLE; } -#line 2709 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2790 "bison_parser.cpp" /* yacc.c:1646 */ break; case 40: -#line 408 "bison_parser.y" /* yacc.c:1661 */ +#line 412 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::TEXT; } -#line 2715 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2796 "bison_parser.cpp" /* yacc.c:1646 */ break; case 41: -#line 418 "bison_parser.y" /* yacc.c:1661 */ +#line 422 "bison_parser.y" /* yacc.c:1646 */ { (yyval.drop_stmt) = new DropStatement(kDropTable); (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 2724 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2805 "bison_parser.cpp" /* yacc.c:1646 */ break; case 42: -#line 422 "bison_parser.y" /* yacc.c:1661 */ +#line 426 "bison_parser.y" /* yacc.c:1646 */ { (yyval.drop_stmt) = new DropStatement(kDropView); (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 2733 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2814 "bison_parser.cpp" /* yacc.c:1646 */ break; case 43: -#line 426 "bison_parser.y" /* yacc.c:1661 */ +#line 430 "bison_parser.y" /* yacc.c:1646 */ { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 2742 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2823 "bison_parser.cpp" /* yacc.c:1646 */ break; case 44: -#line 438 "bison_parser.y" /* yacc.c:1661 */ +#line 442 "bison_parser.y" /* yacc.c:1646 */ { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->tableName = (yyvsp[-1].sval); (yyval.delete_stmt)->expr = (yyvsp[0].expr); } -#line 2752 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2833 "bison_parser.cpp" /* yacc.c:1646 */ break; case 45: -#line 446 "bison_parser.y" /* yacc.c:1661 */ +#line 450 "bison_parser.y" /* yacc.c:1646 */ { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->tableName = (yyvsp[0].sval); } -#line 2761 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2842 "bison_parser.cpp" /* yacc.c:1646 */ break; case 46: -#line 458 "bison_parser.y" /* yacc.c:1661 */ +#line 462 "bison_parser.y" /* yacc.c:1646 */ { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->tableName = (yyvsp[-5].sval); (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 2772 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2853 "bison_parser.cpp" /* yacc.c:1646 */ break; case 47: -#line 464 "bison_parser.y" /* yacc.c:1661 */ +#line 468 "bison_parser.y" /* yacc.c:1646 */ { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->tableName = (yyvsp[-2].sval); (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 2783 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2864 "bison_parser.cpp" /* yacc.c:1646 */ break; case 48: -#line 474 "bison_parser.y" /* yacc.c:1661 */ +#line 478 "bison_parser.y" /* yacc.c:1646 */ { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 2789 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2870 "bison_parser.cpp" /* yacc.c:1646 */ break; case 49: -#line 475 "bison_parser.y" /* yacc.c:1661 */ +#line 479 "bison_parser.y" /* yacc.c:1646 */ { (yyval.str_vec) = nullptr; } -#line 2795 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2876 "bison_parser.cpp" /* yacc.c:1646 */ break; case 50: -#line 485 "bison_parser.y" /* yacc.c:1661 */ +#line 489 "bison_parser.y" /* yacc.c:1646 */ { (yyval.update_stmt) = new UpdateStatement(); (yyval.update_stmt)->table = (yyvsp[-3].table); (yyval.update_stmt)->updates = (yyvsp[-1].update_vec); (yyval.update_stmt)->where = (yyvsp[0].expr); } -#line 2806 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2887 "bison_parser.cpp" /* yacc.c:1646 */ break; case 51: -#line 494 "bison_parser.y" /* yacc.c:1661 */ +#line 498 "bison_parser.y" /* yacc.c:1646 */ { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 2812 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2893 "bison_parser.cpp" /* yacc.c:1646 */ break; case 52: -#line 495 "bison_parser.y" /* yacc.c:1661 */ +#line 499 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 2818 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2899 "bison_parser.cpp" /* yacc.c:1646 */ break; case 53: -#line 499 "bison_parser.y" /* yacc.c:1661 */ +#line 503 "bison_parser.y" /* yacc.c:1646 */ { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 2828 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2909 "bison_parser.cpp" /* yacc.c:1646 */ break; case 56: -#line 516 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 2834 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 57: -#line 517 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 2840 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 58: -#line 521 "bison_parser.y" /* yacc.c:1661 */ - { - (yyval.select_stmt) = (yyvsp[-2].select_stmt); - (yyval.select_stmt)->order = (yyvsp[-1].order_vec); - - // Limit could have been set by TOP. - if ((yyvsp[0].limit) != nullptr) { - delete (yyval.select_stmt)->limit; - (yyval.select_stmt)->limit = (yyvsp[0].limit); - } - } -#line 2855 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 59: -#line 531 "bison_parser.y" /* yacc.c:1661 */ +#line 517 "bison_parser.y" /* yacc.c:1646 */ { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -2870,12 +2924,42 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 2874 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2928 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 60: -#line 545 "bison_parser.y" /* yacc.c:1661 */ + case 57: +#line 534 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } +#line 2934 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 58: +#line 535 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } +#line 2940 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 61: +#line 544 "bison_parser.y" /* yacc.c:1646 */ { + (yyval.select_stmt) = (yyvsp[-2].select_stmt); + (yyval.select_stmt)->order = (yyvsp[-1].order_vec); + + // Limit could have been set by TOP. + if ((yyvsp[0].limit) != nullptr) { + delete (yyval.select_stmt)->limit; + (yyval.select_stmt)->limit = (yyvsp[0].limit); + } + } +#line 2955 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 62: +#line 554 "bison_parser.y" /* yacc.c:1646 */ + { + // TODO: allow multiple unions (through linked list) + // TODO: capture type of set_operator + // TODO: might overwrite order and limit of first select here (yyval.select_stmt) = (yyvsp[-4].select_stmt); (yyval.select_stmt)->unionSelect = (yyvsp[-2].select_stmt); (yyval.select_stmt)->order = (yyvsp[-1].order_vec); @@ -2886,11 +2970,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 2890 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2974 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 64: -#line 565 "bison_parser.y" /* yacc.c:1661 */ + case 69: +#line 586 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -2900,473 +2984,551 @@ yyreduce: (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 2904 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 65: -#line 577 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.bval) = true; } -#line 2910 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 66: -#line 578 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.bval) = false; } -#line 2916 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 68: -#line 586 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.table) = (yyvsp[0].table); } -#line 2922 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 69: -#line 591 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = (yyvsp[0].expr); } -#line 2928 "bison_parser.cpp" /* yacc.c:1661 */ +#line 2988 "bison_parser.cpp" /* yacc.c:1646 */ break; case 70: -#line 592 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = nullptr; } -#line 2934 "bison_parser.cpp" /* yacc.c:1661 */ +#line 598 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.bval) = true; } +#line 2994 "bison_parser.cpp" /* yacc.c:1646 */ break; case 71: -#line 596 "bison_parser.y" /* yacc.c:1661 */ +#line 599 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.bval) = false; } +#line 3000 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 73: +#line 607 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.table) = (yyvsp[0].table); } +#line 3006 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 74: +#line 612 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[0].expr); } +#line 3012 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 75: +#line 613 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = nullptr; } +#line 3018 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 76: +#line 617 "bison_parser.y" /* yacc.c:1646 */ { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 2944 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 72: -#line 601 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.group_t) = nullptr; } -#line 2950 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 73: -#line 605 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = (yyvsp[0].expr); } -#line 2956 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 74: -#line 606 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = nullptr; } -#line 2962 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 75: -#line 609 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 2968 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 76: -#line 610 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.order_vec) = nullptr; } -#line 2974 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3028 "bison_parser.cpp" /* yacc.c:1646 */ break; case 77: -#line 614 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 2980 "bison_parser.cpp" /* yacc.c:1661 */ +#line 622 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.group_t) = nullptr; } +#line 3034 "bison_parser.cpp" /* yacc.c:1646 */ break; case 78: -#line 615 "bison_parser.y" /* yacc.c:1661 */ - { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 2986 "bison_parser.cpp" /* yacc.c:1661 */ +#line 626 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[0].expr); } +#line 3040 "bison_parser.cpp" /* yacc.c:1646 */ break; case 79: -#line 619 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 2992 "bison_parser.cpp" /* yacc.c:1661 */ +#line 627 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = nullptr; } +#line 3046 "bison_parser.cpp" /* yacc.c:1646 */ break; case 80: -#line 623 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.order_type) = kOrderAsc; } -#line 2998 "bison_parser.cpp" /* yacc.c:1661 */ +#line 630 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_vec) = (yyvsp[0].order_vec); } +#line 3052 "bison_parser.cpp" /* yacc.c:1646 */ break; case 81: -#line 624 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.order_type) = kOrderDesc; } -#line 3004 "bison_parser.cpp" /* yacc.c:1661 */ +#line 631 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_vec) = nullptr; } +#line 3058 "bison_parser.cpp" /* yacc.c:1646 */ break; case 82: -#line 625 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.order_type) = kOrderAsc; } -#line 3010 "bison_parser.cpp" /* yacc.c:1661 */ +#line 635 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } +#line 3064 "bison_parser.cpp" /* yacc.c:1646 */ break; case 83: -#line 631 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } -#line 3016 "bison_parser.cpp" /* yacc.c:1661 */ +#line 636 "bison_parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } +#line 3070 "bison_parser.cpp" /* yacc.c:1646 */ break; case 84: -#line 632 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.limit) = nullptr; } -#line 3022 "bison_parser.cpp" /* yacc.c:1661 */ +#line 640 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } +#line 3076 "bison_parser.cpp" /* yacc.c:1646 */ break; case 85: -#line 636 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } -#line 3028 "bison_parser.cpp" /* yacc.c:1661 */ +#line 644 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_type) = kOrderAsc; } +#line 3082 "bison_parser.cpp" /* yacc.c:1646 */ break; case 86: -#line 637 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.limit) = new LimitDescription((yyvsp[-2].expr)->ival, (yyvsp[0].expr)->ival); delete (yyvsp[-2].expr); delete (yyvsp[0].expr); } -#line 3034 "bison_parser.cpp" /* yacc.c:1661 */ +#line 645 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_type) = kOrderDesc; } +#line 3088 "bison_parser.cpp" /* yacc.c:1646 */ break; case 87: -#line 638 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.limit) = nullptr; } -#line 3040 "bison_parser.cpp" /* yacc.c:1661 */ +#line 646 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_type) = kOrderAsc; } +#line 3094 "bison_parser.cpp" /* yacc.c:1646 */ break; case 88: -#line 645 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3046 "bison_parser.cpp" /* yacc.c:1661 */ +#line 652 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } +#line 3100 "bison_parser.cpp" /* yacc.c:1646 */ break; case 89: -#line 646 "bison_parser.y" /* yacc.c:1661 */ - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3052 "bison_parser.cpp" /* yacc.c:1661 */ +#line 653 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = nullptr; } +#line 3106 "bison_parser.cpp" /* yacc.c:1646 */ break; case 90: -#line 650 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3058 "bison_parser.cpp" /* yacc.c:1661 */ +#line 657 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } +#line 3112 "bison_parser.cpp" /* yacc.c:1646 */ break; case 91: -#line 651 "bison_parser.y" /* yacc.c:1661 */ - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3064 "bison_parser.cpp" /* yacc.c:1661 */ +#line 658 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = new LimitDescription((yyvsp[-2].expr)->ival, (yyvsp[0].expr)->ival); delete (yyvsp[-2].expr); delete (yyvsp[0].expr); } +#line 3118 "bison_parser.cpp" /* yacc.c:1646 */ break; case 92: -#line 655 "bison_parser.y" /* yacc.c:1661 */ +#line 659 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = nullptr; } +#line 3124 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 93: +#line 666 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 3130 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 94: +#line 667 "bison_parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 3136 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 95: +#line 671 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 3142 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 96: +#line 672 "bison_parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 3148 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 97: +#line 676 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[-1].expr); (yyval.expr)->alias = (yyvsp[0].sval); } -#line 3073 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3157 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 99: -#line 671 "bison_parser.y" /* yacc.c:1661 */ + case 103: +#line 691 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[-1].expr); } -#line 3079 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 104: -#line 676 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 3085 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 108: -#line 686 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 3091 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 109: -#line 687 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 3097 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3163 "bison_parser.cpp" /* yacc.c:1646 */ break; case 111: -#line 692 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 3103 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 112: -#line 693 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 3109 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 113: -#line 694 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 3115 "bison_parser.cpp" /* yacc.c:1661 */ +#line 699 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } +#line 3169 "bison_parser.cpp" /* yacc.c:1646 */ break; case 114: -#line 695 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 3121 "bison_parser.cpp" /* yacc.c:1661 */ +#line 708 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } +#line 3175 "bison_parser.cpp" /* yacc.c:1646 */ break; case 115: -#line 696 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 3127 "bison_parser.cpp" /* yacc.c:1661 */ +#line 709 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } +#line 3181 "bison_parser.cpp" /* yacc.c:1646 */ break; case 116: -#line 697 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 3133 "bison_parser.cpp" /* yacc.c:1661 */ +#line 710 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } +#line 3187 "bison_parser.cpp" /* yacc.c:1646 */ break; case 117: -#line 698 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 3139 "bison_parser.cpp" /* yacc.c:1661 */ +#line 711 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } +#line 3193 "bison_parser.cpp" /* yacc.c:1646 */ break; case 118: -#line 699 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 3145 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 119: -#line 703 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 3151 "bison_parser.cpp" /* yacc.c:1661 */ +#line 712 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } +#line 3199 "bison_parser.cpp" /* yacc.c:1646 */ break; case 120: -#line 704 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 3157 "bison_parser.cpp" /* yacc.c:1661 */ +#line 717 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } +#line 3205 "bison_parser.cpp" /* yacc.c:1646 */ break; case 121: -#line 708 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 3163 "bison_parser.cpp" /* yacc.c:1661 */ +#line 718 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } +#line 3211 "bison_parser.cpp" /* yacc.c:1646 */ break; case 122: -#line 709 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 3169 "bison_parser.cpp" /* yacc.c:1661 */ +#line 719 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } +#line 3217 "bison_parser.cpp" /* yacc.c:1646 */ break; case 123: -#line 710 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 3175 "bison_parser.cpp" /* yacc.c:1661 */ +#line 720 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } +#line 3223 "bison_parser.cpp" /* yacc.c:1646 */ break; case 124: -#line 711 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 3181 "bison_parser.cpp" /* yacc.c:1661 */ +#line 721 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } +#line 3229 "bison_parser.cpp" /* yacc.c:1646 */ break; case 125: -#line 716 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeCase((yyvsp[-5].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 3187 "bison_parser.cpp" /* yacc.c:1661 */ +#line 722 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } +#line 3235 "bison_parser.cpp" /* yacc.c:1646 */ break; case 126: -#line 720 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 3193 "bison_parser.cpp" /* yacc.c:1661 */ +#line 723 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } +#line 3241 "bison_parser.cpp" /* yacc.c:1646 */ break; case 127: -#line 721 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 3199 "bison_parser.cpp" /* yacc.c:1661 */ +#line 724 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } +#line 3247 "bison_parser.cpp" /* yacc.c:1646 */ break; case 128: -#line 725 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 3205 "bison_parser.cpp" /* yacc.c:1661 */ +#line 725 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } +#line 3253 "bison_parser.cpp" /* yacc.c:1646 */ break; case 129: -#line 726 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 3211 "bison_parser.cpp" /* yacc.c:1661 */ +#line 726 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } +#line 3259 "bison_parser.cpp" /* yacc.c:1646 */ break; case 130: -#line 727 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 3217 "bison_parser.cpp" /* yacc.c:1661 */ +#line 730 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } +#line 3265 "bison_parser.cpp" /* yacc.c:1646 */ break; case 131: -#line 728 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 3223 "bison_parser.cpp" /* yacc.c:1661 */ +#line 731 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } +#line 3271 "bison_parser.cpp" /* yacc.c:1646 */ break; case 132: -#line 729 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 3229 "bison_parser.cpp" /* yacc.c:1661 */ +#line 735 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } +#line 3277 "bison_parser.cpp" /* yacc.c:1646 */ break; case 133: -#line 730 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 3235 "bison_parser.cpp" /* yacc.c:1661 */ +#line 736 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } +#line 3283 "bison_parser.cpp" /* yacc.c:1646 */ break; case 134: -#line 734 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 3241 "bison_parser.cpp" /* yacc.c:1661 */ +#line 737 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } +#line 3289 "bison_parser.cpp" /* yacc.c:1646 */ break; case 135: -#line 738 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 3247 "bison_parser.cpp" /* yacc.c:1661 */ +#line 738 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } +#line 3295 "bison_parser.cpp" /* yacc.c:1646 */ break; case 136: -#line 742 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 3253 "bison_parser.cpp" /* yacc.c:1661 */ +#line 743 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeCase((yyvsp[-3].expr), (yyvsp[-1].expr)); } +#line 3301 "bison_parser.cpp" /* yacc.c:1646 */ break; case 137: -#line 743 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 3259 "bison_parser.cpp" /* yacc.c:1661 */ +#line 745 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeCase((yyvsp[-5].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } +#line 3307 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 138: +#line 749 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } +#line 3313 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 139: +#line 750 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } +#line 3319 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 140: +#line 754 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } +#line 3325 "bison_parser.cpp" /* yacc.c:1646 */ break; case 141: -#line 753 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 3265 "bison_parser.cpp" /* yacc.c:1661 */ +#line 755 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } +#line 3331 "bison_parser.cpp" /* yacc.c:1646 */ break; case 142: -#line 758 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 3271 "bison_parser.cpp" /* yacc.c:1661 */ +#line 756 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } +#line 3337 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 143: +#line 757 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } +#line 3343 "bison_parser.cpp" /* yacc.c:1646 */ break; case 144: -#line 763 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 3277 "bison_parser.cpp" /* yacc.c:1661 */ +#line 758 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } +#line 3349 "bison_parser.cpp" /* yacc.c:1646 */ break; case 145: -#line 767 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.expr) = Expr::make(kExprStar); } -#line 3283 "bison_parser.cpp" /* yacc.c:1661 */ +#line 759 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } +#line 3355 "bison_parser.cpp" /* yacc.c:1646 */ break; case 146: -#line 771 "bison_parser.y" /* yacc.c:1661 */ +#line 763 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } +#line 3361 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 147: +#line 764 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } +#line 3367 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 148: +#line 768 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } +#line 3373 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 149: +#line 772 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } +#line 3379 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 150: +#line 776 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 3385 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 151: +#line 780 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } +#line 3391 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 152: +#line 781 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } +#line 3397 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 153: +#line 782 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeStar(); } +#line 3403 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 154: +#line 783 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } +#line 3409 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 159: +#line 794 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } +#line 3415 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 160: +#line 799 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } +#line 3421 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 162: +#line 804 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } +#line 3427 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 163: +#line 808 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeNullLiteral(); } +#line 3433 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 164: +#line 812 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); yyloc.param_list.push_back((yyval.expr)); } -#line 3293 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3443 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 148: -#line 784 "bison_parser.y" /* yacc.c:1661 */ + case 166: +#line 825 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[0].table_vec)->push_back((yyvsp[-2].table)); auto tbl = new TableRef(kTableCrossProduct); tbl->list = (yyvsp[0].table_vec); (yyval.table) = tbl; } -#line 3304 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3454 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 150: -#line 795 "bison_parser.y" /* yacc.c:1661 */ + case 170: +#line 841 "bison_parser.y" /* yacc.c:1646 */ { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].sval); (yyval.table) = tbl; } -#line 3315 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3465 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 152: -#line 806 "bison_parser.y" /* yacc.c:1661 */ + case 171: +#line 850 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 3321 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3471 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 153: -#line 807 "bison_parser.y" /* yacc.c:1661 */ + case 172: +#line 851 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 3327 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3477 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 154: -#line 812 "bison_parser.y" /* yacc.c:1661 */ + case 173: +#line 856 "bison_parser.y" /* yacc.c:1646 */ { auto tbl = new TableRef(kTableName); tbl->name = (yyvsp[-1].sval); tbl->alias = (yyvsp[0].sval); (yyval.table) = tbl; } -#line 3338 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3488 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 155: -#line 822 "bison_parser.y" /* yacc.c:1661 */ + case 174: +#line 866 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableName); (yyval.table)->name = (yyvsp[0].sval); } -#line 3347 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3497 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 157: -#line 831 "bison_parser.y" /* yacc.c:1661 */ + case 176: +#line 875 "bison_parser.y" /* yacc.c:1646 */ { (yyval.sval) = (yyvsp[0].sval); } -#line 3353 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3503 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 158: -#line 836 "bison_parser.y" /* yacc.c:1661 */ + case 177: +#line 880 "bison_parser.y" /* yacc.c:1646 */ { (yyval.sval) = (yyvsp[0].sval); } -#line 3359 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3509 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 161: -#line 842 "bison_parser.y" /* yacc.c:1661 */ + case 180: +#line 886 "bison_parser.y" /* yacc.c:1646 */ { (yyval.sval) = nullptr; } -#line 3365 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3515 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 162: -#line 851 "bison_parser.y" /* yacc.c:1661 */ + case 181: +#line 895 "bison_parser.y" /* yacc.c:1646 */ { + (yyval.table) = new TableRef(kTableJoin); + (yyval.table)->join = new JoinDefinition(); + (yyval.table)->join->type = kJoinNatural; + (yyval.table)->join->left = (yyvsp[-3].table); + (yyval.table)->join->right = (yyvsp[0].table); + } +#line 3527 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 182: +#line 903 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); (yyval.table)->join->type = (JoinType) (yyvsp[-4].uval); @@ -3374,77 +3536,91 @@ yyreduce: (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 3378 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3540 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 163: -#line 862 "bison_parser.y" /* yacc.c:1661 */ + case 183: +#line 913 "bison_parser.y" /* yacc.c:1646 */ + { + (yyval.table) = new TableRef(kTableJoin); + (yyval.table)->join = new JoinDefinition(); + (yyval.table)->join->type = (JoinType) (yyvsp[-6].uval); + (yyval.table)->join->left = (yyvsp[-7].table); + (yyval.table)->join->right = (yyvsp[-4].table); + auto left_col = Expr::makeColumnRef(strdup((yyvsp[-1].expr)->name)); + if ((yyvsp[-1].expr)->alias != nullptr) left_col->alias = strdup((yyvsp[-1].expr)->alias); + if ((yyvsp[-7].table)->getName() != nullptr) left_col->table = strdup((yyvsp[-7].table)->getName()); + auto right_col = Expr::makeColumnRef(strdup((yyvsp[-1].expr)->name)); + if ((yyvsp[-1].expr)->alias != nullptr) right_col->alias = strdup((yyvsp[-1].expr)->alias); + if ((yyvsp[-4].table)->getName() != nullptr) right_col->table = strdup((yyvsp[-4].table)->getName()); + (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); + delete (yyvsp[-1].expr); + } +#line 3560 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 184: +#line 931 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinInner; } -#line 3384 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3566 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 164: -#line 863 "bison_parser.y" /* yacc.c:1661 */ + case 185: +#line 932 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinOuter; } -#line 3390 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3572 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 165: -#line 864 "bison_parser.y" /* yacc.c:1661 */ + case 186: +#line 933 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinLeftOuter; } -#line 3396 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3578 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 166: -#line 865 "bison_parser.y" /* yacc.c:1661 */ + case 187: +#line 934 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinRightOuter; } -#line 3402 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3584 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 167: -#line 866 "bison_parser.y" /* yacc.c:1661 */ + case 188: +#line 935 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinLeft; } -#line 3408 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3590 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 168: -#line 867 "bison_parser.y" /* yacc.c:1661 */ + case 189: +#line 936 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinRight; } -#line 3414 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3596 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 169: -#line 868 "bison_parser.y" /* yacc.c:1661 */ + case 190: +#line 937 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinCross; } -#line 3420 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3602 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 170: -#line 869 "bison_parser.y" /* yacc.c:1661 */ - { (yyval.uval) = kJoinNatural; } -#line 3426 "bison_parser.cpp" /* yacc.c:1661 */ - break; - - case 171: -#line 870 "bison_parser.y" /* yacc.c:1661 */ + case 191: +#line 938 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kJoinInner; } -#line 3432 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3608 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 175: -#line 890 "bison_parser.y" /* yacc.c:1661 */ + case 195: +#line 958 "bison_parser.y" /* yacc.c:1646 */ { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 3438 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3614 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 176: -#line 891 "bison_parser.y" /* yacc.c:1661 */ + case 196: +#line 959 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 3444 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3620 "bison_parser.cpp" /* yacc.c:1646 */ break; -#line 3448 "bison_parser.cpp" /* yacc.c:1661 */ +#line 3624 "bison_parser.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3679,7 +3855,7 @@ yyreturn: #endif return yyresult; } -#line 894 "bison_parser.y" /* yacc.c:1906 */ +#line 962 "bison_parser.y" /* yacc.c:1906 */ /********************************* ** Section 4: Additional C code diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index d7139df..e203b32 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -48,7 +48,7 @@ extern int hsql_debug; #endif /* "%code requires" blocks. */ -#line 34 "bison_parser.y" /* yacc.c:1915 */ +#line 35 "bison_parser.y" /* yacc.c:1909 */ // %code requires block @@ -71,7 +71,7 @@ extern int hsql_debug; } \ } -#line 75 "bison_parser.h" /* yacc.c:1915 */ +#line 75 "bison_parser.h" /* yacc.c:1909 */ /* Token type. */ #ifndef HSQL_TOKENTYPE @@ -198,14 +198,17 @@ extern int hsql_debug; SQL_ON = 375, SQL_OR = 376, SQL_TO = 377, - SQL_EQUALS = 378, - SQL_NOTEQUALS = 379, - SQL_LESS = 380, - SQL_GREATER = 381, - SQL_LESSEQ = 382, - SQL_GREATEREQ = 383, - SQL_NOTNULL = 384, - SQL_UMINUS = 385 + SQL_ARRAY = 378, + SQL_CONCAT = 379, + SQL_ILIKE = 380, + SQL_EQUALS = 381, + SQL_NOTEQUALS = 382, + SQL_LESS = 383, + SQL_GREATER = 384, + SQL_LESSEQ = 385, + SQL_GREATEREQ = 386, + SQL_NOTNULL = 387, + SQL_UMINUS = 388 }; #endif @@ -214,7 +217,7 @@ extern int hsql_debug; union HSQL_STYPE { -#line 92 "bison_parser.y" /* yacc.c:1915 */ +#line 93 "bison_parser.y" /* yacc.c:1909 */ double fval; int64_t ival; @@ -251,7 +254,7 @@ union HSQL_STYPE std::vector* expr_vec; std::vector* order_vec; -#line 255 "bison_parser.h" /* yacc.c:1915 */ +#line 258 "bison_parser.h" /* yacc.c:1909 */ }; typedef union HSQL_STYPE HSQL_STYPE; diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 159b39a..bb96826 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -15,6 +15,7 @@ #include "flex_lexer.h" #include +#include using namespace hsql; @@ -165,6 +166,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %token LEFT LIKE LOAD NULL PART PLAN SHOW TEXT THEN TIME %token VIEW WHEN WITH ADD ALL AND ASC CSV END FOR INT KEY %token NOT OFF SET TBL TOP AS BY IF IN IS OF ON OR TO +%token ARRAY CONCAT ILIKE /********************************* ** Non-Terminal types (http://www.gnu.org/software/bison/manual/html_node/Type-Decl.html) @@ -173,7 +175,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %type statement preparable_statement %type execute_statement %type prepare_statement -%type select_statement select_with_paren select_no_paren select_clause +%type select_statement select_with_paren select_no_paren select_clause select_paren_or_clause %type import_statement %type create_statement %type insert_statement @@ -183,12 +185,13 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %type table_name opt_alias alias file_path prepare_target_query %type opt_not_exists opt_distinct %type import_file_type opt_join_type column_type -%type from_clause table_ref table_ref_atomic table_ref_name +%type
from_clause table_ref table_ref_atomic table_ref_name nonjoin_table_ref_atomic %type
join_clause table_ref_name_no_alias %type expr operand scalar_expr unary_expr binary_expr logic_expr exists_expr -%type function_expr between_expr star_expr expr_alias param_expr +%type function_expr between_expr expr_alias param_expr %type column_name literal int_literal num_literal string_literal %type comp_expr opt_where join_condition opt_having case_expr in_expr hint +%type array_expr array_index null_literal %type opt_limit opt_top %type order_desc %type opt_order_type @@ -210,7 +213,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %left OR %left AND %right NOT -%right '=' EQUALS NOTEQUALS LIKE +%nonassoc '=' EQUALS NOTEQUALS LIKE ILIKE %nonassoc '<' '>' LESS GREATER LESSEQ GREATEREQ %nonassoc NOTNULL @@ -219,6 +222,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %left '+' '-' %left '*' '/' '%' %left '^' +%left CONCAT /* Unary Operators */ %right UMINUS @@ -510,25 +514,7 @@ update_clause: select_statement: select_with_paren | select_no_paren - ; - -select_with_paren: - '(' select_no_paren ')' { $$ = $2; } - | '(' select_with_paren ')' { $$ = $2; } - ; - -select_no_paren: - select_clause opt_order opt_limit { - $$ = $1; - $$->order = $2; - - // Limit could have been set by TOP. - if ($3 != nullptr) { - delete $$->limit; - $$->limit = $3; - } - } - | select_clause set_operator select_clause opt_order opt_limit { + | select_with_paren set_operator select_paren_or_clause opt_order opt_limit { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator // TODO: might overwrite order and limit of first select here @@ -542,7 +528,33 @@ select_no_paren: $$->limit = $5; } } - | select_clause set_operator select_with_paren opt_order opt_limit { + ; + +select_with_paren: + '(' select_no_paren ')' { $$ = $2; } + | '(' select_with_paren ')' { $$ = $2; } + ; + +select_paren_or_clause: + select_with_paren + | select_clause + ; + +select_no_paren: + select_clause opt_order opt_limit { + $$ = $1; + $$->order = $2; + + // Limit could have been set by TOP. + if ($3 != nullptr) { + delete $$->limit; + $$->limit = $3; + } + } + | select_clause set_operator select_paren_or_clause opt_order opt_limit { + // TODO: allow multiple unions (through linked list) + // TODO: capture type of set_operator + // TODO: might overwrite order and limit of first select here $$ = $1; $$->unionSelect = $3; $$->order = $4; @@ -556,11 +568,20 @@ select_no_paren: ; set_operator: + set_type opt_all + ; + +set_type: UNION | INTERSECT | EXCEPT ; +opt_all: + ALL + | /* empty */ + ; + select_clause: SELECT opt_top opt_distinct select_list from_clause opt_where opt_group { $$ = new SelectStatement(); @@ -663,28 +684,32 @@ expr: | between_expr | logic_expr | exists_expr - | case_expr | in_expr ; operand: '(' expr ')' { $$ = $2; } + | array_index | scalar_expr | unary_expr | binary_expr + | case_expr | function_expr + | array_expr | '(' select_no_paren ')' { $$ = Expr::makeSelect($2); } ; scalar_expr: column_name - | star_expr | literal ; unary_expr: '-' operand { $$ = Expr::makeOpUnary(kOpUnaryMinus, $2); } | NOT operand { $$ = Expr::makeOpUnary(kOpNot, $2); } + | operand ISNULL { $$ = Expr::makeOpUnary(kOpIsNull, $1); } + | operand IS NULL { $$ = Expr::makeOpUnary(kOpIsNull, $1); } + | operand IS NOT NULL { $$ = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, $1)); } ; binary_expr: @@ -697,6 +722,8 @@ binary_expr: | operand '^' operand { $$ = Expr::makeOpBinary($1, kOpCaret, $3); } | operand LIKE operand { $$ = Expr::makeOpBinary($1, kOpLike, $3); } | operand NOT LIKE operand { $$ = Expr::makeOpBinary($1, kOpNotLike, $4); } + | operand ILIKE operand { $$ = Expr::makeOpBinary($1, kOpILike, $3); } + | operand CONCAT operand { $$ = Expr::makeOpBinary($1, kOpConcat, $3); } ; logic_expr: @@ -713,6 +740,8 @@ in_expr: // TODO: allow no else specified case_expr: + CASE WHEN expr THEN operand END { $$ = Expr::makeCase($3, $5); } + | CASE WHEN expr THEN operand ELSE operand END { $$ = Expr::makeCase($3, $5, $7); } ; @@ -731,7 +760,16 @@ comp_expr: ; function_expr: - IDENTIFIER '(' opt_distinct expr_list ')' { $$ = Expr::makeFunctionRef($1, $4, $3); } + IDENTIFIER '(' ')' { $$ = Expr::makeFunctionRef($1, new std::vector(), false); } + | IDENTIFIER '(' opt_distinct expr_list ')' { $$ = Expr::makeFunctionRef($1, $4, $3); } + ; + +array_expr: + ARRAY '[' expr_list ']' { $$ = Expr::makeArray($3); } + ; + +array_index: + operand '[' int_literal ']' { $$ = Expr::makeArrayIndex($1, $3->ival); } ; between_expr: @@ -741,11 +779,14 @@ between_expr: column_name: IDENTIFIER { $$ = Expr::makeColumnRef($1); } | IDENTIFIER '.' IDENTIFIER { $$ = Expr::makeColumnRef($1, $3); } + | '*' { $$ = Expr::makeStar(); } + | IDENTIFIER '.' '*' { $$ = Expr::makeStar($1); } ; literal: string_literal | num_literal + | null_literal | param_expr ; @@ -763,8 +804,8 @@ int_literal: INTVAL { $$ = Expr::makeLiteral($1); } ; -star_expr: - '*' { $$ = Expr::make(kExprStar); } +null_literal: + NULL { $$ = Expr::makeNullLiteral(); } ; param_expr: @@ -791,6 +832,11 @@ table_ref: table_ref_atomic: + nonjoin_table_ref_atomic + | join_clause + ; + +nonjoin_table_ref_atomic: table_ref_name | '(' select_statement ')' opt_alias { auto tbl = new TableRef(kTableSelect); @@ -798,10 +844,8 @@ table_ref_atomic: tbl->alias = $4; $$ = tbl; } - | join_clause ; - table_ref_commalist: table_ref_atomic { $$ = new std::vector(); $$->push_back($1); } | table_ref_commalist ',' table_ref_atomic { $1->push_back($3); $$ = $1; } @@ -847,8 +891,16 @@ opt_alias: ******************************/ join_clause: - table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition + table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic { + $$ = new TableRef(kTableJoin); + $$->join = new JoinDefinition(); + $$->join->type = kJoinNatural; + $$->join->left = $1; + $$->join->right = $4; + } + | table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition + { $$ = new TableRef(kTableJoin); $$->join = new JoinDefinition(); $$->join->type = (JoinType) $2; @@ -856,7 +908,24 @@ join_clause: $$->join->right = $4; $$->join->condition = $6; } - ; + | + table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' column_name ')' + { + $$ = new TableRef(kTableJoin); + $$->join = new JoinDefinition(); + $$->join->type = (JoinType) $2; + $$->join->left = $1; + $$->join->right = $4; + auto left_col = Expr::makeColumnRef(strdup($7->name)); + if ($7->alias != nullptr) left_col->alias = strdup($7->alias); + if ($1->getName() != nullptr) left_col->table = strdup($1->getName()); + auto right_col = Expr::makeColumnRef(strdup($7->name)); + if ($7->alias != nullptr) right_col->alias = strdup($7->alias); + if ($4->getName() != nullptr) right_col->table = strdup($4->getName()); + $$->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); + delete $7; + } + ; opt_join_type: INNER { $$ = kJoinInner; } @@ -866,7 +935,6 @@ opt_join_type: | LEFT { $$ = kJoinLeft; } | RIGHT { $$ = kJoinRight; } | CROSS { $$ = kJoinCross; } - | NATURAL { $$ = kJoinNatural; } | /* empty, default */ { $$ = kJoinInner; } ; diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index 0166a0c..ceb87e2 100644 --- a/src/parser/flex_lexer.cpp +++ b/src/parser/flex_lexer.cpp @@ -573,8 +573,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 132 -#define YY_END_OF_BUFFER 133 +#define YY_NUM_RULES 136 +#define YY_END_OF_BUFFER 137 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -582,27 +582,27 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[914] = +static const flex_int16_t yy_accept[938] = { 0, - 0, 0, 2, 2, 133, 131, 4, 4, 131, 124, - 131, 124, 124, 127, 124, 124, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 2, - 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 0, 2, 2, 137, 135, 4, 4, 135, 135, + 128, 135, 128, 128, 131, 128, 128, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 128, 2, 2, 3, 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, 4, 0, 0, 130, 1, 127, 126, - 125, 122, 121, 123, 129, 129, 129, 129, 129, 112, - 129, 113, 129, 129, 129, 129, 129, 129, 129, 129, + 2, 2, 2, 2, 2, 2, 2, 4, 123, 0, + 0, 134, 1, 131, 130, 129, 125, 124, 126, 133, + 133, 133, 133, 133, 133, 114, 133, 115, 133, 133, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 114, 129, 115, 116, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 117, 118, - 119, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 120, 129, 129, - 129, 129, 129, 129, 129, 129, 2, 2, 2, 2, - 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 116, + 133, 133, 117, 118, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 119, 120, 121, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 122, 133, 133, 133, 133, 133, + 133, 133, 133, 127, 2, 2, 2, 2, 2, 2, + 1, 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, @@ -610,18 +610,18 @@ static const flex_int16_t yy_accept[914] = 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, - 128, 125, 98, 129, 99, 129, 129, 100, 101, 129, - 129, 129, 129, 129, 129, 129, 129, 102, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 103, 129, - 129, 129, 129, 129, 129, 104, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 105, 129, - 129, 106, 129, 129, 129, 129, 129, 129, 129, 129, - - 107, 129, 129, 108, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 109, 129, 129, 129, 129, - 110, 129, 129, 129, 129, 111, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 132, 129, 100, 133, 101, 133, 133, 102, + 133, 103, 133, 133, 133, 133, 133, 133, 133, 133, + 104, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 105, 133, 133, 133, 133, 133, 133, 106, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + + 133, 133, 107, 133, 133, 108, 133, 133, 133, 133, + 133, 133, 133, 133, 109, 133, 133, 110, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 111, + 133, 133, 133, 133, 112, 133, 133, 133, 133, 113, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 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, @@ -631,18 +631,18 @@ static const flex_int16_t yy_accept[914] = 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, 129, 129, 129, 129, 129, 72, 129, 73, - 129, 129, 129, 129, 74, 129, 129, 129, 129, 75, - 129, 129, 129, 76, 77, 129, 129, 129, 129, 129, - 78, 79, 80, 129, 129, 81, 129, 82, 129, 129, - 129, 129, 129, 129, 83, 129, 84, 85, 86, 129, - 87, 129, 129, 129, 129, 88, 129, 129, 129, 129, - 129, 89, 90, 129, 129, 129, 129, 129, 129, 129, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 133, 133, + 133, 133, 133, 133, 73, 133, 74, 133, 133, 133, + 133, 75, 133, 133, 133, 133, 76, 133, 133, 133, + 77, 78, 133, 133, 133, 133, 133, 79, 80, 81, + 133, 133, 82, 133, 83, 133, 133, 133, 133, 133, + 133, 133, 84, 133, 85, 86, 87, 133, 89, 133, - 91, 129, 129, 129, 129, 92, 93, 94, 129, 129, - 129, 129, 129, 129, 129, 95, 129, 96, 129, 97, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 133, 133, 133, 90, 133, 133, 133, 133, 133, 91, + 92, 133, 133, 133, 133, 133, 133, 133, 93, 133, + 133, 133, 133, 94, 95, 96, 133, 133, 133, 133, + 133, 133, 133, 97, 133, 98, 133, 99, 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, @@ -650,41 +650,43 @@ static const flex_int16_t yy_accept[914] = 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 54, 55, - 129, 129, 129, 129, 129, 129, 129, 56, 129, 129, - 129, 57, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 58, 129, 129, 129, 59, 60, 129, 129, 129, - 129, 61, 62, 63, 64, 129, 129, 129, 65, 66, - 129, 129, 129, 129, 129, 67, 129, 129, 129, 129, - 68, 129, 129, 129, 69, 129, 129, 129, 70, 129, - 129, 71, 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, + 133, 56, 133, 133, 133, 133, 133, 133, 57, 133, + 133, 133, 58, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 59, 133, 133, 88, 133, 60, 61, 133, + 133, 133, 133, 62, 63, 64, 65, 133, 133, 133, + 66, 67, 133, 133, 133, 133, 133, 68, 133, 133, + 133, 133, 69, 133, 133, 133, 70, 133, 133, 133, + 71, 133, 133, 72, 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, 2, 2, 2, 2, 2, 129, 30, 129, 129, - 31, 129, 32, 129, 129, 33, 34, 129, 35, 36, - 37, 129, 38, 129, 39, 40, 129, 41, 42, 129, - 129, 43, 129, 129, 44, 129, 129, 129, 45, 129, - 46, 47, 48, 129, 49, 129, 129, 129, 50, 51, - 52, 53, 129, 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, + 133, 30, 133, 133, 31, 133, 32, 133, 133, 33, + 34, 133, 35, 36, 37, 133, 38, 133, 39, 40, + 133, 41, 42, 133, 133, 43, 133, 133, 44, 133, + 133, 133, 45, 133, 46, 47, 48, 133, 49, 133, + + 133, 133, 50, 51, 52, 53, 133, 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, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 14, 15, 16, 17, 18, 133, + 19, 133, 20, 21, 22, 23, 133, 24, 133, 133, + 25, 26, 133, 27, 28, 133, 133, 133, 29, 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, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 14, 15, 16, 17, 18, 129, 19, 129, 20, 21, - 22, 23, 129, 24, 129, 129, 25, 26, 129, 27, - 28, 129, 129, 129, 29, 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, - 129, 10, 129, 11, 129, 12, 129, 129, 13, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 129, 7, - - 129, 8, 9, 2, 2, 2, 2, 2, 5, 6, - 2, 2, 0 + 2, 2, 2, 2, 133, 10, 133, 11, 133, 12, + 133, 133, 13, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 133, 7, 133, 8, 9, 2, 2, 2, + 2, 2, 5, 6, 2, 2, 0 } ; static const YY_CHAR yy_ec[256] = @@ -692,17 +694,17 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 4, 1, 1, 5, 1, 6, 5, - 5, 5, 5, 5, 7, 8, 5, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 5, 5, 10, - 11, 12, 5, 1, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 1, 1, 1, 5, 39, 1, 40, 41, 42, 43, + 1, 2, 4, 5, 1, 1, 6, 1, 7, 6, + 6, 6, 6, 6, 8, 9, 6, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 6, 6, 11, + 12, 13, 6, 1, 14, 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, + 6, 1, 6, 6, 40, 1, 41, 42, 43, 44, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 5, 1, 5, 1, 1, 1, 1, 1, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 6, 67, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -719,643 +721,653 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[66] = +static const YY_CHAR yy_meta[68] = { 0, - 1, 1, 2, 3, 1, 1, 1, 1, 4, 1, - 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, + 1, 1, 2, 1, 3, 1, 1, 1, 1, 4, + 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, 4, 4 + 4, 4, 4, 4, 4, 4, 1 } ; -static const flex_int16_t yy_base[921] = +static const flex_int16_t yy_base[945] = { 0, - 0, 0, 65, 0, 400, 3673, 129, 131, 0, 3673, - 361, 128, 351, 130, 129, 346, 126, 119, 134, 180, - 122, 169, 119, 138, 169, 118, 137, 188, 187, 185, - 222, 217, 0, 232, 268, 311, 234, 230, 243, 0, - 164, 256, 338, 0, 333, 153, 305, 263, 282, 294, - 368, 426, 478, 530, 578, 626, 283, 428, 674, 282, - 300, 360, 345, 726, 774, 826, 346, 418, 876, 928, - 976, 437, 436, 295, 282, 267, 3673, 3673, 293, 260, - 257, 3673, 3673, 3673, 0, 139, 157, 284, 290, 191, - 353, 0, 253, 391, 434, 177, 222, 480, 365, 285, + 0, 0, 67, 0, 433, 3713, 133, 135, 418, 0, + 3713, 410, 131, 401, 133, 132, 384, 129, 129, 137, + 135, 145, 179, 127, 184, 189, 131, 144, 201, 200, + 224, 193, 230, 0, 208, 246, 289, 241, 284, 287, + 320, 0, 200, 229, 363, 341, 0, 322, 268, 314, + 271, 271, 303, 347, 414, 468, 520, 568, 616, 274, + 343, 664, 345, 278, 406, 364, 716, 764, 422, 324, + 419, 814, 866, 465, 424, 480, 223, 311, 3713, 272, + 265, 3713, 3713, 312, 259, 207, 3713, 3713, 3713, 0, + 147, 203, 343, 353, 229, 250, 352, 0, 418, 463, - 294, 298, 345, 376, 482, 378, 390, 398, 416, 421, - 432, 483, 463, 0, 432, 497, 443, 458, 470, 494, - 523, 539, 515, 523, 521, 526, 535, 548, 544, 0, - 547, 532, 535, 553, 579, 572, 564, 577, 575, 574, - 575, 593, 594, 587, 612, 595, 588, 589, 585, 625, - 634, 630, 628, 637, 638, 625, 0, 347, 257, 250, - 0, 0, 345, 241, 235, 0, 0, 0, 651, 680, - 670, 713, 738, 705, 771, 672, 789, 820, 704, 788, - 777, 1028, 828, 845, 870, 811, 851, 864, 1078, 895, - 899, 900, 933, 934, 962, 974, 984, 916, 1016, 1127, + 421, 283, 317, 518, 504, 346, 376, 413, 431, 442, + 531, 453, 462, 467, 479, 484, 486, 520, 540, 0, + 522, 517, 564, 529, 535, 550, 570, 566, 587, 567, + 575, 571, 576, 585, 598, 595, 0, 604, 593, 604, + 626, 624, 625, 623, 624, 626, 621, 627, 646, 651, + 643, 662, 662, 666, 665, 663, 676, 683, 682, 680, + 702, 690, 678, 3713, 0, 325, 0, 206, 198, 0, + 0, 331, 190, 161, 0, 0, 0, 704, 728, 725, + 761, 806, 769, 820, 857, 766, 868, 871, 900, 894, + 908, 960, 912, 942, 944, 801, 946, 970, 998, 979, - 986, 1026, 930, 1038, 1044, 1072, 1047, 1081, 1118, 1124, - 1123, 1084, 1155, 1093, 1159, 1161, 1164, 1193, 1190, 1178, - 1195, 1209, 1223, 1231, 1232, 1253, 1247, 1228, 1102, 1180, - 1261, 1266, 1282, 1283, 1285, 1295, 1316, 1307, 1301, 1318, - 3673, 204, 0, 641, 0, 649, 647, 0, 0, 674, - 671, 684, 768, 680, 693, 733, 740, 0, 757, 772, - 784, 992, 883, 882, 879, 921, 945, 970, 0, 977, - 978, 1012, 1018, 1054, 1135, 0, 1138, 1165, 1236, 1248, - 1289, 1293, 1316, 1320, 1327, 1339, 1340, 1341, 1346, 1328, - 1340, 0, 1336, 1352, 1349, 1356, 1361, 1357, 1345, 1353, + 992, 1000, 1004, 1030, 1033, 1035, 1054, 854, 1044, 1058, + 1107, 1083, 1084, 916, 1014, 1112, 1140, 1046, 1108, 1126, + 1137, 1151, 1166, 1174, 1150, 1183, 1180, 1191, 1192, 1216, + 1214, 1206, 1229, 1237, 1248, 1254, 1246, 1280, 1282, 1278, + 1245, 1283, 1288, 1312, 1333, 1321, 1334, 1336, 1331, 1322, + 1357, 0, 3713, 145, 0, 694, 0, 695, 689, 0, + 723, 0, 720, 717, 737, 758, 731, 755, 814, 805, + 0, 822, 816, 842, 1072, 858, 860, 877, 925, 913, + 930, 0, 952, 976, 1099, 1084, 1095, 1142, 0, 1164, + 1183, 1227, 1244, 1287, 1292, 1304, 1337, 1356, 1356, 1373, - 0, 1363, 1359, 1360, 1375, 1377, 1385, 1376, 1376, 1381, - 1394, 1376, 1389, 1393, 1394, 0, 1377, 1383, 1388, 1398, - 0, 1395, 1392, 1400, 1410, 0, 1402, 1403, 1413, 1428, - 1417, 1412, 1411, 1416, 1426, 1438, 0, 194, 1443, 1444, - 1445, 1447, 1469, 1457, 1459, 1473, 1460, 1475, 1499, 1498, - 1508, 1517, 1529, 1511, 1512, 1527, 1552, 1542, 1553, 1563, - 1566, 1568, 1571, 1567, 1577, 1605, 1596, 1619, 1606, 1622, - 1607, 1611, 1637, 1641, 1662, 1651, 1660, 1673, 1676, 1695, - 1692, 1679, 1681, 1697, 1711, 1714, 1716, 1713, 1735, 1727, - 1745, 1767, 1768, 1751, 1759, 1769, 1770, 1800, 1805, 1799, + 1374, 1375, 1376, 1366, 1376, 0, 1372, 1388, 1386, 1392, + 1396, 1392, 1379, 1380, 0, 1390, 1385, 1391, 1406, 1407, + 1412, 1401, 1400, 1408, 1424, 1411, 1425, 1429, 1430, 0, + 1413, 1421, 1424, 1433, 0, 1430, 1427, 1435, 1445, 0, + 1437, 1438, 1439, 1455, 1443, 1443, 1442, 1446, 1461, 1459, + 0, 140, 1464, 1465, 1480, 1482, 1483, 1493, 1498, 1495, + 1496, 1508, 1524, 1534, 1536, 1547, 1550, 1564, 1548, 1549, + 1565, 1586, 1587, 1590, 1598, 1601, 1603, 1620, 1619, 1622, + 1636, 1624, 1654, 1641, 1653, 1657, 1665, 1670, 1686, 1675, + 1691, 1716, 1694, 1708, 1724, 1742, 1727, 1729, 1732, 1740, - 1781, 1783, 1833, 1822, 1824, 1857, 1841, 1839, 1867, 1863, - 1873, 1876, 1889, 1891, 1902, 1878, 1899, 1921, 1915, 1931, - 1927, 1943, 1952, 1965, 1956, 1964, 1980, 1981, 1995, 1994, - 2010, 2029, 1441, 1448, 1513, 1572, 1603, 0, 1709, 0, - 1738, 1771, 1794, 1809, 0, 1848, 1858, 1913, 1973, 0, - 1973, 2002, 2010, 0, 0, 2007, 2009, 2009, 2011, 2035, - 0, 0, 0, 2038, 2024, 0, 2029, 0, 2029, 2030, - 2029, 2038, 2041, 2058, 0, 2048, 0, 0, 0, 2048, - 0, 2057, 2067, 2054, 2056, 0, 2074, 2073, 2061, 2064, - 2071, 0, 0, 2084, 2087, 2076, 2072, 2071, 2080, 2091, + 1758, 1745, 1773, 1757, 1781, 1770, 1794, 1807, 1815, 1810, + 1802, 1816, 1799, 1824, 1840, 1850, 1848, 1852, 1869, 1873, + 1874, 1878, 1906, 1861, 1904, 1890, 1915, 1918, 1923, 1932, + 1940, 1949, 1919, 1961, 1958, 1971, 1957, 1975, 1992, 2003, + 2006, 1994, 2011, 2009, 2037, 2034, 2059, 2060, 1501, 1526, + 1588, 1642, 1663, 1726, 0, 1790, 0, 1848, 1914, 1921, + 1983, 0, 2028, 2028, 2031, 2052, 0, 2053, 2061, 2059, + 0, 0, 2056, 2058, 2054, 2059, 2081, 0, 0, 0, + 2087, 2074, 0, 2079, 0, 2079, 2091, 2085, 2081, 2089, + 2090, 2106, 0, 2098, 0, 0, 0, 2094, 0, 2104, - 0, 2092, 2089, 2097, 2092, 0, 0, 2089, 2107, 2099, - 2093, 2118, 2102, 2116, 2121, 0, 2106, 0, 2123, 0, - 2126, 2127, 2131, 2142, 2137, 2143, 2156, 2160, 2177, 2168, - 2171, 2196, 2172, 2194, 2206, 2205, 2231, 2209, 2240, 2230, - 2235, 2239, 2244, 2263, 2268, 2273, 2284, 2285, 2276, 2294, - 2297, 2302, 2307, 2313, 2319, 2330, 2338, 2343, 2342, 2351, - 2359, 2374, 2353, 2395, 2384, 2392, 2393, 2408, 2397, 2418, - 2407, 2416, 2433, 2441, 2449, 2451, 2459, 2462, 2477, 2464, - 2467, 2505, 2507, 2513, 2495, 2516, 2518, 2519, 2529, 2537, - 2547, 2541, 2559, 2550, 2555, 2571, 2583, 2580, 2593, 2599, + 2113, 2100, 2104, 0, 2122, 2121, 2109, 2110, 2116, 0, + 0, 2130, 2132, 2123, 2120, 2119, 2129, 2141, 0, 2142, + 2139, 2145, 2142, 0, 0, 2140, 2158, 2148, 2143, 2166, + 2148, 2163, 2167, 0, 2152, 0, 2171, 0, 2180, 2188, + 2176, 2177, 2199, 2182, 2191, 2210, 2205, 2214, 2231, 2240, + 2236, 2242, 2259, 2248, 2265, 2274, 2276, 2290, 2298, 2304, + 2299, 2300, 2322, 2328, 2314, 2343, 2344, 2332, 2353, 2354, + 2372, 2376, 2362, 2377, 2378, 2402, 2388, 2407, 2411, 2428, + 2432, 2440, 2416, 2444, 2446, 2450, 2456, 2474, 2461, 2485, + 2482, 2484, 2486, 2490, 2520, 2495, 2514, 2523, 2538, 2524, - 2614, 2615, 2601, 2604, 2623, 2605, 2633, 2637, 0, 0, - 2113, 2138, 2175, 2246, 2239, 2299, 2382, 0, 2395, 2403, - 2456, 0, 2451, 2602, 2645, 2647, 2634, 2639, 2641, 2654, - 2652, 0, 2661, 2652, 2652, 0, 0, 2653, 2669, 2657, - 2666, 0, 0, 0, 0, 2679, 2674, 2663, 0, 0, - 2679, 2670, 2674, 2688, 2685, 0, 2695, 2678, 2698, 2703, - 2687, 2690, 2692, 2712, 0, 2709, 2712, 2712, 0, 2699, - 2721, 0, 2721, 2722, 2725, 2723, 2727, 2733, 2755, 2751, - 2756, 2757, 2779, 2785, 2766, 2767, 2781, 2800, 2790, 2795, - 2818, 2824, 2821, 2830, 2849, 2843, 2852, 2867, 2858, 2855, + 2528, 2539, 2556, 2560, 2564, 2574, 2582, 2598, 2572, 2588, + 2593, 2606, 2612, 2610, 2614, 2628, 2638, 2647, 2644, 2650, + 2666, 2676, 2652, 2662, 2668, 2680, 2690, 2692, 0, 0, + 2195, 0, 2245, 2254, 2309, 2300, 2346, 2394, 0, 2396, + 2403, 2530, 0, 2563, 2591, 2698, 2701, 2687, 2689, 2692, + 2710, 2709, 0, 2716, 2707, 0, 2706, 0, 0, 2707, + 2724, 2712, 2723, 0, 0, 0, 0, 2736, 2731, 2720, + 0, 0, 2736, 2725, 2727, 2742, 2740, 0, 2750, 2735, + 2753, 2758, 2741, 2743, 2743, 2764, 0, 2764, 2767, 2768, + 0, 2756, 2776, 0, 2774, 2776, 2784, 2780, 2786, 2788, - 2864, 2886, 2888, 2889, 2897, 2892, 2898, 2920, 2921, 2926, - 2934, 2923, 2932, 2942, 2951, 2963, 2972, 2955, 2980, 2966, - 2995, 2994, 2997, 3005, 3006, 3030, 3031, 3039, 3029, 3034, - 3064, 3040, 3045, 3055, 3083, 3068, 2731, 0, 2920, 2960, - 2963, 3064, 0, 3076, 3065, 0, 0, 3087, 0, 0, - 0, 3089, 0, 3084, 0, 0, 3074, 0, 0, 3084, - 3099, 0, 3093, 3108, 0, 3090, 3108, 3089, 0, 3115, - 3100, 0, 0, 3110, 0, 3122, 3123, 3107, 0, 0, - 0, 0, 3116, 3128, 3133, 3134, 3137, 3138, 3156, 3139, - 3169, 3172, 3151, 3168, 3193, 3177, 3182, 3201, 3205, 3206, + 2790, 2809, 2814, 2792, 2820, 2828, 2842, 2826, 2830, 2843, + 2859, 2844, 2854, 2872, 2878, 2880, 2884, 2896, 2882, 2908, + 2913, 2897, 2932, 2918, 2922, 2936, 2934, 2948, 2950, 2946, + 2967, 2971, 2972, 2980, 2982, 2986, 2988, 2990, 2996, 3011, + 3021, 3005, 3022, 3020, 3050, 3039, 3045, 3060, 3062, 3075, + 3064, 3078, 3090, 3093, 3119, 3094, 3096, 3124, 3108, 3127, + 2775, 0, 2789, 2912, 3016, 3029, 0, 3087, 3084, 0, + 0, 3131, 0, 0, 0, 3130, 0, 3123, 0, 0, + 3113, 0, 0, 3121, 3136, 0, 3135, 3152, 0, 3134, + 3150, 3132, 0, 3155, 3144, 0, 0, 3155, 0, 3168, - 3222, 3207, 3210, 3223, 3235, 3236, 3246, 3241, 3244, 3260, - 3276, 3265, 3275, 3277, 3278, 3281, 3311, 3300, 3306, 3310, - 3332, 3315, 3344, 3349, 3348, 3334, 3350, 3360, 3365, 3382, - 0, 0, 0, 0, 0, 3151, 0, 3158, 0, 0, - 0, 0, 3213, 0, 3199, 3247, 0, 0, 3274, 0, - 0, 3306, 3321, 3351, 0, 3373, 3374, 3383, 3384, 3386, - 3418, 3388, 3417, 3399, 3422, 3423, 3427, 3436, 3428, 3440, - 3451, 3452, 3457, 3466, 3462, 3468, 3490, 3492, 3491, 3494, - 3383, 0, 3443, 0, 3483, 0, 3477, 3490, 0, 3505, - 3502, 3516, 3506, 3535, 3534, 3540, 3545, 3544, 3542, 0, + 3171, 3153, 0, 0, 0, 0, 3163, 3172, 3173, 3178, + 3181, 3182, 3183, 3184, 3215, 3206, 3207, 3212, 3218, 3224, + 3236, 3237, 3241, 3246, 3249, 3247, 3250, 3252, 3255, 3260, + 3278, 3281, 3286, 3303, 3304, 3289, 3314, 3292, 3295, 3320, + 3345, 3332, 3335, 3344, 3368, 3349, 3357, 3358, 3374, 3363, + 3366, 3387, 3397, 3399, 0, 0, 0, 0, 0, 3294, + 0, 3296, 0, 0, 0, 0, 3323, 0, 3385, 3400, + 0, 0, 3388, 0, 0, 3395, 3401, 3411, 0, 3412, + 3420, 3422, 3423, 3428, 3441, 3431, 3445, 3453, 3454, 3456, + 3457, 3491, 3466, 3482, 3479, 3485, 3490, 3508, 3494, 3507, - 3532, 0, 0, 3550, 3559, 3574, 3576, 3578, 0, 0, - 3580, 3584, 3673, 3648, 3652, 164, 3656, 3660, 3664, 3668 + 3520, 3531, 3525, 3536, 3456, 0, 3482, 0, 3502, 0, + 3499, 3519, 0, 3544, 3548, 3561, 3553, 3569, 3565, 3570, + 3587, 3574, 3577, 0, 3565, 0, 0, 3593, 3599, 3610, + 3602, 3611, 0, 0, 3615, 3623, 3713, 3688, 3692, 136, + 3696, 3700, 3704, 3708 } ; -static const flex_int16_t yy_def[921] = +static const flex_int16_t yy_def[945] = { 0, - 913, 1, 913, 3, 913, 913, 913, 913, 914, 913, - 915, 913, 913, 913, 913, 913, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 917, - 917, 913, 918, 917, 919, 917, 917, 917, 917, 917, - 920, 920, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 913, 914, 915, 913, 913, 913, 913, - 913, 913, 913, 913, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, + 937, 1, 937, 3, 937, 937, 937, 937, 937, 938, + 937, 939, 937, 937, 937, 937, 937, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 937, 941, 941, 937, 941, 942, 941, 943, 941, 941, + 941, 941, 941, 944, 944, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 941, 937, 937, 938, + 939, 937, 937, 937, 937, 937, 937, 937, 937, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 917, 917, 918, 919, - 917, 917, 917, 917, 917, 917, 917, 917, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 937, 941, 941, 941, 942, 943, 941, + 941, 941, 941, 941, 941, 941, 941, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 913, 913, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 941, 937, 937, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 917, 917, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 941, 941, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, - 52, 52, 52, 52, 52, 52, 52, 52, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 55, 55, 55, 55, 55, 55, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 916, 916, 916, 916, 916, 916, 916, 916, 916, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 916, 916, + 940, 940, 940, 940, 940, 940, 940, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 940, 940, 940, 940, 940, 940, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, - 916, 916, 916, 52, 52, 52, 52, 52, 916, 916, - 52, 52, 0, 913, 913, 913, 913, 913, 913, 913 + 55, 55, 55, 55, 940, 940, 940, 940, 940, 940, + 940, 940, 940, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 940, 940, 940, 940, 940, 55, 55, 55, + 55, 55, 940, 940, 55, 55, 0, 937, 937, 937, + 937, 937, 937, 937 } ; -static const flex_int16_t yy_nxt[3739] = +static const flex_int16_t yy_nxt[3781] = { 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 10, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 16, 11, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 33, 33, 33, 6, 17, + 35, 36, 37, 38, 39, 40, 34, 34, 34, 6, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 33, 33, 33, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 44, 50, 51, 52, 53, + 38, 39, 40, 34, 34, 34, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 47, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 67, 67, 67, 40, 51, 52, 53, 54, 55, 56, + 74, 75, 76, 70, 70, 70, 42, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 67, 67, 67, - 74, 74, 74, 74, 78, 91, 79, 81, 79, 82, - 83, 86, 110, 87, 118, 102, 93, 103, 111, 88, - 112, 89, 104, 119, 243, 92, 90, 105, 113, 162, - 94, 163, 91, 95, 96, 158, 74, 85, 86, 110, - 87, 118, 102, 93, 103, 111, 88, 112, 89, 104, - 119, 243, 92, 90, 105, 113, 114, 94, 244, 106, - 95, 96, 97, 115, 116, 107, 98, 125, 108, 117, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 70, 70, 70, 77, 78, 78, 78, 78, 83, 90, + 84, 86, 84, 87, 88, 91, 97, 92, 103, 352, + 99, 116, 104, 93, 254, 94, 105, 117, 125, 95, + 96, 126, 106, 255, 100, 107, 98, 101, 102, 108, + 352, 109, 91, 97, 92, 103, 110, 99, 116, 104, + 93, 111, 94, 105, 117, 125, 95, 96, 126, 106, + 255, 100, 107, 98, 101, 102, 108, 118, 109, 173, - 99, 109, 338, 123, 120, 249, 100, 124, 121, 101, - 258, 126, 242, 114, 122, 244, 106, 127, 128, 97, - 115, 116, 107, 98, 125, 108, 117, 99, 109, 133, - 123, 120, 249, 100, 124, 121, 101, 258, 126, 129, - 134, 122, 153, 338, 127, 128, 135, 130, 136, 164, - 154, 131, 137, 259, 132, 161, 133, 74, 74, 150, - 337, 151, 155, 156, 152, 242, 129, 134, 80, 153, - 165, 163, 77, 135, 130, 136, 252, 154, 131, 137, - 259, 132, 138, 253, 139, 241, 150, 140, 151, 155, - 156, 152, 166, 167, 141, 142, 74, 74, 169, 169, + 112, 166, 78, 110, 170, 119, 113, 120, 111, 114, + 351, 136, 115, 121, 122, 123, 254, 130, 127, 137, + 124, 131, 128, 138, 118, 143, 139, 112, 129, 144, + 78, 78, 119, 113, 120, 256, 114, 132, 136, 115, + 121, 122, 123, 140, 130, 127, 137, 124, 131, 128, + 138, 133, 143, 139, 141, 129, 144, 134, 135, 261, + 142, 145, 256, 146, 132, 262, 147, 157, 85, 158, + 140, 82, 159, 148, 149, 171, 253, 172, 133, 174, + 172, 141, 175, 176, 134, 135, 261, 142, 145, 252, + 146, 178, 262, 147, 157, 214, 158, 160, 204, 159, - 81, 79, 247, 252, 168, 248, 194, 245, 202, 138, - 253, 139, 195, 164, 140, 246, 203, 266, 169, 169, - 267, 141, 142, 143, 144, 169, 169, 145, 268, 247, - 146, 147, 248, 194, 245, 202, 169, 148, 161, 195, - 149, 157, 246, 203, 266, 169, 169, 267, 158, 74, - 143, 144, 165, 163, 145, 268, 84, 146, 147, 80, - 269, 207, 169, 169, 148, 208, 77, 149, 157, 157, - 250, 157, 157, 157, 157, 157, 204, 157, 157, 157, - 205, 169, 169, 170, 251, 171, 206, 269, 207, 169, - 270, 172, 208, 173, 264, 265, 169, 250, 174, 913, + 148, 149, 150, 151, 205, 161, 152, 162, 163, 153, + 154, 178, 78, 78, 177, 178, 155, 271, 178, 156, + 86, 84, 214, 173, 160, 204, 166, 78, 170, 150, + 151, 205, 161, 152, 162, 163, 153, 154, 178, 174, + 172, 178, 178, 155, 271, 165, 156, 165, 165, 272, + 165, 165, 165, 165, 165, 165, 206, 165, 165, 165, + 178, 178, 178, 179, 207, 180, 259, 257, 178, 260, + 263, 181, 213, 182, 167, 258, 272, 183, 184, 279, + 178, 218, 178, 206, 264, 219, 164, 178, 178, 178, + 179, 207, 180, 259, 257, 89, 260, 263, 181, 213, - 913, 275, 913, 204, 913, 913, 913, 205, 169, 169, - 170, 251, 171, 206, 254, 913, 255, 270, 172, 276, - 173, 264, 265, 169, 277, 174, 157, 157, 275, 157, - 157, 157, 157, 157, 220, 157, 157, 157, 221, 278, - 196, 254, 175, 255, 169, 913, 276, 279, 197, 237, - 256, 277, 169, 169, 169, 239, 240, 238, 280, 285, - 257, 220, 176, 913, 169, 221, 278, 196, 290, 175, - 913, 169, 169, 169, 279, 197, 237, 256, 291, 169, - 169, 169, 239, 240, 238, 280, 285, 257, 283, 176, - 177, 169, 260, 284, 169, 290, 271, 261, 272, 169, + 182, 178, 258, 280, 183, 184, 279, 178, 218, 178, + 85, 264, 219, 165, 165, 165, 82, 165, 165, 165, + 165, 165, 165, 215, 165, 165, 165, 216, 178, 79, + 280, 185, 937, 217, 937, 228, 231, 248, 269, 178, + 232, 178, 265, 178, 281, 249, 229, 282, 270, 266, + 215, 186, 230, 937, 216, 937, 178, 283, 185, 178, + 217, 178, 228, 231, 248, 269, 178, 232, 178, 265, + 178, 281, 249, 229, 282, 270, 266, 288, 186, 230, + 165, 187, 178, 178, 283, 178, 178, 267, 178, 268, + 937, 245, 289, 246, 290, 188, 247, 178, 189, 190, - 169, 913, 273, 262, 178, 291, 292, 179, 180, 274, - 263, 293, 286, 281, 169, 283, 282, 177, 913, 260, - 284, 169, 287, 271, 261, 272, 913, 288, 289, 273, - 262, 178, 913, 292, 179, 180, 274, 263, 293, 286, - 281, 169, 181, 282, 298, 294, 182, 295, 299, 287, - 183, 296, 300, 297, 288, 289, 184, 301, 302, 185, - 303, 304, 305, 306, 307, 308, 169, 913, 913, 181, - 913, 298, 294, 182, 295, 299, 913, 183, 296, 300, - 297, 913, 313, 184, 301, 302, 185, 303, 304, 305, - 306, 307, 308, 169, 169, 309, 314, 311, 315, 310, + 250, 251, 178, 291, 288, 178, 937, 937, 187, 178, + 937, 292, 178, 293, 267, 937, 268, 178, 245, 289, + 246, 290, 188, 247, 178, 189, 190, 250, 251, 178, + 291, 273, 178, 191, 277, 278, 274, 192, 292, 937, + 293, 193, 275, 298, 178, 299, 284, 194, 285, 276, + 195, 294, 286, 937, 295, 304, 305, 178, 273, 287, + 191, 277, 278, 274, 192, 937, 296, 937, 193, 275, + 298, 297, 299, 284, 194, 285, 276, 195, 294, 286, + 300, 295, 304, 305, 178, 178, 287, 306, 307, 308, + 301, 309, 196, 296, 197, 302, 303, 312, 297, 198, - 317, 186, 312, 187, 318, 319, 316, 320, 188, 313, - 321, 324, 325, 189, 169, 913, 326, 327, 913, 913, - 913, 169, 309, 314, 311, 315, 310, 317, 186, 312, - 187, 318, 319, 316, 320, 188, 322, 321, 324, 325, - 189, 169, 169, 326, 327, 328, 190, 323, 329, 330, - 331, 332, 191, 333, 335, 192, 336, 433, 193, 913, - 913, 913, 169, 322, 913, 434, 334, 169, 913, 169, - 435, 913, 328, 190, 323, 329, 330, 331, 332, 191, - 333, 335, 192, 336, 433, 193, 169, 169, 169, 169, - 169, 198, 434, 334, 169, 339, 169, 435, 199, 200, + 310, 313, 311, 314, 199, 178, 937, 300, 315, 316, + 937, 317, 178, 318, 306, 307, 308, 301, 309, 196, + 319, 197, 302, 303, 312, 320, 198, 310, 313, 311, + 314, 199, 178, 178, 321, 315, 316, 200, 317, 322, + 318, 323, 327, 201, 328, 324, 202, 319, 331, 203, + 329, 325, 320, 178, 937, 937, 326, 332, 330, 333, + 178, 321, 937, 937, 200, 334, 322, 335, 323, 327, + 201, 328, 324, 202, 937, 331, 203, 329, 325, 338, + 178, 178, 208, 326, 332, 330, 333, 336, 209, 210, + 211, 339, 334, 340, 335, 212, 341, 342, 337, 344, - 436, 340, 913, 913, 201, 437, 169, 438, 169, 913, - 169, 913, 441, 169, 169, 169, 169, 169, 198, 345, - 352, 169, 339, 169, 442, 199, 200, 436, 340, 169, - 353, 201, 437, 169, 438, 169, 341, 169, 209, 441, - 169, 169, 169, 169, 342, 443, 345, 352, 169, 169, - 343, 442, 210, 344, 169, 913, 169, 353, 211, 212, - 913, 913, 169, 341, 913, 209, 913, 169, 169, 169, - 444, 342, 443, 445, 169, 913, 169, 343, 913, 210, - 344, 169, 439, 913, 440, 211, 212, 169, 346, 169, - 169, 213, 913, 169, 913, 446, 447, 444, 913, 214, + 343, 178, 937, 345, 346, 937, 338, 349, 178, 208, + 350, 449, 450, 451, 336, 209, 210, 211, 339, 347, + 340, 178, 212, 341, 342, 337, 344, 343, 178, 220, + 345, 346, 348, 178, 349, 937, 452, 350, 449, 450, + 451, 178, 178, 221, 353, 178, 347, 453, 178, 222, + 223, 937, 454, 178, 937, 937, 220, 354, 937, 348, + 178, 455, 178, 452, 458, 178, 937, 937, 178, 178, + 221, 353, 178, 456, 453, 457, 222, 223, 178, 454, + 178, 178, 224, 178, 354, 355, 178, 459, 455, 178, + 225, 458, 178, 356, 226, 937, 937, 227, 178, 359, - 445, 169, 347, 215, 169, 169, 216, 169, 355, 439, - 169, 440, 348, 169, 169, 346, 913, 169, 213, 349, - 169, 354, 446, 447, 169, 169, 214, 169, 913, 347, - 215, 169, 169, 216, 169, 355, 169, 169, 217, 348, - 169, 364, 169, 350, 169, 351, 349, 169, 354, 218, - 913, 169, 169, 913, 169, 219, 169, 360, 361, 913, - 913, 169, 169, 169, 169, 217, 365, 169, 364, 169, - 350, 169, 351, 913, 169, 913, 218, 362, 366, 913, - 169, 169, 219, 169, 360, 361, 169, 169, 169, 169, - 222, 169, 223, 365, 169, 224, 363, 450, 451, 913, + 456, 178, 457, 178, 937, 178, 178, 937, 178, 224, + 178, 937, 355, 178, 459, 937, 937, 225, 178, 357, + 356, 226, 358, 178, 227, 178, 359, 460, 178, 233, + 178, 234, 379, 178, 235, 360, 461, 178, 178, 462, + 463, 236, 237, 178, 937, 178, 357, 937, 937, 358, + 178, 178, 937, 937, 460, 464, 233, 178, 234, 379, + 937, 235, 360, 461, 178, 178, 462, 463, 236, 237, + 178, 178, 937, 467, 178, 361, 937, 468, 178, 238, + 239, 937, 464, 240, 178, 178, 241, 242, 178, 362, + 937, 178, 363, 243, 178, 365, 244, 366, 178, 364, - 169, 913, 225, 226, 362, 366, 169, 169, 169, 913, - 452, 169, 169, 169, 169, 169, 169, 222, 371, 223, - 913, 913, 224, 363, 450, 451, 373, 169, 372, 225, - 226, 169, 169, 169, 453, 169, 169, 452, 169, 169, - 227, 228, 169, 169, 229, 371, 169, 230, 231, 169, - 169, 913, 169, 373, 232, 372, 374, 233, 169, 169, - 375, 453, 169, 169, 169, 913, 388, 227, 228, 169, - 169, 229, 454, 169, 230, 231, 169, 169, 169, 169, - 913, 232, 913, 374, 233, 913, 455, 375, 376, 456, - 169, 169, 169, 388, 457, 913, 169, 169, 169, 454, + 467, 178, 361, 178, 468, 178, 238, 239, 178, 469, + 240, 178, 178, 241, 242, 178, 362, 367, 178, 363, + 243, 178, 365, 244, 366, 178, 364, 368, 369, 178, + 178, 178, 178, 178, 937, 178, 469, 178, 178, 470, + 370, 471, 375, 376, 367, 178, 937, 472, 937, 178, + 937, 937, 178, 404, 368, 369, 178, 937, 178, 178, + 178, 178, 380, 178, 178, 473, 470, 370, 471, 375, + 376, 378, 178, 371, 472, 377, 178, 178, 372, 178, + 404, 178, 937, 178, 373, 381, 178, 178, 178, 380, + 178, 374, 473, 474, 937, 937, 178, 178, 378, 937, - 169, 234, 169, 235, 377, 169, 236, 378, 448, 379, - 169, 386, 169, 455, 380, 376, 456, 169, 913, 169, - 169, 457, 169, 449, 913, 169, 458, 169, 234, 169, - 235, 377, 169, 236, 378, 448, 379, 169, 386, 169, - 356, 380, 169, 381, 169, 357, 387, 169, 459, 169, - 449, 358, 169, 458, 169, 389, 913, 913, 359, 169, - 169, 913, 169, 169, 169, 913, 390, 356, 391, 169, - 381, 169, 357, 387, 169, 459, 394, 460, 358, 169, - 169, 169, 389, 169, 392, 359, 393, 169, 169, 169, - 169, 169, 367, 390, 368, 391, 399, 169, 369, 913, + 371, 937, 377, 386, 178, 372, 178, 178, 178, 178, + 178, 373, 381, 382, 178, 383, 178, 178, 374, 384, + 474, 178, 387, 178, 178, 937, 385, 388, 389, 178, + 386, 178, 405, 937, 178, 178, 178, 178, 937, 937, + 382, 178, 383, 178, 178, 937, 384, 178, 178, 387, + 178, 178, 178, 385, 388, 389, 178, 390, 178, 405, + 391, 178, 178, 178, 178, 396, 392, 178, 178, 393, + 178, 178, 178, 937, 178, 178, 410, 178, 178, 178, + 394, 178, 937, 178, 390, 395, 397, 391, 178, 465, + 178, 178, 396, 392, 178, 178, 393, 178, 178, 178, - 169, 169, 913, 394, 460, 370, 395, 169, 169, 169, - 169, 392, 913, 393, 169, 169, 913, 169, 169, 367, - 169, 368, 913, 399, 169, 369, 418, 169, 913, 169, - 913, 913, 370, 395, 169, 169, 169, 419, 169, 169, - 169, 169, 382, 169, 169, 169, 398, 169, 913, 396, - 913, 461, 383, 418, 169, 397, 169, 384, 385, 169, - 169, 169, 462, 169, 419, 169, 169, 169, 913, 382, - 169, 169, 400, 398, 401, 169, 396, 169, 461, 383, - 169, 169, 397, 913, 384, 385, 169, 169, 463, 462, - 169, 169, 402, 403, 169, 169, 420, 169, 169, 400, + 178, 178, 178, 410, 466, 403, 937, 394, 178, 402, + 178, 937, 395, 397, 475, 476, 465, 937, 178, 477, + 178, 178, 178, 398, 178, 178, 937, 178, 178, 178, + 937, 466, 403, 399, 411, 406, 402, 407, 400, 401, + 937, 475, 476, 178, 178, 178, 477, 178, 178, 178, + 398, 178, 178, 408, 178, 409, 178, 178, 412, 478, + 399, 411, 406, 178, 407, 400, 401, 178, 178, 413, + 178, 178, 178, 937, 178, 414, 178, 178, 937, 415, + 408, 178, 409, 178, 178, 412, 478, 178, 178, 479, + 178, 178, 416, 937, 178, 178, 413, 178, 937, 417, - 169, 401, 169, 407, 169, 404, 405, 169, 408, 169, - 406, 169, 913, 409, 169, 463, 169, 913, 169, 402, - 403, 169, 169, 420, 169, 169, 169, 169, 410, 169, - 407, 169, 404, 405, 913, 408, 169, 406, 169, 169, - 409, 169, 913, 169, 169, 169, 411, 169, 169, 464, - 913, 417, 169, 169, 412, 410, 169, 413, 169, 169, - 416, 414, 913, 169, 169, 415, 169, 169, 169, 169, - 913, 169, 169, 411, 169, 169, 464, 169, 417, 913, - 465, 412, 169, 169, 413, 421, 169, 416, 414, 169, - 169, 169, 415, 422, 169, 169, 169, 169, 169, 169, + 178, 178, 414, 178, 178, 420, 415, 480, 178, 178, + 178, 178, 418, 937, 178, 178, 479, 178, 178, 416, + 178, 419, 937, 178, 178, 425, 417, 178, 178, 178, + 178, 178, 420, 421, 480, 178, 178, 422, 178, 418, + 423, 481, 937, 178, 178, 424, 178, 178, 419, 426, + 178, 178, 425, 178, 178, 178, 178, 937, 178, 431, + 421, 427, 436, 178, 422, 178, 178, 423, 481, 428, + 178, 178, 424, 178, 178, 429, 426, 482, 178, 937, + 178, 178, 178, 178, 430, 178, 431, 937, 427, 436, + 178, 178, 178, 178, 432, 178, 428, 178, 178, 178, - 426, 169, 169, 424, 169, 913, 425, 465, 466, 169, - 169, 169, 421, 467, 423, 427, 169, 431, 169, 169, - 422, 169, 913, 429, 169, 169, 169, 426, 169, 169, - 424, 169, 169, 425, 169, 466, 430, 169, 169, 428, - 467, 423, 427, 169, 431, 169, 169, 468, 169, 432, - 429, 469, 169, 470, 169, 471, 472, 473, 169, 169, - 476, 169, 474, 430, 169, 477, 428, 478, 479, 480, - 169, 481, 475, 482, 468, 483, 432, 484, 469, 169, - 470, 169, 471, 472, 473, 485, 486, 476, 487, 474, - 488, 489, 477, 490, 478, 479, 480, 491, 481, 475, + 178, 178, 429, 434, 482, 178, 433, 483, 437, 178, + 178, 430, 178, 484, 435, 178, 438, 178, 178, 178, + 178, 432, 178, 937, 178, 178, 178, 178, 937, 178, + 434, 937, 178, 433, 483, 437, 485, 442, 178, 447, + 484, 435, 178, 438, 178, 439, 178, 178, 445, 178, + 178, 178, 178, 178, 440, 443, 178, 441, 178, 178, + 444, 446, 937, 485, 442, 178, 447, 937, 178, 486, + 178, 178, 439, 178, 178, 445, 178, 178, 178, 487, + 178, 440, 443, 488, 441, 178, 178, 444, 446, 448, + 489, 490, 491, 492, 178, 178, 486, 178, 178, 494, - 482, 493, 483, 494, 484, 495, 496, 497, 498, 499, - 500, 501, 485, 486, 502, 487, 492, 488, 489, 503, - 490, 504, 505, 506, 491, 507, 508, 509, 493, 510, - 494, 511, 495, 496, 497, 498, 499, 500, 501, 512, - 513, 502, 514, 492, 515, 516, 503, 517, 504, 505, - 506, 518, 507, 508, 509, 519, 510, 520, 511, 169, - 521, 169, 913, 522, 913, 913, 512, 513, 913, 514, - 609, 515, 516, 169, 517, 169, 169, 610, 518, 169, - 169, 169, 519, 169, 520, 169, 169, 521, 169, 169, - 522, 169, 523, 169, 525, 169, 169, 609, 526, 524, + 178, 178, 495, 493, 496, 497, 487, 498, 499, 500, + 488, 501, 502, 503, 504, 505, 448, 489, 490, 491, + 492, 178, 506, 507, 508, 509, 494, 511, 512, 495, + 493, 496, 497, 513, 498, 499, 500, 514, 501, 502, + 503, 504, 505, 515, 510, 516, 517, 518, 519, 506, + 507, 508, 509, 520, 511, 512, 521, 522, 523, 524, + 513, 525, 526, 527, 514, 528, 530, 529, 531, 532, + 515, 510, 516, 517, 518, 519, 533, 534, 535, 538, + 520, 178, 539, 521, 522, 523, 524, 536, 525, 526, + 527, 537, 528, 530, 529, 531, 532, 178, 937, 540, - 169, 913, 169, 169, 610, 169, 169, 169, 169, 169, - 169, 169, 169, 527, 169, 528, 169, 913, 169, 523, - 169, 525, 169, 169, 169, 526, 524, 169, 533, 531, - 529, 913, 169, 169, 169, 169, 169, 913, 169, 530, - 527, 169, 528, 169, 169, 169, 913, 169, 169, 611, - 534, 169, 913, 169, 169, 533, 531, 529, 536, 532, - 169, 169, 169, 169, 535, 169, 530, 538, 169, 169, - 169, 169, 169, 537, 169, 169, 611, 534, 169, 539, - 169, 541, 169, 543, 169, 536, 532, 169, 169, 169, - 169, 535, 169, 169, 538, 169, 169, 540, 542, 169, + 178, 178, 178, 533, 534, 535, 538, 541, 178, 539, + 178, 542, 178, 178, 536, 178, 937, 178, 537, 178, + 178, 937, 937, 543, 178, 178, 540, 178, 178, 178, + 178, 629, 178, 178, 541, 178, 937, 178, 542, 178, + 178, 178, 178, 544, 178, 178, 178, 178, 545, 546, + 543, 547, 178, 178, 937, 937, 630, 178, 629, 178, + 178, 178, 178, 550, 178, 178, 552, 178, 178, 548, + 544, 178, 178, 178, 937, 545, 546, 937, 547, 549, + 178, 178, 178, 630, 178, 178, 178, 178, 178, 553, + 550, 178, 178, 552, 178, 551, 548, 937, 178, 554, - 537, 612, 169, 169, 169, 169, 539, 169, 541, 169, - 543, 169, 545, 169, 169, 169, 169, 544, 913, 613, - 169, 169, 169, 549, 540, 542, 169, 169, 612, 169, - 169, 169, 169, 546, 169, 169, 547, 913, 169, 545, - 169, 169, 169, 169, 544, 548, 613, 169, 169, 169, - 549, 913, 913, 169, 169, 169, 913, 169, 169, 169, - 546, 550, 169, 547, 551, 169, 913, 169, 169, 169, - 169, 913, 548, 169, 169, 552, 169, 169, 169, 554, - 169, 913, 169, 553, 169, 169, 913, 169, 550, 169, - 913, 551, 169, 555, 169, 559, 169, 560, 169, 913, + 178, 178, 178, 178, 555, 557, 549, 178, 178, 178, + 937, 178, 178, 178, 178, 558, 553, 560, 178, 556, + 178, 937, 551, 178, 178, 631, 554, 178, 178, 178, + 178, 555, 557, 559, 178, 178, 562, 178, 178, 178, + 178, 564, 558, 937, 560, 178, 556, 178, 561, 563, + 178, 178, 631, 178, 178, 937, 178, 178, 178, 178, + 559, 178, 178, 562, 178, 178, 178, 178, 564, 565, + 178, 178, 566, 178, 568, 561, 563, 567, 178, 632, + 178, 937, 178, 178, 178, 178, 178, 178, 178, 571, + 178, 178, 178, 633, 178, 569, 565, 178, 178, 566, - 169, 913, 552, 169, 169, 169, 554, 556, 169, 169, - 553, 169, 169, 561, 169, 169, 169, 169, 558, 169, - 555, 614, 559, 169, 560, 169, 557, 562, 169, 169, - 169, 169, 169, 169, 556, 169, 169, 563, 169, 169, - 561, 565, 169, 567, 169, 558, 564, 169, 614, 169, - 169, 169, 169, 557, 562, 169, 169, 169, 169, 169, - 169, 169, 615, 169, 563, 568, 566, 169, 565, 571, - 567, 169, 913, 564, 169, 169, 169, 169, 169, 169, - 570, 169, 569, 169, 169, 169, 169, 169, 169, 615, - 169, 572, 568, 566, 169, 169, 571, 577, 169, 578, + 178, 568, 178, 178, 567, 178, 632, 178, 178, 178, + 570, 178, 178, 937, 178, 574, 571, 178, 178, 178, + 633, 178, 569, 178, 572, 178, 937, 937, 178, 178, + 178, 178, 937, 178, 178, 178, 573, 570, 178, 178, + 575, 178, 574, 634, 178, 178, 579, 937, 937, 580, + 178, 572, 178, 178, 578, 178, 576, 581, 178, 178, + 178, 178, 178, 573, 178, 577, 178, 575, 178, 178, + 634, 178, 178, 579, 178, 582, 580, 178, 584, 178, + 178, 578, 178, 576, 581, 583, 178, 587, 178, 178, + 178, 178, 577, 178, 178, 178, 178, 937, 178, 585, - 616, 573, 169, 169, 169, 169, 169, 570, 169, 569, - 169, 169, 169, 169, 169, 169, 169, 169, 572, 169, - 913, 169, 169, 574, 577, 617, 578, 616, 573, 576, - 169, 169, 169, 169, 575, 169, 169, 913, 169, 618, - 169, 169, 169, 169, 169, 579, 169, 581, 169, 169, - 574, 582, 617, 584, 913, 169, 576, 169, 169, 913, - 169, 575, 169, 169, 580, 169, 618, 169, 169, 169, - 585, 619, 579, 169, 581, 169, 169, 169, 582, 587, - 584, 583, 169, 169, 169, 169, 586, 169, 913, 588, - 620, 580, 169, 169, 169, 913, 169, 585, 619, 169, + 937, 178, 582, 635, 178, 584, 178, 178, 937, 178, + 178, 178, 583, 586, 587, 588, 178, 178, 178, 178, + 937, 178, 178, 589, 178, 178, 585, 178, 590, 591, + 635, 178, 178, 178, 178, 592, 178, 178, 178, 178, + 586, 178, 588, 178, 178, 178, 178, 178, 594, 593, + 589, 178, 178, 178, 178, 590, 591, 178, 178, 178, + 178, 178, 592, 178, 937, 597, 178, 178, 178, 598, + 595, 178, 937, 636, 178, 594, 593, 178, 178, 178, + 178, 596, 599, 937, 178, 178, 178, 178, 178, 178, + 178, 178, 597, 605, 178, 178, 598, 595, 178, 601, - 169, 592, 169, 169, 169, 169, 587, 169, 583, 169, - 169, 913, 169, 586, 169, 169, 588, 620, 169, 169, - 169, 169, 590, 589, 913, 169, 169, 169, 592, 913, - 169, 169, 169, 591, 169, 169, 169, 169, 169, 169, - 913, 169, 169, 596, 621, 169, 594, 169, 593, 590, - 589, 169, 169, 913, 169, 913, 595, 169, 169, 169, - 591, 913, 169, 169, 169, 169, 913, 169, 169, 913, - 596, 621, 169, 594, 169, 593, 601, 597, 169, 169, - 169, 169, 600, 595, 169, 622, 169, 623, 169, 913, - 169, 598, 169, 599, 169, 169, 169, 169, 913, 169, + 636, 600, 602, 603, 178, 178, 178, 607, 596, 599, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 604, + 605, 178, 178, 178, 606, 178, 601, 178, 600, 602, + 603, 937, 608, 178, 607, 178, 178, 178, 178, 937, + 178, 178, 178, 178, 637, 937, 604, 937, 178, 178, + 178, 606, 178, 638, 178, 178, 178, 178, 609, 608, + 178, 937, 178, 178, 610, 937, 178, 178, 178, 178, + 178, 637, 611, 612, 616, 178, 178, 178, 178, 178, + 638, 937, 178, 178, 178, 609, 178, 178, 178, 613, + 614, 610, 178, 178, 178, 178, 178, 615, 178, 611, - 169, 169, 913, 601, 597, 602, 169, 169, 169, 600, - 169, 169, 622, 603, 623, 169, 169, 169, 598, 169, - 599, 913, 624, 169, 169, 605, 169, 169, 169, 604, - 169, 169, 602, 625, 626, 606, 627, 169, 169, 607, - 603, 628, 629, 169, 169, 169, 169, 630, 608, 624, - 631, 632, 605, 169, 633, 634, 604, 169, 169, 635, - 625, 626, 606, 627, 636, 169, 607, 637, 628, 629, - 638, 641, 169, 169, 630, 608, 639, 631, 632, 642, - 643, 633, 634, 644, 645, 646, 635, 640, 647, 648, - 649, 636, 169, 650, 637, 651, 652, 638, 641, 653, + 612, 616, 178, 937, 178, 178, 937, 621, 178, 178, + 937, 178, 178, 178, 639, 178, 613, 614, 617, 178, + 178, 178, 178, 178, 615, 178, 178, 937, 178, 178, + 618, 178, 619, 620, 621, 178, 178, 622, 178, 178, + 178, 639, 623, 178, 937, 617, 178, 178, 178, 937, + 178, 178, 640, 178, 178, 178, 178, 618, 178, 619, + 620, 641, 937, 642, 622, 643, 625, 178, 644, 623, + 178, 178, 624, 178, 178, 178, 178, 178, 178, 640, + 628, 178, 645, 646, 647, 626, 648, 649, 641, 627, + 642, 650, 643, 625, 651, 644, 178, 178, 178, 624, - 654, 655, 656, 639, 657, 658, 642, 643, 659, 660, - 644, 645, 646, 661, 640, 647, 648, 649, 662, 663, - 650, 664, 651, 652, 665, 666, 653, 654, 655, 656, - 667, 657, 658, 668, 669, 659, 660, 670, 671, 672, - 661, 913, 169, 169, 913, 662, 663, 169, 664, 913, - 737, 665, 666, 677, 738, 673, 674, 667, 169, 169, - 668, 669, 169, 169, 670, 671, 672, 675, 678, 169, - 169, 676, 169, 169, 169, 913, 169, 737, 169, 169, - 677, 738, 673, 674, 169, 169, 169, 169, 169, 169, - 169, 739, 169, 169, 675, 678, 169, 680, 676, 169, + 652, 178, 653, 178, 178, 654, 655, 628, 656, 645, + 646, 647, 626, 648, 649, 657, 627, 658, 650, 659, + 660, 651, 663, 178, 178, 661, 664, 652, 665, 653, + 666, 667, 654, 655, 668, 656, 662, 669, 670, 671, + 672, 673, 657, 674, 658, 675, 659, 660, 676, 663, + 677, 678, 661, 664, 679, 665, 680, 666, 667, 681, + 682, 668, 683, 662, 669, 670, 671, 672, 673, 684, + 674, 685, 675, 686, 687, 676, 688, 677, 678, 689, + 690, 679, 691, 680, 692, 693, 681, 682, 694, 683, + 937, 937, 937, 178, 178, 937, 684, 178, 685, 700, - 169, 679, 681, 169, 169, 169, 169, 169, 169, 913, - 169, 169, 169, 169, 169, 169, 913, 683, 739, 169, - 169, 169, 169, 169, 680, 169, 682, 913, 679, 681, - 169, 169, 169, 913, 169, 169, 685, 169, 684, 169, - 169, 169, 169, 686, 683, 169, 169, 169, 169, 169, - 688, 169, 169, 682, 687, 169, 169, 169, 689, 169, - 169, 740, 913, 685, 741, 684, 169, 169, 169, 169, - 686, 169, 169, 169, 169, 169, 169, 688, 169, 169, - 169, 687, 169, 169, 169, 689, 913, 169, 740, 169, - 690, 741, 169, 169, 169, 691, 913, 694, 169, 169, + 686, 687, 937, 688, 937, 178, 689, 690, 178, 691, + 695, 692, 693, 697, 698, 694, 178, 178, 696, 178, + 178, 178, 178, 701, 178, 178, 700, 178, 178, 699, + 937, 178, 178, 761, 937, 178, 178, 695, 937, 702, + 697, 698, 178, 178, 178, 696, 178, 178, 178, 178, + 701, 178, 178, 178, 178, 178, 699, 178, 178, 178, + 761, 703, 762, 178, 937, 178, 702, 705, 178, 178, + 937, 763, 704, 178, 178, 178, 178, 178, 178, 178, + 178, 707, 178, 706, 178, 178, 178, 709, 703, 762, + 937, 178, 178, 178, 705, 178, 178, 708, 763, 704, - 169, 169, 169, 169, 169, 692, 169, 169, 913, 169, - 169, 169, 169, 169, 695, 693, 169, 690, 169, 169, - 169, 169, 691, 169, 694, 742, 169, 169, 169, 169, - 169, 169, 692, 169, 696, 169, 169, 169, 169, 169, - 169, 695, 693, 169, 697, 169, 169, 169, 169, 169, - 169, 913, 742, 913, 169, 169, 169, 169, 169, 169, - 169, 696, 169, 913, 698, 169, 169, 169, 913, 169, - 169, 697, 699, 169, 169, 169, 169, 700, 169, 169, - 701, 169, 169, 913, 913, 169, 169, 169, 702, 169, - 169, 698, 703, 169, 169, 169, 169, 913, 743, 699, + 178, 937, 178, 178, 178, 710, 178, 178, 707, 178, + 706, 178, 178, 178, 709, 178, 178, 178, 178, 711, + 178, 178, 937, 178, 708, 764, 765, 178, 712, 178, + 937, 178, 710, 937, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 711, 715, 178, 178, + 713, 178, 764, 765, 178, 712, 714, 717, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 937, 178, 178, + 178, 178, 178, 766, 715, 716, 178, 713, 178, 178, + 178, 178, 937, 714, 717, 718, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 169, 169, 169, 704, 700, 169, 169, 701, 169, 169, - 169, 169, 913, 169, 169, 702, 169, 169, 705, 703, - 169, 744, 169, 708, 169, 743, 745, 169, 169, 169, - 704, 169, 169, 169, 169, 169, 169, 169, 169, 706, - 169, 707, 913, 169, 169, 705, 709, 169, 744, 169, - 708, 169, 169, 745, 169, 169, 169, 169, 169, 169, - 169, 169, 710, 711, 913, 169, 706, 712, 707, 169, - 169, 169, 746, 709, 913, 169, 169, 169, 169, 169, - 169, 169, 747, 169, 169, 169, 913, 169, 713, 710, - 711, 714, 169, 169, 712, 169, 169, 913, 169, 746, + 766, 937, 716, 720, 719, 722, 178, 178, 178, 178, + 937, 767, 718, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 768, 178, 178, 178, 769, 178, 721, + 720, 719, 722, 178, 937, 937, 178, 723, 767, 178, + 178, 178, 178, 937, 178, 178, 178, 724, 178, 178, + 768, 178, 178, 178, 769, 178, 721, 178, 725, 727, + 178, 178, 726, 178, 723, 178, 178, 178, 729, 178, + 728, 178, 178, 178, 724, 178, 178, 178, 178, 937, + 178, 178, 937, 178, 178, 725, 727, 178, 178, 726, + 178, 178, 178, 178, 178, 729, 178, 728, 178, 732, - 169, 715, 169, 169, 169, 169, 913, 169, 913, 747, - 169, 169, 169, 169, 169, 713, 913, 716, 714, 717, - 169, 169, 169, 169, 719, 169, 913, 169, 715, 169, - 169, 169, 169, 722, 169, 169, 913, 718, 169, 913, - 169, 169, 721, 169, 716, 169, 717, 720, 169, 169, - 169, 719, 169, 723, 169, 169, 169, 725, 169, 169, - 722, 169, 169, 169, 718, 169, 169, 724, 169, 721, - 169, 169, 169, 169, 720, 169, 169, 169, 913, 169, - 723, 169, 169, 169, 725, 726, 169, 169, 913, 913, - 169, 169, 169, 169, 724, 169, 169, 728, 169, 169, + 178, 178, 178, 178, 178, 178, 730, 178, 178, 731, + 178, 178, 736, 937, 178, 733, 734, 937, 178, 178, + 178, 178, 178, 178, 937, 178, 732, 178, 178, 178, + 178, 178, 178, 730, 178, 735, 731, 178, 178, 736, + 178, 178, 733, 734, 737, 178, 178, 770, 178, 178, + 178, 178, 740, 738, 178, 178, 178, 178, 178, 178, + 178, 178, 735, 739, 178, 178, 937, 178, 178, 741, + 937, 737, 178, 178, 770, 178, 178, 178, 178, 740, + 738, 178, 178, 178, 178, 742, 937, 178, 178, 178, + 739, 178, 178, 178, 743, 771, 741, 178, 937, 178, - 169, 727, 169, 913, 169, 729, 913, 169, 913, 169, - 169, 731, 726, 169, 169, 169, 169, 734, 169, 169, - 169, 169, 169, 169, 728, 730, 169, 748, 727, 169, - 169, 169, 729, 733, 169, 169, 169, 169, 731, 169, - 169, 169, 169, 169, 734, 732, 169, 169, 169, 736, - 169, 169, 730, 169, 748, 735, 169, 169, 169, 169, - 733, 749, 169, 750, 169, 751, 169, 169, 169, 169, - 752, 753, 732, 169, 754, 755, 736, 169, 169, 756, - 169, 757, 735, 758, 759, 760, 169, 761, 749, 762, - 750, 763, 751, 764, 765, 766, 169, 752, 753, 767, + 178, 178, 178, 178, 178, 747, 744, 745, 178, 178, + 178, 178, 742, 746, 748, 178, 178, 772, 178, 178, + 178, 743, 771, 749, 178, 178, 178, 178, 178, 178, + 178, 178, 747, 744, 745, 178, 178, 178, 178, 750, + 746, 748, 178, 178, 772, 178, 178, 178, 937, 178, + 749, 178, 178, 752, 178, 178, 178, 178, 178, 751, + 937, 178, 178, 755, 178, 178, 750, 178, 937, 758, + 178, 937, 178, 753, 178, 178, 178, 754, 178, 178, + 752, 178, 178, 178, 178, 178, 751, 178, 178, 178, + 755, 178, 178, 178, 178, 757, 758, 178, 756, 178, - 169, 754, 755, 768, 769, 770, 756, 771, 757, 772, - 758, 759, 760, 773, 761, 774, 762, 775, 763, 776, - 764, 765, 766, 777, 778, 779, 767, 780, 781, 782, - 768, 769, 770, 783, 771, 913, 772, 169, 169, 785, - 773, 169, 774, 786, 775, 913, 776, 831, 787, 169, - 777, 778, 779, 913, 780, 781, 782, 169, 169, 169, - 783, 169, 784, 169, 169, 169, 785, 169, 169, 169, - 786, 169, 790, 169, 831, 787, 169, 789, 913, 913, - 788, 913, 793, 169, 169, 169, 169, 169, 169, 784, - 169, 169, 169, 169, 169, 169, 169, 169, 169, 790, + 753, 759, 178, 178, 754, 178, 178, 760, 178, 178, + 178, 178, 178, 178, 178, 773, 178, 178, 774, 775, + 178, 776, 757, 777, 178, 756, 178, 178, 759, 178, + 178, 778, 178, 779, 760, 780, 178, 781, 782, 783, + 178, 784, 773, 785, 178, 774, 775, 786, 776, 787, + 777, 788, 789, 790, 178, 791, 178, 792, 778, 793, + 779, 794, 780, 795, 781, 782, 783, 796, 784, 797, + 785, 798, 799, 800, 786, 801, 787, 802, 788, 789, + 790, 803, 791, 804, 792, 805, 793, 806, 794, 807, + 795, 178, 855, 178, 796, 937, 797, 178, 798, 799, - 169, 169, 169, 169, 789, 791, 796, 788, 792, 793, - 169, 797, 794, 913, 169, 169, 169, 169, 169, 169, - 169, 169, 169, 913, 169, 795, 169, 913, 169, 169, - 169, 169, 791, 796, 169, 792, 169, 169, 797, 794, - 169, 913, 169, 169, 169, 913, 169, 913, 169, 798, - 801, 800, 795, 169, 169, 799, 913, 169, 169, 169, - 169, 169, 913, 169, 169, 169, 169, 169, 169, 913, - 803, 169, 802, 169, 169, 913, 798, 801, 800, 169, - 169, 169, 799, 169, 169, 169, 169, 169, 169, 805, - 913, 169, 169, 169, 169, 169, 804, 803, 169, 802, + 800, 178, 801, 809, 802, 810, 811, 178, 803, 814, + 804, 178, 805, 178, 806, 856, 807, 178, 178, 855, + 178, 178, 808, 178, 178, 178, 178, 178, 178, 178, + 809, 178, 810, 811, 178, 812, 814, 178, 178, 937, + 178, 813, 856, 817, 178, 178, 178, 178, 178, 808, + 178, 178, 178, 178, 178, 815, 178, 178, 178, 178, + 178, 820, 812, 178, 178, 178, 816, 178, 813, 937, + 817, 821, 178, 178, 178, 818, 178, 937, 178, 178, + 178, 178, 815, 937, 178, 819, 178, 178, 820, 178, + 178, 178, 178, 816, 178, 178, 178, 178, 821, 178, - 169, 169, 169, 169, 807, 169, 169, 169, 169, 913, - 169, 913, 169, 169, 169, 169, 805, 806, 169, 808, - 809, 169, 169, 804, 169, 169, 913, 169, 169, 169, - 169, 807, 169, 169, 169, 169, 169, 169, 810, 169, - 169, 169, 169, 913, 806, 832, 808, 809, 169, 169, - 169, 169, 169, 811, 812, 169, 169, 169, 169, 169, - 169, 169, 169, 169, 169, 810, 169, 813, 169, 169, - 169, 816, 832, 913, 913, 169, 833, 169, 169, 169, - 811, 812, 169, 169, 169, 169, 169, 169, 169, 169, - 913, 169, 814, 834, 813, 169, 169, 169, 816, 169, + 937, 178, 818, 178, 822, 825, 178, 178, 178, 178, + 823, 824, 819, 178, 178, 178, 178, 178, 178, 178, + 826, 178, 178, 178, 178, 178, 178, 827, 178, 857, + 178, 822, 825, 178, 178, 178, 178, 823, 824, 178, + 178, 178, 178, 828, 178, 178, 178, 826, 178, 178, + 178, 831, 178, 178, 827, 178, 857, 178, 937, 178, + 178, 178, 178, 178, 829, 178, 178, 178, 830, 178, + 828, 178, 178, 178, 833, 937, 178, 178, 831, 832, + 178, 937, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 829, 178, 834, 178, 830, 178, 178, 178, 178, - 817, 815, 169, 833, 913, 169, 169, 818, 169, 169, - 169, 169, 820, 169, 169, 169, 169, 821, 169, 814, - 834, 169, 169, 169, 913, 819, 169, 817, 815, 169, - 169, 169, 913, 169, 818, 169, 822, 169, 169, 820, - 169, 169, 169, 169, 821, 169, 169, 169, 169, 169, - 826, 825, 819, 913, 913, 169, 828, 169, 169, 823, - 169, 169, 824, 822, 913, 169, 169, 169, 169, 169, - 169, 169, 169, 169, 169, 169, 169, 826, 825, 827, - 169, 169, 169, 828, 169, 829, 823, 835, 169, 824, - 836, 169, 169, 169, 169, 830, 837, 169, 169, 169, + 178, 833, 835, 178, 178, 178, 832, 178, 178, 178, + 178, 178, 178, 837, 178, 178, 178, 178, 836, 178, + 834, 937, 840, 178, 178, 178, 178, 178, 178, 835, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 837, 838, 178, 841, 178, 836, 178, 858, 178, 840, + 178, 839, 178, 859, 178, 178, 178, 178, 178, 178, + 178, 844, 178, 842, 178, 178, 178, 178, 838, 178, + 841, 843, 937, 845, 858, 178, 178, 178, 839, 178, + 859, 178, 178, 178, 178, 178, 178, 178, 844, 178, + 842, 849, 178, 846, 178, 178, 848, 178, 843, 178, - 169, 838, 169, 169, 169, 839, 827, 169, 169, 840, - 841, 169, 829, 842, 835, 843, 844, 836, 169, 169, - 845, 846, 830, 837, 847, 848, 169, 169, 838, 849, - 850, 169, 839, 851, 852, 853, 840, 841, 854, 855, - 842, 913, 843, 844, 856, 913, 169, 845, 846, 169, - 169, 847, 848, 858, 169, 169, 849, 850, 913, 857, - 851, 852, 853, 881, 169, 854, 855, 169, 859, 169, - 169, 856, 169, 169, 169, 169, 169, 169, 913, 860, - 858, 169, 169, 861, 169, 169, 857, 169, 169, 882, - 881, 169, 169, 169, 169, 859, 169, 169, 169, 169, + 845, 178, 860, 178, 178, 847, 178, 178, 178, 178, + 850, 852, 178, 178, 178, 178, 861, 937, 849, 178, + 846, 854, 178, 848, 178, 178, 178, 178, 178, 860, + 178, 178, 847, 178, 178, 851, 178, 850, 852, 178, + 178, 178, 178, 861, 178, 178, 862, 863, 854, 864, + 865, 866, 178, 867, 178, 853, 178, 178, 178, 868, + 178, 178, 851, 178, 178, 869, 870, 871, 178, 872, + 873, 178, 178, 862, 863, 874, 864, 865, 866, 875, + 867, 876, 853, 178, 877, 878, 868, 879, 178, 880, + 178, 178, 869, 870, 871, 178, 872, 873, 882, 178, - 169, 169, 169, 862, 169, 169, 860, 863, 169, 169, - 861, 169, 169, 169, 169, 169, 882, 169, 169, 169, - 169, 864, 169, 169, 913, 169, 169, 883, 884, 169, - 862, 169, 169, 913, 863, 169, 169, 169, 169, 169, - 169, 169, 169, 169, 169, 169, 169, 865, 864, 169, - 169, 169, 169, 169, 883, 884, 169, 868, 169, 866, - 169, 913, 169, 885, 169, 169, 169, 913, 169, 169, - 169, 169, 169, 169, 865, 867, 169, 169, 169, 169, - 169, 169, 169, 869, 868, 169, 866, 169, 870, 169, - 885, 169, 169, 872, 169, 913, 169, 169, 169, 169, + 178, 178, 874, 937, 881, 937, 875, 884, 876, 178, + 178, 877, 878, 883, 879, 178, 880, 178, 178, 178, + 178, 178, 178, 178, 178, 882, 178, 178, 178, 178, + 885, 881, 178, 887, 884, 178, 178, 178, 886, 937, + 883, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 885, 888, 178, + 887, 178, 178, 178, 178, 886, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 889, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 888, 178, 178, 178, 890, + 178, 178, 178, 178, 178, 178, 178, 178, 892, 178, - 913, 169, 867, 169, 169, 886, 871, 169, 169, 169, - 869, 169, 169, 169, 873, 870, 169, 169, 169, 169, - 872, 169, 169, 169, 169, 874, 169, 169, 169, 913, - 875, 169, 886, 871, 913, 887, 169, 913, 169, 169, - 169, 873, 169, 169, 169, 888, 169, 169, 169, 169, - 169, 169, 874, 169, 169, 876, 877, 875, 169, 913, - 169, 878, 887, 169, 169, 169, 169, 889, 169, 169, - 169, 913, 888, 169, 169, 169, 169, 169, 169, 879, - 169, 169, 876, 877, 169, 169, 169, 169, 878, 169, - 169, 169, 169, 169, 889, 169, 169, 169, 169, 169, + 178, 178, 889, 178, 178, 178, 178, 905, 891, 896, + 178, 178, 178, 178, 178, 178, 890, 894, 178, 178, + 178, 178, 178, 178, 178, 892, 178, 893, 906, 178, + 178, 178, 897, 178, 905, 891, 896, 178, 907, 178, + 178, 178, 178, 937, 894, 178, 895, 178, 178, 178, + 178, 178, 178, 178, 893, 906, 178, 178, 178, 897, + 898, 178, 178, 899, 178, 907, 178, 178, 178, 178, + 901, 902, 178, 895, 178, 178, 178, 937, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 898, 178, 178, + 899, 178, 900, 178, 178, 178, 178, 901, 902, 178, - 169, 169, 169, 169, 169, 880, 879, 169, 169, 169, - 169, 169, 169, 169, 899, 169, 169, 169, 169, 169, - 169, 913, 169, 169, 169, 169, 169, 169, 169, 169, - 890, 169, 880, 169, 169, 169, 169, 169, 169, 169, - 913, 899, 169, 169, 169, 169, 169, 169, 891, 169, - 892, 169, 169, 169, 169, 913, 169, 890, 169, 169, - 169, 169, 169, 169, 169, 169, 169, 894, 169, 893, - 169, 169, 169, 169, 900, 891, 169, 892, 169, 169, - 169, 169, 169, 169, 169, 169, 169, 169, 169, 913, - 169, 169, 913, 169, 894, 169, 893, 895, 169, 169, + 178, 178, 178, 178, 178, 178, 903, 178, 178, 178, + 178, 178, 178, 178, 178, 908, 178, 909, 178, 900, + 910, 178, 178, 904, 178, 911, 912, 178, 913, 178, + 178, 178, 178, 903, 178, 937, 178, 178, 178, 178, + 178, 178, 908, 178, 909, 178, 937, 910, 178, 178, + 904, 178, 911, 912, 914, 913, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 937, + 178, 178, 178, 178, 178, 178, 178, 915, 178, 937, + 937, 914, 178, 178, 178, 178, 178, 178, 923, 178, + 178, 178, 178, 178, 178, 178, 918, 178, 178, 178, - 169, 900, 169, 169, 169, 169, 169, 898, 169, 169, - 169, 169, 901, 902, 169, 169, 897, 903, 169, 896, - 169, 169, 169, 913, 895, 169, 169, 169, 169, 169, - 169, 169, 169, 169, 898, 169, 904, 169, 169, 901, - 902, 169, 169, 897, 903, 169, 896, 905, 169, 169, - 169, 169, 169, 169, 169, 169, 169, 169, 909, 169, - 169, 169, 910, 904, 906, 169, 911, 913, 169, 169, - 169, 169, 908, 913, 905, 169, 907, 169, 169, 169, - 169, 169, 913, 169, 913, 909, 169, 169, 169, 910, - 169, 906, 169, 911, 169, 169, 169, 169, 169, 908, + 178, 178, 178, 178, 915, 178, 916, 178, 178, 178, + 178, 178, 917, 937, 924, 923, 178, 178, 178, 178, + 178, 178, 178, 918, 178, 178, 178, 178, 178, 178, + 178, 178, 925, 916, 178, 178, 926, 178, 178, 917, + 919, 924, 922, 178, 178, 178, 178, 927, 178, 178, + 920, 178, 178, 178, 178, 178, 921, 178, 178, 925, + 937, 178, 178, 926, 178, 178, 937, 919, 178, 922, + 178, 178, 178, 178, 927, 178, 928, 920, 178, 937, + 178, 178, 178, 921, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 929, 933, 178, 934, 178, 178, 930, - 169, 913, 169, 907, 912, 913, 913, 169, 169, 913, - 169, 913, 169, 169, 169, 913, 169, 169, 913, 169, - 169, 169, 169, 169, 913, 913, 913, 169, 913, 913, - 913, 912, 913, 913, 913, 913, 913, 169, 913, 169, - 913, 169, 913, 169, 913, 913, 913, 169, 75, 913, - 913, 75, 76, 913, 76, 76, 157, 913, 157, 157, - 159, 913, 159, 159, 160, 913, 160, 160, 169, 913, - 169, 169, 5, 913, 913, 913, 913, 913, 913, 913, - 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, - 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, + 178, 937, 178, 928, 178, 178, 178, 931, 178, 178, + 935, 178, 178, 178, 178, 932, 178, 178, 178, 178, + 929, 933, 937, 934, 178, 178, 930, 178, 178, 178, + 178, 178, 178, 178, 931, 937, 178, 935, 178, 178, + 178, 936, 932, 178, 937, 937, 178, 178, 178, 937, + 937, 178, 178, 937, 178, 178, 937, 178, 937, 178, + 178, 937, 937, 178, 937, 937, 178, 178, 936, 937, + 937, 937, 937, 937, 178, 178, 937, 937, 937, 178, + 937, 937, 937, 937, 937, 937, 937, 178, 80, 937, + 937, 80, 81, 937, 81, 81, 165, 937, 165, 165, - 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, - 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, - 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, - 913, 913, 913, 913, 913, 913, 913, 913 + 168, 937, 168, 168, 169, 937, 169, 169, 178, 937, + 178, 178, 5, 937, 937, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 937 } ; -static const flex_int16_t yy_chk[3739] = +static const flex_int16_t yy_chk[3781] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1363,7 +1375,7 @@ static const flex_int16_t yy_chk[3739] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, + 1, 1, 1, 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, @@ -1371,403 +1383,407 @@ static const flex_int16_t yy_chk[3739] = 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, - 7, 7, 8, 8, 12, 18, 12, 14, 14, 15, - 15, 17, 23, 17, 26, 21, 19, 21, 23, 17, - 24, 17, 21, 27, 86, 18, 17, 21, 24, 46, - 19, 46, 18, 19, 19, 41, 41, 916, 17, 23, - 17, 26, 21, 19, 21, 23, 17, 24, 17, 21, - 27, 86, 18, 17, 21, 24, 25, 19, 87, 22, - 19, 19, 20, 25, 25, 22, 20, 30, 22, 25, + 3, 3, 3, 3, 7, 7, 8, 8, 13, 940, + 13, 15, 15, 16, 16, 18, 19, 18, 21, 352, + 20, 24, 21, 18, 254, 18, 21, 24, 27, 18, + 18, 28, 21, 91, 20, 21, 19, 20, 20, 22, + 174, 22, 18, 19, 18, 21, 22, 20, 24, 21, + 18, 22, 18, 21, 24, 27, 18, 18, 28, 21, + 91, 20, 21, 19, 20, 20, 22, 25, 22, 173, - 20, 22, 338, 29, 28, 90, 20, 29, 28, 20, - 96, 30, 242, 25, 28, 87, 22, 30, 30, 20, - 25, 25, 22, 20, 30, 22, 25, 20, 22, 32, - 29, 28, 90, 20, 29, 28, 20, 96, 30, 31, - 32, 28, 38, 165, 30, 30, 32, 31, 34, 164, - 38, 31, 34, 97, 31, 160, 32, 42, 42, 37, - 159, 37, 39, 39, 37, 81, 31, 32, 80, 38, - 48, 48, 76, 32, 31, 34, 93, 38, 31, 34, - 97, 31, 35, 93, 35, 75, 37, 35, 37, 39, - 39, 37, 49, 49, 35, 35, 74, 74, 60, 57, + 23, 43, 43, 22, 169, 25, 23, 26, 22, 23, + 168, 32, 23, 26, 26, 26, 86, 30, 29, 32, + 26, 30, 29, 32, 25, 35, 32, 23, 29, 35, + 44, 44, 25, 23, 26, 92, 23, 31, 32, 23, + 26, 26, 26, 33, 30, 29, 32, 26, 30, 29, + 32, 31, 35, 32, 33, 29, 35, 31, 31, 95, + 33, 36, 92, 36, 31, 96, 36, 38, 85, 38, + 33, 81, 38, 36, 36, 49, 80, 49, 31, 51, + 51, 33, 52, 52, 31, 31, 95, 33, 36, 77, + 36, 60, 96, 36, 38, 64, 38, 39, 60, 38, - 79, 79, 89, 93, 50, 89, 57, 88, 60, 35, - 93, 35, 57, 47, 35, 88, 61, 100, 60, 57, - 101, 35, 35, 36, 36, 60, 57, 36, 102, 89, - 36, 36, 89, 57, 88, 60, 61, 36, 45, 57, - 36, 43, 88, 61, 100, 60, 57, 101, 158, 158, - 36, 36, 163, 163, 36, 102, 16, 36, 36, 13, - 103, 63, 67, 61, 36, 63, 11, 36, 51, 51, - 91, 51, 51, 51, 51, 51, 62, 51, 51, 51, - 62, 63, 67, 51, 91, 51, 62, 103, 63, 67, - 104, 51, 63, 51, 99, 99, 62, 91, 51, 5, + 36, 36, 37, 37, 60, 39, 37, 40, 40, 37, + 37, 60, 78, 78, 53, 64, 37, 102, 60, 37, + 84, 84, 64, 50, 39, 60, 166, 166, 48, 37, + 37, 60, 39, 37, 40, 40, 37, 37, 60, 172, + 172, 70, 64, 37, 102, 46, 37, 54, 54, 103, + 54, 54, 54, 54, 54, 54, 61, 54, 54, 54, + 61, 70, 63, 54, 61, 54, 94, 93, 70, 94, + 97, 54, 63, 54, 45, 93, 103, 54, 54, 106, + 61, 66, 63, 61, 97, 66, 41, 61, 70, 63, + 54, 61, 54, 94, 93, 17, 94, 97, 54, 63, - 0, 106, 0, 62, 0, 0, 0, 62, 63, 67, - 51, 91, 51, 62, 94, 0, 94, 104, 51, 107, - 51, 99, 99, 62, 108, 51, 52, 52, 106, 52, - 52, 52, 52, 52, 68, 52, 52, 52, 68, 109, - 58, 94, 52, 94, 58, 0, 107, 110, 58, 72, - 95, 108, 73, 72, 68, 73, 73, 72, 111, 115, - 95, 68, 52, 0, 58, 68, 109, 58, 117, 52, - 0, 58, 73, 72, 110, 58, 72, 95, 118, 73, - 72, 68, 73, 73, 72, 111, 115, 95, 113, 52, - 53, 58, 98, 113, 53, 117, 105, 98, 105, 73, + 54, 66, 93, 107, 54, 54, 106, 61, 66, 63, + 14, 97, 66, 54, 55, 55, 12, 55, 55, 55, + 55, 55, 55, 65, 55, 55, 55, 65, 66, 9, + 107, 55, 5, 65, 0, 69, 71, 75, 101, 69, + 71, 75, 99, 65, 108, 75, 69, 109, 101, 99, + 65, 55, 69, 0, 65, 0, 71, 110, 55, 69, + 65, 75, 69, 71, 75, 101, 69, 71, 75, 99, + 65, 108, 75, 69, 109, 101, 99, 112, 55, 69, + 55, 56, 74, 71, 110, 56, 69, 100, 75, 100, + 0, 74, 113, 74, 114, 56, 74, 76, 56, 56, - 72, 0, 105, 98, 53, 118, 119, 53, 53, 105, - 98, 120, 116, 112, 53, 113, 112, 53, 0, 98, - 113, 53, 116, 105, 98, 105, 0, 116, 116, 105, - 98, 53, 0, 119, 53, 53, 105, 98, 120, 116, - 112, 53, 54, 112, 123, 121, 54, 121, 124, 116, - 54, 122, 125, 122, 116, 116, 54, 126, 127, 54, - 128, 129, 131, 132, 133, 134, 54, 0, 0, 54, - 0, 123, 121, 54, 121, 124, 0, 54, 122, 125, - 122, 0, 137, 54, 126, 127, 54, 128, 129, 131, - 132, 133, 134, 54, 55, 135, 138, 136, 139, 135, + 76, 76, 74, 115, 112, 56, 0, 0, 56, 74, + 0, 116, 56, 117, 100, 0, 100, 76, 74, 113, + 74, 114, 56, 74, 76, 56, 56, 76, 76, 74, + 115, 104, 56, 57, 105, 105, 104, 57, 116, 0, + 117, 57, 104, 121, 76, 122, 111, 57, 111, 104, + 57, 118, 111, 0, 118, 124, 125, 57, 104, 111, + 57, 105, 105, 104, 57, 0, 119, 0, 57, 104, + 121, 119, 122, 111, 57, 111, 104, 57, 118, 111, + 123, 118, 124, 125, 57, 58, 111, 126, 127, 128, + 123, 128, 58, 119, 58, 123, 123, 130, 119, 58, - 140, 55, 136, 55, 141, 142, 139, 143, 55, 137, - 144, 146, 147, 55, 55, 0, 148, 149, 0, 0, - 0, 55, 135, 138, 136, 139, 135, 140, 55, 136, - 55, 141, 142, 139, 143, 55, 145, 144, 146, 147, - 55, 55, 56, 148, 149, 150, 56, 145, 150, 151, - 152, 153, 56, 154, 155, 56, 156, 244, 56, 0, - 0, 0, 56, 145, 0, 246, 154, 169, 0, 56, - 247, 0, 150, 56, 145, 150, 151, 152, 153, 56, - 154, 155, 56, 156, 244, 56, 171, 169, 176, 56, - 59, 59, 246, 154, 169, 170, 170, 247, 59, 59, + 129, 131, 129, 132, 58, 58, 0, 123, 133, 134, + 0, 135, 58, 136, 126, 127, 128, 123, 128, 58, + 138, 58, 123, 123, 130, 139, 58, 129, 131, 129, + 132, 58, 58, 59, 140, 133, 134, 59, 135, 141, + 136, 142, 144, 59, 145, 142, 59, 138, 147, 59, + 146, 143, 139, 59, 0, 0, 143, 148, 146, 149, + 59, 140, 0, 0, 59, 150, 141, 151, 142, 144, + 59, 145, 142, 59, 0, 147, 59, 146, 143, 153, + 59, 62, 62, 143, 148, 146, 149, 152, 62, 62, + 62, 154, 150, 155, 151, 62, 156, 157, 152, 158, - 250, 171, 0, 0, 59, 251, 171, 252, 176, 0, - 59, 0, 254, 171, 169, 176, 170, 59, 59, 174, - 179, 174, 170, 170, 255, 59, 59, 250, 171, 172, - 179, 59, 251, 171, 252, 176, 172, 59, 64, 254, - 179, 174, 64, 170, 172, 256, 174, 179, 174, 172, - 173, 255, 64, 173, 173, 0, 172, 179, 64, 64, - 0, 0, 64, 172, 0, 64, 0, 179, 174, 64, - 257, 172, 256, 259, 173, 0, 172, 173, 0, 64, - 173, 173, 253, 0, 253, 64, 64, 175, 175, 64, - 65, 65, 0, 181, 0, 260, 261, 257, 0, 65, + 157, 62, 0, 159, 160, 0, 153, 162, 62, 62, + 163, 256, 258, 259, 152, 62, 62, 62, 154, 161, + 155, 178, 62, 156, 157, 152, 158, 157, 62, 67, + 159, 160, 161, 67, 162, 0, 261, 163, 256, 258, + 259, 178, 180, 67, 179, 179, 161, 263, 178, 67, + 67, 0, 264, 67, 0, 0, 67, 180, 0, 161, + 67, 265, 180, 261, 267, 179, 0, 0, 178, 180, + 67, 179, 179, 266, 263, 266, 67, 67, 181, 264, + 67, 68, 68, 186, 180, 181, 183, 268, 265, 180, + 68, 267, 179, 181, 68, 0, 0, 68, 181, 183, - 259, 173, 175, 65, 180, 177, 65, 175, 181, 253, - 65, 253, 177, 181, 175, 175, 0, 65, 65, 177, - 181, 180, 260, 261, 180, 177, 65, 186, 0, 175, - 65, 180, 177, 65, 175, 181, 178, 65, 66, 177, - 181, 186, 66, 178, 183, 178, 177, 186, 180, 66, - 0, 180, 177, 0, 186, 66, 178, 183, 183, 0, - 0, 184, 66, 178, 183, 66, 187, 187, 186, 66, - 178, 183, 178, 0, 186, 0, 66, 184, 188, 0, - 188, 184, 66, 178, 183, 183, 185, 187, 184, 66, - 69, 183, 69, 187, 187, 69, 185, 263, 264, 0, + 266, 68, 266, 186, 0, 181, 183, 0, 68, 68, + 186, 0, 181, 183, 268, 0, 0, 68, 196, 182, + 181, 68, 182, 182, 68, 181, 183, 269, 68, 72, + 186, 72, 196, 183, 72, 184, 270, 184, 196, 272, + 273, 72, 72, 182, 0, 196, 182, 0, 0, 182, + 182, 72, 0, 0, 269, 274, 72, 184, 72, 196, + 0, 72, 184, 270, 184, 196, 272, 273, 72, 72, + 182, 208, 0, 276, 185, 185, 0, 277, 72, 73, + 73, 0, 274, 73, 184, 187, 73, 73, 188, 185, + 0, 208, 187, 73, 185, 188, 73, 188, 208, 187, - 188, 0, 69, 69, 184, 188, 185, 188, 184, 0, - 265, 190, 69, 185, 187, 191, 192, 69, 190, 69, - 0, 0, 69, 185, 263, 264, 192, 188, 191, 69, - 69, 190, 198, 185, 266, 191, 192, 265, 190, 69, - 70, 70, 191, 192, 70, 190, 203, 70, 70, 193, - 194, 0, 198, 192, 70, 191, 193, 70, 190, 198, - 194, 266, 191, 192, 70, 0, 203, 70, 70, 193, - 194, 70, 267, 203, 70, 70, 193, 194, 195, 198, - 0, 70, 0, 193, 70, 0, 268, 194, 195, 270, - 196, 70, 71, 203, 271, 0, 193, 194, 195, 267, + 276, 185, 185, 73, 277, 187, 73, 73, 188, 278, + 73, 190, 187, 73, 73, 188, 185, 189, 208, 187, + 73, 185, 188, 73, 188, 191, 187, 189, 190, 193, + 73, 190, 187, 214, 0, 188, 278, 189, 190, 279, + 191, 280, 193, 193, 189, 191, 0, 281, 0, 193, + 0, 0, 191, 214, 189, 190, 193, 0, 190, 194, + 214, 195, 197, 197, 189, 283, 279, 191, 280, 193, + 193, 195, 191, 192, 281, 194, 193, 192, 192, 194, + 214, 195, 0, 197, 192, 198, 194, 198, 195, 197, + 197, 192, 283, 284, 0, 0, 200, 192, 195, 0, - 197, 71, 201, 71, 196, 195, 71, 196, 262, 197, - 196, 201, 71, 268, 197, 195, 270, 196, 0, 71, - 197, 271, 201, 262, 0, 195, 272, 197, 71, 201, - 71, 196, 199, 71, 196, 262, 197, 196, 201, 71, - 182, 197, 202, 199, 182, 182, 202, 197, 273, 201, - 262, 182, 199, 272, 204, 204, 0, 0, 182, 199, - 205, 0, 202, 207, 182, 0, 205, 182, 205, 202, - 199, 182, 182, 202, 204, 273, 207, 274, 182, 199, - 205, 204, 204, 207, 206, 182, 206, 205, 206, 202, - 207, 182, 189, 205, 189, 205, 212, 208, 189, 0, + 192, 0, 194, 200, 192, 192, 194, 198, 195, 201, + 197, 192, 198, 199, 198, 199, 200, 202, 192, 199, + 284, 203, 201, 200, 192, 0, 199, 202, 203, 201, + 200, 215, 215, 0, 198, 199, 201, 202, 0, 0, + 199, 203, 199, 200, 202, 0, 199, 204, 203, 201, + 205, 215, 206, 199, 202, 203, 201, 204, 215, 215, + 205, 209, 199, 218, 202, 209, 206, 204, 203, 206, + 205, 207, 206, 0, 204, 210, 218, 205, 215, 206, + 207, 209, 0, 218, 204, 207, 210, 205, 209, 275, + 218, 207, 209, 206, 204, 210, 206, 205, 207, 206, - 212, 204, 0, 207, 274, 189, 208, 205, 206, 214, - 207, 206, 0, 206, 189, 206, 0, 208, 229, 189, - 212, 189, 0, 212, 208, 189, 229, 212, 0, 214, - 0, 0, 189, 208, 209, 206, 214, 229, 229, 211, - 210, 189, 200, 200, 208, 229, 211, 212, 0, 209, - 0, 275, 200, 229, 209, 210, 214, 200, 200, 211, - 210, 209, 277, 200, 229, 229, 211, 210, 0, 200, - 200, 213, 213, 211, 215, 215, 209, 216, 275, 200, - 217, 209, 210, 0, 200, 200, 211, 210, 278, 277, - 200, 213, 216, 217, 220, 215, 230, 216, 213, 213, + 212, 213, 210, 218, 275, 213, 0, 207, 209, 212, + 218, 0, 207, 210, 285, 286, 275, 0, 207, 287, + 212, 213, 210, 211, 211, 219, 0, 212, 213, 216, + 0, 275, 213, 211, 219, 216, 212, 216, 211, 211, + 0, 285, 286, 220, 211, 219, 287, 212, 213, 216, + 211, 211, 219, 217, 221, 217, 216, 217, 220, 288, + 211, 219, 216, 220, 216, 211, 211, 225, 222, 221, + 220, 211, 219, 0, 221, 222, 216, 217, 0, 223, + 217, 221, 217, 223, 217, 220, 288, 225, 222, 290, + 220, 224, 224, 0, 225, 222, 221, 227, 0, 226, - 217, 215, 215, 220, 216, 218, 219, 217, 220, 218, - 219, 221, 0, 221, 220, 278, 230, 0, 213, 216, - 217, 220, 215, 230, 216, 222, 219, 217, 222, 218, - 220, 221, 218, 219, 0, 220, 218, 219, 221, 223, - 221, 220, 0, 230, 228, 222, 223, 224, 225, 279, - 0, 228, 222, 219, 223, 222, 218, 224, 221, 223, - 227, 225, 0, 227, 228, 226, 223, 224, 225, 226, - 0, 228, 222, 223, 224, 225, 279, 231, 228, 0, - 280, 223, 232, 227, 224, 231, 223, 227, 225, 226, - 227, 228, 226, 232, 224, 225, 226, 231, 233, 234, + 226, 221, 222, 223, 217, 229, 223, 291, 228, 229, + 223, 224, 227, 0, 225, 222, 290, 227, 224, 224, + 226, 228, 0, 232, 227, 232, 226, 226, 228, 229, + 223, 231, 229, 230, 291, 228, 229, 230, 224, 227, + 231, 292, 0, 232, 227, 231, 233, 226, 228, 233, + 232, 231, 232, 230, 234, 228, 229, 0, 231, 237, + 230, 234, 241, 237, 230, 235, 233, 231, 292, 234, + 232, 236, 231, 233, 234, 235, 233, 293, 231, 0, + 230, 234, 241, 237, 236, 235, 237, 0, 234, 241, + 237, 236, 235, 233, 238, 240, 234, 238, 236, 239, - 235, 235, 232, 234, 231, 0, 234, 280, 281, 232, - 227, 236, 231, 282, 233, 236, 226, 239, 233, 234, - 232, 235, 0, 238, 231, 233, 234, 235, 235, 232, - 234, 236, 237, 234, 240, 281, 238, 239, 236, 237, - 282, 233, 236, 238, 239, 233, 234, 283, 235, 240, - 238, 284, 237, 285, 240, 286, 287, 288, 236, 237, - 290, 240, 289, 238, 239, 291, 237, 293, 294, 295, - 238, 296, 289, 297, 283, 298, 240, 299, 284, 237, - 285, 240, 286, 287, 288, 300, 302, 290, 303, 289, - 304, 305, 291, 306, 293, 294, 295, 307, 296, 289, + 242, 234, 235, 240, 293, 243, 239, 294, 242, 241, + 237, 236, 235, 295, 240, 240, 243, 238, 236, 239, + 242, 238, 240, 0, 238, 243, 239, 242, 0, 244, + 240, 0, 243, 239, 294, 242, 296, 246, 246, 250, + 295, 240, 240, 243, 238, 244, 239, 242, 249, 244, + 245, 247, 243, 248, 245, 247, 244, 245, 246, 250, + 248, 249, 0, 296, 246, 246, 250, 0, 249, 297, + 245, 247, 244, 248, 251, 249, 244, 245, 247, 298, + 248, 245, 247, 299, 245, 246, 250, 248, 249, 251, + 300, 301, 302, 303, 251, 249, 297, 245, 247, 304, - 297, 308, 298, 309, 299, 310, 311, 312, 313, 314, - 315, 317, 300, 302, 318, 303, 307, 304, 305, 319, - 306, 320, 322, 323, 307, 324, 325, 327, 308, 328, - 309, 328, 310, 311, 312, 313, 314, 315, 317, 329, - 330, 318, 331, 307, 332, 333, 319, 334, 320, 322, - 323, 335, 324, 325, 327, 335, 328, 336, 328, 339, - 340, 341, 0, 342, 0, 0, 329, 330, 0, 331, - 433, 332, 333, 344, 334, 345, 347, 434, 335, 339, - 340, 341, 335, 342, 336, 343, 339, 340, 341, 346, - 342, 348, 343, 344, 347, 345, 347, 433, 348, 346, + 248, 251, 305, 303, 307, 308, 298, 309, 310, 311, + 299, 312, 313, 314, 316, 317, 251, 300, 301, 302, + 303, 251, 318, 319, 320, 321, 304, 322, 323, 305, + 303, 307, 308, 324, 309, 310, 311, 325, 312, 313, + 314, 316, 317, 326, 321, 327, 328, 329, 331, 318, + 319, 320, 321, 332, 322, 323, 333, 334, 336, 337, + 324, 338, 339, 341, 325, 342, 343, 342, 344, 345, + 326, 321, 327, 328, 329, 331, 346, 347, 348, 350, + 332, 353, 354, 333, 334, 336, 337, 349, 338, 339, + 341, 349, 342, 343, 342, 344, 345, 355, 0, 356, - 344, 0, 345, 347, 434, 343, 339, 340, 341, 346, - 342, 348, 343, 349, 350, 349, 346, 0, 348, 343, - 344, 347, 345, 347, 351, 348, 346, 354, 355, 352, - 350, 0, 343, 352, 350, 349, 346, 0, 348, 351, - 349, 350, 349, 356, 351, 353, 0, 354, 355, 435, - 356, 351, 0, 352, 354, 355, 352, 350, 358, 353, - 352, 350, 349, 356, 357, 353, 351, 359, 357, 359, - 356, 351, 353, 358, 354, 355, 435, 356, 358, 360, - 352, 362, 361, 364, 362, 358, 353, 363, 357, 359, - 356, 357, 353, 365, 359, 357, 359, 361, 363, 360, + 357, 353, 354, 346, 347, 348, 350, 357, 353, 354, + 358, 359, 360, 361, 349, 359, 0, 355, 349, 356, + 357, 0, 0, 361, 355, 362, 356, 357, 353, 354, + 358, 449, 360, 361, 357, 359, 0, 358, 359, 360, + 361, 363, 359, 362, 355, 362, 356, 357, 363, 364, + 361, 364, 362, 365, 0, 0, 450, 358, 449, 360, + 361, 363, 359, 367, 366, 369, 370, 367, 363, 365, + 362, 364, 362, 365, 0, 363, 364, 0, 364, 366, + 365, 368, 371, 450, 366, 369, 370, 367, 363, 371, + 367, 366, 369, 370, 367, 368, 365, 0, 364, 372, - 358, 436, 361, 364, 362, 358, 360, 363, 362, 361, - 364, 362, 367, 365, 363, 357, 359, 366, 0, 437, - 365, 366, 369, 371, 361, 363, 360, 372, 436, 361, - 364, 362, 367, 368, 363, 368, 369, 0, 370, 367, - 365, 366, 369, 371, 366, 370, 437, 372, 366, 369, - 371, 0, 0, 373, 372, 368, 0, 374, 370, 367, - 368, 373, 368, 369, 374, 370, 0, 376, 366, 369, - 371, 0, 370, 373, 372, 375, 377, 374, 375, 377, - 373, 0, 368, 376, 374, 370, 0, 376, 373, 378, - 0, 374, 379, 378, 376, 382, 377, 383, 375, 0, + 365, 368, 371, 372, 373, 374, 366, 374, 368, 371, + 0, 366, 369, 370, 367, 375, 371, 377, 376, 373, + 377, 0, 368, 372, 373, 451, 372, 374, 368, 371, + 372, 373, 374, 376, 374, 375, 379, 378, 376, 380, + 377, 382, 375, 0, 377, 376, 373, 377, 378, 381, + 372, 373, 451, 381, 374, 0, 379, 378, 384, 380, + 376, 382, 375, 379, 378, 376, 380, 377, 382, 383, + 385, 383, 384, 381, 386, 378, 381, 385, 384, 452, + 381, 0, 387, 379, 378, 384, 380, 388, 382, 390, + 385, 383, 390, 453, 386, 388, 383, 385, 383, 384, - 373, 0, 375, 377, 374, 375, 377, 379, 381, 378, - 376, 380, 379, 384, 376, 382, 378, 383, 381, 379, - 378, 439, 382, 377, 383, 375, 380, 385, 381, 388, - 386, 380, 387, 384, 379, 381, 378, 385, 380, 379, - 384, 387, 382, 390, 383, 381, 386, 385, 439, 388, - 386, 389, 387, 380, 385, 381, 388, 386, 380, 387, - 384, 391, 441, 390, 385, 391, 389, 394, 387, 394, - 390, 389, 0, 386, 385, 395, 388, 386, 389, 387, - 393, 391, 392, 392, 393, 396, 397, 394, 391, 441, - 390, 395, 391, 389, 394, 395, 394, 401, 389, 402, + 381, 386, 387, 389, 385, 384, 452, 388, 391, 387, + 389, 393, 390, 0, 388, 393, 390, 385, 383, 390, + 453, 386, 388, 389, 391, 394, 0, 0, 391, 387, + 389, 393, 0, 392, 388, 391, 392, 389, 393, 390, + 394, 395, 393, 454, 397, 394, 398, 0, 0, 399, + 389, 391, 394, 392, 397, 391, 395, 400, 393, 396, + 392, 395, 402, 392, 397, 396, 398, 394, 395, 399, + 454, 397, 394, 398, 404, 401, 399, 400, 402, 396, + 392, 397, 402, 395, 400, 401, 396, 406, 395, 402, + 403, 397, 396, 398, 404, 401, 399, 0, 405, 403, - 442, 396, 395, 392, 393, 396, 397, 393, 391, 392, - 392, 393, 396, 397, 394, 400, 398, 401, 395, 402, - 0, 399, 395, 398, 401, 443, 402, 442, 396, 400, - 392, 393, 396, 397, 399, 400, 398, 0, 404, 444, - 405, 399, 400, 398, 401, 403, 402, 404, 399, 403, - 398, 405, 443, 407, 0, 408, 400, 407, 404, 0, - 405, 399, 400, 398, 403, 404, 444, 405, 399, 403, - 408, 446, 403, 406, 404, 408, 403, 407, 405, 410, - 407, 406, 408, 409, 407, 404, 409, 405, 0, 411, - 447, 403, 412, 406, 416, 0, 403, 408, 446, 410, + 0, 404, 401, 456, 400, 402, 396, 406, 0, 402, + 403, 407, 401, 405, 406, 407, 413, 403, 405, 411, + 0, 404, 401, 408, 408, 405, 403, 410, 409, 410, + 456, 407, 409, 412, 406, 411, 413, 403, 407, 411, + 405, 414, 407, 413, 408, 405, 411, 410, 414, 412, + 408, 408, 409, 412, 410, 409, 410, 415, 407, 409, + 412, 414, 411, 413, 0, 417, 411, 416, 414, 418, + 415, 408, 0, 458, 410, 414, 412, 415, 424, 409, + 412, 416, 419, 0, 415, 417, 419, 416, 414, 418, + 420, 421, 417, 424, 416, 422, 418, 415, 424, 420, - 406, 416, 408, 409, 407, 413, 410, 414, 406, 411, - 409, 0, 412, 409, 416, 417, 411, 447, 415, 412, - 406, 416, 414, 413, 0, 413, 410, 414, 416, 0, - 409, 419, 413, 415, 414, 417, 411, 418, 415, 412, - 0, 416, 417, 421, 448, 415, 419, 420, 418, 414, - 413, 419, 413, 0, 414, 0, 420, 418, 419, 422, - 415, 0, 417, 421, 418, 415, 0, 420, 423, 0, - 421, 448, 425, 419, 420, 418, 426, 423, 419, 422, - 426, 424, 425, 420, 418, 449, 422, 451, 423, 0, - 421, 424, 425, 424, 420, 423, 427, 428, 0, 425, + 458, 419, 421, 422, 415, 424, 419, 426, 416, 419, + 420, 421, 417, 419, 416, 422, 418, 420, 421, 423, + 424, 425, 422, 423, 425, 424, 420, 426, 419, 421, + 422, 0, 427, 419, 426, 428, 433, 420, 421, 0, + 429, 425, 422, 423, 459, 0, 423, 0, 425, 430, + 423, 425, 427, 460, 426, 428, 433, 431, 429, 427, + 429, 0, 428, 433, 430, 0, 432, 429, 425, 430, + 423, 459, 431, 432, 437, 435, 430, 431, 434, 427, + 460, 0, 428, 433, 431, 429, 432, 429, 436, 434, + 435, 430, 438, 432, 437, 435, 430, 436, 434, 431, - 426, 424, 0, 426, 423, 427, 422, 426, 424, 425, - 430, 429, 449, 428, 451, 423, 427, 428, 424, 425, - 424, 0, 452, 427, 428, 430, 431, 426, 424, 429, - 430, 429, 427, 453, 456, 431, 457, 430, 429, 431, - 428, 458, 459, 427, 428, 432, 431, 460, 432, 452, - 464, 465, 430, 431, 467, 469, 429, 430, 429, 470, - 453, 456, 431, 457, 471, 432, 431, 472, 458, 459, - 473, 476, 432, 431, 460, 432, 474, 464, 465, 480, - 482, 467, 469, 483, 484, 485, 470, 474, 487, 488, - 489, 471, 432, 490, 472, 491, 494, 473, 476, 495, + 432, 437, 435, 0, 431, 434, 0, 442, 436, 439, + 0, 442, 438, 432, 461, 436, 434, 435, 439, 438, + 440, 437, 435, 441, 436, 434, 444, 0, 443, 439, + 440, 442, 440, 441, 442, 436, 439, 443, 442, 438, + 440, 461, 444, 441, 0, 439, 444, 440, 443, 0, + 441, 446, 463, 444, 445, 443, 439, 440, 442, 440, + 441, 464, 0, 465, 443, 466, 446, 440, 468, 444, + 441, 446, 445, 444, 445, 443, 447, 448, 446, 463, + 448, 445, 469, 470, 473, 447, 474, 475, 464, 447, + 465, 476, 466, 446, 477, 468, 447, 448, 446, 445, - 496, 497, 498, 474, 499, 500, 480, 482, 502, 503, - 483, 484, 485, 504, 474, 487, 488, 489, 505, 508, - 490, 509, 491, 494, 510, 511, 495, 496, 497, 498, - 512, 499, 500, 513, 514, 502, 503, 515, 517, 519, - 504, 0, 521, 522, 0, 505, 508, 523, 509, 0, - 611, 510, 511, 525, 612, 521, 522, 512, 524, 526, - 513, 514, 521, 522, 515, 517, 519, 523, 527, 521, - 522, 524, 527, 525, 523, 0, 528, 611, 524, 526, - 525, 612, 521, 522, 530, 524, 526, 531, 533, 521, - 522, 613, 527, 529, 523, 527, 528, 530, 524, 527, + 481, 445, 482, 447, 448, 484, 486, 448, 487, 469, + 470, 473, 447, 474, 475, 488, 447, 489, 476, 490, + 491, 477, 494, 447, 448, 492, 498, 481, 500, 482, + 501, 502, 484, 486, 503, 487, 492, 505, 506, 507, + 508, 509, 488, 512, 489, 513, 490, 491, 514, 494, + 515, 516, 492, 498, 517, 500, 518, 501, 502, 520, + 521, 503, 522, 492, 505, 506, 507, 508, 509, 523, + 512, 526, 513, 527, 528, 514, 529, 515, 516, 530, + 531, 517, 532, 518, 533, 535, 520, 521, 537, 522, + 0, 0, 0, 541, 542, 0, 523, 539, 526, 544, - 525, 529, 531, 528, 530, 524, 526, 531, 533, 0, - 534, 530, 532, 529, 531, 533, 0, 534, 613, 527, - 529, 536, 535, 528, 530, 538, 532, 0, 529, 531, - 534, 530, 532, 0, 531, 533, 536, 534, 535, 532, - 529, 536, 535, 537, 534, 538, 540, 537, 536, 535, - 540, 541, 538, 532, 539, 542, 539, 534, 541, 532, - 543, 614, 0, 536, 615, 535, 540, 537, 536, 535, - 537, 541, 538, 540, 537, 542, 539, 540, 541, 544, - 543, 539, 542, 539, 545, 541, 0, 543, 614, 546, - 544, 615, 549, 540, 537, 545, 0, 548, 541, 544, + 527, 528, 0, 529, 0, 540, 530, 531, 545, 532, + 539, 533, 535, 541, 542, 537, 543, 539, 540, 544, + 541, 542, 547, 546, 539, 540, 544, 546, 545, 543, + 0, 548, 540, 631, 0, 545, 543, 539, 0, 548, + 541, 542, 547, 543, 539, 540, 544, 546, 549, 547, + 546, 548, 540, 551, 546, 545, 543, 550, 548, 552, + 631, 549, 633, 543, 0, 554, 548, 551, 549, 547, + 0, 634, 550, 551, 546, 549, 553, 550, 548, 552, + 551, 554, 555, 553, 550, 554, 552, 556, 549, 633, + 0, 556, 554, 557, 551, 549, 553, 555, 634, 550, - 547, 548, 542, 539, 545, 546, 544, 543, 0, 546, - 550, 545, 549, 551, 552, 547, 546, 544, 552, 549, - 547, 548, 545, 553, 548, 616, 544, 547, 548, 554, - 550, 545, 546, 551, 553, 555, 546, 550, 552, 549, - 551, 552, 547, 553, 555, 552, 556, 547, 548, 554, - 553, 0, 616, 0, 557, 555, 554, 550, 559, 558, - 551, 553, 555, 0, 557, 552, 556, 560, 0, 563, - 553, 555, 558, 556, 557, 561, 554, 559, 559, 558, - 560, 557, 555, 0, 0, 559, 558, 560, 561, 563, - 562, 557, 562, 556, 560, 561, 563, 0, 617, 558, + 551, 0, 555, 553, 550, 558, 552, 558, 554, 555, + 553, 556, 554, 557, 556, 559, 561, 562, 556, 559, + 557, 560, 0, 553, 555, 635, 636, 558, 560, 555, + 0, 565, 558, 0, 558, 559, 561, 562, 556, 563, + 557, 560, 559, 561, 562, 564, 559, 565, 560, 568, + 563, 565, 635, 636, 558, 560, 564, 567, 565, 563, + 566, 567, 559, 561, 562, 564, 563, 0, 560, 568, + 569, 570, 564, 637, 565, 566, 568, 563, 565, 573, + 566, 567, 0, 564, 567, 571, 563, 566, 567, 571, + 569, 570, 564, 572, 574, 575, 568, 569, 570, 573, - 565, 557, 561, 562, 559, 559, 558, 560, 566, 567, - 562, 564, 0, 569, 560, 561, 563, 562, 564, 562, - 565, 619, 561, 571, 568, 617, 620, 565, 566, 567, - 562, 564, 572, 569, 570, 566, 567, 562, 564, 568, - 569, 570, 0, 571, 568, 564, 572, 565, 619, 573, - 571, 568, 572, 620, 570, 566, 567, 574, 564, 572, - 569, 570, 573, 575, 0, 575, 568, 576, 570, 573, - 571, 568, 621, 572, 0, 577, 573, 574, 578, 572, - 580, 570, 623, 581, 574, 575, 0, 576, 577, 573, - 575, 578, 575, 579, 576, 577, 573, 0, 578, 621, + 637, 0, 566, 574, 572, 577, 573, 566, 567, 571, + 0, 638, 571, 572, 574, 575, 571, 569, 570, 576, + 572, 574, 575, 640, 578, 577, 573, 641, 579, 576, + 574, 572, 577, 583, 0, 0, 571, 578, 638, 576, + 572, 574, 575, 0, 578, 580, 576, 579, 579, 581, + 640, 578, 577, 583, 641, 579, 576, 582, 580, 582, + 583, 584, 581, 585, 578, 580, 576, 586, 584, 581, + 582, 578, 580, 587, 579, 579, 581, 582, 589, 0, + 583, 584, 0, 585, 582, 580, 582, 586, 584, 581, + 585, 588, 580, 587, 586, 584, 581, 582, 589, 591, - 580, 579, 577, 581, 574, 578, 0, 580, 0, 623, - 581, 585, 575, 579, 576, 577, 0, 582, 578, 583, - 579, 582, 577, 583, 585, 578, 0, 580, 579, 584, - 581, 585, 586, 588, 587, 588, 0, 584, 585, 0, - 579, 582, 587, 583, 582, 589, 583, 586, 582, 584, - 583, 585, 586, 590, 587, 588, 584, 592, 585, 586, - 588, 587, 588, 591, 584, 589, 594, 591, 582, 587, - 583, 595, 589, 590, 586, 593, 584, 592, 0, 586, - 590, 587, 588, 591, 592, 593, 594, 596, 0, 0, - 591, 595, 589, 594, 591, 593, 598, 597, 595, 597, + 587, 592, 590, 593, 582, 589, 588, 594, 584, 590, + 585, 588, 596, 0, 586, 592, 593, 0, 588, 591, + 587, 592, 590, 593, 0, 589, 591, 594, 592, 590, + 593, 597, 596, 588, 594, 595, 590, 595, 588, 596, + 598, 600, 592, 593, 597, 601, 591, 642, 592, 590, + 593, 597, 602, 598, 594, 599, 602, 595, 597, 596, + 598, 600, 595, 599, 595, 601, 0, 598, 600, 603, + 0, 597, 601, 603, 642, 599, 602, 604, 597, 602, + 598, 605, 599, 602, 595, 604, 0, 598, 600, 609, + 599, 606, 601, 603, 605, 644, 603, 604, 0, 607, - 590, 596, 593, 0, 592, 598, 0, 596, 0, 599, - 591, 600, 593, 594, 596, 600, 598, 603, 595, 597, - 604, 606, 593, 598, 597, 599, 597, 624, 596, 599, - 601, 602, 598, 602, 596, 600, 599, 603, 600, 605, - 604, 606, 600, 598, 603, 601, 597, 604, 606, 607, - 601, 602, 599, 608, 624, 605, 599, 601, 602, 605, - 602, 625, 600, 626, 603, 627, 605, 604, 606, 607, - 628, 629, 601, 608, 630, 631, 607, 601, 602, 633, - 608, 634, 605, 635, 638, 639, 605, 640, 625, 641, - 626, 646, 627, 647, 648, 651, 607, 628, 629, 652, + 603, 605, 599, 602, 604, 610, 606, 607, 605, 609, + 611, 606, 604, 608, 611, 608, 609, 645, 606, 607, + 603, 605, 644, 612, 604, 610, 607, 614, 605, 613, + 611, 615, 610, 606, 607, 608, 609, 611, 606, 613, + 608, 611, 608, 612, 645, 616, 607, 614, 0, 613, + 612, 615, 610, 617, 614, 617, 613, 611, 615, 616, + 0, 619, 608, 620, 618, 616, 613, 620, 0, 623, + 612, 0, 616, 618, 614, 617, 613, 619, 615, 624, + 617, 619, 617, 621, 618, 625, 616, 620, 619, 623, + 620, 618, 616, 622, 620, 622, 623, 626, 621, 624, - 608, 630, 631, 653, 654, 655, 633, 657, 634, 658, - 635, 638, 639, 659, 640, 660, 641, 661, 646, 662, - 647, 648, 651, 663, 664, 666, 652, 667, 668, 670, - 653, 654, 655, 671, 657, 0, 658, 673, 674, 676, - 659, 675, 660, 677, 661, 0, 662, 737, 678, 678, - 663, 664, 666, 0, 667, 668, 670, 673, 674, 676, - 671, 675, 675, 677, 673, 674, 676, 680, 675, 678, - 677, 679, 681, 682, 737, 678, 678, 680, 0, 0, - 679, 0, 685, 686, 673, 674, 676, 680, 675, 675, - 677, 679, 681, 682, 680, 683, 678, 687, 679, 681, + 618, 625, 617, 621, 619, 625, 624, 627, 619, 628, + 621, 618, 625, 622, 620, 646, 623, 626, 647, 648, + 622, 649, 622, 650, 626, 621, 624, 627, 625, 628, + 621, 651, 625, 652, 627, 654, 628, 655, 657, 660, + 622, 661, 646, 662, 626, 647, 648, 663, 649, 668, + 650, 669, 670, 673, 627, 674, 628, 675, 651, 676, + 652, 677, 654, 679, 655, 657, 660, 680, 661, 681, + 662, 682, 683, 684, 663, 685, 668, 686, 669, 670, + 673, 688, 674, 689, 675, 690, 676, 692, 677, 693, + 679, 695, 761, 696, 680, 0, 681, 698, 682, 683, - 682, 684, 685, 686, 680, 683, 689, 679, 684, 685, - 686, 690, 687, 0, 680, 683, 688, 687, 679, 681, - 682, 684, 683, 0, 687, 688, 689, 0, 684, 685, - 686, 690, 683, 689, 691, 684, 688, 693, 690, 687, - 692, 0, 683, 688, 687, 0, 694, 0, 684, 691, - 694, 693, 688, 689, 691, 692, 0, 693, 690, 696, - 692, 691, 0, 688, 693, 695, 694, 692, 697, 0, - 697, 700, 695, 694, 699, 0, 691, 694, 693, 696, - 701, 691, 692, 698, 693, 695, 696, 692, 697, 699, - 0, 700, 695, 694, 699, 697, 698, 697, 700, 695, + 684, 697, 685, 699, 686, 700, 701, 701, 688, 704, + 689, 695, 690, 696, 692, 763, 693, 698, 695, 761, + 696, 697, 697, 699, 698, 700, 702, 701, 697, 704, + 699, 703, 700, 701, 701, 702, 704, 705, 695, 0, + 696, 703, 763, 708, 698, 706, 702, 709, 697, 697, + 699, 703, 700, 702, 701, 706, 704, 705, 703, 707, + 710, 712, 702, 708, 705, 706, 707, 709, 703, 0, + 708, 713, 706, 702, 709, 710, 711, 0, 703, 707, + 710, 712, 706, 0, 705, 711, 707, 710, 712, 714, + 708, 713, 706, 707, 709, 715, 711, 716, 713, 719, - 701, 699, 702, 698, 703, 704, 696, 701, 706, 0, - 698, 0, 695, 705, 707, 697, 699, 702, 700, 704, - 705, 699, 702, 698, 703, 704, 0, 701, 706, 702, - 698, 703, 704, 705, 707, 706, 708, 709, 710, 712, - 705, 707, 710, 0, 702, 739, 704, 705, 713, 702, - 711, 703, 704, 711, 712, 706, 708, 709, 714, 712, - 705, 707, 710, 708, 709, 710, 712, 715, 713, 710, - 711, 718, 739, 0, 0, 713, 740, 711, 714, 716, - 711, 712, 720, 708, 709, 714, 712, 715, 717, 710, - 0, 718, 716, 741, 715, 713, 719, 711, 718, 716, + 0, 717, 710, 711, 714, 717, 707, 710, 712, 714, + 715, 716, 711, 718, 722, 715, 714, 716, 713, 719, + 718, 717, 715, 711, 716, 720, 719, 720, 717, 764, + 721, 714, 717, 718, 722, 724, 714, 715, 716, 725, + 718, 722, 715, 721, 716, 720, 719, 718, 717, 723, + 721, 727, 720, 726, 720, 724, 764, 721, 0, 725, + 718, 722, 724, 730, 723, 728, 725, 729, 726, 723, + 721, 727, 720, 726, 729, 0, 723, 721, 727, 728, + 726, 0, 724, 730, 731, 728, 725, 729, 732, 733, + 730, 723, 728, 734, 729, 726, 723, 734, 727, 735, - 719, 717, 720, 740, 0, 714, 716, 721, 717, 720, - 722, 721, 723, 723, 715, 717, 719, 724, 718, 716, - 741, 724, 725, 719, 0, 722, 716, 719, 717, 720, - 722, 721, 0, 723, 721, 717, 725, 722, 721, 723, - 723, 724, 725, 719, 724, 729, 726, 727, 724, 725, - 730, 728, 722, 0, 0, 728, 732, 722, 721, 726, - 723, 733, 727, 725, 0, 729, 726, 727, 724, 725, - 730, 734, 729, 726, 727, 728, 732, 730, 728, 731, - 731, 733, 728, 732, 736, 734, 726, 742, 733, 727, - 744, 734, 729, 726, 727, 735, 745, 730, 734, 735, + 726, 729, 735, 736, 731, 737, 728, 738, 732, 733, + 730, 731, 728, 739, 729, 732, 733, 734, 736, 735, + 734, 0, 742, 736, 734, 737, 735, 738, 740, 735, + 736, 731, 737, 739, 738, 732, 733, 744, 741, 743, + 739, 740, 742, 743, 734, 736, 735, 765, 740, 742, + 736, 741, 737, 766, 738, 740, 746, 744, 741, 743, + 739, 747, 747, 745, 744, 741, 743, 745, 740, 742, + 743, 746, 0, 748, 765, 740, 746, 748, 741, 749, + 766, 751, 747, 746, 744, 741, 743, 745, 747, 747, + 745, 752, 750, 749, 745, 752, 751, 748, 746, 749, - 731, 748, 728, 732, 736, 752, 731, 731, 733, 754, - 757, 736, 734, 760, 742, 761, 763, 744, 734, 735, - 764, 766, 735, 745, 767, 768, 735, 731, 748, 770, - 771, 736, 752, 774, 776, 777, 754, 757, 778, 783, - 760, 0, 761, 763, 784, 0, 735, 764, 766, 785, - 786, 767, 768, 787, 788, 790, 770, 771, 0, 786, - 774, 776, 777, 836, 784, 778, 783, 793, 788, 785, - 786, 784, 789, 787, 788, 790, 785, 786, 0, 789, - 787, 788, 790, 791, 794, 791, 786, 793, 792, 838, - 836, 784, 789, 796, 793, 788, 785, 786, 797, 789, + 748, 751, 768, 746, 748, 750, 749, 753, 751, 747, + 754, 756, 750, 757, 745, 752, 769, 0, 752, 750, + 749, 759, 752, 751, 748, 759, 749, 753, 751, 768, + 754, 756, 750, 757, 753, 755, 755, 754, 756, 750, + 757, 758, 752, 769, 760, 759, 772, 776, 759, 778, + 781, 784, 759, 785, 753, 758, 755, 754, 756, 787, + 757, 758, 755, 755, 760, 788, 790, 791, 758, 792, + 794, 760, 759, 772, 776, 795, 778, 781, 784, 798, + 785, 800, 758, 755, 801, 802, 787, 807, 758, 808, + 809, 760, 788, 790, 791, 810, 792, 794, 811, 812, - 787, 788, 790, 792, 794, 791, 789, 795, 792, 795, - 791, 794, 791, 796, 793, 792, 838, 798, 797, 789, - 796, 799, 800, 802, 0, 797, 803, 843, 845, 795, - 792, 794, 791, 0, 795, 792, 795, 798, 801, 804, - 796, 799, 800, 802, 798, 797, 803, 801, 799, 800, - 802, 805, 806, 803, 843, 845, 795, 808, 801, 804, - 809, 0, 807, 846, 798, 801, 804, 0, 799, 800, - 802, 805, 806, 803, 801, 807, 810, 808, 805, 806, - 809, 812, 807, 810, 808, 801, 804, 809, 811, 807, - 846, 813, 811, 814, 815, 0, 810, 816, 805, 806, + 813, 814, 795, 0, 810, 0, 798, 813, 800, 808, + 809, 801, 802, 812, 807, 810, 808, 809, 811, 812, + 813, 814, 810, 816, 817, 811, 812, 813, 814, 818, + 815, 810, 815, 819, 813, 819, 808, 809, 816, 0, + 812, 820, 810, 816, 817, 811, 812, 813, 814, 818, + 816, 817, 815, 821, 822, 819, 818, 815, 823, 815, + 819, 820, 819, 824, 826, 816, 825, 827, 820, 828, + 816, 817, 829, 821, 822, 825, 818, 830, 823, 815, + 821, 822, 819, 824, 826, 823, 825, 827, 820, 828, + 824, 826, 829, 825, 827, 831, 828, 830, 832, 829, - 0, 812, 807, 810, 808, 849, 813, 809, 812, 807, - 810, 813, 811, 814, 815, 811, 818, 816, 813, 811, - 814, 815, 819, 810, 816, 817, 820, 817, 812, 0, - 818, 822, 849, 813, 0, 852, 818, 0, 813, 811, - 814, 815, 819, 818, 816, 853, 820, 817, 821, 819, - 826, 822, 817, 820, 817, 821, 823, 818, 822, 0, - 823, 824, 852, 818, 825, 824, 827, 854, 821, 819, - 826, 0, 853, 820, 817, 821, 828, 826, 822, 825, - 823, 829, 821, 823, 825, 824, 827, 823, 824, 856, - 857, 825, 824, 827, 854, 821, 828, 826, 830, 858, + 821, 822, 825, 833, 830, 823, 836, 860, 831, 838, + 824, 826, 839, 825, 827, 831, 828, 835, 832, 829, + 834, 835, 831, 833, 830, 832, 836, 834, 862, 838, + 833, 837, 839, 836, 860, 831, 838, 840, 867, 839, + 834, 835, 831, 0, 835, 832, 837, 834, 835, 842, + 833, 837, 843, 836, 834, 862, 838, 840, 837, 839, + 841, 844, 841, 842, 840, 867, 846, 834, 835, 842, + 847, 848, 843, 837, 847, 848, 842, 0, 837, 843, + 850, 844, 841, 851, 840, 845, 846, 841, 844, 841, + 842, 849, 845, 846, 847, 848, 842, 847, 848, 843, - 859, 829, 860, 828, 862, 830, 825, 823, 829, 856, - 857, 825, 824, 827, 881, 864, 856, 857, 830, 858, - 859, 0, 860, 828, 862, 830, 858, 859, 829, 860, - 861, 862, 830, 863, 861, 864, 856, 857, 865, 866, - 0, 881, 864, 867, 869, 830, 858, 859, 863, 860, - 868, 862, 868, 863, 861, 0, 870, 861, 865, 866, - 863, 861, 864, 867, 869, 865, 866, 871, 872, 870, - 867, 869, 868, 873, 883, 863, 870, 868, 875, 868, - 863, 861, 874, 870, 876, 865, 866, 871, 872, 0, - 867, 869, 0, 873, 871, 872, 870, 874, 875, 868, + 850, 847, 848, 851, 852, 845, 849, 850, 844, 841, + 851, 849, 845, 846, 853, 869, 854, 870, 849, 845, + 873, 847, 848, 854, 852, 876, 877, 850, 878, 880, + 851, 852, 845, 849, 853, 0, 854, 881, 849, 882, + 883, 853, 869, 854, 870, 884, 0, 873, 886, 880, + 854, 852, 876, 877, 885, 878, 880, 881, 885, 882, + 883, 853, 887, 854, 881, 884, 882, 883, 886, 0, + 888, 889, 884, 890, 891, 886, 880, 887, 885, 0, + 0, 885, 887, 893, 881, 885, 882, 883, 905, 887, + 888, 889, 884, 890, 891, 886, 895, 888, 889, 894, - 873, 883, 874, 870, 876, 875, 877, 879, 878, 874, - 880, 876, 885, 887, 871, 872, 878, 888, 891, 877, - 873, 890, 893, 0, 874, 875, 877, 879, 878, 874, - 880, 876, 892, 877, 879, 878, 890, 880, 891, 885, - 887, 890, 893, 878, 888, 891, 877, 892, 890, 893, - 895, 894, 892, 877, 879, 878, 896, 880, 899, 892, - 898, 897, 901, 890, 894, 891, 904, 0, 890, 893, - 895, 894, 897, 0, 892, 905, 896, 895, 894, 892, - 898, 897, 0, 896, 0, 899, 904, 898, 897, 901, - 906, 894, 907, 904, 908, 905, 911, 895, 894, 897, + 890, 891, 896, 893, 887, 885, 892, 897, 892, 887, + 893, 899, 894, 0, 907, 905, 895, 888, 889, 894, + 890, 891, 896, 895, 900, 898, 894, 897, 892, 896, + 893, 899, 909, 892, 897, 892, 911, 901, 899, 894, + 898, 907, 903, 895, 900, 898, 894, 912, 902, 896, + 901, 900, 898, 904, 897, 892, 902, 901, 899, 909, + 0, 914, 903, 911, 901, 915, 0, 898, 902, 903, + 917, 900, 898, 904, 912, 902, 914, 901, 916, 0, + 904, 914, 919, 902, 901, 915, 918, 920, 914, 903, + 917, 922, 915, 916, 923, 902, 925, 917, 916, 918, - 912, 0, 905, 896, 906, 0, 0, 898, 897, 0, - 906, 0, 907, 904, 908, 0, 911, 906, 0, 907, - 912, 908, 905, 911, 0, 0, 0, 912, 0, 0, - 0, 906, 0, 0, 0, 0, 0, 906, 0, 907, - 0, 908, 0, 911, 0, 0, 0, 912, 914, 0, - 0, 914, 915, 0, 915, 915, 917, 0, 917, 917, - 918, 0, 918, 918, 919, 0, 919, 919, 920, 0, - 920, 920, 913, 913, 913, 913, 913, 913, 913, 913, - 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, - 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, + 904, 0, 919, 914, 921, 916, 918, 920, 914, 919, + 928, 922, 915, 918, 920, 921, 929, 917, 922, 931, + 916, 923, 0, 925, 921, 916, 918, 930, 932, 919, + 928, 921, 935, 918, 920, 0, 929, 928, 922, 931, + 936, 930, 921, 929, 0, 0, 931, 930, 932, 0, + 0, 921, 935, 0, 930, 932, 0, 928, 0, 935, + 936, 0, 0, 929, 0, 0, 931, 936, 930, 0, + 0, 0, 0, 0, 930, 932, 0, 0, 0, 935, + 0, 0, 0, 0, 0, 0, 0, 936, 938, 0, + 0, 938, 939, 0, 939, 939, 941, 0, 941, 941, - 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, - 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, - 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, - 913, 913, 913, 913, 913, 913, 913, 913 + 942, 0, 942, 942, 943, 0, 943, 943, 944, 0, + 944, 944, 937, 937, 937, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 937 } ; /* The intent behind this definition is that it'll catch @@ -1794,7 +1810,7 @@ static const flex_int16_t yy_chk[3739] = #define TOKEN(name) { return SQL_##name; } -#line 1797 "flex_lexer.cpp" +#line 1813 "flex_lexer.cpp" /*************************** ** Section 2: Rules ***************************/ @@ -1807,7 +1823,7 @@ static const flex_int16_t yy_chk[3739] = /*************************** ** Section 3: Rules ***************************/ -#line 1810 "flex_lexer.cpp" +#line 1826 "flex_lexer.cpp" #define INITIAL 0 #define COMMENT 1 @@ -2093,7 +2109,7 @@ YY_DECL #line 51 "flex_lexer.l" -#line 2096 "flex_lexer.cpp" +#line 2112 "flex_lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2120,13 +2136,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 >= 914 ) + if ( yy_current_state >= 938 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 913 ); + while ( yy_current_state != 937 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -2426,403 +2442,423 @@ TOKEN(ALTER) case 56: YY_RULE_SETUP #line 110 "flex_lexer.l" -TOKEN(CROSS) +TOKEN(ARRAY) YY_BREAK case 57: YY_RULE_SETUP #line 111 "flex_lexer.l" -TOKEN(DELTA) +TOKEN(CROSS) YY_BREAK case 58: YY_RULE_SETUP #line 112 "flex_lexer.l" -TOKEN(GROUP) +TOKEN(DELTA) YY_BREAK case 59: YY_RULE_SETUP #line 113 "flex_lexer.l" -TOKEN(INDEX) +TOKEN(GROUP) YY_BREAK case 60: YY_RULE_SETUP #line 114 "flex_lexer.l" -TOKEN(INNER) +TOKEN(INDEX) YY_BREAK case 61: YY_RULE_SETUP #line 115 "flex_lexer.l" -TOKEN(LIMIT) +TOKEN(INNER) YY_BREAK case 62: YY_RULE_SETUP #line 116 "flex_lexer.l" -TOKEN(LOCAL) +TOKEN(LIMIT) YY_BREAK case 63: YY_RULE_SETUP #line 117 "flex_lexer.l" -TOKEN(MERGE) +TOKEN(LOCAL) YY_BREAK case 64: YY_RULE_SETUP #line 118 "flex_lexer.l" -TOKEN(MINUS) +TOKEN(MERGE) YY_BREAK case 65: YY_RULE_SETUP #line 119 "flex_lexer.l" -TOKEN(ORDER) +TOKEN(MINUS) YY_BREAK case 66: YY_RULE_SETUP #line 120 "flex_lexer.l" -TOKEN(OUTER) +TOKEN(ORDER) YY_BREAK case 67: YY_RULE_SETUP #line 121 "flex_lexer.l" -TOKEN(RIGHT) +TOKEN(OUTER) YY_BREAK case 68: YY_RULE_SETUP #line 122 "flex_lexer.l" -TOKEN(TABLE) +TOKEN(RIGHT) YY_BREAK case 69: YY_RULE_SETUP #line 123 "flex_lexer.l" -TOKEN(UNION) +TOKEN(TABLE) YY_BREAK case 70: YY_RULE_SETUP #line 124 "flex_lexer.l" -TOKEN(USING) +TOKEN(UNION) YY_BREAK case 71: YY_RULE_SETUP #line 125 "flex_lexer.l" -TOKEN(WHERE) +TOKEN(USING) YY_BREAK case 72: YY_RULE_SETUP #line 126 "flex_lexer.l" -TOKEN(CALL) +TOKEN(WHERE) YY_BREAK case 73: YY_RULE_SETUP #line 127 "flex_lexer.l" -TOKEN(CASE) +TOKEN(CALL) YY_BREAK case 74: YY_RULE_SETUP #line 128 "flex_lexer.l" -TOKEN(DATE) +TOKEN(CASE) YY_BREAK case 75: YY_RULE_SETUP #line 129 "flex_lexer.l" -TOKEN(DESC) +TOKEN(DATE) YY_BREAK case 76: YY_RULE_SETUP #line 130 "flex_lexer.l" -TOKEN(DROP) +TOKEN(DESC) YY_BREAK case 77: YY_RULE_SETUP #line 131 "flex_lexer.l" -TOKEN(ELSE) +TOKEN(DROP) YY_BREAK case 78: YY_RULE_SETUP #line 132 "flex_lexer.l" -TOKEN(FILE) +TOKEN(ELSE) YY_BREAK case 79: YY_RULE_SETUP #line 133 "flex_lexer.l" -TOKEN(FROM) +TOKEN(FILE) YY_BREAK case 80: YY_RULE_SETUP #line 134 "flex_lexer.l" -TOKEN(FULL) +TOKEN(FROM) YY_BREAK case 81: YY_RULE_SETUP #line 135 "flex_lexer.l" -TOKEN(HASH) +TOKEN(FULL) YY_BREAK case 82: YY_RULE_SETUP #line 136 "flex_lexer.l" -TOKEN(HINT) +TOKEN(HASH) YY_BREAK case 83: YY_RULE_SETUP #line 137 "flex_lexer.l" -TOKEN(INTO) +TOKEN(HINT) YY_BREAK case 84: YY_RULE_SETUP #line 138 "flex_lexer.l" -TOKEN(JOIN) +TOKEN(INTO) YY_BREAK case 85: YY_RULE_SETUP #line 139 "flex_lexer.l" -TOKEN(LEFT) +TOKEN(JOIN) YY_BREAK case 86: YY_RULE_SETUP #line 140 "flex_lexer.l" -TOKEN(LIKE) +TOKEN(LEFT) YY_BREAK case 87: YY_RULE_SETUP #line 141 "flex_lexer.l" -TOKEN(LOAD) +TOKEN(LIKE) YY_BREAK case 88: YY_RULE_SETUP #line 142 "flex_lexer.l" -TOKEN(NULL) +TOKEN(ILIKE) YY_BREAK case 89: YY_RULE_SETUP #line 143 "flex_lexer.l" -TOKEN(PART) +TOKEN(LOAD) YY_BREAK case 90: YY_RULE_SETUP #line 144 "flex_lexer.l" -TOKEN(PLAN) +TOKEN(NULL) YY_BREAK case 91: YY_RULE_SETUP #line 145 "flex_lexer.l" -TOKEN(SHOW) +TOKEN(PART) YY_BREAK case 92: YY_RULE_SETUP #line 146 "flex_lexer.l" -TOKEN(TEXT) +TOKEN(PLAN) YY_BREAK case 93: YY_RULE_SETUP #line 147 "flex_lexer.l" -TOKEN(THEN) +TOKEN(SHOW) YY_BREAK case 94: YY_RULE_SETUP #line 148 "flex_lexer.l" -TOKEN(TIME) +TOKEN(TEXT) YY_BREAK case 95: YY_RULE_SETUP #line 149 "flex_lexer.l" -TOKEN(VIEW) +TOKEN(THEN) YY_BREAK case 96: YY_RULE_SETUP #line 150 "flex_lexer.l" -TOKEN(WHEN) +TOKEN(TIME) YY_BREAK case 97: YY_RULE_SETUP #line 151 "flex_lexer.l" -TOKEN(WITH) +TOKEN(VIEW) YY_BREAK case 98: YY_RULE_SETUP #line 152 "flex_lexer.l" -TOKEN(ADD) +TOKEN(WHEN) YY_BREAK case 99: YY_RULE_SETUP #line 153 "flex_lexer.l" -TOKEN(ALL) +TOKEN(WITH) YY_BREAK case 100: YY_RULE_SETUP #line 154 "flex_lexer.l" -TOKEN(AND) +TOKEN(ADD) YY_BREAK case 101: YY_RULE_SETUP #line 155 "flex_lexer.l" -TOKEN(ASC) +TOKEN(ALL) YY_BREAK case 102: YY_RULE_SETUP #line 156 "flex_lexer.l" -TOKEN(CSV) +TOKEN(AND) YY_BREAK case 103: YY_RULE_SETUP #line 157 "flex_lexer.l" -TOKEN(END) +TOKEN(ASC) YY_BREAK case 104: YY_RULE_SETUP #line 158 "flex_lexer.l" -TOKEN(FOR) +TOKEN(CSV) YY_BREAK case 105: YY_RULE_SETUP #line 159 "flex_lexer.l" -TOKEN(INT) +TOKEN(END) YY_BREAK case 106: YY_RULE_SETUP #line 160 "flex_lexer.l" -TOKEN(KEY) +TOKEN(FOR) YY_BREAK case 107: YY_RULE_SETUP #line 161 "flex_lexer.l" -TOKEN(NOT) +TOKEN(INT) YY_BREAK case 108: YY_RULE_SETUP #line 162 "flex_lexer.l" -TOKEN(OFF) +TOKEN(KEY) YY_BREAK case 109: YY_RULE_SETUP #line 163 "flex_lexer.l" -TOKEN(SET) +TOKEN(NOT) YY_BREAK case 110: YY_RULE_SETUP #line 164 "flex_lexer.l" -TOKEN(TBL) +TOKEN(OFF) YY_BREAK case 111: YY_RULE_SETUP #line 165 "flex_lexer.l" -TOKEN(TOP) +TOKEN(SET) YY_BREAK case 112: YY_RULE_SETUP #line 166 "flex_lexer.l" -TOKEN(AS) +TOKEN(TBL) YY_BREAK case 113: YY_RULE_SETUP #line 167 "flex_lexer.l" -TOKEN(BY) +TOKEN(TOP) YY_BREAK case 114: YY_RULE_SETUP #line 168 "flex_lexer.l" -TOKEN(IF) +TOKEN(AS) YY_BREAK case 115: YY_RULE_SETUP #line 169 "flex_lexer.l" -TOKEN(IN) +TOKEN(BY) YY_BREAK case 116: YY_RULE_SETUP #line 170 "flex_lexer.l" -TOKEN(IS) +TOKEN(IF) YY_BREAK case 117: YY_RULE_SETUP #line 171 "flex_lexer.l" -TOKEN(OF) +TOKEN(IN) YY_BREAK case 118: YY_RULE_SETUP #line 172 "flex_lexer.l" -TOKEN(ON) +TOKEN(IS) YY_BREAK case 119: YY_RULE_SETUP #line 173 "flex_lexer.l" -TOKEN(OR) +TOKEN(OF) YY_BREAK case 120: YY_RULE_SETUP #line 174 "flex_lexer.l" -TOKEN(TO) +TOKEN(ON) YY_BREAK case 121: YY_RULE_SETUP -#line 176 "flex_lexer.l" -TOKEN(NOTEQUALS) +#line 175 "flex_lexer.l" +TOKEN(OR) YY_BREAK case 122: YY_RULE_SETUP -#line 177 "flex_lexer.l" -TOKEN(LESSEQ) +#line 176 "flex_lexer.l" +TOKEN(TO) YY_BREAK case 123: YY_RULE_SETUP #line 178 "flex_lexer.l" -TOKEN(GREATEREQ) +TOKEN(NOTEQUALS) YY_BREAK case 124: YY_RULE_SETUP -#line 180 "flex_lexer.l" -{ return yytext[0]; } +#line 179 "flex_lexer.l" +TOKEN(NOTEQUALS) YY_BREAK case 125: -#line 183 "flex_lexer.l" +YY_RULE_SETUP +#line 180 "flex_lexer.l" +TOKEN(LESSEQ) + YY_BREAK case 126: YY_RULE_SETUP -#line 183 "flex_lexer.l" +#line 181 "flex_lexer.l" +TOKEN(GREATEREQ) + YY_BREAK +case 127: +YY_RULE_SETUP +#line 182 "flex_lexer.l" +TOKEN(CONCAT) + YY_BREAK +case 128: +YY_RULE_SETUP +#line 184 "flex_lexer.l" +{ return yytext[0]; } + YY_BREAK +case 129: +#line 187 "flex_lexer.l" +case 130: +YY_RULE_SETUP +#line 187 "flex_lexer.l" { yylval->fval = atof(yytext); return SQL_FLOATVAL; } YY_BREAK -case 127: +case 131: YY_RULE_SETUP -#line 188 "flex_lexer.l" +#line 192 "flex_lexer.l" { yylval->ival = atol(yytext); return SQL_INTVAL; } YY_BREAK -case 128: +case 132: YY_RULE_SETUP -#line 193 "flex_lexer.l" +#line 197 "flex_lexer.l" { // Crop the leading and trailing quote char yylval->sval = hsql::substr(yytext, 1, strlen(yytext)-1); return SQL_IDENTIFIER; } YY_BREAK -case 129: +case 133: YY_RULE_SETUP -#line 199 "flex_lexer.l" +#line 203 "flex_lexer.l" { yylval->sval = strdup(yytext); return SQL_IDENTIFIER; } YY_BREAK -case 130: +case 134: YY_RULE_SETUP -#line 204 "flex_lexer.l" +#line 208 "flex_lexer.l" { // Crop the leading and trailing quote char yylval->sval = hsql::substr(yytext, 1, strlen(yytext)-1); return SQL_STRING; } YY_BREAK -case 131: +case 135: YY_RULE_SETUP -#line 210 "flex_lexer.l" +#line 214 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); return 0; } YY_BREAK -case 132: +case 136: YY_RULE_SETUP -#line 213 "flex_lexer.l" +#line 217 "flex_lexer.l" ECHO; YY_BREAK -#line 2825 "flex_lexer.cpp" +#line 2861 "flex_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): yyterminate(); @@ -3123,7 +3159,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) 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 >= 914 ) + if ( yy_current_state >= 938 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -3152,11 +3188,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) 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 >= 914 ) + if ( yy_current_state >= 938 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 913); + yy_is_jam = (yy_current_state == 937); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -3979,7 +4015,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 213 "flex_lexer.l" +#line 217 "flex_lexer.l" /*************************** ** Section 3: User code @@ -3988,3 +4024,4 @@ void yyfree (void * ptr , yyscan_t yyscanner) int yyerror(const char *msg) { fprintf(stderr, "[SQL-Lexer-Error] %s\n",msg); return 0; } + diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index e53b2c3..f500b82 100644 --- a/src/parser/flex_lexer.h +++ b/src/parser/flex_lexer.h @@ -729,7 +729,7 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 213 "flex_lexer.l" +#line 217 "flex_lexer.l" #line 735 "flex_lexer.h" diff --git a/src/parser/flex_lexer.l b/src/parser/flex_lexer.l index 318c062..66f3552 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -107,6 +107,7 @@ UPDATE TOKEN(UPDATE) VALUES TOKEN(VALUES) AFTER TOKEN(AFTER) ALTER TOKEN(ALTER) +ARRAY TOKEN(ARRAY) CROSS TOKEN(CROSS) DELTA TOKEN(DELTA) GROUP TOKEN(GROUP) @@ -138,6 +139,7 @@ INTO TOKEN(INTO) JOIN TOKEN(JOIN) LEFT TOKEN(LEFT) LIKE TOKEN(LIKE) +ILIKE TOKEN(ILIKE) LOAD TOKEN(LOAD) NULL TOKEN(NULL) PART TOKEN(PART) @@ -173,11 +175,13 @@ ON TOKEN(ON) OR TOKEN(OR) TO TOKEN(TO) +"!=" TOKEN(NOTEQUALS) "<>" TOKEN(NOTEQUALS) "<=" TOKEN(LESSEQ) ">=" TOKEN(GREATEREQ) +"||" TOKEN(CONCAT) -[-+*/(){},.;<>=^%:?] { return yytext[0]; } +[-+*/(){},.;<>=^%:?[\]|] { return yytext[0]; } -?[0-9]+"."[0-9]* | "."[0-9]* { @@ -217,4 +221,4 @@ TO TOKEN(TO) int yyerror(const char *msg) { fprintf(stderr, "[SQL-Lexer-Error] %s\n",msg); return 0; -} \ No newline at end of file +} diff --git a/src/parser/parser_typedef.h b/src/parser/parser_typedef.h index 1204b96..a16770e 100644 --- a/src/parser/parser_typedef.h +++ b/src/parser/parser_typedef.h @@ -15,16 +15,16 @@ typedef void* yyscan_t; struct HSQL_CUST_LTYPE { - int first_line; - int first_column; - int last_line; - int last_column; + int first_line; + int first_column; + int last_line; + int last_column; - int total_column; + int total_column; - // Parameters. - // int param_id; - std::vector param_list; + // Parameters. + // int param_id; + std::vector param_list; }; #define HSQL_LTYPE HSQL_CUST_LTYPE diff --git a/src/parser/sql_keywords.txt b/src/parser/sql_keywords.txt index 092b4c2..dce0e89 100644 --- a/src/parser/sql_keywords.txt +++ b/src/parser/sql_keywords.txt @@ -127,6 +127,7 @@ DEFAULT CALL FOR TO +ARRAY // Expressions diff --git a/src/sql/Expr.cpp b/src/sql/Expr.cpp index 8751e62..ca566ef 100644 --- a/src/sql/Expr.cpp +++ b/src/sql/Expr.cpp @@ -6,15 +6,15 @@ namespace hsql { - Expr::Expr(ExprType type) : - type(type), - expr(nullptr), - expr2(nullptr), - exprList(nullptr), - select(nullptr), - name(nullptr), - table(nullptr), - alias(nullptr) {}; + Expr::Expr(ExprType type) + : type(type), + expr(nullptr), + expr2(nullptr), + exprList(nullptr), + select(nullptr), + name(nullptr), + table(nullptr), + alias(nullptr) {}; Expr::~Expr() { delete expr; @@ -63,6 +63,15 @@ namespace hsql { return e; } + Expr* Expr::makeCase(Expr* expr, Expr* then) { + Expr* e = new Expr(kExprOperator); + e->expr = expr; + e->opType = kOpCase; + e->exprList = new std::vector(); + e->exprList->push_back(then); + return e; + } + Expr* Expr::makeCase(Expr* expr, Expr* then, Expr* other) { Expr* e = new Expr(kExprOperator); e->expr = expr; @@ -91,6 +100,10 @@ namespace hsql { return e; } + Expr* Expr::makeNullLiteral() { + Expr* e = new Expr(kExprLiteralNull); + return e; + } Expr* Expr::makeColumnRef(char* name) { Expr* e = new Expr(kExprColumnRef); @@ -105,7 +118,19 @@ namespace hsql { return e; } - Expr* Expr::makeFunctionRef(char* func_name, std::vector* exprList, bool distinct) { + Expr* Expr::makeStar(void) { + Expr* e = new Expr(kExprStar); + return e; + } + + Expr* Expr::makeStar(char* table) { + Expr* e = new Expr(kExprStar); + e->table = table; + return e; + } + + Expr* Expr::makeFunctionRef(char* func_name, std::vector* exprList, + bool distinct) { Expr* e = new Expr(kExprFunctionRef); e->name = func_name; e->exprList = exprList; @@ -113,6 +138,19 @@ namespace hsql { return e; } + Expr* Expr::makeArray(std::vector* exprList) { + Expr* e = new Expr(kExprArray); + e->exprList = exprList; + return e; + } + + Expr* Expr::makeArrayIndex(Expr* expr, int64_t index) { + Expr* e = new Expr(kExprArrayIndex); + e->expr = expr; + e->ival = index; + return e; + } + Expr* Expr::makeParameter(int id) { Expr* e = new Expr(kExprParameter); e->ival = id; @@ -155,7 +193,9 @@ namespace hsql { } bool Expr::isLiteral() const { - return isType(kExprLiteralInt) || isType(kExprLiteralFloat) || isType(kExprLiteralString) || isType(kExprParameter); + return isType(kExprLiteralInt) || isType(kExprLiteralFloat) || + isType(kExprLiteralString) || isType(kExprParameter) || + isType(kExprLiteralNull); } bool Expr::hasAlias() const { @@ -167,15 +207,18 @@ namespace hsql { } const char* Expr::getName() const { - if (alias != nullptr) return alias; - else return name; + if (alias != nullptr) + return alias; + else + return name; } char* substr(const char* source, int from, int to) { int len = to - from; - char* copy = (char*) malloc(len + 1);; + char* copy = (char*)malloc(len + 1); + ; strncpy(copy, source + from, len); copy[len] = '\0'; return copy; } -} // namespace hsql +} // namespace hsql diff --git a/src/sql/Expr.h b/src/sql/Expr.h index b26d1bd..622bec3 100644 --- a/src/sql/Expr.h +++ b/src/sql/Expr.h @@ -8,27 +8,30 @@ namespace hsql { struct SelectStatement; - // Helper function used by the lexer. - // TODO: move to more appropriate place. +// Helper function used by the lexer. +// TODO: move to more appropriate place. char* substr(const char* source, int from, int to); enum ExprType { kExprLiteralFloat, kExprLiteralString, kExprLiteralInt, + kExprLiteralNull, kExprStar, kExprParameter, kExprColumnRef, kExprFunctionRef, kExprOperator, kExprSelect, - kExprHint + kExprHint, + kExprArray, + kExprArrayIndex }; - // Operator types. These are important for expressions of type kExprOperator. - // Trivial types are those that can be described by a single character e.g: - // + - * / < > = % - // Non-trivial are: <> <= >= LIKE ISNULL NOT +// Operator types. These are important for expressions of type kExprOperator. +// Trivial types are those that can be described by a single character e.g: +// + - * / < > = % +// Non-trivial are: <> <= >= LIKE ISNULL NOT enum OperatorType { kOpNone, @@ -52,9 +55,11 @@ namespace hsql { kOpGreaterEq, kOpLike, kOpNotLike, + kOpILike, kOpAnd, kOpOr, kOpIn, + kOpConcat, // Unary operators. kOpNot, @@ -65,10 +70,10 @@ namespace hsql { typedef struct Expr Expr; - // Represents SQL expressions (i.e. literals, operators, column_refs). - // TODO: When destructing a placeholder expression, we might need to alter the placeholder_list. +// Represents SQL expressions (i.e. literals, operators, column_refs). +// TODO: When destructing a placeholder expression, we might need to alter the +// placeholder_list. struct Expr { - Expr(ExprType type); virtual ~Expr(); @@ -89,7 +94,6 @@ namespace hsql { OperatorType opType; bool distinct; - // Convenience accessor methods. bool isType(ExprType exprType) const; @@ -112,6 +116,8 @@ namespace hsql { static Expr* makeBetween(Expr* expr, Expr* left, Expr* right); + static Expr* makeCase(Expr* expr, Expr* then); + static Expr* makeCase(Expr* expr, Expr* then, Expr* other); static Expr* makeLiteral(int64_t val); @@ -120,11 +126,22 @@ namespace hsql { static Expr* makeLiteral(char* val); + static Expr* makeNullLiteral(); + static Expr* makeColumnRef(char* name); static Expr* makeColumnRef(char* table, char* name); - static Expr* makeFunctionRef(char* func_name, std::vector* exprList, bool distinct); + static Expr* makeStar(void); + + static Expr* makeStar(char* table); + + static Expr* makeFunctionRef(char* func_name, std::vector* exprList, + bool distinct); + + static Expr* makeArray(std::vector* exprList); + + static Expr* makeArrayIndex(Expr* expr, int64_t index); static Expr* makeParameter(int id); @@ -141,16 +158,15 @@ namespace hsql { // For Hyrise we still had to put in the explicit NULL constructor // http://www.ex-parrot.com/~chris/random/initialise.html // Unused -#define ALLOC_EXPR(var, type) \ - Expr* var; \ - do { \ - Expr zero = {type}; \ - var = (Expr*)malloc(sizeof *var); \ - *var = zero; \ - } while(0); +#define ALLOC_EXPR(var, type) \ + Expr* var; \ + do { \ + Expr zero = {type}; \ + var = (Expr*)malloc(sizeof *var); \ + *var = zero; \ + } while (0); #undef ALLOC_EXPR - -} // namespace hsql +} // namespace hsql #endif