diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 00bf90a..531627a 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -206,99 +206,106 @@ extern int hsql_debug; SQL_ESCAPE = 293, SQL_EXCEPT = 294, SQL_EXISTS = 295, - SQL_GLOBAL = 296, - SQL_HAVING = 297, - SQL_IMPORT = 298, - SQL_INSERT = 299, - SQL_ISNULL = 300, - SQL_OFFSET = 301, - SQL_RENAME = 302, - SQL_SCHEMA = 303, - SQL_SELECT = 304, - SQL_SORTED = 305, - SQL_TABLES = 306, - SQL_UNIQUE = 307, - SQL_UNLOAD = 308, - SQL_UPDATE = 309, - SQL_VALUES = 310, - SQL_AFTER = 311, - SQL_ALTER = 312, - SQL_CROSS = 313, - SQL_DELTA = 314, - SQL_GROUP = 315, - SQL_INDEX = 316, - SQL_INNER = 317, - SQL_LIMIT = 318, - SQL_LOCAL = 319, - SQL_MERGE = 320, - SQL_MINUS = 321, - SQL_ORDER = 322, - SQL_OUTER = 323, - SQL_RIGHT = 324, - SQL_TABLE = 325, - SQL_UNION = 326, - SQL_USING = 327, - SQL_WHERE = 328, - SQL_CALL = 329, - SQL_CASE = 330, - SQL_DATE = 331, - SQL_DESC = 332, - SQL_DROP = 333, - SQL_ELSE = 334, - SQL_FILE = 335, - SQL_FROM = 336, - SQL_FULL = 337, - SQL_HASH = 338, - SQL_HINT = 339, - SQL_INTO = 340, - SQL_JOIN = 341, - SQL_LEFT = 342, - SQL_LIKE = 343, - SQL_LOAD = 344, - SQL_NULL = 345, - SQL_PART = 346, - SQL_PLAN = 347, - SQL_SHOW = 348, - SQL_TEXT = 349, - SQL_THEN = 350, - SQL_TIME = 351, - SQL_VIEW = 352, - SQL_WHEN = 353, - SQL_WITH = 354, - SQL_ADD = 355, - SQL_ALL = 356, - SQL_AND = 357, - SQL_ASC = 358, - SQL_CSV = 359, - SQL_END = 360, - SQL_FOR = 361, - SQL_INT = 362, - SQL_KEY = 363, - SQL_NOT = 364, - SQL_OFF = 365, - SQL_SET = 366, - SQL_TBL = 367, - SQL_TOP = 368, - SQL_AS = 369, - SQL_BY = 370, - SQL_IF = 371, - SQL_IN = 372, - SQL_IS = 373, - SQL_OF = 374, - SQL_ON = 375, - SQL_OR = 376, - SQL_TO = 377, - 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 + SQL_EXTRACT = 296, + SQL_GLOBAL = 297, + SQL_HAVING = 298, + SQL_IMPORT = 299, + SQL_INSERT = 300, + SQL_ISNULL = 301, + SQL_OFFSET = 302, + SQL_RENAME = 303, + SQL_SCHEMA = 304, + SQL_SELECT = 305, + SQL_SORTED = 306, + SQL_TABLES = 307, + SQL_UNIQUE = 308, + SQL_UNLOAD = 309, + SQL_UPDATE = 310, + SQL_VALUES = 311, + SQL_AFTER = 312, + SQL_ALTER = 313, + SQL_CROSS = 314, + SQL_DELTA = 315, + SQL_GROUP = 316, + SQL_INDEX = 317, + SQL_INNER = 318, + SQL_LIMIT = 319, + SQL_LOCAL = 320, + SQL_MERGE = 321, + SQL_MINUS = 322, + SQL_ORDER = 323, + SQL_OUTER = 324, + SQL_RIGHT = 325, + SQL_TABLE = 326, + SQL_UNION = 327, + SQL_USING = 328, + SQL_WHERE = 329, + SQL_CALL = 330, + SQL_CASE = 331, + SQL_DATE = 332, + SQL_DESC = 333, + SQL_DROP = 334, + SQL_ELSE = 335, + SQL_FILE = 336, + SQL_FROM = 337, + SQL_FULL = 338, + SQL_HASH = 339, + SQL_HINT = 340, + SQL_INTO = 341, + SQL_JOIN = 342, + SQL_LEFT = 343, + SQL_LIKE = 344, + SQL_LOAD = 345, + SQL_NULL = 346, + SQL_PART = 347, + SQL_PLAN = 348, + SQL_SHOW = 349, + SQL_TEXT = 350, + SQL_THEN = 351, + SQL_TIME = 352, + SQL_VIEW = 353, + SQL_WHEN = 354, + SQL_WITH = 355, + SQL_ADD = 356, + SQL_ALL = 357, + SQL_AND = 358, + SQL_ASC = 359, + SQL_CSV = 360, + SQL_END = 361, + SQL_FOR = 362, + SQL_INT = 363, + SQL_KEY = 364, + SQL_NOT = 365, + SQL_OFF = 366, + SQL_SET = 367, + SQL_TBL = 368, + SQL_TOP = 369, + SQL_AS = 370, + SQL_BY = 371, + SQL_IF = 372, + SQL_IN = 373, + SQL_IS = 374, + SQL_OF = 375, + SQL_ON = 376, + SQL_OR = 377, + SQL_TO = 378, + SQL_ARRAY = 379, + SQL_CONCAT = 380, + SQL_ILIKE = 381, + SQL_SECOND = 382, + SQL_MINUTE = 383, + SQL_HOUR = 384, + SQL_DAY = 385, + SQL_MONTH = 386, + SQL_YEAR = 387, + SQL_EQUALS = 388, + SQL_NOTEQUALS = 389, + SQL_LESS = 390, + SQL_GREATER = 391, + SQL_LESSEQ = 392, + SQL_GREATEREQ = 393, + SQL_NOTNULL = 394, + SQL_UMINUS = 395 }; #endif @@ -332,6 +339,7 @@ union HSQL_STYPE hsql::Expr* expr; hsql::OrderDescription* order; hsql::OrderType order_type; + hsql::DatetimeField datetime_field; hsql::LimitDescription* limit; hsql::ColumnDefinition* column_t; hsql::GroupByDescription* group_t; @@ -347,7 +355,7 @@ union HSQL_STYPE std::vector* expr_vec; std::vector* order_vec; -#line 351 "bison_parser.cpp" /* yacc.c:355 */ +#line 359 "bison_parser.cpp" /* yacc.c:355 */ }; typedef union HSQL_STYPE HSQL_STYPE; @@ -377,7 +385,7 @@ int hsql_parse (hsql::SQLParserResult* result, yyscan_t scanner); /* Copy the second part of user declarations. */ -#line 381 "bison_parser.cpp" /* yacc.c:358 */ +#line 389 "bison_parser.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -621,21 +629,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 52 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 613 +#define YYLAST 600 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 151 +#define YYNTOKENS 158 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 91 +#define YYNNTS 93 /* YYNRULES -- Number of rules. */ -#define YYNRULES 219 +#define YYNRULES 227 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 400 +#define YYNSTATES 413 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 388 +#define YYMAXUTOK 395 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -647,13 +655,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, 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, 147, 2, 2, + 152, 153, 145, 143, 156, 144, 154, 146, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 155, + 136, 133, 137, 157, 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, 143, 2, 144, 141, 2, 2, 2, 2, 2, + 2, 150, 2, 151, 148, 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, @@ -682,35 +690,37 @@ static const yytype_uint8 yytranslate[] = 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, 123, 124, - 125, 127, 128, 131, 132, 133, 134, 135, 142 + 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, + 138, 139, 140, 141, 142, 149 }; #if HSQL_DEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 249, 249, 270, 276, 285, 289, 293, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 317, 318, 323, - 324, 328, 332, 344, 351, 354, 358, 370, 379, 383, - 393, 396, 410, 417, 424, 435, 436, 440, 441, 445, - 452, 453, 454, 455, 465, 471, 477, 485, 486, 495, - 504, 517, 524, 535, 536, 546, 555, 556, 560, 572, - 573, 574, 591, 592, 596, 597, 601, 611, 628, 632, - 633, 634, 638, 639, 643, 655, 656, 660, 664, 665, - 668, 673, 674, 678, 683, 687, 688, 691, 692, 696, - 697, 701, 705, 706, 707, 713, 714, 718, 719, 720, - 721, 722, 723, 724, 725, 732, 733, 737, 738, 742, - 752, 753, 754, 755, 756, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 772, 773, 777, 778, 779, 780, - 781, 785, 786, 787, 788, 789, 790, 791, 792, 793, - 794, 795, 799, 800, 804, 805, 806, 807, 813, 814, - 815, 816, 820, 821, 825, 826, 830, 831, 832, 833, - 834, 835, 836, 840, 841, 845, 849, 853, 857, 858, - 859, 860, 864, 865, 866, 867, 871, 876, 877, 881, - 885, 889, 901, 902, 912, 913, 917, 918, 927, 928, - 933, 944, 953, 954, 959, 960, 965, 966, 970, 971, - 976, 977, 985, 993, 1003, 1022, 1023, 1024, 1025, 1026, - 1027, 1028, 1029, 1030, 1031, 1036, 1045, 1046, 1051, 1052 + 0, 251, 251, 272, 278, 287, 291, 295, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 319, 320, 325, + 326, 330, 334, 346, 353, 356, 360, 372, 381, 385, + 395, 398, 412, 419, 426, 437, 438, 442, 443, 447, + 454, 455, 456, 457, 467, 473, 479, 487, 488, 497, + 506, 519, 526, 537, 538, 548, 557, 558, 562, 574, + 575, 576, 593, 594, 598, 599, 603, 613, 630, 634, + 635, 636, 640, 641, 645, 657, 658, 662, 666, 667, + 670, 675, 676, 680, 685, 689, 690, 693, 694, 698, + 699, 703, 707, 708, 709, 715, 716, 720, 721, 722, + 723, 724, 725, 726, 727, 734, 735, 739, 740, 744, + 754, 755, 756, 757, 758, 762, 763, 764, 765, 766, + 767, 768, 769, 770, 771, 775, 776, 780, 781, 782, + 783, 784, 788, 789, 790, 791, 792, 793, 794, 795, + 796, 797, 798, 802, 803, 807, 808, 809, 810, 816, + 817, 818, 819, 823, 824, 828, 829, 833, 834, 835, + 836, 837, 838, 839, 843, 844, 848, 852, 853, 854, + 855, 856, 857, 860, 864, 868, 872, 873, 874, 875, + 879, 880, 881, 882, 886, 891, 892, 896, 900, 904, + 916, 917, 927, 928, 932, 933, 942, 943, 948, 959, + 968, 969, 974, 975, 980, 981, 985, 986, 991, 992, + 1000, 1008, 1018, 1037, 1038, 1039, 1040, 1041, 1042, 1043, + 1044, 1045, 1046, 1051, 1060, 1061, 1066, 1067 }; #endif @@ -725,21 +735,22 @@ static const char *const yytname[] = "BETWEEN", "CASCADE", "COLUMNS", "CONTROL", "DEFAULT", "EXECUTE", "EXPLAIN", "HISTORY", "INTEGER", "NATURAL", "PREPARE", "PRIMARY", "SCHEMAS", "SPATIAL", "VIRTUAL", "BEFORE", "COLUMN", "CREATE", "DELETE", - "DIRECT", "DOUBLE", "ESCAPE", "EXCEPT", "EXISTS", "GLOBAL", "HAVING", - "IMPORT", "INSERT", "ISNULL", "OFFSET", "RENAME", "SCHEMA", "SELECT", - "SORTED", "TABLES", "UNIQUE", "UNLOAD", "UPDATE", "VALUES", "AFTER", - "ALTER", "CROSS", "DELTA", "GROUP", "INDEX", "INNER", "LIMIT", "LOCAL", - "MERGE", "MINUS", "ORDER", "OUTER", "RIGHT", "TABLE", "UNION", "USING", - "WHERE", "CALL", "CASE", "DATE", "DESC", "DROP", "ELSE", "FILE", "FROM", - "FULL", "HASH", "HINT", "INTO", "JOIN", "LEFT", "LIKE", "LOAD", "NULL", - "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", "ARRAY", "CONCAT", "ILIKE", "'='", "EQUALS", "NOTEQUALS", - "'<'", "'>'", "LESS", "GREATER", "LESSEQ", "GREATEREQ", "NOTNULL", "'+'", - "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", - "'.'", "';'", "','", "'?'", "$accept", "input", "statement_list", - "statement", "preparable_statement", "opt_hints", "hint_list", "hint", + "DIRECT", "DOUBLE", "ESCAPE", "EXCEPT", "EXISTS", "EXTRACT", "GLOBAL", + "HAVING", "IMPORT", "INSERT", "ISNULL", "OFFSET", "RENAME", "SCHEMA", + "SELECT", "SORTED", "TABLES", "UNIQUE", "UNLOAD", "UPDATE", "VALUES", + "AFTER", "ALTER", "CROSS", "DELTA", "GROUP", "INDEX", "INNER", "LIMIT", + "LOCAL", "MERGE", "MINUS", "ORDER", "OUTER", "RIGHT", "TABLE", "UNION", + "USING", "WHERE", "CALL", "CASE", "DATE", "DESC", "DROP", "ELSE", "FILE", + "FROM", "FULL", "HASH", "HINT", "INTO", "JOIN", "LEFT", "LIKE", "LOAD", + "NULL", "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", "ARRAY", "CONCAT", "ILIKE", "SECOND", "MINUTE", "HOUR", + "DAY", "MONTH", "YEAR", "'='", "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", "show_statement", "create_statement", "opt_not_exists", "column_def_commalist", @@ -754,9 +765,10 @@ static const char *const yytname[] = "opt_limit", "expr_list", "literal_list", "expr_alias", "expr", "operand", "scalar_expr", "unary_expr", "binary_expr", "logic_expr", "in_expr", "case_expr", "case_list", "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", + "function_expr", "extract_expr", "datetime_field", "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", "table_alias", "opt_table_alias", "alias", "opt_alias", "join_clause", "opt_join_type", @@ -781,67 +793,69 @@ 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, 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 + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 61, 388, 389, 60, 62, 390, 391, + 392, 393, 394, 43, 45, 42, 47, 37, 94, 395, + 91, 93, 40, 41, 46, 59, 44, 63 }; # endif -#define YYPACT_NINF -304 +#define YYPACT_NINF -321 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-304))) + (!!((Yystate) == (-321))) -#define YYTABLE_NINF -215 +#define YYTABLE_NINF -223 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-215))) + (!!((Yytable_value) == (-223))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 237, 26, 38, 64, 95, -33, 19, 53, 42, -9, - 38, -25, 15, -35, 136, -10, -304, 60, 60, -304, - -304, -304, -304, -304, -304, -304, -304, -304, -304, 23, - -304, 9, 158, 33, -304, 51, 141, 81, 81, 38, - 107, 38, 220, 219, 121, -304, 125, 125, 38, -304, - 87, 105, -304, 237, -304, 172, -304, -304, -304, -304, - -304, -35, 159, 147, -35, -17, -304, 262, 7, 265, - 161, 38, 38, 206, -304, 205, 142, -304, -304, -304, - 173, 285, 253, 38, 38, -304, -304, -304, -304, 149, - -304, 235, -304, -304, -304, 173, 235, 220, 22, -304, - -304, -304, -304, -304, -304, -94, -304, -304, -304, -304, - -304, -304, -304, -304, 267, -60, 142, 173, -304, 305, - 310, 47, -58, 169, 116, 183, 176, 199, -304, 167, - 243, 178, -304, 4, 238, -304, -304, -304, -304, -304, - -304, -304, -304, -304, -304, -304, -304, -304, -304, 190, - -56, -304, -304, -304, -304, 326, -17, 182, -304, -52, - -17, -304, 279, 286, 289, -304, 7, -304, 226, 336, - 227, -48, 255, -304, -304, -71, 198, -304, 14, 16, - 296, 173, -7, 96, 201, 199, 351, 173, 160, 204, - -72, 13, 206, -304, 173, -304, 173, 349, 173, -304, - -304, 199, -304, 199, -61, 208, 0, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 220, 173, 285, -304, 209, -18, -304, -304, - 173, -304, -304, -304, -304, 220, 220, 220, -304, 277, - -15, 46, -304, -35, 38, -304, 355, 7, -304, 173, - -304, -304, 213, 113, 130, 173, 173, -304, 296, 272, - -20, -304, -304, -35, -304, 322, -304, 212, -304, 12, - -304, 309, -304, -304, -304, 268, 297, 375, 199, 228, - 167, -304, 298, 246, 375, 375, 375, 375, 399, 399, - 399, 399, 160, 160, 40, 40, 40, -11, 242, -48, - -304, 7, -304, 326, -304, -304, -304, -304, 305, -304, - -304, -304, -304, -304, -304, 336, -304, -304, -304, 71, - 72, -304, 173, 173, -304, -63, 117, 249, -304, 251, - 306, -304, -304, -304, 330, 332, 333, 316, 13, 400, - -304, -304, -304, 290, -304, 199, 375, 167, 264, 91, - -304, -304, 100, -304, -304, -304, -304, -304, -48, 63, - -304, 173, -304, 12, 13, -304, -304, -304, 13, 325, - 269, 173, 351, 270, 101, -304, -304, -304, -304, -48, - -304, -304, 493, 310, -34, -304, -304, 273, 173, 129, - 173, -304, 17, -48, -304, -304, -48, 266, 271, -304 + 276, 17, 42, 52, 63, -33, 10, 19, 29, 62, + 42, -24, 30, -38, 129, -18, -321, 78, 78, -321, + -321, -321, -321, -321, -321, -321, -321, -321, -321, 23, + -321, 28, 127, 26, -321, 27, 111, 69, 69, 42, + 117, 42, 202, 197, 122, -321, 99, 99, 42, -321, + 70, 82, -321, 276, -321, 157, -321, -321, -321, -321, + -321, -38, 141, 140, -38, -5, -321, 255, 20, 259, + 154, 42, 42, 194, -321, 189, 120, -321, -321, -321, + 121, 271, 236, 42, 42, -321, -321, -321, -321, 130, + -321, 225, -321, -321, -321, 121, 225, 202, 7, -321, + -321, -321, -321, -321, -321, 74, -321, -321, -321, -321, + -321, -321, -321, -321, 257, -77, 120, 121, -321, 291, + 296, 66, 5, 164, 167, 11, 184, 174, 178, -321, + 161, 245, 169, -321, 16, 250, -321, -321, -321, -321, + -321, -321, -321, -321, -321, -321, -321, -321, -321, -321, + -321, 199, -44, -321, -321, -321, -321, 331, -5, 182, + -321, -25, -5, -321, 293, 295, 301, -321, 20, -321, + 238, 349, 239, -23, 267, -321, -321, 76, 204, -321, + 22, 15, 308, 348, 121, 158, 114, 207, 178, 379, + 121, 103, 211, -76, 6, 194, -321, 121, -321, 121, + 364, 121, -321, -321, 178, -321, 178, -49, 219, 3, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 202, 121, 271, -321, 221, + 80, -321, -321, 121, -321, -321, -321, -321, 202, 202, + 202, -321, 297, -4, 88, -321, -38, 42, -321, 371, + 20, -321, 121, -321, -321, 224, -321, -321, -321, -321, + -321, -321, 298, -46, 115, 121, 121, -321, 308, 290, + 59, -321, -321, -38, -321, 274, -321, 226, -321, 8, + -321, 320, -321, -321, -321, 285, 317, 420, 178, 237, + 161, -321, 310, 242, 420, 420, 420, 420, 450, 450, + 450, 450, 103, 103, 48, 48, 48, 67, 248, -23, + -321, 20, -321, 331, -321, -321, -321, -321, 291, -321, + -321, -321, -321, -321, -321, 349, -321, -321, -321, 106, + 128, -321, 121, 121, 121, -321, 243, 104, 249, -321, + 251, 316, -321, -321, -321, 338, 339, 341, 324, 6, + 410, -321, -321, -321, 302, -321, 178, 420, 161, 261, + 134, -321, -321, 136, -321, -321, -321, -321, -321, -68, + -23, 244, -321, 121, -321, 8, 6, -321, -321, -321, + 6, 346, 265, 121, 379, 266, 148, -321, -321, -321, + -321, -321, -23, -321, -321, 386, 296, -36, -321, -321, + 269, 121, 159, 121, -321, 25, -23, -321, -321, -23, + 268, 270, -321 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -850,75 +864,77 @@ static const yytype_int16 yypact[] = static const yytype_uint8 yydefact[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, - 0, 0, 0, 0, 0, 217, 3, 18, 18, 16, + 0, 0, 0, 0, 0, 225, 3, 18, 18, 16, 9, 7, 10, 15, 12, 13, 11, 14, 8, 59, - 60, 88, 0, 192, 50, 25, 0, 36, 36, 0, - 0, 0, 0, 76, 0, 191, 48, 48, 0, 30, - 0, 0, 1, 216, 2, 0, 6, 5, 70, 71, + 60, 88, 0, 200, 50, 25, 0, 36, 36, 0, + 0, 0, 0, 76, 0, 199, 48, 48, 0, 30, + 0, 0, 1, 224, 2, 0, 6, 5, 70, 71, 69, 0, 73, 0, 0, 104, 46, 0, 0, 0, - 0, 0, 0, 82, 28, 0, 54, 179, 95, 75, + 0, 0, 0, 82, 28, 0, 54, 187, 95, 75, 0, 0, 0, 0, 0, 31, 63, 62, 4, 0, 64, 88, 65, 72, 68, 0, 88, 0, 0, 66, - 193, 176, 177, 180, 181, 0, 107, 172, 173, 178, - 174, 175, 24, 23, 0, 0, 54, 0, 49, 0, - 0, 0, 168, 0, 0, 0, 0, 0, 170, 0, - 79, 77, 105, 201, 110, 117, 118, 119, 112, 114, - 120, 113, 131, 121, 122, 116, 111, 124, 125, 0, - 82, 56, 47, 44, 45, 0, 104, 87, 89, 94, - 104, 99, 101, 100, 97, 26, 0, 35, 0, 0, - 0, 81, 0, 29, 218, 0, 0, 52, 76, 0, - 0, 0, 0, 0, 0, 0, 127, 0, 126, 0, - 0, 0, 82, 78, 0, 199, 0, 0, 0, 200, - 109, 0, 128, 0, 0, 0, 0, 0, 0, 0, + 201, 184, 185, 188, 189, 0, 107, 180, 181, 186, + 182, 183, 24, 23, 0, 0, 54, 0, 49, 0, + 0, 0, 176, 0, 0, 0, 0, 0, 0, 178, + 0, 79, 77, 105, 209, 110, 117, 118, 119, 112, + 114, 120, 113, 132, 121, 122, 123, 116, 111, 125, + 126, 0, 82, 56, 47, 44, 45, 0, 104, 87, + 89, 94, 104, 99, 101, 100, 97, 26, 0, 35, + 0, 0, 0, 81, 0, 29, 226, 0, 0, 52, + 76, 0, 0, 0, 0, 0, 0, 0, 0, 128, + 0, 127, 0, 0, 0, 82, 78, 0, 207, 0, + 0, 0, 208, 109, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 55, 21, 0, 19, 61, - 0, 93, 92, 91, 67, 0, 0, 0, 108, 0, - 0, 0, 37, 0, 0, 53, 0, 0, 163, 0, - 169, 171, 0, 0, 0, 0, 0, 150, 0, 0, - 0, 123, 115, 0, 80, 182, 184, 0, 186, 197, - 185, 84, 106, 142, 198, 143, 0, 138, 0, 0, - 0, 129, 0, 141, 140, 156, 157, 158, 159, 160, - 161, 162, 133, 132, 135, 134, 136, 137, 0, 58, + 0, 0, 0, 0, 0, 0, 0, 0, 55, 21, + 0, 19, 61, 0, 93, 92, 91, 67, 0, 0, + 0, 108, 0, 0, 0, 37, 0, 0, 53, 0, + 0, 164, 0, 177, 179, 0, 167, 168, 169, 170, + 171, 172, 0, 0, 0, 0, 0, 151, 0, 0, + 0, 124, 115, 0, 80, 190, 192, 0, 194, 205, + 193, 84, 106, 143, 206, 144, 0, 139, 0, 0, + 0, 130, 0, 142, 141, 157, 158, 159, 160, 161, + 162, 163, 134, 133, 136, 135, 137, 138, 0, 58, 57, 0, 17, 0, 90, 103, 102, 98, 0, 41, - 42, 43, 40, 39, 33, 0, 34, 27, 219, 0, - 0, 154, 0, 0, 148, 0, 0, 0, 165, 0, - 0, 213, 205, 211, 209, 212, 207, 0, 0, 0, - 196, 190, 194, 0, 74, 0, 139, 0, 0, 0, - 130, 166, 0, 20, 32, 38, 51, 164, 152, 0, - 151, 0, 155, 197, 0, 208, 210, 206, 0, 183, - 198, 0, 167, 0, 0, 146, 144, 22, 149, 153, - 187, 202, 214, 0, 86, 147, 145, 0, 0, 0, - 0, 83, 0, 215, 203, 195, 85, 168, 0, 204 + 42, 43, 40, 39, 33, 0, 34, 27, 227, 0, + 0, 155, 0, 0, 0, 149, 0, 0, 0, 173, + 0, 0, 221, 213, 219, 217, 220, 215, 0, 0, + 0, 204, 198, 202, 0, 74, 0, 140, 0, 0, + 0, 131, 174, 0, 20, 32, 38, 51, 165, 0, + 153, 0, 152, 0, 156, 205, 0, 216, 218, 214, + 0, 191, 206, 0, 175, 0, 0, 147, 145, 22, + 166, 150, 154, 195, 210, 222, 0, 86, 148, 146, + 0, 0, 0, 0, 83, 0, 223, 211, 203, 85, + 176, 0, 212 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -304, -304, -304, 366, -304, 410, -304, 126, -304, -304, - -304, -304, -304, 124, -304, -304, 403, -304, 127, -304, - -304, 396, -304, -304, -304, 329, -304, -304, 222, -200, - 20, 383, -13, 417, -304, -304, 163, 274, -304, -304, - -304, -106, -304, -304, 78, -304, 221, -304, -304, -49, - -181, -224, 256, -93, -68, -304, -304, -304, -304, -304, - -304, 275, -304, -304, -304, -304, -304, -304, 57, -65, - -115, -304, -37, -304, -304, -304, -303, 89, -304, -304, - -304, -1, -304, 92, 321, -304, -304, -304, -304, -304, - 73 + -321, -321, -321, 373, -321, 406, -321, 118, -321, -321, + -321, -321, -321, 119, -321, -321, 394, -321, 110, -321, + -321, 391, -321, -321, -321, 323, -321, -321, 213, -185, + 9, 377, -13, 413, -321, -321, 253, 292, -321, -321, + -321, -109, -321, -321, 37, -321, 214, -321, -321, -69, + -184, -230, 273, -94, -70, -321, -321, -321, -321, -321, + -321, 263, -321, -321, -321, -321, -321, -321, -321, -321, + 41, -65, -115, -321, -34, -321, -321, -321, -320, 95, + -321, -321, -321, 0, -321, 98, 347, -321, -321, -321, + -321, -321, 86 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 14, 15, 16, 17, 56, 227, 228, 18, 113, - 19, 20, 75, 172, 21, 22, 71, 241, 242, 313, - 23, 83, 24, 25, 26, 121, 27, 150, 151, 28, - 29, 91, 30, 61, 62, 94, 31, 80, 130, 192, - 193, 118, 344, 391, 65, 157, 158, 233, 43, 99, - 131, 105, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 183, 141, 142, 143, 144, 145, 146, 147, 148, - 107, 108, 109, 110, 111, 264, 265, 266, 267, 268, - 44, 269, 340, 341, 342, 200, 270, 337, 394, 54, - 175 + -1, 14, 15, 16, 17, 56, 230, 231, 18, 113, + 19, 20, 75, 174, 21, 22, 71, 244, 245, 323, + 23, 83, 24, 25, 26, 121, 27, 152, 153, 28, + 29, 91, 30, 61, 62, 94, 31, 80, 131, 195, + 196, 118, 355, 404, 65, 159, 160, 236, 43, 99, + 132, 105, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 186, 142, 143, 144, 145, 262, 146, 147, 148, + 149, 150, 107, 108, 109, 110, 111, 274, 275, 276, + 277, 278, 44, 279, 351, 352, 353, 203, 280, 348, + 407, 54, 177 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -926,207 +942,208 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 51, 34, 159, 106, 173, 78, 260, 195, 390, 45, - 309, 101, 102, 77, 9, 195, 33, 117, 58, 250, - 397, 168, 310, 319, 171, 231, 79, 278, 77, 97, - 196, 182, 58, 50, 48, 369, 190, 37, 73, 196, - 76, 33, 360, 316, 225, 46, 98, 85, 59, 198, - 196, 232, 165, 32, 196, 166, 279, 186, 198, 188, - 161, 164, 59, 329, 38, 382, 49, 35, 320, 198, - 115, 116, 47, 198, 262, 245, 63, 352, 246, 311, - 60, 90, 153, 154, 90, 169, 271, 178, 253, 179, - 281, 181, 312, 224, 60, 196, 9, 103, 36, 349, - 39, 238, 176, 273, 42, 275, 196, 229, 177, 282, - 13, 234, 162, 207, 198, 194, 189, 186, 197, 122, - 101, 102, 77, 163, 328, 198, 339, 41, 302, 194, - 299, 303, 222, 276, 40, 277, 52, 159, 53, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 251, 128, 123, 104, 263, 55, - 248, 66, 325, 326, 207, 196, 374, 252, 378, 156, - 122, 101, 102, 77, 160, 255, 122, 101, 102, 77, - 67, 221, 106, 222, 198, 298, 122, 101, 102, 77, - 384, 124, 314, 173, 256, 315, 68, 70, 305, 306, - 307, 257, 122, 101, 102, 77, 103, 123, 322, 323, - 346, 74, 361, 123, 181, 196, 9, 356, 357, 196, - 166, 194, 69, 184, 92, 125, 77, 92, 256, 358, - 359, 79, 81, 86, 198, 324, 106, 376, 198, 126, - 194, 82, 124, 317, 1, 327, 377, 386, 124, 166, - 194, 87, 2, 127, 128, 201, 89, 103, 124, 3, - 93, 129, 95, 103, 4, 100, 104, 348, 379, 112, - 114, 5, 6, 103, 124, 395, 125, 372, 246, 117, - 7, 8, 125, 202, 207, 119, 9, 120, 149, 103, - 126, 10, 185, 152, 155, 393, 126, 396, 218, 219, - 220, 221, 63, 222, 127, 128, 126, 167, 185, 101, - 127, 128, 129, 174, 180, 11, 223, 104, 129, 187, - 127, 128, 126, 104, 191, 235, 203, 194, 129, 226, - 12, 230, 236, 104, 373, 237, 127, 128, 239, 240, - 244, 243, 202, 247, 129, 9, 258, 204, 330, 104, - 261, 330, 274, 280, 301, 205, 206, 308, 318, 321, - 278, 338, 207, 208, 209, 210, 211, 212, 213, 343, - 196, 214, 215, 347, 216, 217, 218, 219, 220, 221, - 331, 222, 13, 331, 332, 203, 351, 332, 350, 222, - 333, 334, 364, 333, 334, 362, 202, 363, 365, 345, - 366, 367, 368, 370, 335, 371, 259, 335, -214, 336, - 375, -214, 336, 179, 383, 206, 385, 399, 392, 88, - 202, 207, 208, 209, 210, 211, 212, 213, 57, 353, - 214, 215, 354, 216, 217, 218, 219, 220, 221, 203, - 222, 72, 355, 84, 202, 170, 300, 96, 64, 398, - 272, 304, 249, 381, 199, 380, 389, 254, 0, 0, - 259, 0, 0, -215, 0, 0, 0, 0, 0, 206, - 0, -188, 0, 0, -189, 207, 208, 209, 210, 211, - 212, 213, 0, 0, 214, 215, 0, 216, 217, 218, - 219, 220, 221, 206, 222, 0, 0, 0, 0, 207, - -215, -215, -215, -215, 212, 213, 0, 0, 214, 215, - 0, 216, 217, 218, 219, 220, 221, 206, 222, 330, - 0, 0, 0, 207, 0, 0, 0, 0, -215, -215, - 0, 0, -215, -215, 0, 216, 217, 218, 219, 220, - 221, 0, 222, 0, 0, 0, 0, 0, 0, 0, - 0, 331, 0, 0, 0, 332, 0, 0, 0, 0, - 0, 333, 334, 0, 0, 387, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 335, 0, 0, 0, 0, - 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 388 + 51, 161, 34, 106, 175, 170, 270, 403, 78, 33, + 45, 198, 9, 77, 122, 101, 102, 77, 253, 198, + 329, 319, 50, 173, 101, 102, 77, 199, 410, 381, + 117, 185, 58, 320, 79, 199, 193, 58, 37, 73, + 288, 76, 97, 228, 32, 33, 201, 46, 85, 48, + 333, 123, 124, 234, 201, 35, 189, 199, 191, 98, + 395, 326, 59, 163, 166, 38, 36, 59, 330, 289, + 90, 115, 116, 90, 47, 171, 201, 272, 199, 235, + 199, 363, 49, 155, 156, 390, 281, 125, 340, 232, + 263, 321, 39, 237, 291, 60, 63, 201, 164, 201, + 60, 40, 103, 241, 322, 283, 360, 285, 179, 165, + 184, 103, 227, 292, 13, 41, 9, 192, 189, 199, + 197, 126, 178, 350, 122, 101, 102, 77, 158, 52, + 66, 200, 309, 162, 286, 127, 287, 53, 201, 161, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 128, 129, 180, 273, 181, + 254, 123, 124, 130, 122, 101, 102, 77, 104, 255, + 129, 336, 337, 210, 386, 251, 42, 104, 55, 68, + 67, 122, 101, 102, 77, 106, 70, 122, 101, 102, + 77, 308, 210, 69, 265, 334, 224, 125, 225, 397, + 373, 123, 124, 175, 315, 316, 317, 199, 77, 79, + 339, 9, 103, 266, 266, 197, 82, 225, 357, 124, + 267, 335, 74, 86, 187, 124, 201, 167, 210, 248, + 168, 126, 249, 312, 81, 87, 313, 125, 369, 370, + 371, 324, 89, 93, 325, 127, 106, 327, 221, 222, + 223, 224, 103, 225, 125, 338, 95, 184, 100, 367, + 125, 199, 168, 112, 114, 128, 129, 204, 117, 103, + 119, 126, 120, 130, 151, 103, 154, 359, 104, 392, + 201, 368, 157, 1, 197, 127, 384, 388, 188, 389, + 197, 2, 168, 63, 188, 101, 205, 169, 3, 176, + 341, 399, 127, 4, 197, 128, 129, 406, 127, 409, + 5, 6, 408, 130, 92, 249, 182, 92, 104, 183, + 7, 8, 128, 129, 190, 197, 9, 194, 128, 129, + 130, 10, 226, 342, 229, 104, 130, 343, 233, 206, + 238, 104, 239, 344, 345, 385, 199, 199, 240, 372, + 391, 242, 243, 247, 246, 11, 250, 346, 9, 268, + 207, -222, 347, 205, 271, 201, 201, 284, 208, 209, + 12, 290, 341, 311, 328, 210, 211, 331, 318, 288, + 332, 354, 349, 212, 213, 214, 215, 216, 199, 358, + 217, 218, 225, 219, 220, 221, 222, 223, 224, 362, + 225, 361, 374, 376, 375, 342, 206, 377, 378, 343, + 379, 380, 341, 382, 387, 344, 345, 396, 383, 398, + 356, 405, 181, 412, 57, 205, 88, 269, 13, 346, + -196, 364, 72, -222, 347, 366, 209, 365, 84, 172, + 310, 96, 210, 211, 64, 342, 411, 314, 264, 343, + 212, 213, 214, 215, 216, 344, 345, 217, 218, 400, + 219, 220, 221, 222, 223, 224, 205, 225, 206, 346, + 282, 394, 252, 393, 347, 256, 257, 258, 259, 260, + 261, 202, 402, 0, 0, 0, 0, 0, 0, 269, + 0, 0, 0, 0, 0, 0, 205, 0, 209, 0, + 0, 0, -197, 0, 210, 211, 0, 401, 0, -223, + 0, 0, 212, 213, 214, 215, 216, 0, 0, 217, + 218, 0, 219, 220, 221, 222, 223, 224, 0, 225, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, + 0, 0, 0, 0, 0, 210, -223, 0, 0, 0, + 0, 0, 0, -223, -223, -223, 215, 216, 0, 0, + 217, 218, 0, 219, 220, 221, 222, 223, 224, 209, + 225, 0, 0, 0, 0, 210, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -223, -223, 0, 0, + -223, -223, 0, 219, 220, 221, 222, 223, 224, 0, + 225 }; static const yytype_int16 yycheck[] = { - 13, 2, 95, 68, 119, 42, 187, 3, 42, 10, - 25, 4, 5, 6, 49, 3, 3, 73, 9, 3, - 3, 81, 37, 247, 117, 77, 12, 88, 6, 46, - 102, 124, 9, 13, 19, 338, 129, 70, 39, 102, - 41, 3, 105, 243, 150, 70, 63, 48, 39, 121, - 102, 103, 146, 27, 102, 149, 117, 125, 121, 127, - 97, 98, 39, 263, 97, 368, 51, 3, 249, 121, - 71, 72, 97, 121, 146, 146, 67, 301, 149, 94, - 71, 61, 83, 84, 64, 145, 192, 145, 181, 147, - 90, 98, 107, 149, 71, 102, 49, 90, 3, 280, - 81, 166, 55, 196, 113, 198, 102, 156, 121, 109, - 145, 160, 90, 124, 121, 149, 129, 185, 114, 3, - 4, 5, 6, 101, 144, 121, 114, 85, 146, 149, - 223, 149, 143, 201, 81, 203, 0, 230, 148, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 138, 138, 40, 150, 145, 99, - 146, 3, 255, 256, 124, 102, 347, 180, 105, 91, - 3, 4, 5, 6, 96, 79, 3, 4, 5, 6, - 147, 141, 247, 143, 121, 222, 3, 4, 5, 6, - 371, 75, 146, 308, 98, 149, 145, 116, 235, 236, - 237, 105, 3, 4, 5, 6, 90, 40, 95, 79, - 278, 104, 95, 40, 98, 102, 49, 146, 146, 102, - 149, 149, 81, 40, 61, 109, 6, 64, 98, 322, - 323, 12, 111, 146, 121, 105, 301, 146, 121, 123, - 149, 116, 75, 244, 7, 258, 146, 146, 75, 149, - 149, 146, 15, 137, 138, 17, 84, 90, 75, 22, - 101, 145, 115, 90, 27, 3, 150, 280, 361, 4, - 109, 34, 35, 90, 75, 146, 109, 345, 149, 73, - 43, 44, 109, 45, 124, 80, 49, 145, 3, 90, - 123, 54, 109, 40, 145, 388, 123, 390, 138, 139, - 140, 141, 67, 143, 137, 138, 123, 40, 109, 4, - 137, 138, 145, 3, 145, 78, 126, 150, 145, 143, - 137, 138, 123, 150, 81, 46, 88, 149, 145, 3, - 93, 149, 46, 150, 347, 46, 137, 138, 112, 3, - 85, 114, 45, 145, 145, 49, 145, 109, 26, 150, - 146, 26, 3, 145, 145, 117, 118, 80, 3, 146, - 88, 149, 124, 125, 126, 127, 128, 129, 130, 60, - 102, 133, 134, 145, 136, 137, 138, 139, 140, 141, - 58, 143, 145, 58, 62, 88, 144, 62, 90, 143, - 68, 69, 86, 68, 69, 146, 45, 146, 68, 102, - 68, 68, 86, 3, 82, 115, 109, 82, 86, 87, - 146, 86, 87, 147, 145, 118, 146, 146, 145, 53, - 45, 124, 125, 126, 127, 128, 129, 130, 18, 303, - 133, 134, 308, 136, 137, 138, 139, 140, 141, 88, - 143, 38, 315, 47, 45, 116, 224, 64, 31, 392, - 194, 230, 178, 364, 133, 363, 383, 182, -1, -1, - 109, -1, -1, 88, -1, -1, -1, -1, -1, 118, - -1, 149, -1, -1, 149, 124, 125, 126, 127, 128, - 129, 130, -1, -1, 133, 134, -1, 136, 137, 138, - 139, 140, 141, 118, 143, -1, -1, -1, -1, 124, - 125, 126, 127, 128, 129, 130, -1, -1, 133, 134, - -1, 136, 137, 138, 139, 140, 141, 118, 143, 26, - -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, -1, -1, -1, - -1, 58, -1, -1, -1, 62, -1, -1, -1, -1, - -1, 68, 69, -1, -1, 72, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, - 87, -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, 120 + 13, 95, 2, 68, 119, 82, 190, 43, 42, 3, + 10, 3, 50, 6, 3, 4, 5, 6, 3, 3, + 250, 25, 13, 117, 4, 5, 6, 103, 3, 349, + 74, 125, 9, 37, 12, 103, 130, 9, 71, 39, + 89, 41, 47, 152, 27, 3, 122, 71, 48, 19, + 96, 40, 41, 78, 122, 3, 126, 103, 128, 64, + 380, 246, 39, 97, 98, 98, 3, 39, 252, 118, + 61, 71, 72, 64, 98, 152, 122, 153, 103, 104, + 103, 311, 52, 83, 84, 153, 195, 76, 273, 158, + 184, 95, 82, 162, 91, 72, 68, 122, 91, 122, + 72, 82, 91, 168, 108, 199, 290, 201, 121, 102, + 99, 91, 156, 110, 152, 86, 50, 130, 188, 103, + 156, 110, 56, 115, 3, 4, 5, 6, 91, 0, + 3, 115, 226, 96, 204, 124, 206, 155, 122, 233, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 144, 145, 152, 152, 154, + 145, 40, 41, 152, 3, 4, 5, 6, 157, 182, + 145, 265, 266, 125, 358, 153, 114, 157, 100, 152, + 154, 3, 4, 5, 6, 250, 117, 3, 4, 5, + 6, 225, 125, 82, 80, 80, 148, 76, 150, 383, + 96, 40, 41, 318, 238, 239, 240, 103, 6, 12, + 151, 50, 91, 99, 99, 156, 117, 150, 288, 41, + 106, 106, 105, 153, 40, 41, 122, 153, 125, 153, + 156, 110, 156, 153, 112, 153, 156, 76, 332, 333, + 334, 153, 85, 102, 156, 124, 311, 247, 145, 146, + 147, 148, 91, 150, 76, 268, 116, 99, 3, 153, + 76, 103, 156, 4, 110, 144, 145, 17, 74, 91, + 81, 110, 152, 152, 3, 91, 40, 290, 157, 373, + 122, 153, 152, 7, 156, 124, 356, 153, 110, 153, + 156, 15, 156, 68, 110, 4, 46, 40, 22, 3, + 26, 153, 124, 27, 156, 144, 145, 401, 124, 403, + 34, 35, 153, 152, 61, 156, 152, 64, 157, 152, + 44, 45, 144, 145, 150, 156, 50, 82, 144, 145, + 152, 55, 133, 59, 3, 157, 152, 63, 156, 89, + 47, 157, 47, 69, 70, 358, 103, 103, 47, 106, + 106, 113, 3, 86, 115, 79, 152, 83, 50, 152, + 110, 87, 88, 46, 153, 122, 122, 3, 118, 119, + 94, 152, 26, 152, 3, 125, 126, 153, 81, 89, + 82, 61, 156, 133, 134, 135, 136, 137, 103, 152, + 140, 141, 150, 143, 144, 145, 146, 147, 148, 151, + 150, 91, 153, 87, 153, 59, 89, 69, 69, 63, + 69, 87, 26, 3, 153, 69, 70, 152, 116, 153, + 103, 152, 154, 153, 18, 46, 53, 110, 152, 83, + 156, 313, 38, 87, 88, 325, 119, 318, 47, 116, + 227, 64, 125, 126, 31, 59, 405, 233, 185, 63, + 133, 134, 135, 136, 137, 69, 70, 140, 141, 73, + 143, 144, 145, 146, 147, 148, 46, 150, 89, 83, + 197, 376, 180, 375, 88, 127, 128, 129, 130, 131, + 132, 134, 396, -1, -1, -1, -1, -1, -1, 110, + -1, -1, -1, -1, -1, -1, 46, -1, 119, -1, + -1, -1, 156, -1, 125, 126, -1, 121, -1, 89, + -1, -1, 133, 134, 135, 136, 137, -1, -1, 140, + 141, -1, 143, 144, 145, 146, 147, 148, -1, 150, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 119, + -1, -1, -1, -1, -1, 125, 126, -1, -1, -1, + -1, -1, -1, 133, 134, 135, 136, 137, -1, -1, + 140, 141, -1, 143, 144, 145, 146, 147, 148, 119, + 150, -1, -1, -1, -1, 125, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 136, 137, -1, -1, + 140, 141, -1, 143, 144, 145, 146, 147, 148, -1, + 150 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 7, 15, 22, 27, 34, 35, 43, 44, 49, - 54, 78, 93, 145, 152, 153, 154, 155, 159, 161, - 162, 165, 166, 171, 173, 174, 175, 177, 180, 181, - 183, 187, 27, 3, 232, 3, 3, 70, 97, 81, - 81, 85, 113, 199, 231, 232, 70, 97, 19, 51, - 181, 183, 0, 148, 240, 99, 156, 156, 9, 39, - 71, 184, 185, 67, 184, 195, 3, 147, 145, 81, - 116, 167, 167, 232, 104, 163, 232, 6, 223, 12, - 188, 111, 116, 172, 172, 232, 146, 146, 154, 84, - 181, 182, 187, 101, 186, 115, 182, 46, 63, 200, - 3, 4, 5, 90, 150, 202, 220, 221, 222, 223, - 224, 225, 4, 160, 109, 232, 232, 73, 192, 80, - 145, 176, 3, 40, 75, 109, 123, 137, 138, 145, - 189, 201, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 213, 214, 215, 216, 217, 218, 219, 220, 3, - 178, 179, 40, 232, 232, 145, 195, 196, 197, 204, - 195, 223, 90, 101, 223, 146, 149, 40, 81, 145, - 176, 204, 164, 221, 3, 241, 55, 183, 145, 147, - 145, 98, 204, 212, 40, 109, 205, 143, 205, 183, - 204, 81, 190, 191, 149, 3, 102, 114, 121, 235, - 236, 17, 45, 88, 109, 117, 118, 124, 125, 126, - 127, 128, 129, 130, 133, 134, 136, 137, 138, 139, - 140, 141, 143, 126, 149, 192, 3, 157, 158, 200, - 149, 77, 103, 198, 200, 46, 46, 46, 220, 112, - 3, 168, 169, 114, 85, 146, 149, 145, 146, 188, - 3, 138, 183, 204, 212, 79, 98, 105, 145, 109, - 201, 146, 146, 145, 226, 227, 228, 229, 230, 232, - 237, 192, 203, 204, 3, 204, 205, 205, 88, 117, - 145, 90, 109, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 223, 204, - 179, 145, 146, 149, 197, 223, 223, 223, 80, 25, - 37, 94, 107, 170, 146, 149, 180, 232, 3, 202, - 201, 146, 95, 79, 105, 204, 204, 183, 144, 180, - 26, 58, 62, 68, 69, 82, 87, 238, 149, 114, - 233, 234, 235, 60, 193, 102, 205, 145, 183, 201, - 90, 144, 202, 158, 164, 169, 146, 146, 204, 204, - 105, 95, 146, 146, 86, 68, 68, 68, 86, 227, - 3, 115, 205, 183, 201, 146, 146, 146, 105, 204, - 234, 228, 227, 145, 201, 146, 146, 72, 120, 241, - 42, 194, 145, 204, 239, 146, 204, 3, 219, 146 + 0, 7, 15, 22, 27, 34, 35, 44, 45, 50, + 55, 79, 94, 152, 159, 160, 161, 162, 166, 168, + 169, 172, 173, 178, 180, 181, 182, 184, 187, 188, + 190, 194, 27, 3, 241, 3, 3, 71, 98, 82, + 82, 86, 114, 206, 240, 241, 71, 98, 19, 52, + 188, 190, 0, 155, 249, 100, 163, 163, 9, 39, + 72, 191, 192, 68, 191, 202, 3, 154, 152, 82, + 117, 174, 174, 241, 105, 170, 241, 6, 232, 12, + 195, 112, 117, 179, 179, 241, 153, 153, 161, 85, + 188, 189, 194, 102, 193, 116, 189, 47, 64, 207, + 3, 4, 5, 91, 157, 209, 229, 230, 231, 232, + 233, 234, 4, 167, 110, 241, 241, 74, 199, 81, + 152, 183, 3, 40, 41, 76, 110, 124, 144, 145, + 152, 196, 208, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 220, 221, 222, 223, 225, 226, 227, 228, + 229, 3, 185, 186, 40, 241, 241, 152, 202, 203, + 204, 211, 202, 232, 91, 102, 232, 153, 156, 40, + 82, 152, 183, 211, 171, 230, 3, 250, 56, 190, + 152, 154, 152, 152, 99, 211, 219, 40, 110, 212, + 150, 212, 190, 211, 82, 197, 198, 156, 3, 103, + 115, 122, 244, 245, 17, 46, 89, 110, 118, 119, + 125, 126, 133, 134, 135, 136, 137, 140, 141, 143, + 144, 145, 146, 147, 148, 150, 133, 156, 199, 3, + 164, 165, 207, 156, 78, 104, 205, 207, 47, 47, + 47, 229, 113, 3, 175, 176, 115, 86, 153, 156, + 152, 153, 195, 3, 145, 190, 127, 128, 129, 130, + 131, 132, 224, 211, 219, 80, 99, 106, 152, 110, + 208, 153, 153, 152, 235, 236, 237, 238, 239, 241, + 246, 199, 210, 211, 3, 211, 212, 212, 89, 118, + 152, 91, 110, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 232, 211, + 186, 152, 153, 156, 204, 232, 232, 232, 81, 25, + 37, 95, 108, 177, 153, 156, 187, 241, 3, 209, + 208, 153, 82, 96, 80, 106, 211, 211, 190, 151, + 187, 26, 59, 63, 69, 70, 83, 88, 247, 156, + 115, 242, 243, 244, 61, 200, 103, 212, 152, 190, + 208, 91, 151, 209, 165, 171, 176, 153, 153, 211, + 211, 211, 106, 96, 153, 153, 87, 69, 69, 69, + 87, 236, 3, 116, 212, 190, 208, 153, 153, 153, + 153, 106, 211, 243, 237, 236, 152, 208, 153, 153, + 73, 121, 250, 43, 201, 152, 211, 248, 153, 211, + 3, 228, 153 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 151, 152, 153, 153, 154, 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, 166, 166, 166, 167, 167, 168, 168, 169, - 170, 170, 170, 170, 171, 171, 171, 172, 172, 173, - 174, 175, 175, 176, 176, 177, 178, 178, 179, 180, - 180, 180, 181, 181, 182, 182, 183, 183, 184, 185, - 185, 185, 186, 186, 187, 188, 188, 189, 190, 190, - 191, 192, 192, 193, 193, 194, 194, 195, 195, 196, - 196, 197, 198, 198, 198, 199, 199, 200, 200, 200, - 200, 200, 200, 200, 200, 201, 201, 202, 202, 203, - 204, 204, 204, 204, 204, 205, 205, 205, 205, 205, - 205, 205, 205, 205, 206, 206, 207, 207, 207, 207, - 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 209, 209, 210, 210, 210, 210, 211, 211, - 211, 211, 212, 212, 213, 213, 214, 214, 214, 214, - 214, 214, 214, 215, 215, 216, 217, 218, 219, 219, - 219, 219, 220, 220, 220, 220, 221, 222, 222, 223, - 224, 225, 226, 226, 227, 227, 228, 228, 229, 229, - 230, 231, 232, 232, 233, 233, 234, 234, 235, 235, - 236, 236, 237, 237, 237, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 239, 240, 240, 241, 241 + 0, 158, 159, 160, 160, 161, 161, 161, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 163, 163, 164, + 164, 165, 165, 166, 167, 168, 168, 169, 170, 171, + 172, 172, 173, 173, 173, 174, 174, 175, 175, 176, + 177, 177, 177, 177, 178, 178, 178, 179, 179, 180, + 181, 182, 182, 183, 183, 184, 185, 185, 186, 187, + 187, 187, 188, 188, 189, 189, 190, 190, 191, 192, + 192, 192, 193, 193, 194, 195, 195, 196, 197, 197, + 198, 199, 199, 200, 200, 201, 201, 202, 202, 203, + 203, 204, 205, 205, 205, 206, 206, 207, 207, 207, + 207, 207, 207, 207, 207, 208, 208, 209, 209, 210, + 211, 211, 211, 211, 211, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 213, 213, 214, 214, 214, + 214, 214, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 216, 216, 217, 217, 217, 217, 218, + 218, 218, 218, 219, 219, 220, 220, 221, 221, 221, + 221, 221, 221, 221, 222, 222, 223, 224, 224, 224, + 224, 224, 224, 225, 226, 227, 228, 228, 228, 228, + 229, 229, 229, 229, 230, 231, 231, 232, 233, 234, + 235, 235, 236, 236, 237, 237, 238, 238, 239, 240, + 241, 241, 242, 242, 243, 243, 244, 244, 245, 245, + 246, 246, 246, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 248, 249, 249, 250, 250 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1144,16 +1161,17 @@ static const yytype_uint8 yyr2[] = 3, 2, 1, 1, 0, 2, 0, 2, 4, 2, 2, 2, 4, 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, 4, 6, - 3, 5, 4, 5, 4, 5, 3, 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, 1, 5, 1, 0, 2, 1, - 1, 0, 4, 6, 8, 1, 2, 1, 2, 1, - 2, 1, 1, 1, 0, 1, 1, 0, 1, 3 + 1, 1, 1, 1, 3, 1, 1, 2, 2, 2, + 3, 4, 1, 3, 3, 3, 3, 3, 3, 3, + 4, 3, 3, 3, 3, 5, 6, 5, 6, 4, + 6, 3, 5, 4, 5, 4, 5, 3, 3, 3, + 3, 3, 3, 3, 3, 5, 6, 1, 1, 1, + 1, 1, 1, 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, 1, 5, 1, 0, 2, 1, 1, 0, + 4, 6, 8, 1, 2, 1, 2, 1, 2, 1, + 1, 1, 0, 1, 1, 0, 1, 3 }; @@ -1650,31 +1668,31 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio switch (yytype) { case 3: /* IDENTIFIER */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ { free( (((*yyvaluep).sval)) ); } -#line 1656 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 4: /* STRING */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).sval)) ); } -#line 1662 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 5: /* FLOATVAL */ -#line 139 "bison_parser.y" /* yacc.c:1257 */ - { } -#line 1668 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 6: /* INTVAL */ -#line 139 "bison_parser.y" /* yacc.c:1257 */ - { } #line 1674 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 153: /* statement_list */ + case 4: /* STRING */ #line 142 "bison_parser.y" /* yacc.c:1257 */ + { free( (((*yyvaluep).sval)) ); } +#line 1680 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 5: /* FLOATVAL */ +#line 140 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 1686 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 6: /* INTVAL */ +#line 140 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 1692 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 160: /* statement_list */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).stmt_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).stmt_vec))) { @@ -1683,23 +1701,23 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).stmt_vec)); } -#line 1687 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1705 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 154: /* statement */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 161: /* statement */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).statement)); } -#line 1693 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1711 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 155: /* preparable_statement */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 162: /* preparable_statement */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).statement)); } -#line 1699 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1717 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 156: /* opt_hints */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ + case 163: /* opt_hints */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1708,11 +1726,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1712 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1730 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 157: /* hint_list */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ + case 164: /* hint_list */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1721,71 +1739,71 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1725 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 158: /* hint */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 1731 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 159: /* prepare_statement */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).prep_stmt)); } -#line 1737 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 160: /* prepare_target_query */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).sval)) ); } #line 1743 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 161: /* execute_statement */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).exec_stmt)); } + case 165: /* hint */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } #line 1749 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 162: /* import_statement */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).import_stmt)); } + case 166: /* prepare_statement */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).prep_stmt)); } #line 1755 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 163: /* import_file_type */ -#line 139 "bison_parser.y" /* yacc.c:1257 */ - { } + case 167: /* prepare_target_query */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ + { free( (((*yyvaluep).sval)) ); } #line 1761 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 164: /* file_path */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).sval)) ); } + case 168: /* execute_statement */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).exec_stmt)); } #line 1767 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 165: /* show_statement */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).show_stmt)); } + case 169: /* import_statement */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).import_stmt)); } #line 1773 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 166: /* create_statement */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).create_stmt)); } + case 170: /* import_file_type */ +#line 140 "bison_parser.y" /* yacc.c:1257 */ + { } #line 1779 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 167: /* opt_not_exists */ -#line 139 "bison_parser.y" /* yacc.c:1257 */ - { } + case 171: /* file_path */ +#line 142 "bison_parser.y" /* yacc.c:1257 */ + { free( (((*yyvaluep).sval)) ); } #line 1785 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 168: /* column_def_commalist */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ + case 172: /* show_statement */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).show_stmt)); } +#line 1791 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 173: /* create_statement */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).create_stmt)); } +#line 1797 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 174: /* opt_not_exists */ +#line 140 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 1803 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 175: /* column_def_commalist */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).column_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).column_vec))) { @@ -1794,53 +1812,53 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).column_vec)); } -#line 1798 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 169: /* column_def */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).column_t)); } -#line 1804 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 170: /* column_type */ -#line 139 "bison_parser.y" /* yacc.c:1257 */ - { } -#line 1810 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 171: /* drop_statement */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).drop_stmt)); } #line 1816 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 172: /* opt_exists */ -#line 139 "bison_parser.y" /* yacc.c:1257 */ - { } + case 176: /* column_def */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).column_t)); } #line 1822 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 173: /* delete_statement */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).delete_stmt)); } + case 177: /* column_type */ +#line 140 "bison_parser.y" /* yacc.c:1257 */ + { } #line 1828 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 174: /* truncate_statement */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).delete_stmt)); } + case 178: /* drop_statement */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).drop_stmt)); } #line 1834 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 175: /* insert_statement */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).insert_stmt)); } + case 179: /* opt_exists */ +#line 140 "bison_parser.y" /* yacc.c:1257 */ + { } #line 1840 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 176: /* opt_column_list */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ + case 180: /* delete_statement */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).delete_stmt)); } +#line 1846 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 181: /* truncate_statement */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).delete_stmt)); } +#line 1852 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 182: /* insert_statement */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).insert_stmt)); } +#line 1858 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 183: /* opt_column_list */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -1849,17 +1867,17 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 1853 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1871 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 177: /* update_statement */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 184: /* update_statement */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).update_stmt)); } -#line 1859 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1877 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 178: /* update_clause_commalist */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ + case 185: /* update_clause_commalist */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).update_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).update_vec))) { @@ -1868,53 +1886,53 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).update_vec)); } -#line 1872 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 179: /* update_clause */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).update_t)); } -#line 1878 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 180: /* select_statement */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).select_stmt)); } -#line 1884 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 181: /* select_with_paren */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).select_stmt)); } #line 1890 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 182: /* select_paren_or_clause */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).select_stmt)); } + case 186: /* update_clause */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).update_t)); } #line 1896 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 183: /* select_no_paren */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 187: /* select_statement */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } #line 1902 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 187: /* select_clause */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 188: /* select_with_paren */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).select_stmt)); } #line 1908 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 188: /* opt_distinct */ -#line 139 "bison_parser.y" /* yacc.c:1257 */ - { } + case 189: /* select_paren_or_clause */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).select_stmt)); } #line 1914 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 189: /* select_list */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ + case 190: /* select_no_paren */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).select_stmt)); } +#line 1920 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 194: /* select_clause */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).select_stmt)); } +#line 1926 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 195: /* opt_distinct */ +#line 140 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 1932 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 196: /* select_list */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1923,41 +1941,41 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1927 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 190: /* opt_from_clause */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } -#line 1933 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 191: /* from_clause */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } -#line 1939 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 192: /* opt_where */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } #line 1945 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 193: /* opt_group */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).group_t)); } + case 197: /* opt_from_clause */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } #line 1951 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 194: /* opt_having */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } + case 198: /* from_clause */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } #line 1957 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 195: /* opt_order */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ + case 199: /* opt_where */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 1963 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 200: /* opt_group */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).group_t)); } +#line 1969 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 201: /* opt_having */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 1975 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 202: /* opt_order */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -1966,11 +1984,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 1970 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1988 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 196: /* order_list */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ + case 203: /* order_list */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -1979,35 +1997,35 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 1983 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 197: /* order_desc */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).order)); } -#line 1989 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 198: /* opt_order_type */ -#line 139 "bison_parser.y" /* yacc.c:1257 */ - { } -#line 1995 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 199: /* opt_top */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).limit)); } #line 2001 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 200: /* opt_limit */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).limit)); } + case 204: /* order_desc */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).order)); } #line 2007 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 201: /* expr_list */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ + case 205: /* opt_order_type */ +#line 140 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 2013 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 206: /* opt_top */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).limit)); } +#line 2019 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 207: /* opt_limit */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).limit)); } +#line 2025 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 208: /* expr_list */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2016,11 +2034,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2020 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2038 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 202: /* literal_list */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ + case 209: /* literal_list */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2029,167 +2047,179 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2033 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 203: /* expr_alias */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 2039 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 204: /* expr */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } -#line 2045 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 205: /* operand */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } #line 2051 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 206: /* scalar_expr */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 210: /* expr_alias */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2057 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 207: /* unary_expr */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 211: /* expr */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2063 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 208: /* binary_expr */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 212: /* operand */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2069 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 209: /* logic_expr */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 213: /* scalar_expr */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2075 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 210: /* in_expr */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 214: /* unary_expr */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2081 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 211: /* case_expr */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 215: /* binary_expr */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2087 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 212: /* case_list */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 216: /* logic_expr */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2093 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 213: /* exists_expr */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 217: /* in_expr */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2099 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 214: /* comp_expr */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 218: /* case_expr */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2105 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 215: /* function_expr */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 219: /* case_list */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2111 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 216: /* array_expr */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 220: /* exists_expr */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2117 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 217: /* array_index */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 221: /* comp_expr */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2123 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 218: /* between_expr */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 222: /* function_expr */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2129 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 219: /* column_name */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 223: /* extract_expr */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2135 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 220: /* literal */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } + case 224: /* datetime_field */ +#line 140 "bison_parser.y" /* yacc.c:1257 */ + { } #line 2141 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 221: /* string_literal */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 225: /* array_expr */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2147 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 222: /* num_literal */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 226: /* array_index */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2153 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 223: /* int_literal */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 227: /* between_expr */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2159 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 224: /* null_literal */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 228: /* column_name */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2165 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 225: /* param_expr */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ + case 229: /* literal */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ { delete (((*yyvaluep).expr)); } #line 2171 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 226: /* table_ref */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } + case 230: /* string_literal */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } #line 2177 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 227: /* table_ref_atomic */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } + case 231: /* num_literal */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } #line 2183 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 228: /* nonjoin_table_ref_atomic */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } + case 232: /* int_literal */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } #line 2189 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 229: /* table_ref_commalist */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ + case 233: /* null_literal */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2195 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 234: /* param_expr */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2201 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 235: /* table_ref */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 2207 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 236: /* table_ref_atomic */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 2213 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 237: /* nonjoin_table_ref_atomic */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 2219 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 238: /* table_ref_commalist */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).table_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).table_vec))) { @@ -2198,71 +2228,71 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).table_vec)); } -#line 2202 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 230: /* table_ref_name */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } -#line 2208 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 231: /* table_ref_name_no_alias */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } -#line 2214 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 232: /* table_name */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ - { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } -#line 2220 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 233: /* table_alias */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).alias_t)); } -#line 2226 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 234: /* opt_table_alias */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).alias_t)); } #line 2232 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 235: /* alias */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).alias_t)); } + case 239: /* table_ref_name */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } #line 2238 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 236: /* opt_alias */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).alias_t)); } + case 240: /* table_ref_name_no_alias */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } #line 2244 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 237: /* join_clause */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).table)); } + case 241: /* table_name */ +#line 141 "bison_parser.y" /* yacc.c:1257 */ + { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } #line 2250 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 238: /* opt_join_type */ -#line 139 "bison_parser.y" /* yacc.c:1257 */ - { } + case 242: /* table_alias */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).alias_t)); } #line 2256 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 239: /* join_condition */ -#line 150 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).expr)); } + case 243: /* opt_table_alias */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).alias_t)); } #line 2262 "bison_parser.cpp" /* yacc.c:1257 */ break; - case 241: /* ident_commalist */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ + case 244: /* alias */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).alias_t)); } +#line 2268 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 245: /* opt_alias */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).alias_t)); } +#line 2274 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 246: /* join_clause */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).table)); } +#line 2280 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 247: /* opt_join_type */ +#line 140 "bison_parser.y" /* yacc.c:1257 */ + { } +#line 2286 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 248: /* join_condition */ +#line 151 "bison_parser.y" /* yacc.c:1257 */ + { delete (((*yyvaluep).expr)); } +#line 2292 "bison_parser.cpp" /* yacc.c:1257 */ + break; + + case 250: /* ident_commalist */ +#line 143 "bison_parser.y" /* yacc.c:1257 */ { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2271,7 +2301,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 2275 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2305 "bison_parser.cpp" /* yacc.c:1257 */ break; @@ -2390,7 +2420,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 2394 "bison_parser.cpp" /* yacc.c:1429 */ +#line 2424 "bison_parser.cpp" /* yacc.c:1429 */ yylsp[0] = yylloc; goto yysetstate; @@ -2577,7 +2607,7 @@ yyreduce: switch (yyn) { case 2: -#line 249 "bison_parser.y" /* yacc.c:1646 */ +#line 251 "bison_parser.y" /* yacc.c:1646 */ { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -2595,226 +2625,226 @@ yyreduce: } delete (yyvsp[-1].stmt_vec); } -#line 2599 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2629 "bison_parser.cpp" /* yacc.c:1646 */ break; case 3: -#line 270 "bison_parser.y" /* yacc.c:1646 */ +#line 272 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[0].statement)->stringLength = yylloc.string_length; yylloc.string_length = 0; (yyval.stmt_vec) = new std::vector(); (yyval.stmt_vec)->push_back((yyvsp[0].statement)); } -#line 2610 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2640 "bison_parser.cpp" /* yacc.c:1646 */ break; case 4: -#line 276 "bison_parser.y" /* yacc.c:1646 */ +#line 278 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[0].statement)->stringLength = yylloc.string_length; yylloc.string_length = 0; (yyvsp[-2].stmt_vec)->push_back((yyvsp[0].statement)); (yyval.stmt_vec) = (yyvsp[-2].stmt_vec); } -#line 2621 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2651 "bison_parser.cpp" /* yacc.c:1646 */ break; case 5: -#line 285 "bison_parser.y" /* yacc.c:1646 */ +#line 287 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2630 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2660 "bison_parser.cpp" /* yacc.c:1646 */ break; case 6: -#line 289 "bison_parser.y" /* yacc.c:1646 */ +#line 291 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2639 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2669 "bison_parser.cpp" /* yacc.c:1646 */ break; case 7: -#line 293 "bison_parser.y" /* yacc.c:1646 */ +#line 295 "bison_parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 2647 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 8: -#line 300 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 2653 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 9: -#line 301 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 2659 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 10: -#line 302 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 2665 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 11: -#line 303 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 2671 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 12: -#line 304 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].delete_stmt); } #line 2677 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 13: -#line 305 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].delete_stmt); } + case 8: +#line 302 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].select_stmt); } #line 2683 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 14: -#line 306 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].update_stmt); } + case 9: +#line 303 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].import_stmt); } #line 2689 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 15: -#line 307 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].drop_stmt); } + case 10: +#line 304 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].create_stmt); } #line 2695 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 16: -#line 308 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.statement) = (yyvsp[0].exec_stmt); } + case 11: +#line 305 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].insert_stmt); } #line 2701 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 17: -#line 317 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } + case 12: +#line 306 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].delete_stmt); } #line 2707 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 18: -#line 318 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr_vec) = nullptr; } + case 13: +#line 307 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].delete_stmt); } #line 2713 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 19: -#line 323 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } + case 14: +#line 308 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].update_stmt); } #line 2719 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 20: -#line 324 "bison_parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } + case 15: +#line 309 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].drop_stmt); } #line 2725 "bison_parser.cpp" /* yacc.c:1646 */ break; + case 16: +#line 310 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.statement) = (yyvsp[0].exec_stmt); } +#line 2731 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 17: +#line 319 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } +#line 2737 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 18: +#line 320 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr_vec) = nullptr; } +#line 2743 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 19: +#line 325 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 2749 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 20: +#line 326 "bison_parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 2755 "bison_parser.cpp" /* yacc.c:1646 */ + break; + case 21: -#line 328 "bison_parser.y" /* yacc.c:1646 */ +#line 330 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 2734 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2764 "bison_parser.cpp" /* yacc.c:1646 */ break; case 22: -#line 332 "bison_parser.y" /* yacc.c:1646 */ +#line 334 "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 2744 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2774 "bison_parser.cpp" /* yacc.c:1646 */ break; case 23: -#line 344 "bison_parser.y" /* yacc.c:1646 */ +#line 346 "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 2754 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2784 "bison_parser.cpp" /* yacc.c:1646 */ break; case 25: -#line 354 "bison_parser.y" /* yacc.c:1646 */ +#line 356 "bison_parser.y" /* yacc.c:1646 */ { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 2763 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2793 "bison_parser.cpp" /* yacc.c:1646 */ break; case 26: -#line 358 "bison_parser.y" /* yacc.c:1646 */ +#line 360 "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 2773 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2803 "bison_parser.cpp" /* yacc.c:1646 */ break; case 27: -#line 370 "bison_parser.y" /* yacc.c:1646 */ +#line 372 "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)->schema = (yyvsp[0].table_name).schema; (yyval.import_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 2784 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2814 "bison_parser.cpp" /* yacc.c:1646 */ break; case 28: -#line 379 "bison_parser.y" /* yacc.c:1646 */ +#line 381 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = kImportCSV; } -#line 2790 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2820 "bison_parser.cpp" /* yacc.c:1646 */ break; case 29: -#line 383 "bison_parser.y" /* yacc.c:1646 */ +#line 385 "bison_parser.y" /* yacc.c:1646 */ { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 2796 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2826 "bison_parser.cpp" /* yacc.c:1646 */ break; case 30: -#line 393 "bison_parser.y" /* yacc.c:1646 */ +#line 395 "bison_parser.y" /* yacc.c:1646 */ { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 2804 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2834 "bison_parser.cpp" /* yacc.c:1646 */ break; case 31: -#line 396 "bison_parser.y" /* yacc.c:1646 */ +#line 398 "bison_parser.y" /* yacc.c:1646 */ { (yyval.show_stmt) = new ShowStatement(kShowColumns); (yyval.show_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.show_stmt)->name = (yyvsp[0].table_name).name; } -#line 2814 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2844 "bison_parser.cpp" /* yacc.c:1646 */ break; case 32: -#line 410 "bison_parser.y" /* yacc.c:1646 */ +#line 412 "bison_parser.y" /* yacc.c:1646 */ { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -2822,11 +2852,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-4].table_name).name; (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 2826 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2856 "bison_parser.cpp" /* yacc.c:1646 */ break; case 33: -#line 417 "bison_parser.y" /* yacc.c:1646 */ +#line 419 "bison_parser.y" /* yacc.c:1646 */ { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -2834,11 +2864,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->columns = (yyvsp[-1].column_vec); } -#line 2838 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2868 "bison_parser.cpp" /* yacc.c:1646 */ break; case 34: -#line 424 "bison_parser.y" /* yacc.c:1646 */ +#line 426 "bison_parser.y" /* yacc.c:1646 */ { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -2847,132 +2877,132 @@ yyreduce: (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 2851 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2881 "bison_parser.cpp" /* yacc.c:1646 */ break; case 35: -#line 435 "bison_parser.y" /* yacc.c:1646 */ +#line 437 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = true; } -#line 2857 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2887 "bison_parser.cpp" /* yacc.c:1646 */ break; case 36: -#line 436 "bison_parser.y" /* yacc.c:1646 */ +#line 438 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = false; } -#line 2863 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2893 "bison_parser.cpp" /* yacc.c:1646 */ break; case 37: -#line 440 "bison_parser.y" /* yacc.c:1646 */ +#line 442 "bison_parser.y" /* yacc.c:1646 */ { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } -#line 2869 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2899 "bison_parser.cpp" /* yacc.c:1646 */ break; case 38: -#line 441 "bison_parser.y" /* yacc.c:1646 */ +#line 443 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].column_vec)->push_back((yyvsp[0].column_t)); (yyval.column_vec) = (yyvsp[-2].column_vec); } -#line 2875 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2905 "bison_parser.cpp" /* yacc.c:1646 */ break; case 39: -#line 445 "bison_parser.y" /* yacc.c:1646 */ +#line 447 "bison_parser.y" /* yacc.c:1646 */ { (yyval.column_t) = new ColumnDefinition((yyvsp[-1].sval), (ColumnDefinition::DataType) (yyvsp[0].uval)); } -#line 2883 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2913 "bison_parser.cpp" /* yacc.c:1646 */ break; case 40: -#line 452 "bison_parser.y" /* yacc.c:1646 */ +#line 454 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::INT; } -#line 2889 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2919 "bison_parser.cpp" /* yacc.c:1646 */ break; case 41: -#line 453 "bison_parser.y" /* yacc.c:1646 */ +#line 455 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::INT; } -#line 2895 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2925 "bison_parser.cpp" /* yacc.c:1646 */ break; case 42: -#line 454 "bison_parser.y" /* yacc.c:1646 */ +#line 456 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::DOUBLE; } -#line 2901 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2931 "bison_parser.cpp" /* yacc.c:1646 */ break; case 43: -#line 455 "bison_parser.y" /* yacc.c:1646 */ +#line 457 "bison_parser.y" /* yacc.c:1646 */ { (yyval.uval) = ColumnDefinition::TEXT; } -#line 2907 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2937 "bison_parser.cpp" /* yacc.c:1646 */ break; case 44: -#line 465 "bison_parser.y" /* yacc.c:1646 */ +#line 467 "bison_parser.y" /* yacc.c:1646 */ { (yyval.drop_stmt) = new DropStatement(kDropTable); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 2918 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2948 "bison_parser.cpp" /* yacc.c:1646 */ break; case 45: -#line 471 "bison_parser.y" /* yacc.c:1646 */ +#line 473 "bison_parser.y" /* yacc.c:1646 */ { (yyval.drop_stmt) = new DropStatement(kDropView); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 2929 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2959 "bison_parser.cpp" /* yacc.c:1646 */ break; case 46: -#line 477 "bison_parser.y" /* yacc.c:1646 */ +#line 479 "bison_parser.y" /* yacc.c:1646 */ { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 2939 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2969 "bison_parser.cpp" /* yacc.c:1646 */ break; case 47: -#line 485 "bison_parser.y" /* yacc.c:1646 */ +#line 487 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = true; } -#line 2945 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2975 "bison_parser.cpp" /* yacc.c:1646 */ break; case 48: -#line 486 "bison_parser.y" /* yacc.c:1646 */ +#line 488 "bison_parser.y" /* yacc.c:1646 */ { (yyval.bval) = false; } -#line 2951 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2981 "bison_parser.cpp" /* yacc.c:1646 */ break; case 49: -#line 495 "bison_parser.y" /* yacc.c:1646 */ +#line 497 "bison_parser.y" /* yacc.c:1646 */ { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[-1].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[-1].table_name).name; (yyval.delete_stmt)->expr = (yyvsp[0].expr); } -#line 2962 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2992 "bison_parser.cpp" /* yacc.c:1646 */ break; case 50: -#line 504 "bison_parser.y" /* yacc.c:1646 */ +#line 506 "bison_parser.y" /* yacc.c:1646 */ { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 2972 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3002 "bison_parser.cpp" /* yacc.c:1646 */ break; case 51: -#line 517 "bison_parser.y" /* yacc.c:1646 */ +#line 519 "bison_parser.y" /* yacc.c:1646 */ { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -2980,11 +3010,11 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 2984 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3014 "bison_parser.cpp" /* yacc.c:1646 */ break; case 52: -#line 524 "bison_parser.y" /* yacc.c:1646 */ +#line 526 "bison_parser.y" /* yacc.c:1646 */ { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -2992,56 +3022,56 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 2996 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3026 "bison_parser.cpp" /* yacc.c:1646 */ break; case 53: -#line 535 "bison_parser.y" /* yacc.c:1646 */ +#line 537 "bison_parser.y" /* yacc.c:1646 */ { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 3002 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3032 "bison_parser.cpp" /* yacc.c:1646 */ break; case 54: -#line 536 "bison_parser.y" /* yacc.c:1646 */ +#line 538 "bison_parser.y" /* yacc.c:1646 */ { (yyval.str_vec) = nullptr; } -#line 3008 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3038 "bison_parser.cpp" /* yacc.c:1646 */ break; case 55: -#line 546 "bison_parser.y" /* yacc.c:1646 */ +#line 548 "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 3019 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3049 "bison_parser.cpp" /* yacc.c:1646 */ break; case 56: -#line 555 "bison_parser.y" /* yacc.c:1646 */ +#line 557 "bison_parser.y" /* yacc.c:1646 */ { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 3025 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3055 "bison_parser.cpp" /* yacc.c:1646 */ break; case 57: -#line 556 "bison_parser.y" /* yacc.c:1646 */ +#line 558 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 3031 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3061 "bison_parser.cpp" /* yacc.c:1646 */ break; case 58: -#line 560 "bison_parser.y" /* yacc.c:1646 */ +#line 562 "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 3041 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3071 "bison_parser.cpp" /* yacc.c:1646 */ break; case 61: -#line 574 "bison_parser.y" /* yacc.c:1646 */ +#line 576 "bison_parser.y" /* yacc.c:1646 */ { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3056,23 +3086,23 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3060 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3090 "bison_parser.cpp" /* yacc.c:1646 */ break; case 62: -#line 591 "bison_parser.y" /* yacc.c:1646 */ +#line 593 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3066 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3096 "bison_parser.cpp" /* yacc.c:1646 */ break; case 63: -#line 592 "bison_parser.y" /* yacc.c:1646 */ +#line 594 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3072 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3102 "bison_parser.cpp" /* yacc.c:1646 */ break; case 66: -#line 601 "bison_parser.y" /* yacc.c:1646 */ +#line 603 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = (yyvsp[-2].select_stmt); (yyval.select_stmt)->order = (yyvsp[-1].order_vec); @@ -3083,11 +3113,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3087 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3117 "bison_parser.cpp" /* yacc.c:1646 */ break; case 67: -#line 611 "bison_parser.y" /* yacc.c:1646 */ +#line 613 "bison_parser.y" /* yacc.c:1646 */ { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3102,11 +3132,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3106 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3136 "bison_parser.cpp" /* yacc.c:1646 */ break; case 74: -#line 643 "bison_parser.y" /* yacc.c:1646 */ +#line 645 "bison_parser.y" /* yacc.c:1646 */ { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -3116,213 +3146,213 @@ yyreduce: (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 3120 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 75: -#line 655 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.bval) = true; } -#line 3126 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 76: -#line 656 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.bval) = false; } -#line 3132 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 78: -#line 664 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.table) = (yyvsp[0].table); } -#line 3138 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 79: -#line 665 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.table) = nullptr; } -#line 3144 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 80: -#line 668 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.table) = (yyvsp[0].table); } #line 3150 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 81: -#line 673 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = (yyvsp[0].expr); } + case 75: +#line 657 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.bval) = true; } #line 3156 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 82: -#line 674 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = nullptr; } + case 76: +#line 658 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.bval) = false; } #line 3162 "bison_parser.cpp" /* yacc.c:1646 */ break; + case 78: +#line 666 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.table) = (yyvsp[0].table); } +#line 3168 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 79: +#line 667 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.table) = nullptr; } +#line 3174 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 80: +#line 670 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.table) = (yyvsp[0].table); } +#line 3180 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 81: +#line 675 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[0].expr); } +#line 3186 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 82: +#line 676 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = nullptr; } +#line 3192 "bison_parser.cpp" /* yacc.c:1646 */ + break; + case 83: -#line 678 "bison_parser.y" /* yacc.c:1646 */ +#line 680 "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 3172 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 84: -#line 683 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.group_t) = nullptr; } -#line 3178 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 85: -#line 687 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = (yyvsp[0].expr); } -#line 3184 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 86: -#line 688 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = nullptr; } -#line 3190 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 87: -#line 691 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 3196 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 88: -#line 692 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_vec) = nullptr; } #line 3202 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 89: -#line 696 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } + case 84: +#line 685 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.group_t) = nullptr; } #line 3208 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 90: -#line 697 "bison_parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } + case 85: +#line 689 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[0].expr); } #line 3214 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 91: -#line 701 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } + case 86: +#line 690 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = nullptr; } #line 3220 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 92: -#line 705 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_type) = kOrderAsc; } + case 87: +#line 693 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_vec) = (yyvsp[0].order_vec); } #line 3226 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 93: -#line 706 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_type) = kOrderDesc; } + case 88: +#line 694 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_vec) = nullptr; } #line 3232 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 94: -#line 707 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_type) = kOrderAsc; } + case 89: +#line 698 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } #line 3238 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 95: -#line 713 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } + case 90: +#line 699 "bison_parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } #line 3244 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 96: -#line 714 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = nullptr; } + case 91: +#line 703 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } #line 3250 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 97: -#line 718 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } + case 92: +#line 707 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_type) = kOrderAsc; } #line 3256 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 98: -#line 719 "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); } + case 93: +#line 708 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_type) = kOrderDesc; } #line 3262 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 99: -#line 720 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } + case 94: +#line 709 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.order_type) = kOrderAsc; } #line 3268 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 100: -#line 721 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = nullptr; } + case 95: +#line 715 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } #line 3274 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 101: -#line 722 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = nullptr; } + case 96: +#line 716 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = nullptr; } #line 3280 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 102: -#line 723 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } + case 97: +#line 720 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } #line 3286 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 103: -#line 724 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } + case 98: +#line 721 "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 3292 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 104: -#line 725 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = nullptr; } + case 99: +#line 722 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } #line 3298 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 105: -#line 732 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } + case 100: +#line 723 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = nullptr; } #line 3304 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 106: -#line 733 "bison_parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } + case 101: +#line 724 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = nullptr; } #line 3310 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 107: -#line 737 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } + case 102: +#line 725 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } #line 3316 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 108: -#line 738 "bison_parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } + case 103: +#line 726 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } #line 3322 "bison_parser.cpp" /* yacc.c:1646 */ break; + case 104: +#line 727 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.limit) = nullptr; } +#line 3328 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 105: +#line 734 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 3334 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 106: +#line 735 "bison_parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 3340 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 107: +#line 739 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 3346 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 108: +#line 740 "bison_parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 3352 "bison_parser.cpp" /* yacc.c:1646 */ + break; + case 109: -#line 742 "bison_parser.y" /* yacc.c:1646 */ +#line 744 "bison_parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -3330,361 +3360,403 @@ yyreduce: delete (yyvsp[0].alias_t); } } -#line 3334 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 115: -#line 760 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = (yyvsp[-1].expr); } -#line 3340 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 123: -#line 768 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 3346 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 126: -#line 777 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 3352 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 127: -#line 778 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 3358 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 128: -#line 779 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } #line 3364 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 129: -#line 780 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } + case 115: +#line 762 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = (yyvsp[-1].expr); } #line 3370 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 130: -#line 781 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } + case 124: +#line 771 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } #line 3376 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 132: -#line 786 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } + case 127: +#line 780 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } #line 3382 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 133: -#line 787 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } + case 128: +#line 781 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } #line 3388 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 134: -#line 788 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } + case 129: +#line 782 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } #line 3394 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 135: -#line 789 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } + case 130: +#line 783 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } #line 3400 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 136: -#line 790 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } + case 131: +#line 784 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } #line 3406 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 137: -#line 791 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } + case 133: +#line 789 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } #line 3412 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 138: -#line 792 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } + case 134: +#line 790 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } #line 3418 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 139: -#line 793 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } + case 135: +#line 791 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } #line 3424 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 140: -#line 794 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } + case 136: +#line 792 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } #line 3430 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 141: -#line 795 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } + case 137: +#line 793 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } #line 3436 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 142: -#line 799 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } + case 138: +#line 794 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } #line 3442 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 143: -#line 800 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } + case 139: +#line 795 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } #line 3448 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 144: -#line 804 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } + case 140: +#line 796 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } #line 3454 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 145: -#line 805 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } + case 141: +#line 797 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } #line 3460 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 146: -#line 806 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } + case 142: +#line 798 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } #line 3466 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 147: -#line 807 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } + case 143: +#line 802 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } #line 3472 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 148: -#line 813 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } + case 144: +#line 803 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } #line 3478 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 149: -#line 814 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } + case 145: +#line 807 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } #line 3484 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 150: -#line 815 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } + case 146: +#line 808 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } #line 3490 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 151: -#line 816 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } + case 147: +#line 809 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } #line 3496 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 152: -#line 820 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } + case 148: +#line 810 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } #line 3502 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 153: -#line 821 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } + case 149: +#line 816 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } #line 3508 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 154: -#line 825 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } + case 150: +#line 817 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } #line 3514 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 155: -#line 826 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } + case 151: +#line 818 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } #line 3520 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 156: -#line 830 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } + case 152: +#line 819 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } #line 3526 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 157: -#line 831 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } + case 153: +#line 823 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } #line 3532 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 158: -#line 832 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } + case 154: +#line 824 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } #line 3538 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 159: -#line 833 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } + case 155: +#line 828 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } #line 3544 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 160: -#line 834 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } + case 156: +#line 829 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } #line 3550 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 161: -#line 835 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } + case 157: +#line 833 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } #line 3556 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 162: -#line 836 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } + case 158: +#line 834 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } #line 3562 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 163: -#line 840 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } + case 159: +#line 835 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } #line 3568 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 164: -#line 841 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } + case 160: +#line 836 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } #line 3574 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 165: -#line 845 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } + case 161: +#line 837 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } #line 3580 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 166: -#line 849 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } + case 162: +#line 838 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } #line 3586 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 167: -#line 853 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } + case 163: +#line 839 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } #line 3592 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 168: -#line 857 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } + case 164: +#line 843 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } #line 3598 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 169: -#line 858 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } + case 165: +#line 844 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } #line 3604 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 170: -#line 859 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeStar(); } + case 166: +#line 848 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } #line 3610 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 171: -#line 860 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } + case 167: +#line 852 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.datetime_field) = kDatetimeSecond; } #line 3616 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 176: -#line 871 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } + case 168: +#line 853 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.datetime_field) = kDatetimeMinute; } #line 3622 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 177: -#line 876 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } + case 169: +#line 854 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.datetime_field) = kDatetimeHour; } #line 3628 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 179: -#line 881 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } + case 170: +#line 855 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.datetime_field) = kDatetimeDay; } #line 3634 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 180: -#line 885 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeNullLiteral(); } + case 171: +#line 856 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.datetime_field) = kDatetimeMonth; } #line 3640 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 181: -#line 889 "bison_parser.y" /* yacc.c:1646 */ + case 172: +#line 857 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.datetime_field) = kDatetimeYear; } +#line 3646 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 173: +#line 860 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } +#line 3652 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 174: +#line 864 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } +#line 3658 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 175: +#line 868 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 3664 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 176: +#line 872 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } +#line 3670 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 177: +#line 873 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } +#line 3676 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 178: +#line 874 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeStar(); } +#line 3682 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 179: +#line 875 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } +#line 3688 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 184: +#line 886 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } +#line 3694 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 185: +#line 891 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } +#line 3700 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 187: +#line 896 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } +#line 3706 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 188: +#line 900 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.expr) = Expr::makeNullLiteral(); } +#line 3712 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 189: +#line 904 "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 3650 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3722 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 183: -#line 902 "bison_parser.y" /* yacc.c:1646 */ + case 191: +#line 917 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); auto tbl = new TableRef(kTableCrossProduct); tbl->list = (yyvsp[-2].table_vec); (yyval.table) = tbl; } -#line 3661 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3733 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 187: -#line 918 "bison_parser.y" /* yacc.c:1646 */ + case 195: +#line 933 "bison_parser.y" /* yacc.c:1646 */ { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 3672 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3744 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 188: -#line 927 "bison_parser.y" /* yacc.c:1646 */ + case 196: +#line 942 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 3678 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3750 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 189: -#line 928 "bison_parser.y" /* yacc.c:1646 */ + case 197: +#line 943 "bison_parser.y" /* yacc.c:1646 */ { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 3684 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3756 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 190: -#line 933 "bison_parser.y" /* yacc.c:1646 */ + case 198: +#line 948 "bison_parser.y" /* yacc.c:1646 */ { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -3692,63 +3764,63 @@ yyreduce: tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 3696 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3768 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 191: -#line 944 "bison_parser.y" /* yacc.c:1646 */ + case 199: +#line 959 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; (yyval.table)->name = (yyvsp[0].table_name).name; } -#line 3706 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3778 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 192: -#line 953 "bison_parser.y" /* yacc.c:1646 */ + case 200: +#line 968 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} -#line 3712 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 193: -#line 954 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 3718 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 195: -#line 960 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 3724 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 197: -#line 966 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.alias_t) = nullptr; } -#line 3730 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 198: -#line 970 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 3736 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 199: -#line 971 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 3742 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3784 "bison_parser.cpp" /* yacc.c:1646 */ break; case 201: -#line 977 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.alias_t) = nullptr; } -#line 3748 "bison_parser.cpp" /* yacc.c:1646 */ +#line 969 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } +#line 3790 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 202: + case 203: +#line 975 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } +#line 3796 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 205: +#line 981 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.alias_t) = nullptr; } +#line 3802 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 206: +#line 985 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } +#line 3808 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 207: #line 986 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } +#line 3814 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 209: +#line 992 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.alias_t) = nullptr; } +#line 3820 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 210: +#line 1001 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3756,11 +3828,11 @@ yyreduce: (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 3760 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3832 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 203: -#line 994 "bison_parser.y" /* yacc.c:1646 */ + case 211: +#line 1009 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3769,11 +3841,11 @@ yyreduce: (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 3773 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3845 "bison_parser.cpp" /* yacc.c:1646 */ break; - case 204: -#line 1004 "bison_parser.y" /* yacc.c:1646 */ + case 212: +#line 1019 "bison_parser.y" /* yacc.c:1646 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3789,83 +3861,83 @@ yyreduce: (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 3793 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 205: -#line 1022 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinInner; } -#line 3799 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 206: -#line 1023 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinLeft; } -#line 3805 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 207: -#line 1024 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinLeft; } -#line 3811 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 208: -#line 1025 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinRight; } -#line 3817 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 209: -#line 1026 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinRight; } -#line 3823 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 210: -#line 1027 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinFull; } -#line 3829 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 211: -#line 1028 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinFull; } -#line 3835 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 212: -#line 1029 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinFull; } -#line 3841 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 213: -#line 1030 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinCross; } -#line 3847 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 214: -#line 1031 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinInner; } -#line 3853 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 218: -#line 1051 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 3859 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 219: -#line 1052 "bison_parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } #line 3865 "bison_parser.cpp" /* yacc.c:1646 */ break; + case 213: +#line 1037 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinInner; } +#line 3871 "bison_parser.cpp" /* yacc.c:1646 */ + break; -#line 3869 "bison_parser.cpp" /* yacc.c:1646 */ + case 214: +#line 1038 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinLeft; } +#line 3877 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 215: +#line 1039 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinLeft; } +#line 3883 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 216: +#line 1040 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinRight; } +#line 3889 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 217: +#line 1041 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinRight; } +#line 3895 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 218: +#line 1042 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinFull; } +#line 3901 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 219: +#line 1043 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinFull; } +#line 3907 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 220: +#line 1044 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinFull; } +#line 3913 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 221: +#line 1045 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinCross; } +#line 3919 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 222: +#line 1046 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.uval) = kJoinInner; } +#line 3925 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 226: +#line 1066 "bison_parser.y" /* yacc.c:1646 */ + { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } +#line 3931 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + case 227: +#line 1067 "bison_parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } +#line 3937 "bison_parser.cpp" /* yacc.c:1646 */ + break; + + +#line 3941 "bison_parser.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4100,7 +4172,7 @@ yyreturn: #endif return yyresult; } -#line 1055 "bison_parser.y" /* yacc.c:1906 */ +#line 1070 "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 194d13f..5a356cb 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -117,99 +117,106 @@ extern int hsql_debug; SQL_ESCAPE = 293, SQL_EXCEPT = 294, SQL_EXISTS = 295, - SQL_GLOBAL = 296, - SQL_HAVING = 297, - SQL_IMPORT = 298, - SQL_INSERT = 299, - SQL_ISNULL = 300, - SQL_OFFSET = 301, - SQL_RENAME = 302, - SQL_SCHEMA = 303, - SQL_SELECT = 304, - SQL_SORTED = 305, - SQL_TABLES = 306, - SQL_UNIQUE = 307, - SQL_UNLOAD = 308, - SQL_UPDATE = 309, - SQL_VALUES = 310, - SQL_AFTER = 311, - SQL_ALTER = 312, - SQL_CROSS = 313, - SQL_DELTA = 314, - SQL_GROUP = 315, - SQL_INDEX = 316, - SQL_INNER = 317, - SQL_LIMIT = 318, - SQL_LOCAL = 319, - SQL_MERGE = 320, - SQL_MINUS = 321, - SQL_ORDER = 322, - SQL_OUTER = 323, - SQL_RIGHT = 324, - SQL_TABLE = 325, - SQL_UNION = 326, - SQL_USING = 327, - SQL_WHERE = 328, - SQL_CALL = 329, - SQL_CASE = 330, - SQL_DATE = 331, - SQL_DESC = 332, - SQL_DROP = 333, - SQL_ELSE = 334, - SQL_FILE = 335, - SQL_FROM = 336, - SQL_FULL = 337, - SQL_HASH = 338, - SQL_HINT = 339, - SQL_INTO = 340, - SQL_JOIN = 341, - SQL_LEFT = 342, - SQL_LIKE = 343, - SQL_LOAD = 344, - SQL_NULL = 345, - SQL_PART = 346, - SQL_PLAN = 347, - SQL_SHOW = 348, - SQL_TEXT = 349, - SQL_THEN = 350, - SQL_TIME = 351, - SQL_VIEW = 352, - SQL_WHEN = 353, - SQL_WITH = 354, - SQL_ADD = 355, - SQL_ALL = 356, - SQL_AND = 357, - SQL_ASC = 358, - SQL_CSV = 359, - SQL_END = 360, - SQL_FOR = 361, - SQL_INT = 362, - SQL_KEY = 363, - SQL_NOT = 364, - SQL_OFF = 365, - SQL_SET = 366, - SQL_TBL = 367, - SQL_TOP = 368, - SQL_AS = 369, - SQL_BY = 370, - SQL_IF = 371, - SQL_IN = 372, - SQL_IS = 373, - SQL_OF = 374, - SQL_ON = 375, - SQL_OR = 376, - SQL_TO = 377, - 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 + SQL_EXTRACT = 296, + SQL_GLOBAL = 297, + SQL_HAVING = 298, + SQL_IMPORT = 299, + SQL_INSERT = 300, + SQL_ISNULL = 301, + SQL_OFFSET = 302, + SQL_RENAME = 303, + SQL_SCHEMA = 304, + SQL_SELECT = 305, + SQL_SORTED = 306, + SQL_TABLES = 307, + SQL_UNIQUE = 308, + SQL_UNLOAD = 309, + SQL_UPDATE = 310, + SQL_VALUES = 311, + SQL_AFTER = 312, + SQL_ALTER = 313, + SQL_CROSS = 314, + SQL_DELTA = 315, + SQL_GROUP = 316, + SQL_INDEX = 317, + SQL_INNER = 318, + SQL_LIMIT = 319, + SQL_LOCAL = 320, + SQL_MERGE = 321, + SQL_MINUS = 322, + SQL_ORDER = 323, + SQL_OUTER = 324, + SQL_RIGHT = 325, + SQL_TABLE = 326, + SQL_UNION = 327, + SQL_USING = 328, + SQL_WHERE = 329, + SQL_CALL = 330, + SQL_CASE = 331, + SQL_DATE = 332, + SQL_DESC = 333, + SQL_DROP = 334, + SQL_ELSE = 335, + SQL_FILE = 336, + SQL_FROM = 337, + SQL_FULL = 338, + SQL_HASH = 339, + SQL_HINT = 340, + SQL_INTO = 341, + SQL_JOIN = 342, + SQL_LEFT = 343, + SQL_LIKE = 344, + SQL_LOAD = 345, + SQL_NULL = 346, + SQL_PART = 347, + SQL_PLAN = 348, + SQL_SHOW = 349, + SQL_TEXT = 350, + SQL_THEN = 351, + SQL_TIME = 352, + SQL_VIEW = 353, + SQL_WHEN = 354, + SQL_WITH = 355, + SQL_ADD = 356, + SQL_ALL = 357, + SQL_AND = 358, + SQL_ASC = 359, + SQL_CSV = 360, + SQL_END = 361, + SQL_FOR = 362, + SQL_INT = 363, + SQL_KEY = 364, + SQL_NOT = 365, + SQL_OFF = 366, + SQL_SET = 367, + SQL_TBL = 368, + SQL_TOP = 369, + SQL_AS = 370, + SQL_BY = 371, + SQL_IF = 372, + SQL_IN = 373, + SQL_IS = 374, + SQL_OF = 375, + SQL_ON = 376, + SQL_OR = 377, + SQL_TO = 378, + SQL_ARRAY = 379, + SQL_CONCAT = 380, + SQL_ILIKE = 381, + SQL_SECOND = 382, + SQL_MINUTE = 383, + SQL_HOUR = 384, + SQL_DAY = 385, + SQL_MONTH = 386, + SQL_YEAR = 387, + SQL_EQUALS = 388, + SQL_NOTEQUALS = 389, + SQL_LESS = 390, + SQL_GREATER = 391, + SQL_LESSEQ = 392, + SQL_GREATEREQ = 393, + SQL_NOTNULL = 394, + SQL_UMINUS = 395 }; #endif @@ -243,6 +250,7 @@ union HSQL_STYPE hsql::Expr* expr; hsql::OrderDescription* order; hsql::OrderType order_type; + hsql::DatetimeField datetime_field; hsql::LimitDescription* limit; hsql::ColumnDefinition* column_t; hsql::GroupByDescription* group_t; @@ -258,7 +266,7 @@ union HSQL_STYPE std::vector* expr_vec; std::vector* order_vec; -#line 262 "bison_parser.h" /* yacc.c:1909 */ +#line 270 "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 799887b..4f8eff6 100755 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -116,6 +116,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha hsql::Expr* expr; hsql::OrderDescription* order; hsql::OrderType order_type; + hsql::DatetimeField datetime_field; hsql::LimitDescription* limit; hsql::ColumnDefinition* column_t; hsql::GroupByDescription* group_t; @@ -136,7 +137,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha /********************************* ** Destructor symbols *********************************/ -%destructor { } +%destructor { } %destructor { free( ($$.name) ); free( ($$.schema) ); } %destructor { free( ($$) ); } %destructor { @@ -163,7 +164,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %token CASCADE COLUMNS CONTROL DEFAULT EXECUTE EXPLAIN %token HISTORY INTEGER NATURAL PREPARE PRIMARY SCHEMAS %token SPATIAL VIRTUAL BEFORE COLUMN CREATE DELETE DIRECT -%token DOUBLE ESCAPE EXCEPT EXISTS GLOBAL HAVING IMPORT +%token DOUBLE ESCAPE EXCEPT EXISTS EXTRACT GLOBAL HAVING IMPORT %token INSERT ISNULL OFFSET RENAME SCHEMA SELECT SORTED %token TABLES UNIQUE UNLOAD UPDATE VALUES AFTER ALTER CROSS %token DELTA GROUP INDEX INNER LIMIT LOCAL MERGE MINUS ORDER @@ -172,7 +173,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 +%token ARRAY CONCAT ILIKE SECOND MINUTE HOUR DAY MONTH YEAR /********************************* ** Non-Terminal types (http://www.gnu.org/software/bison/manual/html_node/Type-Decl.html) @@ -195,7 +196,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %type import_file_type opt_join_type column_type %type opt_from_clause 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 expr operand scalar_expr unary_expr binary_expr logic_expr exists_expr extract_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 case_list in_expr hint @@ -203,6 +204,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %type opt_limit opt_top %type order_desc %type opt_order_type +%type datetime_field %type column_def %type update_clause %type opt_group @@ -764,6 +766,7 @@ operand: | binary_expr | case_expr | function_expr + | extract_expr | array_expr | '(' select_no_paren ')' { $$ = Expr::makeSelect($2); } ; @@ -837,9 +840,21 @@ comp_expr: ; function_expr: - IDENTIFIER '(' ')' { $$ = Expr::makeFunctionRef($1, new std::vector(), false); } - | 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); } + ; + +extract_expr: + EXTRACT '(' datetime_field FROM expr ')' { $$ = Expr::makeExtract($3, $5); } + ; + +datetime_field: + SECOND { $$ = kDatetimeSecond; } + | MINUTE { $$ = kDatetimeMinute; } + | HOUR { $$ = kDatetimeHour; } + | DAY { $$ = kDatetimeDay; } + | MONTH { $$ = kDatetimeMonth; } + | YEAR { $$ = kDatetimeYear; } array_expr: ARRAY '[' expr_list ']' { $$ = Expr::makeArray($3); } diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index 22b57e5..e8e7a2b 100644 --- a/src/parser/flex_lexer.cpp +++ b/src/parser/flex_lexer.cpp @@ -1,6 +1,6 @@ -#line 1 "flex_lexer.cpp" +#line 2 "flex_lexer.cpp" -#line 3 "flex_lexer.cpp" +#line 4 "flex_lexer.cpp" #define YY_INT_ALIGNED short int @@ -9,245 +9,11 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 +#define YY_FLEX_SUBMINOR_VERSION 1 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif -#ifdef yy_create_buffer -#define hsql__create_buffer_ALREADY_DEFINED -#else -#define yy_create_buffer hsql__create_buffer -#endif - -#ifdef yy_delete_buffer -#define hsql__delete_buffer_ALREADY_DEFINED -#else -#define yy_delete_buffer hsql__delete_buffer -#endif - -#ifdef yy_scan_buffer -#define hsql__scan_buffer_ALREADY_DEFINED -#else -#define yy_scan_buffer hsql__scan_buffer -#endif - -#ifdef yy_scan_string -#define hsql__scan_string_ALREADY_DEFINED -#else -#define yy_scan_string hsql__scan_string -#endif - -#ifdef yy_scan_bytes -#define hsql__scan_bytes_ALREADY_DEFINED -#else -#define yy_scan_bytes hsql__scan_bytes -#endif - -#ifdef yy_init_buffer -#define hsql__init_buffer_ALREADY_DEFINED -#else -#define yy_init_buffer hsql__init_buffer -#endif - -#ifdef yy_flush_buffer -#define hsql__flush_buffer_ALREADY_DEFINED -#else -#define yy_flush_buffer hsql__flush_buffer -#endif - -#ifdef yy_load_buffer_state -#define hsql__load_buffer_state_ALREADY_DEFINED -#else -#define yy_load_buffer_state hsql__load_buffer_state -#endif - -#ifdef yy_switch_to_buffer -#define hsql__switch_to_buffer_ALREADY_DEFINED -#else -#define yy_switch_to_buffer hsql__switch_to_buffer -#endif - -#ifdef yypush_buffer_state -#define hsql_push_buffer_state_ALREADY_DEFINED -#else -#define yypush_buffer_state hsql_push_buffer_state -#endif - -#ifdef yypop_buffer_state -#define hsql_pop_buffer_state_ALREADY_DEFINED -#else -#define yypop_buffer_state hsql_pop_buffer_state -#endif - -#ifdef yyensure_buffer_stack -#define hsql_ensure_buffer_stack_ALREADY_DEFINED -#else -#define yyensure_buffer_stack hsql_ensure_buffer_stack -#endif - -#ifdef yylex -#define hsql_lex_ALREADY_DEFINED -#else -#define yylex hsql_lex -#endif - -#ifdef yyrestart -#define hsql_restart_ALREADY_DEFINED -#else -#define yyrestart hsql_restart -#endif - -#ifdef yylex_init -#define hsql_lex_init_ALREADY_DEFINED -#else -#define yylex_init hsql_lex_init -#endif - -#ifdef yylex_init_extra -#define hsql_lex_init_extra_ALREADY_DEFINED -#else -#define yylex_init_extra hsql_lex_init_extra -#endif - -#ifdef yylex_destroy -#define hsql_lex_destroy_ALREADY_DEFINED -#else -#define yylex_destroy hsql_lex_destroy -#endif - -#ifdef yyget_debug -#define hsql_get_debug_ALREADY_DEFINED -#else -#define yyget_debug hsql_get_debug -#endif - -#ifdef yyset_debug -#define hsql_set_debug_ALREADY_DEFINED -#else -#define yyset_debug hsql_set_debug -#endif - -#ifdef yyget_extra -#define hsql_get_extra_ALREADY_DEFINED -#else -#define yyget_extra hsql_get_extra -#endif - -#ifdef yyset_extra -#define hsql_set_extra_ALREADY_DEFINED -#else -#define yyset_extra hsql_set_extra -#endif - -#ifdef yyget_in -#define hsql_get_in_ALREADY_DEFINED -#else -#define yyget_in hsql_get_in -#endif - -#ifdef yyset_in -#define hsql_set_in_ALREADY_DEFINED -#else -#define yyset_in hsql_set_in -#endif - -#ifdef yyget_out -#define hsql_get_out_ALREADY_DEFINED -#else -#define yyget_out hsql_get_out -#endif - -#ifdef yyset_out -#define hsql_set_out_ALREADY_DEFINED -#else -#define yyset_out hsql_set_out -#endif - -#ifdef yyget_leng -#define hsql_get_leng_ALREADY_DEFINED -#else -#define yyget_leng hsql_get_leng -#endif - -#ifdef yyget_text -#define hsql_get_text_ALREADY_DEFINED -#else -#define yyget_text hsql_get_text -#endif - -#ifdef yyget_lineno -#define hsql_get_lineno_ALREADY_DEFINED -#else -#define yyget_lineno hsql_get_lineno -#endif - -#ifdef yyset_lineno -#define hsql_set_lineno_ALREADY_DEFINED -#else -#define yyset_lineno hsql_set_lineno -#endif - -#ifdef yyget_column -#define hsql_get_column_ALREADY_DEFINED -#else -#define yyget_column hsql_get_column -#endif - -#ifdef yyset_column -#define hsql_set_column_ALREADY_DEFINED -#else -#define yyset_column hsql_set_column -#endif - -#ifdef yywrap -#define hsql_wrap_ALREADY_DEFINED -#else -#define yywrap hsql_wrap -#endif - -#ifdef yyget_lval -#define hsql_get_lval_ALREADY_DEFINED -#else -#define yyget_lval hsql_get_lval -#endif - -#ifdef yyset_lval -#define hsql_set_lval_ALREADY_DEFINED -#else -#define yyset_lval hsql_set_lval -#endif - -#ifdef yyget_lloc -#define hsql_get_lloc_ALREADY_DEFINED -#else -#define yyget_lloc hsql_get_lloc -#endif - -#ifdef yyset_lloc -#define hsql_set_lloc_ALREADY_DEFINED -#else -#define yyset_lloc hsql_set_lloc -#endif - -#ifdef yyalloc -#define hsql_alloc_ALREADY_DEFINED -#else -#define yyalloc hsql_alloc -#endif - -#ifdef yyrealloc -#define hsql_realloc_ALREADY_DEFINED -#else -#define yyrealloc hsql_realloc -#endif - -#ifdef yyfree -#define hsql_free_ALREADY_DEFINED -#else -#define yyfree hsql_free -#endif - /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ @@ -318,16 +84,10 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - #endif /* ! C99 */ #endif /* ! FLEXINT_H */ -/* begin standard C++ headers. */ - /* TODO: this is always defined, so inline it */ #define yyconst const @@ -340,10 +100,12 @@ typedef unsigned int flex_uint32_t; /* Returned upon end-of-file. */ #define YY_NULL 0 -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T @@ -367,16 +129,20 @@ typedef void* yyscan_t; * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * + /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START + /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin , yyscanner ) +#define YY_NEW_FILE hsql_restart(yyin ,yyscanner ) + #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ @@ -409,7 +175,7 @@ typedef size_t yy_size_t; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - + #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) @@ -426,6 +192,7 @@ typedef size_t yy_size_t; YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) + #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE @@ -485,7 +252,7 @@ struct yy_buffer_state * possible backing-up. * * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by + * (via hsql_restart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 @@ -502,67 +269,73 @@ struct yy_buffer_state #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) + /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] -void yyrestart ( FILE *input_file , yyscan_t yyscanner ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); -void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); -void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); -void yypop_buffer_state ( yyscan_t yyscanner ); +void hsql_restart (FILE *input_file ,yyscan_t yyscanner ); +void hsql__switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); +YY_BUFFER_STATE hsql__create_buffer (FILE *file,int size ,yyscan_t yyscanner ); +void hsql__delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); +void hsql__flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); +void hsql_push_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); +void hsql_pop_buffer_state (yyscan_t yyscanner ); -static void yyensure_buffer_stack ( yyscan_t yyscanner ); -static void yy_load_buffer_state ( yyscan_t yyscanner ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner) +static void hsql_ensure_buffer_stack (yyscan_t yyscanner ); +static void hsql__load_buffer_state (yyscan_t yyscanner ); +static void hsql__init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner ); +#define YY_FLUSH_BUFFER hsql__flush_buffer(YY_CURRENT_BUFFER ,yyscanner) -void *yyalloc ( yy_size_t , yyscan_t yyscanner ); -void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); -void yyfree ( void * , yyscan_t yyscanner ); +YY_BUFFER_STATE hsql__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); +YY_BUFFER_STATE hsql__scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); +YY_BUFFER_STATE hsql__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); + +void *hsql_alloc (yy_size_t ,yyscan_t yyscanner ); +void *hsql_realloc (void *,yy_size_t ,yyscan_t yyscanner ); +void hsql_free (void * ,yyscan_t yyscanner ); + +#define yy_new_buffer hsql__create_buffer -#define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (yyscanner); \ + hsql_ensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ + hsql__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } + #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (yyscanner); \ + hsql_ensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ + hsql__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } + #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define hsql_wrap(yyscanner) (/*CONSTCOND*/1) #define YY_SKIP_YYWRAP -typedef flex_uint8_t YY_CHAR; + +typedef unsigned char YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r -static yy_state_type yy_get_previous_state ( yyscan_t yyscanner ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner); -static int yy_get_next_buffer ( yyscan_t yyscanner ); -static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); +static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); +static int yy_get_next_buffer (yyscan_t yyscanner ); +static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. @@ -573,8 +346,9 @@ 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 137 -#define YY_END_OF_BUFFER 138 + +#define YY_NUM_RULES 144 +#define YY_END_OF_BUFFER 145 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -582,27 +356,27 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[942] = +static yyconst flex_int16_t yy_accept[988] = { 0, - 0, 0, 2, 2, 138, 136, 4, 4, 136, 136, - 129, 136, 129, 129, 132, 129, 129, 129, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 129, 2, 2, 3, 2, 2, 2, 2, 2, + 0, 0, 2, 2, 145, 143, 4, 4, 143, 143, + 136, 143, 136, 136, 139, 136, 136, 136, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 136, 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, 2, 2, 2, 2, 4, - 124, 0, 0, 135, 1, 132, 131, 130, 126, 125, - 123, 127, 134, 134, 134, 134, 134, 134, 114, 134, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 4, 131, 0, 0, 142, 1, 139, 138, 137, + 133, 132, 130, 134, 141, 141, 141, 141, 141, 141, - 115, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 116, 134, 134, 117, 118, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 119, 120, - 121, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 122, 134, 134, - 134, 134, 134, 134, 134, 134, 128, 2, 2, 2, - 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, + 115, 141, 116, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 117, 141, 141, 118, 119, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 120, 121, 122, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 123, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 135, 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, @@ -611,19 +385,19 @@ static const flex_int16_t yy_accept[942] = 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, 130, 100, 134, - 101, 134, 134, 102, 134, 103, 134, 134, 134, 134, - 134, 134, 134, 134, 104, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 105, 134, 134, 134, 134, - 134, 134, 106, 134, 134, 134, 134, 134, 134, 134, - - 134, 134, 134, 134, 134, 134, 107, 134, 134, 108, - 134, 134, 134, 134, 134, 134, 134, 134, 109, 134, - 134, 110, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 111, 134, 134, 134, 134, 112, 134, - 134, 134, 134, 113, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 140, 137, 101, 141, 102, 141, + 141, 103, 141, 104, 141, 141, 141, 141, 141, 141, + 141, 141, 105, 141, 127, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 106, 141, 141, 141, 141, 141, + + 141, 141, 107, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 108, 141, 141, + 109, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 110, 141, 141, 111, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 112, 141, 141, 141, + 141, 113, 141, 141, 141, 141, 114, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 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, @@ -633,19 +407,19 @@ static const flex_int16_t yy_accept[942] = 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, 134, 134, 134, 134, 134, 134, 73, 134, - 74, 134, 134, 134, 134, 75, 134, 134, 134, 134, - 76, 134, 134, 134, 77, 78, 134, 134, 134, 134, - 134, 79, 80, 81, 134, 134, 82, 134, 83, 134, - 134, 134, 134, 134, 134, 134, 84, 134, 85, 86, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 141, 141, 141, 141, 141, 141, 74, 141, + 75, 141, 141, 141, 141, 76, 141, 141, 141, 141, + 77, 141, 141, 141, 78, 79, 141, 141, 141, 141, - 87, 134, 89, 134, 134, 134, 134, 90, 134, 134, - 134, 134, 134, 91, 92, 134, 134, 134, 134, 134, - 134, 134, 93, 134, 134, 134, 134, 94, 95, 96, - 134, 134, 134, 134, 134, 134, 134, 97, 134, 98, - 134, 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, + 141, 141, 80, 81, 82, 141, 141, 83, 141, 84, + 141, 126, 141, 141, 141, 141, 141, 141, 85, 141, + 86, 87, 88, 141, 90, 141, 141, 141, 141, 141, + 91, 141, 141, 141, 141, 141, 92, 93, 141, 141, + 141, 141, 141, 141, 141, 141, 94, 141, 141, 141, + 141, 95, 96, 97, 141, 141, 141, 141, 141, 141, + 141, 98, 141, 99, 141, 100, 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, @@ -653,44 +427,48 @@ static const flex_int16_t yy_accept[942] = 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, 134, 56, 134, 134, 134, 134, - 134, 134, 57, 134, 134, 134, 58, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 59, 134, 134, 88, - 134, 60, 61, 134, 134, 134, 134, 62, 63, 64, - 65, 134, 134, 134, 66, 67, 134, 134, 134, 134, - 134, 68, 134, 134, 134, 134, 69, 134, 134, 134, - 70, 134, 134, 134, 71, 134, 134, 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, 55, 56, 141, 57, 141, 141, 141, 141, + 141, 141, 58, 141, 141, 141, 59, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 60, 141, 141, + 89, 141, 61, 62, 141, 141, 141, 141, 63, 64, + 65, 66, 141, 128, 141, 141, 141, 67, 68, 141, + 141, 141, 141, 141, 69, 141, 141, 141, 141, 141, + 70, 141, 141, 141, 71, 141, 141, 141, 72, 141, + 141, 73, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 134, 30, 134, 134, 31, 134, - 32, 134, 134, 33, 34, 134, 35, 36, 37, 134, - 38, 134, 39, 40, 134, 41, 42, 134, 134, 43, - 134, 134, 44, 134, 134, 134, 45, 134, 46, 47, - - 48, 134, 49, 134, 134, 134, 50, 51, 52, 53, - 134, 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, 134, 19, 134, 20, 21, 22, 23, - 134, 24, 134, 134, 25, 26, 134, 27, 28, 134, - 134, 134, 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, 134, 10, - 134, 11, 134, 12, 134, 134, 13, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 134, 7, 134, 8, - 9, 2, 2, 2, 2, 2, 5, 6, 2, 2, - 0 + 2, 2, 141, 30, 141, 141, 31, 141, 32, 141, + 141, 33, 34, 141, 35, 36, 37, 141, 38, 141, + 141, 40, 41, 141, 42, 43, 141, 141, 44, 125, + 141, 141, 45, 141, 141, 141, 46, 141, 47, 124, + 48, 49, 141, 50, 141, 141, 141, 51, 52, 53, + 54, 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, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 14, 15, 16, 17, 18, 141, 19, 141, + 20, 21, 39, 22, 23, 141, 24, 141, 141, 25, + 26, 141, 27, 28, 141, 141, 141, 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, 141, 10, 141, 11, 141, 12, + 141, 141, 13, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 141, 7, 141, 8, 9, 2, 2, 2, + 2, 2, 5, 6, 2, 2, 0 } ; -static const YY_CHAR yy_ec[256] = +static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -722,7 +500,7 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[68] = +static yyconst YY_CHAR yy_meta[68] = { 0, 1, 1, 2, 1, 3, 1, 1, 1, 1, 4, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, @@ -733,642 +511,674 @@ static const YY_CHAR yy_meta[68] = 4, 4, 4, 4, 4, 4, 1 } ; -static const flex_int16_t yy_base[949] = +static yyconst flex_uint16_t yy_base[995] = { 0, - 0, 0, 67, 0, 454, 3713, 133, 135, 423, 0, - 3713, 426, 131, 420, 133, 132, 405, 399, 129, 129, + 0, 0, 67, 0, 523, 3889, 133, 135, 462, 0, + 3889, 463, 131, 456, 133, 132, 451, 434, 129, 129, 137, 135, 145, 179, 127, 184, 189, 131, 144, 201, - 200, 224, 193, 230, 0, 208, 246, 289, 241, 284, - 287, 329, 0, 200, 229, 375, 370, 0, 339, 268, - 319, 271, 271, 312, 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, 3713, 0, 147, 203, 343, 353, 229, 250, 352, + 202, 224, 235, 230, 0, 200, 262, 305, 241, 253, + 255, 146, 366, 0, 200, 224, 391, 357, 0, 348, + 264, 327, 222, 251, 297, 294, 363, 430, 484, 536, + 584, 632, 283, 359, 680, 294, 293, 361, 422, 732, + 780, 431, 348, 435, 830, 882, 472, 530, 443, 360, + 225, 296, 3889, 279, 246, 3889, 3889, 306, 226, 207, + 3889, 3889, 3889, 3889, 0, 243, 280, 359, 438, 293, - 0, 418, 463, 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, - 0, 704, 728, 725, 761, 806, 769, 820, 857, 766, - 868, 871, 900, 894, 908, 960, 912, 942, 944, 801, + 309, 474, 0, 395, 478, 373, 294, 473, 537, 427, + 296, 306, 353, 379, 386, 537, 426, 463, 481, 488, + 486, 490, 525, 571, 485, 0, 539, 534, 587, 538, + 550, 535, 586, 582, 596, 576, 586, 588, 584, 585, + 599, 612, 609, 0, 635, 623, 626, 644, 643, 632, + 642, 646, 684, 640, 638, 660, 660, 651, 678, 690, + 684, 682, 679, 699, 697, 694, 695, 731, 710, 696, + 716, 3889, 0, 340, 0, 206, 198, 0, 0, 335, + 190, 161, 0, 0, 0, 0, 736, 741, 745, 770, + 795, 811, 834, 869, 778, 873, 901, 799, 871, 923, - 946, 970, 998, 979, 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, + 975, 926, 829, 931, 960, 957, 934, 1025, 972, 997, + 1011, 1008, 1033, 1039, 1051, 1073, 1014, 985, 1077, 1064, + 1126, 1074, 1085, 1000, 1117, 1122, 1131, 1123, 1139, 1165, + 1161, 1179, 1177, 1187, 1189, 1171, 1220, 1215, 1225, 1231, + 1228, 1260, 1241, 1263, 1279, 1271, 1282, 1315, 1292, 1317, + 1328, 1202, 1323, 1314, 1333, 1365, 1357, 1367, 1359, 1368, + 1382, 1390, 1401, 0, 3889, 145, 0, 735, 0, 746, + 740, 0, 761, 0, 776, 792, 828, 1305, 823, 832, + 852, 849, 0, 903, 0, 910, 929, 1403, 938, 942, + 949, 989, 1058, 1079, 0, 1092, 1107, 1135, 1182, 1230, - 1337, 1356, 1356, 1373, 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, + 1260, 1327, 0, 1338, 1382, 1403, 1391, 1408, 1409, 1404, + 1405, 1409, 1417, 1415, 1426, 1431, 1433, 1441, 1419, 1427, + 0, 1424, 1442, 1439, 1445, 1458, 1453, 1440, 1442, 1443, + 0, 1454, 1451, 1451, 1467, 1472, 1478, 1464, 1464, 1468, + 1481, 1464, 1477, 1485, 1477, 1489, 0, 1472, 1480, 1481, + 1490, 0, 1487, 1490, 1499, 1509, 0, 1501, 1501, 1505, + 1522, 1510, 1505, 1508, 1512, 1520, 1525, 1517, 0, 140, + 1531, 1539, 1541, 1543, 1562, 1544, 1577, 1547, 1565, 1581, + 1598, 1595, 1587, 1616, 1617, 1619, 1621, 1627, 1629, 1650, + 1655, 1652, 1661, 1653, 1683, 1665, 1693, 1687, 1691, 1709, - 1727, 1729, 1732, 1740, 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, + 1695, 1719, 1721, 1743, 1745, 1706, 1727, 1749, 1760, 1755, + 1773, 1761, 1795, 1783, 1786, 1804, 1812, 1809, 1814, 1823, + 1827, 1838, 1837, 1840, 1835, 1863, 1852, 1869, 1892, 1881, + 1866, 1906, 1894, 1907, 1897, 1925, 1935, 1937, 1911, 1920, + 1946, 1956, 1960, 1977, 1990, 1974, 1999, 1991, 1995, 2000, + 2008, 2023, 2025, 2033, 2044, 2034, 2062, 2059, 2049, 2036, + 2057, 2088, 2093, 2092, 2094, 2098, 2111, 2126, 2122, 2143, + 2147, 2148, 1536, 1539, 1563, 1564, 1656, 1701, 0, 1728, + 0, 1770, 1858, 1873, 1888, 0, 1896, 1927, 1964, 2043, + 0, 2130, 2129, 2144, 0, 0, 2146, 2148, 2146, 2150, - 0, 2094, 0, 2104, 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, + 2170, 2176, 0, 0, 0, 2180, 2169, 0, 2172, 0, + 2172, 0, 2185, 2174, 2172, 2183, 2184, 2198, 0, 2191, + 0, 0, 0, 2186, 0, 2195, 2204, 2191, 2207, 2200, + 0, 2217, 2216, 2204, 2206, 2212, 0, 0, 2225, 2226, + 2218, 2217, 2219, 2227, 2227, 2241, 0, 2241, 2241, 2250, + 2241, 0, 0, 2238, 2256, 2246, 2240, 2262, 2244, 2258, + 2264, 0, 2249, 0, 2267, 0, 0, 2275, 2276, 2270, + 2273, 2298, 2299, 2301, 2309, 2304, 2327, 2330, 2340, 2339, + 2314, 2358, 2352, 2349, 2388, 2363, 2373, 2397, 2402, 2394, + 2403, 2407, 2426, 2431, 2440, 2442, 2443, 2432, 2448, 2456, - 2514, 2523, 2538, 2524, 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, + 2461, 2480, 2472, 2477, 2485, 2496, 2494, 2502, 2515, 2511, + 2526, 2534, 2550, 2517, 2560, 2545, 2548, 2551, 2569, 2556, + 2586, 2582, 2585, 2588, 2601, 2604, 2619, 2610, 2623, 2625, + 2634, 2640, 2653, 2659, 2668, 2676, 2658, 2674, 2699, 2693, + 2710, 2677, 2712, 2718, 2727, 2731, 2728, 2733, 2736, 2744, + 2752, 2766, 2785, 2787, 2790, 2776, 2784, 2800, 2795, 2798, + 2801, 2806, 0, 0, 2259, 0, 2306, 2310, 2390, 2397, + 2461, 2493, 0, 2499, 2615, 2656, 0, 2675, 2734, 2762, + 2767, 2782, 2815, 2821, 2832, 2840, 2832, 0, 2838, 2828, + 0, 2829, 0, 0, 2831, 2849, 2836, 2844, 0, 0, - 2784, 2780, 2786, 2788, 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, 0, 2852, 0, 2858, 2852, 2841, 0, 0, 2858, + 2846, 2847, 2861, 2860, 0, 2873, 2871, 2857, 2875, 2879, + 2866, 2871, 2874, 2894, 0, 2892, 2894, 2894, 0, 2881, + 2902, 0, 2903, 2904, 2906, 2908, 2909, 2912, 2914, 2937, + 2938, 2942, 2943, 2966, 2960, 2952, 2968, 2977, 2982, 2978, + 2981, 2996, 3006, 3000, 3030, 3012, 3035, 3031, 3044, 3036, + 3040, 3065, 3052, 3054, 3075, 3066, 3084, 3089, 3088, 3094, + 3100, 3106, 3110, 3118, 3128, 3129, 3119, 3140, 3142, 3143, + 3158, 3164, 3152, 3182, 3154, 3192, 3194, 3180, 3197, 3210, + 3218, 3234, 3216, 3246, 3208, 3240, 3250, 3248, 3251, 3272, - 0, 3155, 0, 3168, 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, + 3283, 3262, 2918, 0, 2935, 2947, 3056, 3218, 0, 3228, + 3249, 0, 0, 3282, 0, 0, 0, 3284, 0, 3276, + 3273, 0, 0, 3270, 0, 0, 3281, 3296, 0, 0, + 3293, 3305, 0, 3287, 3304, 3285, 0, 3310, 3300, 0, + 0, 0, 3309, 0, 3322, 3324, 3307, 0, 0, 0, + 0, 3317, 3326, 3334, 3339, 3336, 3338, 3337, 3340, 3370, + 3362, 3372, 3374, 3378, 3380, 3388, 3391, 3393, 3396, 3422, + 3414, 3406, 3410, 3412, 3424, 3428, 3447, 3445, 3446, 3450, + 3476, 3468, 3462, 3484, 3478, 3480, 3481, 3514, 3502, 3486, + 3517, 3518, 3535, 3520, 3536, 3550, 3551, 3548, 3552, 3554, + + 3560, 3584, 0, 0, 0, 0, 0, 3346, 0, 3421, + 0, 0, 0, 0, 0, 3454, 0, 3517, 3558, 0, + 0, 3561, 0, 0, 3573, 3580, 3589, 0, 3590, 3592, + 3594, 3600, 3602, 3628, 3605, 3623, 3606, 3634, 3636, 3640, + 3642, 3646, 3657, 3659, 3658, 3668, 3674, 3676, 3680, 3682, + 3697, 3708, 3692, 3711, 3593, 0, 3683, 0, 3700, 0, + 3694, 3709, 0, 3730, 3722, 3733, 3732, 3751, 3734, 3736, + 3762, 3765, 3766, 0, 3753, 0, 0, 3768, 3770, 3787, + 3776, 3784, 0, 0, 3786, 3799, 3889, 3864, 3868, 136, + 3872, 3876, 3880, 3884 - 3490, 3508, 3494, 3507, 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[949] = +static yyconst flex_int16_t yy_def[995] = { 0, - 941, 1, 941, 3, 941, 941, 941, 941, 941, 942, - 941, 943, 941, 941, 941, 941, 941, 941, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 941, 945, 945, 941, 945, 946, 945, 947, 945, - 945, 945, 945, 945, 945, 948, 948, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 945, 941, - 941, 942, 943, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 944, 944, 944, 944, 944, 944, 944, 944, + 987, 1, 987, 3, 987, 987, 987, 987, 987, 988, + 987, 989, 987, 987, 987, 987, 987, 987, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 987, 991, 991, 987, 991, 992, 991, 993, + 991, 991, 991, 991, 991, 991, 994, 994, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 991, 987, 987, 988, 989, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 990, 990, 990, 990, 990, 990, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 941, 945, 945, 945, - 946, 947, 945, 945, 945, 945, 945, 945, 945, 945, - 945, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 987, 991, 991, 991, 992, 993, 991, 991, 991, + 991, 991, 991, 991, 991, 991, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 945, 941, 941, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 991, 987, 987, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 945, 945, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 991, 991, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 57, 57, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, - 944, 944, 944, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 58, 58, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + + 58, 58, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 990, 990, 990, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 990, 990, 990, 990, 990, 990, + 990, 990, 990, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 990, 990, 990, 990, 990, 58, 58, 58, + 58, 58, 990, 990, 58, 58, 0, 987, 987, 987, + 987, 987, 987, 987 - 57, 57, 57, 57, 57, 57, 57, 57, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 944, 944, 944, 944, - 944, 57, 57, 57, 57, 57, 944, 944, 57, 57, - 0, 941, 941, 941, 941, 941, 941, 941 } ; -static const flex_int16_t yy_nxt[3781] = +static yyconst flex_uint16_t yy_nxt[3957] = { 0, 6, 7, 8, 9, 10, 11, 12, 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, 39, 40, 41, 35, 35, 35, 6, + 36, 37, 38, 39, 40, 41, 35, 42, 35, 6, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 35, 35, 35, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 39, 40, 41, 35, 42, 35, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 76, 77, 78, 72, 72, 72, 43, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 72, 72, 72, 79, 80, 80, 80, 80, 85, 93, - 86, 88, 86, 89, 90, 94, 100, 95, 106, 356, - 102, 119, 107, 96, 258, 97, 108, 120, 128, 98, - 99, 129, 109, 259, 103, 110, 101, 104, 105, 111, - 356, 112, 94, 100, 95, 106, 113, 102, 119, 107, - 96, 114, 97, 108, 120, 128, 98, 99, 129, 109, - 259, 103, 110, 101, 104, 105, 111, 121, 112, 176, + 77, 78, 79, 73, 80, 73, 44, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 73, 80, 73, 81, 82, 82, 82, 82, 87, 95, + 88, 90, 88, 91, 92, 96, 102, 97, 108, 370, + 104, 121, 109, 98, 266, 99, 110, 122, 131, 100, + 101, 132, 111, 171, 105, 112, 103, 106, 107, 113, + 370, 114, 96, 102, 97, 108, 115, 104, 121, 109, + 98, 116, 99, 110, 122, 131, 100, 101, 132, 111, + 171, 105, 112, 103, 106, 107, 113, 123, 114, 181, - 115, 169, 80, 113, 173, 122, 116, 123, 114, 117, - 355, 139, 118, 124, 125, 126, 258, 133, 130, 140, - 127, 134, 131, 141, 121, 146, 142, 115, 132, 147, - 80, 80, 122, 116, 123, 260, 117, 135, 139, 118, - 124, 125, 126, 143, 133, 130, 140, 127, 134, 131, - 141, 136, 146, 142, 144, 132, 147, 137, 138, 265, - 145, 148, 260, 149, 135, 266, 150, 160, 87, 161, - 143, 84, 162, 151, 152, 174, 257, 175, 136, 177, - 175, 144, 178, 179, 137, 138, 265, 145, 148, 256, - 149, 182, 266, 150, 160, 218, 161, 163, 208, 162, + 117, 174, 82, 115, 178, 124, 118, 126, 116, 119, + 369, 125, 120, 127, 128, 129, 266, 150, 133, 136, + 130, 151, 134, 137, 123, 82, 82, 117, 135, 138, + 182, 180, 124, 118, 126, 89, 119, 139, 125, 120, + 127, 128, 129, 147, 150, 133, 136, 130, 151, 134, + 137, 140, 86, 143, 148, 135, 138, 141, 142, 267, + 149, 144, 183, 184, 139, 145, 167, 164, 146, 165, + 147, 179, 166, 180, 168, 169, 170, 152, 140, 153, + 143, 148, 154, 265, 141, 142, 267, 149, 144, 155, + 156, 264, 145, 167, 164, 146, 165, 82, 82, 166, - 151, 152, 153, 154, 209, 164, 155, 165, 166, 156, - 157, 182, 80, 80, 181, 182, 158, 275, 182, 159, - 88, 86, 218, 180, 163, 208, 169, 80, 176, 153, - 154, 209, 164, 155, 165, 166, 156, 157, 182, 177, - 175, 182, 182, 158, 275, 173, 159, 168, 168, 276, - 168, 168, 168, 168, 168, 168, 210, 168, 168, 168, - 182, 182, 182, 183, 211, 184, 263, 261, 182, 264, - 267, 185, 217, 186, 168, 262, 276, 187, 188, 283, - 182, 222, 182, 210, 268, 223, 170, 182, 182, 182, - 183, 211, 184, 263, 261, 167, 264, 267, 185, 217, + 187, 168, 169, 170, 152, 186, 153, 213, 185, 154, + 224, 187, 268, 214, 90, 88, 155, 156, 157, 158, + 187, 223, 159, 273, 274, 160, 161, 187, 283, 292, + 187, 187, 162, 293, 213, 163, 181, 224, 187, 268, + 214, 174, 82, 182, 180, 157, 158, 187, 223, 159, + 273, 274, 160, 161, 178, 283, 292, 187, 187, 162, + 293, 173, 163, 173, 173, 187, 173, 173, 173, 173, + 173, 173, 215, 173, 173, 173, 187, 263, 225, 188, + 216, 189, 226, 269, 294, 187, 217, 190, 227, 191, + 281, 270, 187, 192, 193, 295, 187, 187, 187, 215, - 186, 182, 262, 284, 187, 188, 283, 182, 222, 182, - 92, 268, 223, 168, 168, 168, 91, 168, 168, 168, - 168, 168, 168, 219, 168, 168, 168, 220, 182, 87, - 284, 189, 84, 221, 81, 232, 235, 252, 273, 182, - 236, 182, 269, 182, 285, 253, 233, 286, 274, 270, - 219, 190, 234, 941, 220, 941, 182, 287, 189, 182, - 221, 182, 232, 235, 252, 273, 182, 236, 182, 269, - 182, 285, 253, 233, 286, 274, 270, 292, 190, 234, - 168, 191, 182, 182, 287, 182, 182, 271, 182, 272, - 941, 249, 293, 250, 294, 192, 251, 182, 193, 194, + 282, 296, 175, 187, 263, 225, 188, 216, 189, 226, + 269, 294, 187, 217, 190, 227, 191, 281, 270, 277, + 192, 193, 295, 187, 187, 187, 278, 282, 296, 173, + 173, 173, 172, 173, 173, 173, 173, 173, 173, 228, + 173, 173, 173, 229, 239, 94, 277, 194, 187, 230, + 302, 271, 242, 278, 272, 240, 243, 290, 291, 187, + 187, 241, 93, 261, 262, 89, 228, 195, 187, 86, + 229, 239, 187, 83, 194, 187, 230, 302, 271, 242, + 187, 272, 240, 243, 290, 291, 187, 187, 241, 187, + 261, 262, 275, 303, 195, 187, 173, 196, 256, 187, - 254, 255, 182, 295, 292, 182, 941, 941, 191, 182, - 941, 296, 182, 297, 271, 941, 272, 182, 249, 293, - 250, 294, 192, 251, 182, 193, 194, 254, 255, 182, - 295, 277, 182, 195, 281, 282, 278, 196, 296, 941, - 297, 197, 279, 302, 182, 303, 288, 198, 289, 280, - 199, 298, 290, 941, 299, 308, 309, 182, 277, 291, - 195, 281, 282, 278, 196, 941, 300, 941, 197, 279, - 302, 301, 303, 288, 198, 289, 280, 199, 298, 290, - 304, 299, 308, 309, 182, 182, 291, 310, 311, 312, - 305, 313, 200, 300, 201, 306, 307, 316, 301, 202, + 257, 187, 279, 258, 280, 284, 276, 187, 304, 187, + 285, 197, 305, 306, 198, 199, 187, 307, 312, 275, + 303, 187, 987, 987, 196, 256, 987, 257, 187, 279, + 258, 280, 284, 276, 987, 304, 187, 285, 197, 305, + 306, 198, 199, 259, 307, 312, 987, 187, 187, 200, + 286, 260, 297, 201, 298, 287, 308, 202, 299, 309, + 313, 288, 314, 203, 319, 300, 204, 187, 289, 301, + 259, 320, 321, 187, 187, 987, 200, 286, 260, 297, + 201, 298, 287, 308, 202, 299, 309, 313, 288, 314, + 203, 319, 300, 204, 187, 289, 301, 310, 320, 321, - 314, 317, 315, 318, 203, 182, 941, 304, 319, 320, - 941, 321, 182, 322, 310, 311, 312, 305, 313, 200, - 323, 201, 306, 307, 316, 324, 202, 314, 317, 315, - 318, 203, 182, 182, 325, 319, 320, 204, 321, 326, - 322, 327, 331, 205, 332, 328, 206, 323, 335, 207, - 333, 329, 324, 182, 941, 941, 330, 336, 334, 337, - 182, 325, 941, 941, 204, 338, 326, 339, 327, 331, - 205, 332, 328, 206, 941, 335, 207, 333, 329, 342, - 182, 182, 212, 330, 336, 334, 337, 340, 213, 214, - 215, 343, 338, 344, 339, 216, 345, 346, 341, 348, + 187, 187, 311, 315, 322, 323, 327, 324, 205, 325, + 206, 326, 328, 316, 329, 207, 330, 331, 317, 318, + 208, 187, 987, 332, 310, 333, 987, 334, 187, 311, + 315, 322, 323, 327, 324, 205, 325, 206, 326, 328, + 316, 329, 207, 330, 331, 317, 318, 208, 187, 187, + 332, 335, 333, 209, 334, 336, 337, 338, 341, 210, + 339, 343, 211, 342, 340, 212, 344, 348, 349, 187, + 987, 987, 987, 350, 351, 352, 187, 987, 335, 987, + 209, 987, 336, 337, 338, 341, 210, 339, 343, 211, + 342, 340, 212, 344, 348, 349, 187, 187, 218, 345, - 347, 182, 941, 349, 350, 941, 342, 353, 182, 212, - 354, 453, 454, 455, 340, 213, 214, 215, 343, 351, - 344, 182, 216, 345, 346, 341, 348, 347, 182, 224, - 349, 350, 352, 182, 353, 941, 456, 354, 453, 454, - 455, 182, 182, 225, 357, 182, 351, 457, 182, 226, - 227, 941, 458, 182, 941, 941, 224, 358, 941, 352, - 182, 459, 182, 456, 462, 182, 941, 941, 182, 182, - 225, 357, 182, 460, 457, 461, 226, 227, 182, 458, - 182, 182, 228, 182, 358, 359, 182, 463, 459, 182, - 229, 462, 182, 360, 230, 941, 941, 231, 182, 363, + 350, 351, 352, 353, 219, 220, 221, 355, 346, 356, + 357, 222, 358, 361, 354, 362, 347, 187, 987, 363, + 359, 987, 987, 360, 187, 218, 345, 366, 367, 368, + 353, 219, 220, 221, 355, 346, 356, 357, 222, 358, + 361, 354, 362, 347, 187, 231, 363, 359, 364, 187, + 360, 987, 473, 187, 366, 367, 368, 371, 187, 232, + 987, 365, 187, 474, 475, 233, 234, 987, 987, 187, + 987, 987, 231, 187, 476, 364, 187, 372, 187, 473, + 187, 987, 187, 987, 371, 187, 232, 187, 365, 187, + 474, 475, 233, 234, 373, 187, 187, 187, 235, 987, - 460, 182, 461, 182, 941, 182, 182, 941, 182, 228, - 182, 941, 359, 182, 463, 941, 941, 229, 182, 361, - 360, 230, 362, 182, 231, 182, 363, 464, 182, 237, - 182, 238, 383, 182, 239, 364, 465, 182, 182, 466, - 467, 240, 241, 182, 941, 182, 361, 941, 941, 362, - 182, 182, 941, 941, 464, 468, 237, 182, 238, 383, - 941, 239, 364, 465, 182, 182, 466, 467, 240, 241, - 182, 182, 941, 471, 182, 365, 941, 472, 182, 242, - 243, 941, 468, 244, 182, 182, 245, 246, 182, 366, - 941, 182, 367, 247, 182, 369, 248, 370, 182, 368, + 187, 476, 374, 477, 372, 187, 236, 187, 375, 187, + 237, 376, 187, 238, 187, 187, 385, 187, 987, 987, + 987, 373, 187, 987, 187, 235, 386, 478, 187, 374, + 477, 987, 187, 236, 187, 375, 187, 237, 376, 187, + 238, 377, 187, 385, 187, 244, 187, 245, 187, 378, + 246, 187, 479, 386, 478, 187, 482, 247, 248, 187, + 987, 987, 396, 187, 483, 484, 187, 187, 377, 987, + 987, 187, 244, 187, 245, 187, 378, 246, 187, 479, + 485, 987, 987, 482, 247, 248, 187, 379, 187, 396, + 187, 483, 484, 187, 187, 249, 250, 381, 187, 251, - 471, 182, 365, 182, 472, 182, 242, 243, 182, 473, - 244, 182, 182, 245, 246, 182, 366, 371, 182, 367, - 247, 182, 369, 248, 370, 182, 368, 372, 373, 182, - 182, 182, 182, 182, 941, 182, 473, 182, 182, 474, - 374, 475, 379, 380, 371, 182, 941, 476, 941, 182, - 941, 941, 182, 408, 372, 373, 182, 941, 182, 182, - 182, 182, 384, 182, 182, 477, 474, 374, 475, 379, - 380, 382, 182, 375, 476, 381, 182, 182, 376, 182, - 408, 182, 941, 182, 377, 385, 182, 182, 182, 384, - 182, 378, 477, 478, 941, 941, 182, 182, 382, 941, + 987, 380, 252, 253, 382, 387, 187, 485, 187, 254, + 187, 987, 255, 187, 379, 187, 987, 187, 187, 187, + 486, 987, 249, 250, 381, 383, 251, 384, 380, 252, + 253, 382, 387, 187, 487, 187, 254, 187, 187, 255, + 187, 987, 488, 187, 987, 187, 187, 486, 187, 400, + 987, 187, 383, 491, 384, 388, 394, 395, 397, 492, + 389, 487, 987, 187, 987, 187, 987, 187, 187, 488, + 187, 187, 987, 399, 187, 187, 400, 187, 187, 987, + 491, 493, 388, 394, 395, 397, 492, 389, 390, 187, + 187, 398, 187, 391, 187, 187, 406, 187, 187, 392, - 375, 941, 381, 390, 182, 376, 182, 182, 182, 182, - 182, 377, 385, 386, 182, 387, 182, 182, 378, 388, - 478, 182, 391, 182, 182, 941, 389, 392, 393, 182, - 390, 182, 409, 941, 182, 182, 182, 182, 941, 941, - 386, 182, 387, 182, 182, 941, 388, 182, 182, 391, - 182, 182, 182, 389, 392, 393, 182, 394, 182, 409, - 395, 182, 182, 182, 182, 400, 396, 182, 182, 397, - 182, 182, 182, 941, 182, 182, 414, 182, 182, 182, - 398, 182, 941, 182, 394, 399, 401, 395, 182, 469, - 182, 182, 400, 396, 182, 182, 397, 182, 182, 182, + 399, 187, 187, 494, 187, 987, 393, 987, 493, 187, + 987, 987, 187, 987, 187, 390, 187, 187, 398, 187, + 391, 187, 187, 406, 187, 187, 392, 407, 187, 187, + 494, 187, 409, 393, 187, 987, 187, 425, 408, 187, + 401, 187, 402, 987, 187, 187, 403, 416, 187, 187, + 187, 187, 187, 404, 407, 187, 187, 405, 187, 409, + 410, 187, 187, 987, 425, 408, 411, 401, 187, 402, + 187, 987, 187, 403, 416, 187, 187, 187, 187, 987, + 404, 187, 412, 187, 405, 413, 495, 410, 187, 187, + 187, 187, 418, 411, 187, 187, 496, 187, 417, 414, - 182, 182, 182, 414, 470, 407, 941, 398, 182, 406, - 182, 941, 399, 401, 479, 480, 469, 941, 182, 481, - 182, 182, 182, 402, 182, 182, 941, 182, 182, 182, - 941, 470, 407, 403, 415, 410, 406, 411, 404, 405, - 941, 479, 480, 182, 182, 182, 481, 182, 182, 182, - 402, 182, 182, 412, 182, 413, 182, 182, 416, 482, - 403, 415, 410, 182, 411, 404, 405, 182, 182, 417, - 182, 182, 182, 941, 182, 418, 182, 182, 941, 419, - 412, 182, 413, 182, 182, 416, 482, 182, 182, 483, - 182, 182, 420, 941, 182, 182, 417, 182, 941, 421, + 423, 187, 187, 187, 415, 497, 424, 987, 187, 412, + 187, 187, 413, 495, 187, 187, 987, 187, 187, 418, + 987, 187, 187, 496, 498, 417, 414, 423, 187, 187, + 987, 415, 497, 424, 187, 426, 987, 187, 187, 187, + 187, 187, 419, 187, 429, 427, 430, 428, 187, 187, + 499, 498, 420, 431, 187, 987, 187, 421, 422, 187, + 187, 187, 426, 187, 987, 432, 187, 187, 187, 419, + 187, 429, 427, 430, 428, 187, 187, 499, 187, 420, + 431, 187, 187, 187, 421, 422, 187, 187, 187, 987, + 187, 433, 432, 434, 187, 187, 187, 987, 187, 987, - 182, 182, 418, 182, 182, 424, 419, 484, 182, 182, - 182, 182, 422, 941, 182, 182, 483, 182, 182, 420, - 182, 423, 941, 182, 182, 429, 421, 182, 182, 182, - 182, 182, 424, 425, 484, 182, 182, 426, 182, 422, - 427, 485, 941, 182, 182, 428, 182, 182, 423, 430, - 182, 182, 429, 182, 182, 182, 182, 941, 182, 435, - 425, 431, 440, 182, 426, 182, 182, 427, 485, 432, - 182, 182, 428, 182, 182, 433, 430, 486, 182, 941, - 182, 182, 182, 182, 434, 182, 435, 941, 431, 440, - 182, 182, 182, 182, 436, 182, 432, 182, 182, 182, + 437, 436, 187, 187, 187, 187, 187, 438, 187, 187, + 987, 435, 987, 500, 187, 187, 187, 987, 433, 459, + 434, 187, 987, 187, 187, 187, 187, 437, 436, 187, + 987, 187, 187, 187, 438, 187, 439, 187, 435, 187, + 500, 187, 187, 187, 442, 443, 459, 440, 187, 444, + 987, 187, 187, 187, 501, 441, 987, 187, 187, 187, + 447, 987, 187, 439, 187, 187, 187, 987, 187, 187, + 987, 442, 443, 987, 440, 187, 444, 187, 187, 187, + 187, 501, 441, 448, 187, 187, 445, 447, 187, 187, + 502, 446, 187, 987, 449, 187, 187, 187, 452, 187, - 182, 182, 433, 438, 486, 182, 437, 487, 441, 182, - 182, 434, 182, 488, 439, 182, 442, 182, 182, 182, - 182, 436, 182, 941, 182, 182, 182, 182, 941, 182, - 438, 941, 182, 437, 487, 441, 489, 446, 182, 451, - 488, 439, 182, 442, 182, 443, 182, 182, 449, 182, - 182, 182, 182, 182, 444, 447, 182, 445, 182, 182, - 448, 450, 941, 489, 446, 182, 451, 941, 182, 490, - 182, 182, 443, 182, 182, 449, 182, 182, 182, 491, - 182, 444, 447, 492, 445, 182, 182, 448, 450, 452, - 493, 494, 495, 496, 182, 182, 490, 182, 182, 498, + 187, 987, 987, 450, 187, 187, 455, 187, 187, 187, + 448, 451, 453, 445, 987, 187, 187, 502, 446, 187, + 480, 449, 481, 187, 187, 452, 187, 187, 454, 187, + 450, 187, 187, 455, 187, 187, 187, 987, 451, 453, + 187, 456, 461, 187, 503, 187, 187, 480, 460, 481, + 187, 187, 187, 457, 187, 454, 187, 987, 187, 187, + 187, 187, 987, 504, 458, 187, 462, 187, 456, 461, + 187, 503, 187, 465, 187, 460, 187, 187, 187, 187, + 457, 187, 187, 467, 187, 468, 463, 187, 466, 464, + 504, 458, 187, 462, 187, 987, 187, 187, 469, 470, - 182, 182, 499, 497, 500, 501, 491, 502, 503, 504, - 492, 505, 506, 507, 508, 509, 452, 493, 494, 495, - 496, 182, 510, 511, 512, 513, 498, 515, 516, 499, - 497, 500, 501, 517, 502, 503, 504, 518, 505, 506, - 507, 508, 509, 519, 514, 520, 521, 522, 523, 510, - 511, 512, 513, 524, 515, 516, 525, 526, 527, 528, - 517, 529, 530, 531, 518, 532, 534, 533, 535, 536, - 519, 514, 520, 521, 522, 523, 537, 538, 539, 542, - 524, 182, 543, 525, 526, 527, 528, 540, 529, 530, - 531, 541, 532, 534, 533, 535, 536, 182, 941, 544, + 465, 187, 187, 187, 187, 187, 505, 187, 987, 187, + 467, 187, 468, 463, 472, 466, 464, 506, 187, 187, + 489, 187, 471, 187, 507, 469, 470, 187, 508, 187, + 509, 187, 187, 505, 187, 490, 510, 511, 187, 512, + 513, 472, 514, 515, 506, 187, 187, 489, 516, 471, + 517, 507, 520, 521, 187, 508, 522, 509, 518, 523, + 524, 525, 490, 510, 511, 187, 512, 513, 519, 514, + 515, 526, 527, 528, 529, 516, 530, 517, 531, 520, + 521, 532, 533, 522, 534, 518, 523, 524, 525, 535, + 538, 536, 539, 540, 541, 519, 542, 543, 526, 527, - 182, 182, 182, 537, 538, 539, 542, 545, 182, 543, - 182, 546, 182, 182, 540, 182, 941, 182, 541, 182, - 182, 941, 941, 547, 182, 182, 544, 182, 182, 182, - 182, 633, 182, 182, 545, 182, 941, 182, 546, 182, - 182, 182, 182, 548, 182, 182, 182, 182, 549, 550, - 547, 551, 182, 182, 941, 941, 634, 182, 633, 182, - 182, 182, 182, 554, 182, 182, 556, 182, 182, 552, - 548, 182, 182, 182, 941, 549, 550, 941, 551, 553, - 182, 182, 182, 634, 182, 182, 182, 182, 182, 557, - 554, 182, 182, 556, 182, 555, 552, 941, 182, 558, + 528, 529, 544, 530, 545, 531, 546, 547, 532, 533, + 537, 534, 548, 549, 550, 551, 535, 538, 536, 539, + 540, 541, 552, 542, 543, 553, 554, 555, 556, 544, + 557, 545, 558, 546, 547, 559, 560, 537, 561, 548, + 549, 550, 551, 562, 563, 566, 564, 567, 187, 552, + 565, 987, 553, 554, 555, 556, 568, 557, 187, 558, + 569, 187, 559, 560, 187, 561, 663, 987, 187, 664, + 562, 563, 566, 564, 567, 187, 187, 565, 187, 187, + 187, 187, 187, 568, 187, 187, 570, 569, 187, 987, + 571, 187, 572, 663, 187, 187, 664, 987, 187, 187, - 182, 182, 182, 182, 559, 561, 553, 182, 182, 182, - 941, 182, 182, 182, 182, 562, 557, 564, 182, 560, - 182, 941, 555, 182, 182, 635, 558, 182, 182, 182, - 182, 559, 561, 563, 182, 182, 566, 182, 182, 182, - 182, 568, 562, 941, 564, 182, 560, 182, 565, 567, - 182, 182, 635, 182, 182, 941, 182, 182, 182, 182, - 563, 182, 182, 566, 182, 182, 182, 182, 568, 569, - 182, 182, 570, 182, 572, 565, 567, 571, 182, 636, - 182, 941, 182, 182, 182, 182, 182, 182, 182, 575, - 182, 182, 182, 637, 182, 573, 569, 182, 182, 570, + 665, 666, 187, 187, 187, 187, 187, 187, 187, 187, + 575, 187, 576, 570, 187, 187, 573, 571, 187, 572, + 577, 187, 574, 987, 187, 187, 187, 665, 666, 187, + 579, 187, 187, 187, 187, 187, 187, 575, 187, 576, + 987, 187, 187, 573, 581, 187, 187, 577, 578, 574, + 580, 187, 987, 187, 187, 987, 187, 579, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 583, 584, + 587, 581, 187, 187, 582, 578, 586, 580, 187, 589, + 187, 187, 187, 187, 585, 187, 667, 187, 987, 187, + 187, 187, 187, 187, 187, 583, 584, 587, 187, 187, - 182, 572, 182, 182, 571, 182, 636, 182, 182, 182, - 574, 182, 182, 941, 182, 578, 575, 182, 182, 182, - 637, 182, 573, 182, 576, 182, 941, 941, 182, 182, - 182, 182, 941, 182, 182, 182, 577, 574, 182, 182, - 579, 182, 578, 638, 182, 182, 583, 941, 941, 584, - 182, 576, 182, 182, 582, 182, 580, 585, 182, 182, - 182, 182, 182, 577, 182, 581, 182, 579, 182, 182, - 638, 182, 182, 583, 182, 586, 584, 182, 588, 182, - 182, 582, 182, 580, 585, 587, 182, 591, 182, 182, - 182, 182, 581, 182, 182, 182, 182, 941, 182, 589, + 187, 582, 187, 586, 591, 187, 589, 987, 187, 187, + 187, 585, 593, 667, 187, 588, 187, 187, 668, 187, + 187, 590, 592, 598, 187, 187, 187, 187, 187, 187, + 187, 591, 187, 987, 594, 187, 187, 187, 187, 593, + 987, 669, 588, 187, 187, 668, 187, 187, 590, 592, + 598, 187, 595, 187, 987, 187, 187, 187, 187, 187, + 187, 594, 187, 187, 187, 187, 187, 596, 669, 601, + 187, 187, 187, 187, 599, 597, 987, 187, 187, 595, + 187, 603, 187, 187, 600, 187, 187, 187, 987, 187, + 187, 187, 187, 187, 596, 670, 601, 187, 187, 187, - 941, 182, 586, 639, 182, 588, 182, 182, 941, 182, - 182, 182, 587, 590, 591, 592, 182, 182, 182, 182, - 941, 182, 182, 593, 182, 182, 589, 182, 594, 595, - 639, 182, 182, 182, 182, 596, 182, 182, 182, 182, - 590, 182, 592, 182, 182, 182, 182, 182, 598, 597, - 593, 182, 182, 182, 182, 594, 595, 182, 182, 182, - 182, 182, 596, 182, 941, 601, 182, 182, 182, 602, - 599, 182, 941, 640, 182, 598, 597, 182, 182, 182, - 182, 600, 603, 941, 182, 182, 182, 182, 182, 182, - 182, 182, 601, 609, 182, 182, 602, 599, 182, 605, + 187, 599, 597, 187, 187, 187, 602, 187, 603, 187, + 187, 600, 187, 187, 987, 605, 604, 187, 606, 187, + 187, 187, 670, 187, 187, 187, 187, 187, 987, 187, + 187, 610, 187, 602, 607, 608, 609, 187, 987, 187, + 611, 187, 605, 604, 612, 606, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 613, 187, 187, 610, 187, + 187, 607, 608, 609, 187, 614, 616, 611, 187, 618, + 615, 612, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 613, 187, 187, 622, 187, 187, 671, 187, + 619, 187, 614, 616, 621, 617, 618, 615, 187, 187, - 640, 604, 606, 607, 182, 182, 182, 611, 600, 603, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 608, - 609, 182, 182, 182, 610, 182, 605, 182, 604, 606, - 607, 941, 612, 182, 611, 182, 182, 182, 182, 941, - 182, 182, 182, 182, 641, 941, 608, 941, 182, 182, - 182, 610, 182, 642, 182, 182, 182, 182, 613, 612, - 182, 941, 182, 182, 614, 941, 182, 182, 182, 182, - 182, 641, 615, 616, 620, 182, 182, 182, 182, 182, - 642, 941, 182, 182, 182, 613, 182, 182, 182, 617, - 618, 614, 182, 182, 182, 182, 182, 619, 182, 615, + 187, 187, 187, 187, 187, 672, 187, 187, 620, 187, + 187, 187, 622, 187, 187, 671, 187, 619, 187, 673, + 674, 621, 617, 187, 187, 187, 624, 187, 629, 187, + 187, 187, 672, 187, 187, 620, 187, 630, 187, 623, + 625, 187, 187, 187, 187, 187, 673, 674, 187, 626, + 187, 187, 187, 624, 187, 629, 187, 187, 187, 631, + 675, 187, 187, 187, 630, 627, 623, 625, 628, 187, + 187, 187, 187, 187, 187, 187, 626, 187, 632, 187, + 987, 187, 633, 187, 187, 987, 631, 675, 634, 187, + 187, 187, 627, 187, 187, 628, 676, 187, 987, 187, - 616, 620, 182, 941, 182, 182, 941, 625, 182, 182, - 941, 182, 182, 182, 643, 182, 617, 618, 621, 182, - 182, 182, 182, 182, 619, 182, 182, 941, 182, 182, - 622, 182, 623, 624, 625, 182, 182, 626, 182, 182, - 182, 643, 627, 182, 941, 621, 182, 182, 182, 941, - 182, 182, 644, 182, 182, 182, 182, 622, 182, 623, - 624, 645, 941, 646, 626, 647, 629, 182, 648, 627, - 182, 182, 628, 182, 182, 182, 182, 182, 182, 644, - 632, 182, 649, 650, 651, 630, 652, 653, 645, 631, - 646, 654, 647, 629, 655, 648, 182, 182, 182, 628, + 187, 187, 635, 636, 187, 632, 637, 187, 639, 633, + 187, 187, 187, 987, 187, 634, 187, 641, 187, 638, + 187, 187, 640, 676, 187, 187, 987, 187, 187, 635, + 636, 987, 187, 637, 187, 639, 187, 187, 187, 187, + 187, 187, 187, 187, 641, 187, 638, 987, 987, 640, + 187, 187, 187, 649, 187, 187, 677, 643, 642, 187, + 187, 187, 187, 187, 187, 644, 187, 187, 645, 187, + 187, 187, 187, 187, 187, 648, 187, 187, 187, 187, + 649, 187, 987, 677, 643, 642, 187, 187, 187, 187, + 646, 647, 644, 187, 187, 645, 187, 187, 187, 187, - 656, 182, 657, 182, 182, 658, 659, 632, 660, 649, - 650, 651, 630, 652, 653, 661, 631, 662, 654, 663, - 664, 655, 667, 182, 182, 665, 668, 656, 669, 657, - 670, 671, 658, 659, 672, 660, 666, 673, 674, 675, - 676, 677, 661, 678, 662, 679, 663, 664, 680, 667, - 681, 682, 665, 668, 683, 669, 684, 670, 671, 685, - 686, 672, 687, 666, 673, 674, 675, 676, 677, 688, - 678, 689, 679, 690, 691, 680, 692, 681, 682, 693, - 694, 683, 695, 684, 696, 697, 685, 686, 698, 687, - 941, 941, 941, 182, 182, 941, 688, 182, 689, 704, + 187, 187, 648, 187, 987, 187, 187, 654, 187, 187, + 187, 187, 987, 187, 650, 187, 987, 646, 647, 653, + 651, 187, 652, 187, 655, 187, 187, 987, 187, 187, + 187, 187, 187, 987, 654, 187, 187, 187, 187, 187, + 987, 650, 187, 187, 656, 678, 653, 651, 187, 652, + 679, 655, 187, 987, 658, 187, 187, 187, 187, 187, + 187, 657, 187, 187, 187, 187, 187, 661, 680, 659, + 187, 656, 678, 660, 681, 187, 682, 679, 662, 683, + 187, 658, 684, 685, 187, 187, 187, 187, 657, 686, + 187, 187, 187, 687, 661, 680, 659, 688, 689, 690, - 690, 691, 941, 692, 941, 182, 693, 694, 182, 695, - 699, 696, 697, 701, 702, 698, 182, 182, 700, 182, - 182, 182, 182, 705, 182, 182, 704, 182, 182, 703, - 941, 182, 182, 765, 941, 182, 182, 699, 941, 706, - 701, 702, 182, 182, 182, 700, 182, 182, 182, 182, - 705, 182, 182, 182, 182, 182, 703, 182, 182, 182, - 765, 707, 766, 182, 941, 182, 706, 709, 182, 182, - 941, 767, 708, 182, 182, 182, 182, 182, 182, 182, - 182, 711, 182, 710, 182, 182, 182, 713, 707, 766, - 941, 182, 182, 182, 709, 182, 182, 712, 767, 708, + 660, 681, 691, 682, 692, 662, 683, 187, 693, 684, + 685, 187, 187, 694, 695, 698, 686, 696, 699, 700, + 687, 701, 702, 703, 688, 689, 690, 704, 697, 691, + 705, 692, 706, 707, 708, 693, 709, 710, 711, 712, + 694, 695, 698, 713, 696, 699, 700, 714, 701, 702, + 703, 715, 716, 717, 704, 697, 718, 705, 719, 706, + 707, 708, 720, 709, 710, 711, 712, 721, 722, 723, + 713, 724, 725, 726, 714, 727, 728, 729, 715, 716, + 717, 730, 731, 718, 732, 719, 987, 187, 987, 720, + 187, 987, 187, 187, 721, 722, 723, 803, 724, 725, - 182, 941, 182, 182, 182, 714, 182, 182, 711, 182, - 710, 182, 182, 182, 713, 182, 182, 182, 182, 715, - 182, 182, 941, 182, 712, 768, 769, 182, 716, 182, - 941, 182, 714, 941, 182, 182, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 715, 719, 182, 182, - 717, 182, 768, 769, 182, 716, 718, 721, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 941, 182, 182, - 182, 182, 182, 770, 719, 720, 182, 717, 182, 182, - 182, 182, 941, 718, 721, 722, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 726, 987, 727, 728, 729, 733, 734, 735, 730, 731, + 736, 732, 187, 187, 187, 187, 738, 187, 187, 187, + 187, 187, 739, 804, 803, 987, 187, 805, 737, 987, + 987, 187, 733, 734, 735, 187, 187, 736, 187, 187, + 187, 187, 187, 738, 187, 187, 187, 187, 187, 739, + 804, 187, 740, 187, 805, 737, 187, 187, 187, 987, + 741, 987, 187, 187, 187, 187, 187, 187, 187, 187, + 743, 187, 742, 187, 187, 187, 187, 187, 187, 740, + 187, 746, 744, 187, 187, 745, 187, 741, 748, 187, + 187, 187, 987, 187, 187, 187, 187, 743, 987, 742, - 770, 941, 720, 724, 723, 726, 182, 182, 182, 182, - 941, 771, 722, 182, 182, 182, 182, 182, 182, 182, - 182, 182, 182, 772, 182, 182, 182, 773, 182, 725, - 724, 723, 726, 182, 941, 941, 182, 727, 771, 182, - 182, 182, 182, 941, 182, 182, 182, 728, 182, 182, - 772, 182, 182, 182, 773, 182, 725, 182, 729, 731, - 182, 182, 730, 182, 727, 182, 182, 182, 733, 182, - 732, 182, 182, 182, 728, 182, 182, 182, 182, 941, - 182, 182, 941, 182, 182, 729, 731, 182, 182, 730, - 182, 182, 182, 182, 182, 733, 182, 732, 182, 736, + 187, 747, 187, 187, 187, 187, 806, 187, 746, 744, + 187, 187, 745, 187, 187, 748, 187, 187, 749, 187, + 187, 987, 187, 807, 187, 187, 750, 187, 747, 987, + 987, 187, 187, 806, 187, 751, 987, 187, 187, 187, + 187, 187, 987, 187, 187, 749, 187, 187, 187, 187, + 807, 187, 187, 750, 752, 755, 756, 187, 187, 187, + 187, 187, 751, 187, 753, 187, 187, 187, 187, 187, + 187, 187, 754, 187, 757, 187, 187, 187, 187, 187, + 187, 752, 755, 756, 187, 187, 187, 187, 808, 187, + 187, 753, 187, 187, 187, 187, 187, 187, 187, 754, - 182, 182, 182, 182, 182, 182, 734, 182, 182, 735, - 182, 182, 740, 941, 182, 737, 738, 941, 182, 182, - 182, 182, 182, 182, 941, 182, 736, 182, 182, 182, - 182, 182, 182, 734, 182, 739, 735, 182, 182, 740, - 182, 182, 737, 738, 741, 182, 182, 774, 182, 182, - 182, 182, 744, 742, 182, 182, 182, 182, 182, 182, - 182, 182, 739, 743, 182, 182, 941, 182, 182, 745, - 941, 741, 182, 182, 774, 182, 182, 182, 182, 744, - 742, 182, 182, 182, 182, 746, 941, 182, 182, 182, - 743, 182, 182, 182, 747, 775, 745, 182, 941, 182, + 187, 757, 187, 759, 187, 187, 187, 187, 758, 187, + 809, 187, 187, 187, 187, 808, 187, 187, 987, 761, + 187, 187, 187, 760, 187, 187, 810, 987, 187, 187, + 759, 187, 187, 187, 187, 758, 187, 809, 187, 187, + 187, 187, 987, 187, 187, 762, 761, 763, 187, 187, + 760, 187, 187, 810, 187, 187, 764, 987, 187, 187, + 187, 187, 187, 187, 765, 187, 187, 187, 187, 766, + 187, 187, 762, 187, 763, 187, 987, 187, 187, 187, + 767, 187, 187, 764, 768, 187, 187, 187, 187, 187, + 187, 765, 187, 187, 187, 187, 766, 187, 187, 771, - 182, 182, 182, 182, 182, 751, 748, 749, 182, 182, - 182, 182, 746, 750, 752, 182, 182, 776, 182, 182, - 182, 747, 775, 753, 182, 182, 182, 182, 182, 182, - 182, 182, 751, 748, 749, 182, 182, 182, 182, 754, - 750, 752, 182, 182, 776, 182, 182, 182, 941, 182, - 753, 182, 182, 756, 182, 182, 182, 182, 182, 755, - 941, 182, 182, 759, 182, 182, 754, 182, 941, 762, - 182, 941, 182, 757, 182, 182, 182, 758, 182, 182, - 756, 182, 182, 182, 182, 182, 755, 182, 182, 182, - 759, 182, 182, 182, 182, 761, 762, 182, 760, 182, + 187, 769, 187, 187, 187, 187, 187, 767, 774, 187, + 770, 768, 187, 187, 187, 187, 772, 773, 187, 187, + 187, 187, 187, 187, 187, 187, 771, 777, 769, 187, + 187, 775, 187, 187, 776, 774, 187, 770, 187, 811, + 187, 187, 187, 772, 773, 187, 187, 187, 187, 187, + 187, 187, 187, 778, 777, 779, 187, 187, 775, 780, + 187, 776, 187, 187, 987, 187, 811, 187, 187, 187, + 187, 187, 781, 812, 187, 187, 187, 187, 187, 987, + 778, 782, 779, 187, 187, 187, 780, 187, 784, 187, + 187, 187, 987, 187, 187, 187, 187, 187, 187, 781, - 757, 763, 182, 182, 758, 182, 182, 764, 182, 182, - 182, 182, 182, 182, 182, 777, 182, 182, 778, 779, - 182, 780, 761, 781, 182, 760, 182, 182, 763, 182, - 182, 782, 182, 783, 764, 784, 182, 785, 786, 787, - 182, 788, 777, 789, 182, 778, 779, 790, 780, 791, - 781, 792, 793, 794, 182, 795, 182, 796, 782, 797, - 783, 798, 784, 799, 785, 786, 787, 800, 788, 801, - 789, 802, 803, 804, 790, 805, 791, 806, 792, 793, - 794, 807, 795, 808, 796, 809, 797, 810, 798, 811, - 799, 182, 859, 182, 800, 941, 801, 182, 802, 803, + 812, 783, 187, 187, 187, 187, 785, 813, 782, 987, + 187, 187, 187, 187, 187, 784, 187, 187, 187, 787, + 187, 187, 187, 187, 786, 788, 987, 187, 783, 789, + 187, 987, 187, 785, 813, 187, 187, 187, 187, 790, + 187, 187, 987, 187, 791, 187, 787, 187, 187, 187, + 187, 786, 788, 187, 187, 187, 789, 187, 792, 794, + 814, 187, 187, 187, 187, 187, 790, 793, 187, 187, + 187, 791, 187, 187, 187, 187, 187, 187, 795, 815, + 187, 187, 187, 187, 816, 792, 794, 814, 187, 187, + 987, 187, 187, 800, 793, 187, 187, 187, 797, 796, - 804, 182, 805, 813, 806, 814, 815, 182, 807, 818, - 808, 182, 809, 182, 810, 860, 811, 182, 182, 859, - 182, 182, 812, 182, 182, 182, 182, 182, 182, 182, - 813, 182, 814, 815, 182, 816, 818, 182, 182, 941, - 182, 817, 860, 821, 182, 182, 182, 182, 182, 812, - 182, 182, 182, 182, 182, 819, 182, 182, 182, 182, - 182, 824, 816, 182, 182, 182, 820, 182, 817, 941, - 821, 825, 182, 182, 182, 822, 182, 941, 182, 182, - 182, 182, 819, 941, 182, 823, 182, 182, 824, 182, - 182, 182, 182, 820, 182, 182, 182, 182, 825, 182, + 187, 187, 187, 187, 187, 795, 815, 187, 187, 799, + 187, 816, 187, 187, 817, 802, 187, 187, 187, 798, + 800, 187, 187, 187, 187, 797, 796, 187, 187, 187, + 187, 187, 187, 801, 187, 187, 799, 187, 187, 187, + 187, 817, 802, 187, 187, 187, 798, 818, 187, 187, + 187, 187, 819, 820, 187, 821, 822, 823, 824, 187, + 801, 825, 187, 826, 187, 187, 827, 828, 829, 830, + 187, 831, 832, 833, 818, 834, 835, 836, 837, 819, + 820, 838, 821, 822, 823, 824, 839, 840, 825, 841, + 826, 842, 843, 827, 828, 829, 830, 844, 831, 832, - 941, 182, 822, 182, 826, 829, 182, 182, 182, 182, - 827, 828, 823, 182, 182, 182, 182, 182, 182, 182, - 830, 182, 182, 182, 182, 182, 182, 831, 182, 861, - 182, 826, 829, 182, 182, 182, 182, 827, 828, 182, - 182, 182, 182, 832, 182, 182, 182, 830, 182, 182, - 182, 835, 182, 182, 831, 182, 861, 182, 941, 182, - 182, 182, 182, 182, 833, 182, 182, 182, 834, 182, - 832, 182, 182, 182, 837, 941, 182, 182, 835, 836, - 182, 941, 182, 182, 182, 182, 182, 182, 182, 182, - 182, 833, 182, 838, 182, 834, 182, 182, 182, 182, + 833, 845, 834, 835, 836, 837, 846, 847, 838, 848, + 849, 850, 851, 839, 840, 852, 841, 987, 842, 843, + 187, 187, 987, 187, 844, 187, 854, 987, 845, 855, + 856, 187, 987, 846, 847, 903, 848, 849, 850, 851, + 187, 187, 852, 187, 853, 187, 187, 187, 187, 187, + 187, 187, 187, 854, 187, 187, 855, 856, 187, 859, + 187, 904, 903, 857, 905, 858, 987, 187, 187, 862, + 187, 853, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 861, 187, 859, 187, 904, 187, + 857, 905, 858, 860, 187, 865, 862, 187, 866, 187, - 182, 837, 839, 182, 182, 182, 836, 182, 182, 182, - 182, 182, 182, 841, 182, 182, 182, 182, 840, 182, - 838, 941, 844, 182, 182, 182, 182, 182, 182, 839, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, - 841, 842, 182, 845, 182, 840, 182, 862, 182, 844, - 182, 843, 182, 863, 182, 182, 182, 182, 182, 182, - 182, 848, 182, 846, 182, 182, 182, 182, 842, 182, - 845, 847, 941, 849, 862, 182, 182, 182, 843, 182, - 863, 182, 182, 182, 182, 182, 182, 182, 848, 182, - 846, 853, 182, 850, 182, 182, 852, 182, 847, 182, + 987, 187, 187, 187, 187, 187, 187, 187, 864, 863, + 187, 861, 187, 187, 187, 187, 187, 187, 187, 187, + 860, 187, 865, 187, 187, 866, 187, 871, 867, 187, + 187, 869, 187, 187, 987, 864, 863, 187, 868, 987, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 870, 187, 187, 871, 867, 187, 187, 869, 872, + 187, 187, 987, 873, 187, 868, 874, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 870, 187, + 187, 187, 187, 877, 187, 987, 872, 906, 187, 187, + 873, 187, 187, 874, 187, 187, 187, 875, 187, 187, - 849, 182, 864, 182, 182, 851, 182, 182, 182, 182, - 854, 856, 182, 182, 182, 182, 865, 941, 853, 182, - 850, 858, 182, 852, 182, 182, 182, 182, 182, 864, - 182, 182, 851, 182, 182, 855, 182, 854, 856, 182, - 182, 182, 182, 865, 182, 182, 866, 867, 858, 868, - 869, 870, 182, 871, 182, 857, 182, 182, 182, 872, - 182, 182, 855, 182, 182, 873, 874, 875, 182, 876, - 877, 182, 182, 866, 867, 878, 868, 869, 870, 879, - 871, 880, 857, 182, 881, 882, 872, 883, 182, 884, - 182, 182, 873, 874, 875, 182, 876, 877, 886, 182, + 187, 187, 187, 187, 187, 187, 187, 876, 187, 187, + 877, 187, 187, 879, 906, 878, 187, 187, 187, 187, + 987, 187, 987, 187, 875, 187, 187, 880, 187, 187, + 187, 187, 187, 187, 876, 187, 187, 187, 187, 187, + 879, 881, 878, 187, 187, 187, 187, 187, 187, 882, + 187, 883, 187, 187, 880, 187, 187, 187, 187, 187, + 884, 987, 187, 187, 187, 187, 187, 987, 881, 887, + 187, 187, 187, 187, 187, 187, 882, 187, 883, 187, + 187, 187, 187, 187, 187, 987, 187, 884, 885, 187, + 987, 187, 187, 187, 886, 187, 887, 187, 187, 187, - 182, 182, 878, 941, 885, 941, 879, 888, 880, 182, - 182, 881, 882, 887, 883, 182, 884, 182, 182, 182, - 182, 182, 182, 182, 182, 886, 182, 182, 182, 182, - 889, 885, 182, 891, 888, 182, 182, 182, 890, 941, - 887, 182, 182, 182, 182, 182, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 889, 892, 182, - 891, 182, 182, 182, 182, 890, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 893, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 892, 182, 182, 182, 894, - 182, 182, 182, 182, 182, 182, 182, 182, 896, 182, + 987, 187, 187, 888, 187, 889, 187, 187, 187, 187, + 890, 187, 891, 892, 187, 885, 187, 187, 187, 187, + 987, 886, 187, 893, 187, 187, 187, 187, 187, 187, + 888, 187, 889, 187, 187, 187, 187, 890, 187, 891, + 892, 187, 907, 908, 187, 187, 187, 187, 896, 894, + 893, 187, 187, 187, 187, 187, 187, 898, 187, 897, + 187, 187, 187, 187, 895, 900, 899, 187, 187, 907, + 908, 187, 187, 987, 187, 896, 894, 187, 187, 187, + 187, 909, 187, 187, 898, 187, 897, 187, 187, 187, + 187, 895, 900, 899, 187, 187, 902, 910, 187, 187, - 182, 182, 893, 182, 182, 182, 182, 909, 895, 900, - 182, 182, 182, 182, 182, 182, 894, 898, 182, 182, - 182, 182, 182, 182, 182, 896, 182, 897, 910, 182, - 182, 182, 901, 182, 909, 895, 900, 182, 911, 182, - 182, 182, 182, 941, 898, 182, 899, 182, 182, 182, - 182, 182, 182, 182, 897, 910, 182, 182, 182, 901, - 902, 182, 182, 903, 182, 911, 182, 182, 182, 182, - 905, 906, 182, 899, 182, 182, 182, 941, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 902, 182, 182, - 903, 182, 904, 182, 182, 182, 182, 905, 906, 182, + 187, 911, 912, 901, 187, 913, 187, 914, 909, 187, + 187, 915, 187, 916, 187, 187, 187, 917, 918, 919, + 187, 920, 921, 902, 910, 922, 187, 187, 911, 912, + 901, 923, 913, 924, 914, 925, 187, 926, 915, 927, + 916, 928, 987, 929, 917, 918, 919, 187, 920, 921, + 987, 187, 922, 931, 187, 187, 187, 187, 923, 955, + 924, 933, 925, 187, 926, 930, 927, 987, 928, 932, + 929, 187, 987, 187, 187, 187, 187, 187, 187, 187, + 931, 187, 187, 187, 187, 934, 955, 187, 933, 187, + 187, 187, 930, 936, 935, 187, 932, 187, 187, 187, - 182, 182, 182, 182, 182, 182, 907, 182, 182, 182, - 182, 182, 182, 182, 182, 912, 182, 913, 182, 904, - 914, 182, 182, 908, 182, 915, 916, 182, 917, 182, - 182, 182, 182, 907, 182, 941, 182, 182, 182, 182, - 182, 182, 912, 182, 913, 182, 941, 914, 182, 182, - 908, 182, 915, 916, 918, 917, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 941, - 182, 182, 182, 182, 182, 182, 182, 919, 182, 941, - 941, 918, 182, 182, 182, 182, 182, 182, 927, 182, - 182, 182, 182, 182, 182, 182, 922, 182, 182, 182, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 937, 187, 934, 187, 187, 187, 187, 187, 187, 987, + 936, 935, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 937, 187, 187, + 187, 187, 187, 187, 187, 187, 939, 187, 938, 940, + 187, 187, 187, 956, 187, 187, 187, 187, 187, 187, + 187, 187, 942, 187, 187, 187, 187, 187, 187, 957, + 187, 987, 187, 939, 187, 938, 940, 941, 187, 187, + 956, 944, 187, 187, 187, 187, 187, 187, 187, 942, + 187, 187, 187, 187, 187, 946, 957, 187, 187, 187, - 182, 182, 182, 182, 919, 182, 920, 182, 182, 182, - 182, 182, 921, 941, 928, 927, 182, 182, 182, 182, - 182, 182, 182, 922, 182, 182, 182, 182, 182, 182, - 182, 182, 929, 920, 182, 182, 930, 182, 182, 921, - 923, 928, 926, 182, 182, 182, 182, 931, 182, 182, - 924, 182, 182, 182, 182, 182, 925, 182, 182, 929, - 941, 182, 182, 930, 182, 182, 941, 923, 182, 926, - 182, 182, 182, 182, 931, 182, 932, 924, 182, 941, - 182, 182, 182, 925, 182, 182, 182, 182, 182, 182, - 182, 182, 182, 933, 937, 182, 938, 182, 182, 934, + 943, 187, 987, 187, 941, 187, 187, 987, 944, 187, + 187, 187, 187, 187, 187, 187, 945, 947, 187, 187, + 187, 187, 946, 187, 187, 187, 187, 943, 187, 948, + 187, 187, 187, 949, 187, 187, 987, 187, 987, 187, + 187, 987, 187, 945, 947, 187, 187, 958, 187, 951, + 187, 187, 187, 187, 187, 187, 948, 187, 187, 950, + 949, 187, 187, 952, 187, 187, 187, 187, 187, 187, + 987, 187, 187, 187, 958, 959, 951, 187, 187, 187, + 187, 187, 187, 953, 187, 187, 950, 187, 187, 187, + 952, 187, 187, 960, 187, 187, 187, 187, 187, 187, - 182, 941, 182, 932, 182, 182, 182, 935, 182, 182, - 939, 182, 182, 182, 182, 936, 182, 182, 182, 182, - 933, 937, 941, 938, 182, 182, 934, 182, 182, 182, - 182, 182, 182, 182, 935, 941, 182, 939, 182, 182, - 182, 940, 936, 182, 941, 941, 182, 182, 182, 941, - 941, 182, 182, 941, 182, 182, 941, 182, 941, 182, - 182, 941, 941, 182, 941, 941, 182, 182, 940, 941, - 941, 941, 941, 941, 182, 182, 941, 941, 941, 182, - 941, 941, 941, 941, 941, 941, 941, 182, 82, 941, - 941, 82, 83, 941, 83, 83, 168, 941, 168, 168, + 187, 187, 959, 961, 187, 962, 963, 187, 954, 187, + 953, 187, 187, 987, 187, 187, 187, 187, 187, 187, + 960, 187, 187, 187, 187, 973, 987, 187, 187, 187, + 961, 187, 962, 963, 187, 954, 187, 187, 187, 187, + 187, 964, 187, 187, 187, 187, 187, 987, 187, 187, + 187, 187, 973, 187, 187, 965, 187, 187, 187, 187, + 187, 966, 987, 187, 187, 187, 187, 187, 964, 187, + 187, 187, 187, 187, 187, 968, 187, 187, 187, 187, + 187, 987, 965, 187, 187, 187, 187, 187, 966, 967, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 171, 941, 171, 171, 172, 941, 172, 172, 182, 941, - 182, 182, 5, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 941, 941, 941, 941, 941, 941, 941, 941 + 187, 187, 968, 187, 187, 187, 187, 987, 969, 972, + 187, 187, 187, 187, 187, 974, 967, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 970, 187, 187, + 975, 976, 187, 971, 187, 969, 972, 977, 187, 187, + 187, 187, 974, 987, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 970, 187, 187, 975, 976, 187, + 971, 187, 978, 987, 977, 979, 187, 187, 187, 187, + 187, 187, 187, 981, 187, 187, 187, 187, 187, 187, + 187, 980, 187, 983, 984, 985, 187, 187, 187, 978, + 982, 987, 979, 187, 187, 187, 187, 187, 187, 187, + + 981, 187, 187, 187, 187, 187, 187, 187, 980, 187, + 983, 984, 985, 187, 187, 187, 187, 982, 986, 987, + 187, 187, 987, 187, 187, 987, 187, 987, 187, 187, + 187, 187, 187, 987, 187, 987, 187, 987, 987, 987, + 187, 987, 987, 187, 987, 986, 987, 987, 187, 987, + 187, 187, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 187, 84, 987, 987, 84, 85, 987, + 85, 85, 173, 987, 173, 173, 176, 987, 176, 176, + 177, 987, 177, 177, 187, 987, 187, 187, 5, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987 } ; -static const flex_int16_t yy_chk[3781] = +static yyconst flex_int16_t yy_chk[3957] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1384,407 +1194,427 @@ static const flex_int16_t yy_chk[3781] = 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 7, 7, 8, 8, 13, 944, - 13, 15, 15, 16, 16, 19, 20, 19, 22, 356, - 21, 25, 22, 19, 258, 19, 22, 25, 28, 19, - 19, 29, 22, 94, 21, 22, 20, 21, 21, 23, - 177, 23, 19, 20, 19, 22, 23, 21, 25, 22, + 3, 3, 3, 3, 7, 7, 8, 8, 13, 990, + 13, 15, 15, 16, 16, 19, 20, 19, 22, 370, + 21, 25, 22, 19, 266, 19, 22, 25, 28, 19, + 19, 29, 22, 42, 21, 22, 20, 21, 21, 23, + 182, 23, 19, 20, 19, 22, 23, 21, 25, 22, 19, 23, 19, 22, 25, 28, 19, 19, 29, 22, - 94, 21, 22, 20, 21, 21, 23, 26, 23, 176, + 42, 21, 22, 20, 21, 21, 23, 26, 23, 181, - 24, 44, 44, 23, 172, 26, 24, 27, 23, 24, - 171, 33, 24, 27, 27, 27, 88, 31, 30, 33, - 27, 31, 30, 33, 26, 36, 33, 24, 30, 36, - 45, 45, 26, 24, 27, 95, 24, 32, 33, 24, - 27, 27, 27, 34, 31, 30, 33, 27, 31, 30, - 33, 32, 36, 33, 34, 30, 36, 32, 32, 98, - 34, 37, 95, 37, 32, 99, 37, 39, 87, 39, - 34, 83, 39, 37, 37, 50, 82, 50, 32, 52, - 52, 34, 53, 53, 32, 32, 98, 34, 37, 79, - 37, 62, 99, 37, 39, 66, 39, 40, 62, 39, + 24, 45, 45, 23, 177, 26, 24, 27, 23, 24, + 176, 26, 24, 27, 27, 27, 90, 36, 30, 31, + 27, 36, 30, 31, 26, 46, 46, 24, 30, 31, + 53, 53, 26, 24, 27, 89, 24, 32, 26, 24, + 27, 27, 27, 34, 36, 30, 31, 27, 36, 30, + 31, 32, 85, 33, 34, 30, 31, 32, 32, 96, + 34, 33, 54, 54, 32, 33, 40, 39, 33, 39, + 34, 51, 39, 51, 40, 41, 41, 37, 32, 37, + 33, 34, 37, 84, 32, 32, 96, 34, 33, 37, + 37, 81, 33, 40, 39, 33, 39, 82, 82, 39, - 37, 37, 38, 38, 62, 40, 38, 41, 41, 38, - 38, 62, 80, 80, 55, 66, 38, 105, 62, 38, - 86, 86, 66, 54, 40, 62, 169, 169, 51, 38, - 38, 62, 40, 38, 41, 41, 38, 38, 62, 175, - 175, 72, 66, 38, 105, 49, 38, 56, 56, 106, - 56, 56, 56, 56, 56, 56, 63, 56, 56, 56, - 63, 72, 65, 56, 63, 56, 97, 96, 72, 97, - 100, 56, 65, 56, 47, 96, 106, 56, 56, 109, - 63, 68, 65, 63, 100, 68, 46, 63, 72, 65, - 56, 63, 56, 97, 96, 42, 97, 100, 56, 65, + 63, 40, 41, 41, 37, 56, 37, 63, 55, 37, + 67, 66, 97, 63, 88, 88, 37, 37, 38, 38, + 63, 66, 38, 100, 101, 38, 38, 63, 107, 111, + 67, 66, 38, 112, 63, 38, 52, 67, 66, 97, + 63, 174, 174, 180, 180, 38, 38, 63, 66, 38, + 100, 101, 38, 38, 50, 107, 111, 67, 66, 38, + 112, 48, 38, 57, 57, 73, 57, 57, 57, 57, + 57, 57, 64, 57, 57, 57, 64, 80, 68, 57, + 64, 57, 68, 98, 113, 73, 64, 57, 68, 57, + 106, 98, 73, 57, 57, 114, 64, 80, 68, 64, - 56, 68, 96, 110, 56, 56, 109, 63, 68, 65, - 18, 100, 68, 56, 57, 57, 17, 57, 57, 57, - 57, 57, 57, 67, 57, 57, 57, 67, 68, 14, - 110, 57, 12, 67, 9, 71, 73, 77, 104, 71, - 73, 77, 102, 67, 111, 77, 71, 112, 104, 102, - 67, 57, 71, 5, 67, 0, 73, 113, 57, 71, - 67, 77, 71, 73, 77, 104, 71, 73, 77, 102, - 67, 111, 77, 71, 112, 104, 102, 115, 57, 71, - 57, 58, 76, 73, 113, 58, 71, 103, 77, 103, - 0, 76, 116, 76, 117, 58, 76, 78, 58, 58, + 106, 115, 47, 64, 80, 68, 57, 64, 57, 68, + 98, 113, 73, 64, 57, 68, 57, 106, 98, 104, + 57, 57, 114, 64, 80, 68, 104, 106, 115, 57, + 58, 58, 43, 58, 58, 58, 58, 58, 58, 69, + 58, 58, 58, 69, 72, 18, 104, 58, 72, 69, + 117, 99, 74, 104, 99, 72, 74, 110, 110, 69, + 79, 72, 17, 79, 79, 14, 69, 58, 72, 12, + 69, 72, 74, 9, 58, 72, 69, 117, 99, 74, + 79, 99, 72, 74, 110, 110, 69, 79, 72, 77, + 79, 79, 102, 118, 58, 72, 58, 59, 77, 74, - 78, 78, 76, 118, 115, 58, 0, 0, 58, 76, - 0, 119, 58, 120, 103, 0, 103, 78, 76, 116, - 76, 117, 58, 76, 78, 58, 58, 78, 78, 76, - 118, 107, 58, 59, 108, 108, 107, 59, 119, 0, - 120, 59, 107, 124, 78, 125, 114, 59, 114, 107, - 59, 121, 114, 0, 121, 127, 128, 59, 107, 114, - 59, 108, 108, 107, 59, 0, 122, 0, 59, 107, - 124, 122, 125, 114, 59, 114, 107, 59, 121, 114, - 126, 121, 127, 128, 59, 60, 114, 129, 130, 131, - 126, 131, 60, 122, 60, 126, 126, 133, 122, 60, + 77, 59, 105, 77, 105, 108, 102, 79, 119, 77, + 108, 59, 120, 121, 59, 59, 77, 122, 125, 102, + 118, 59, 5, 0, 59, 77, 0, 77, 59, 105, + 77, 105, 108, 102, 0, 119, 77, 108, 59, 120, + 121, 59, 59, 78, 122, 125, 0, 78, 59, 60, + 109, 78, 116, 60, 116, 109, 123, 60, 116, 123, + 127, 109, 128, 60, 130, 116, 60, 78, 109, 116, + 78, 131, 132, 60, 78, 0, 60, 109, 78, 116, + 60, 116, 109, 123, 60, 116, 123, 127, 109, 128, + 60, 130, 116, 60, 78, 109, 116, 124, 131, 132, - 132, 134, 132, 135, 60, 60, 0, 126, 136, 137, - 0, 138, 60, 139, 129, 130, 131, 126, 131, 60, - 141, 60, 126, 126, 133, 142, 60, 132, 134, 132, - 135, 60, 60, 61, 143, 136, 137, 61, 138, 144, - 139, 145, 147, 61, 148, 145, 61, 141, 150, 61, - 149, 146, 142, 61, 0, 0, 146, 151, 149, 152, - 61, 143, 0, 0, 61, 153, 144, 154, 145, 147, - 61, 148, 145, 61, 0, 150, 61, 149, 146, 156, - 61, 64, 64, 146, 151, 149, 152, 155, 64, 64, - 64, 157, 153, 158, 154, 64, 159, 160, 155, 161, + 60, 61, 124, 129, 133, 134, 136, 134, 61, 135, + 61, 135, 137, 129, 138, 61, 139, 140, 129, 129, + 61, 61, 0, 141, 124, 142, 0, 143, 61, 124, + 129, 133, 134, 136, 134, 61, 135, 61, 135, 137, + 129, 138, 61, 139, 140, 129, 129, 61, 61, 62, + 141, 145, 142, 62, 143, 146, 147, 148, 150, 62, + 149, 151, 62, 150, 149, 62, 152, 154, 155, 62, + 0, 0, 0, 156, 157, 158, 62, 0, 145, 0, + 62, 0, 146, 147, 148, 150, 62, 149, 151, 62, + 150, 149, 62, 152, 154, 155, 62, 65, 65, 153, - 160, 64, 0, 162, 163, 0, 156, 165, 64, 64, - 166, 260, 262, 263, 155, 64, 64, 64, 157, 164, - 158, 182, 64, 159, 160, 155, 161, 160, 64, 69, - 162, 163, 164, 69, 165, 0, 265, 166, 260, 262, - 263, 182, 184, 69, 183, 183, 164, 267, 182, 69, - 69, 0, 268, 69, 0, 0, 69, 184, 0, 164, - 69, 269, 184, 265, 271, 183, 0, 0, 182, 184, - 69, 183, 183, 270, 267, 270, 69, 69, 185, 268, - 69, 70, 70, 190, 184, 185, 187, 272, 269, 184, - 70, 271, 183, 185, 70, 0, 0, 70, 185, 187, + 156, 157, 158, 159, 65, 65, 65, 160, 153, 161, + 162, 65, 163, 165, 159, 166, 153, 65, 0, 167, + 164, 0, 0, 164, 65, 65, 153, 169, 170, 171, + 159, 65, 65, 65, 160, 153, 161, 162, 65, 163, + 165, 159, 166, 153, 65, 70, 167, 164, 168, 70, + 164, 0, 268, 187, 169, 170, 171, 188, 188, 70, + 0, 168, 189, 270, 271, 70, 70, 0, 0, 70, + 0, 0, 70, 187, 273, 168, 70, 189, 188, 268, + 187, 0, 189, 0, 188, 188, 70, 190, 168, 189, + 270, 271, 70, 70, 190, 195, 70, 71, 71, 0, - 270, 70, 270, 190, 0, 185, 187, 0, 70, 70, - 190, 0, 185, 187, 272, 0, 0, 70, 200, 186, - 185, 70, 186, 186, 70, 185, 187, 273, 70, 74, - 190, 74, 200, 187, 74, 188, 274, 188, 200, 276, - 277, 74, 74, 186, 0, 200, 186, 0, 0, 186, - 186, 74, 0, 0, 273, 278, 74, 188, 74, 200, - 0, 74, 188, 274, 188, 200, 276, 277, 74, 74, - 186, 212, 0, 280, 189, 189, 0, 281, 74, 75, - 75, 0, 278, 75, 188, 191, 75, 75, 192, 189, - 0, 212, 191, 75, 189, 192, 75, 192, 212, 191, + 187, 273, 190, 275, 189, 188, 71, 190, 191, 189, + 71, 191, 191, 71, 190, 195, 198, 71, 0, 0, + 0, 190, 195, 0, 71, 71, 198, 276, 192, 190, + 275, 0, 191, 71, 190, 191, 198, 71, 191, 191, + 71, 192, 195, 198, 71, 75, 203, 75, 192, 193, + 75, 193, 277, 198, 276, 192, 279, 75, 75, 191, + 0, 0, 203, 198, 280, 281, 203, 75, 192, 0, + 0, 193, 75, 203, 75, 192, 193, 75, 193, 277, + 282, 0, 0, 279, 75, 75, 194, 194, 199, 203, + 196, 280, 281, 203, 75, 76, 76, 196, 193, 76, - 280, 189, 189, 75, 281, 191, 75, 75, 192, 282, - 75, 194, 191, 75, 75, 192, 189, 193, 212, 191, - 75, 189, 192, 75, 192, 195, 191, 193, 194, 197, - 75, 194, 191, 218, 0, 192, 282, 193, 194, 283, - 195, 284, 197, 197, 193, 195, 0, 285, 0, 197, - 0, 0, 195, 218, 193, 194, 197, 0, 194, 198, - 218, 199, 201, 201, 193, 287, 283, 195, 284, 197, - 197, 199, 195, 196, 285, 198, 197, 196, 196, 198, - 218, 199, 0, 201, 196, 202, 198, 202, 199, 201, - 201, 196, 287, 288, 0, 0, 204, 196, 199, 0, + 0, 194, 76, 76, 196, 199, 194, 282, 199, 76, + 196, 0, 76, 194, 194, 199, 0, 196, 197, 76, + 284, 0, 76, 76, 196, 197, 76, 197, 194, 76, + 76, 196, 199, 194, 286, 199, 76, 196, 197, 76, + 200, 0, 287, 202, 0, 197, 76, 284, 204, 207, + 0, 207, 197, 289, 197, 200, 202, 202, 204, 290, + 200, 286, 0, 202, 0, 197, 0, 200, 204, 287, + 202, 207, 0, 206, 206, 204, 207, 205, 207, 0, + 289, 291, 200, 202, 202, 204, 290, 200, 201, 209, + 202, 205, 201, 201, 206, 204, 209, 205, 207, 201, - 196, 0, 198, 204, 196, 196, 198, 202, 199, 205, - 201, 196, 202, 203, 202, 203, 204, 206, 196, 203, - 288, 207, 205, 204, 196, 0, 203, 206, 207, 205, - 204, 219, 219, 0, 202, 203, 205, 206, 0, 0, - 203, 207, 203, 204, 206, 0, 203, 208, 207, 205, - 209, 219, 210, 203, 206, 207, 205, 208, 219, 219, - 209, 213, 203, 222, 206, 213, 210, 208, 207, 210, - 209, 211, 210, 0, 208, 214, 222, 209, 219, 210, - 211, 213, 0, 222, 208, 211, 214, 209, 213, 279, - 222, 211, 213, 210, 208, 214, 210, 209, 211, 210, + 206, 206, 218, 292, 205, 0, 201, 0, 291, 209, + 0, 0, 201, 0, 210, 201, 209, 224, 205, 201, + 201, 206, 218, 209, 205, 212, 201, 210, 211, 218, + 292, 217, 212, 201, 210, 0, 209, 224, 211, 201, + 208, 210, 208, 0, 224, 212, 208, 217, 211, 218, + 213, 217, 212, 208, 210, 211, 214, 208, 217, 212, + 213, 210, 208, 0, 224, 211, 214, 208, 215, 208, + 213, 0, 212, 208, 217, 211, 214, 213, 217, 0, + 208, 220, 215, 214, 208, 215, 293, 213, 215, 208, + 216, 222, 220, 214, 219, 215, 294, 213, 219, 216, - 216, 217, 214, 222, 279, 217, 0, 211, 213, 216, - 222, 0, 211, 214, 289, 290, 279, 0, 211, 291, - 216, 217, 214, 215, 215, 223, 0, 216, 217, 220, - 0, 279, 217, 215, 223, 220, 216, 220, 215, 215, - 0, 289, 290, 224, 215, 223, 291, 216, 217, 220, - 215, 215, 223, 221, 225, 221, 220, 221, 224, 292, - 215, 223, 220, 224, 220, 215, 215, 229, 226, 225, - 224, 215, 223, 0, 225, 226, 220, 221, 0, 227, - 221, 225, 221, 227, 221, 224, 292, 229, 226, 294, - 224, 228, 228, 0, 229, 226, 225, 231, 0, 230, + 222, 220, 223, 214, 216, 296, 223, 0, 220, 215, + 216, 222, 215, 293, 219, 215, 0, 216, 222, 220, + 0, 219, 223, 294, 297, 219, 216, 222, 220, 223, + 0, 216, 296, 223, 225, 225, 0, 216, 222, 226, + 228, 219, 221, 221, 227, 226, 227, 226, 227, 223, + 298, 297, 221, 228, 225, 0, 229, 221, 221, 226, + 228, 225, 225, 221, 0, 229, 226, 228, 227, 221, + 221, 227, 226, 227, 226, 227, 229, 298, 231, 221, + 228, 225, 230, 229, 221, 221, 226, 228, 236, 0, + 221, 230, 229, 231, 233, 227, 232, 0, 231, 0, - 230, 225, 226, 227, 221, 233, 227, 295, 232, 233, - 227, 228, 231, 0, 229, 226, 294, 231, 228, 228, - 230, 232, 0, 236, 231, 236, 230, 230, 232, 233, - 227, 235, 233, 234, 295, 232, 233, 234, 228, 231, - 235, 296, 0, 236, 231, 235, 237, 230, 232, 237, - 236, 235, 236, 234, 238, 232, 233, 0, 235, 241, - 234, 238, 245, 241, 234, 239, 237, 235, 296, 238, - 236, 240, 235, 237, 238, 239, 237, 297, 235, 0, - 234, 238, 245, 241, 240, 239, 241, 0, 238, 245, - 241, 240, 239, 237, 242, 244, 238, 242, 240, 243, + 234, 233, 230, 229, 234, 231, 235, 235, 236, 230, + 0, 232, 0, 299, 233, 236, 232, 0, 230, 252, + 231, 233, 0, 232, 234, 231, 235, 234, 233, 230, + 0, 234, 238, 235, 235, 236, 237, 237, 232, 252, + 299, 233, 239, 232, 240, 241, 252, 238, 240, 241, + 0, 234, 238, 235, 300, 239, 0, 237, 243, 238, + 243, 0, 239, 237, 237, 241, 252, 0, 240, 239, + 0, 240, 241, 0, 238, 240, 241, 242, 243, 238, + 244, 300, 239, 244, 237, 243, 242, 243, 246, 239, + 301, 242, 241, 0, 245, 240, 245, 242, 246, 247, - 246, 238, 239, 244, 297, 247, 243, 298, 246, 245, - 241, 240, 239, 299, 244, 244, 247, 242, 240, 243, - 246, 242, 244, 0, 242, 247, 243, 246, 0, 248, - 244, 0, 247, 243, 298, 246, 300, 250, 250, 254, - 299, 244, 244, 247, 242, 248, 243, 246, 253, 248, - 249, 251, 247, 252, 249, 251, 248, 249, 250, 254, - 252, 253, 0, 300, 250, 250, 254, 0, 253, 301, - 249, 251, 248, 252, 255, 253, 248, 249, 251, 302, - 252, 249, 251, 303, 249, 250, 254, 252, 253, 255, - 304, 305, 306, 307, 255, 253, 301, 249, 251, 308, + 244, 0, 0, 245, 242, 243, 249, 244, 246, 249, + 244, 245, 247, 242, 0, 246, 245, 301, 242, 247, + 278, 245, 278, 245, 242, 246, 247, 244, 248, 249, + 245, 254, 248, 249, 250, 246, 249, 0, 245, 247, + 253, 250, 254, 245, 302, 251, 247, 278, 253, 278, + 255, 254, 248, 251, 250, 248, 249, 0, 254, 248, + 253, 250, 0, 304, 251, 251, 255, 253, 250, 254, + 255, 302, 251, 257, 257, 253, 259, 255, 254, 248, + 251, 250, 256, 259, 258, 260, 256, 253, 258, 256, + 304, 251, 251, 255, 257, 0, 259, 255, 260, 261, - 252, 255, 309, 307, 311, 312, 302, 313, 314, 315, - 303, 316, 317, 318, 320, 321, 255, 304, 305, 306, - 307, 255, 322, 323, 324, 325, 308, 326, 327, 309, - 307, 311, 312, 328, 313, 314, 315, 329, 316, 317, - 318, 320, 321, 330, 325, 331, 332, 333, 335, 322, - 323, 324, 325, 336, 326, 327, 337, 338, 340, 341, - 328, 342, 343, 345, 329, 346, 347, 346, 348, 349, - 330, 325, 331, 332, 333, 335, 350, 351, 352, 354, - 336, 357, 358, 337, 338, 340, 341, 353, 342, 343, - 345, 353, 346, 347, 346, 348, 349, 359, 0, 360, + 257, 257, 256, 259, 258, 260, 305, 262, 0, 256, + 259, 258, 260, 256, 263, 258, 256, 306, 263, 261, + 288, 257, 262, 259, 307, 260, 261, 262, 308, 256, + 309, 258, 260, 305, 262, 288, 310, 311, 263, 312, + 313, 263, 314, 315, 306, 263, 261, 288, 316, 262, + 317, 307, 319, 320, 262, 308, 322, 309, 318, 323, + 324, 325, 288, 310, 311, 263, 312, 313, 318, 314, + 315, 326, 327, 328, 329, 316, 330, 317, 332, 319, + 320, 333, 334, 322, 335, 318, 323, 324, 325, 336, + 338, 337, 339, 340, 341, 318, 342, 343, 326, 327, - 361, 357, 358, 350, 351, 352, 354, 361, 357, 358, - 362, 363, 364, 365, 353, 363, 0, 359, 353, 360, - 361, 0, 0, 365, 359, 366, 360, 361, 357, 358, - 362, 453, 364, 365, 361, 363, 0, 362, 363, 364, - 365, 367, 363, 366, 359, 366, 360, 361, 367, 368, - 365, 368, 366, 369, 0, 0, 454, 362, 453, 364, - 365, 367, 363, 371, 370, 373, 374, 371, 367, 369, - 366, 368, 366, 369, 0, 367, 368, 0, 368, 370, - 369, 372, 375, 454, 370, 373, 374, 371, 367, 375, - 371, 370, 373, 374, 371, 372, 369, 0, 368, 376, + 328, 329, 344, 330, 345, 332, 346, 348, 333, 334, + 337, 335, 349, 350, 351, 353, 336, 338, 337, 339, + 340, 341, 354, 342, 343, 355, 356, 358, 359, 344, + 359, 345, 360, 346, 348, 361, 362, 337, 363, 349, + 350, 351, 353, 364, 365, 367, 366, 368, 371, 354, + 366, 0, 355, 356, 358, 359, 372, 359, 373, 360, + 374, 376, 361, 362, 378, 363, 473, 0, 371, 474, + 364, 365, 367, 366, 368, 371, 372, 366, 373, 375, + 374, 376, 379, 372, 378, 373, 375, 374, 376, 0, + 377, 378, 379, 473, 377, 371, 474, 0, 380, 375, - 369, 372, 375, 376, 377, 378, 370, 378, 372, 375, - 0, 370, 373, 374, 371, 379, 375, 381, 380, 377, - 381, 0, 372, 376, 377, 455, 376, 378, 372, 375, - 376, 377, 378, 380, 378, 379, 383, 382, 380, 384, - 381, 386, 379, 0, 381, 380, 377, 381, 382, 385, - 376, 377, 455, 385, 378, 0, 383, 382, 388, 384, - 380, 386, 379, 383, 382, 380, 384, 381, 386, 387, - 389, 387, 388, 385, 390, 382, 385, 389, 388, 456, - 385, 0, 391, 383, 382, 388, 384, 392, 386, 394, - 389, 387, 394, 457, 390, 392, 387, 389, 387, 388, + 475, 476, 379, 372, 383, 373, 375, 374, 376, 379, + 382, 378, 382, 375, 377, 381, 380, 377, 380, 379, + 383, 377, 381, 0, 383, 380, 375, 475, 476, 379, + 385, 383, 382, 384, 385, 381, 386, 382, 387, 382, + 0, 377, 381, 380, 388, 380, 389, 383, 384, 381, + 386, 383, 0, 384, 385, 0, 386, 385, 387, 382, + 384, 385, 381, 386, 388, 387, 389, 390, 391, 392, + 394, 388, 391, 389, 390, 384, 393, 386, 393, 396, + 384, 385, 396, 386, 392, 387, 477, 390, 0, 392, + 394, 388, 391, 389, 390, 391, 392, 394, 393, 391, - 385, 390, 391, 393, 389, 388, 456, 392, 395, 391, - 393, 397, 394, 0, 392, 397, 394, 389, 387, 394, - 457, 390, 392, 393, 395, 398, 0, 0, 395, 391, - 393, 397, 0, 396, 392, 395, 396, 393, 397, 394, - 398, 399, 397, 458, 401, 398, 402, 0, 0, 403, - 393, 395, 398, 396, 401, 395, 399, 404, 397, 400, - 396, 399, 406, 396, 401, 400, 402, 398, 399, 403, - 458, 401, 398, 402, 408, 405, 403, 404, 406, 400, - 396, 401, 406, 399, 404, 405, 400, 410, 399, 406, - 407, 401, 400, 402, 408, 405, 403, 0, 409, 407, + 395, 390, 396, 393, 398, 393, 396, 0, 399, 396, + 397, 392, 401, 477, 390, 395, 392, 394, 478, 391, + 395, 397, 400, 406, 398, 393, 400, 395, 399, 396, + 397, 398, 401, 0, 402, 399, 402, 397, 403, 401, + 0, 480, 395, 406, 407, 478, 400, 395, 397, 400, + 406, 398, 403, 400, 0, 399, 402, 397, 403, 401, + 404, 402, 405, 402, 407, 403, 408, 404, 480, 410, + 406, 407, 410, 400, 408, 405, 0, 409, 412, 403, + 404, 412, 405, 402, 409, 403, 408, 404, 0, 405, + 411, 407, 410, 408, 404, 482, 410, 409, 412, 410, - 0, 408, 405, 460, 404, 406, 400, 410, 0, 406, - 407, 411, 405, 409, 410, 411, 417, 407, 409, 415, - 0, 408, 405, 412, 412, 409, 407, 414, 413, 414, - 460, 411, 413, 416, 410, 415, 417, 407, 411, 415, - 409, 418, 411, 417, 412, 409, 415, 414, 418, 416, - 412, 412, 413, 416, 414, 413, 414, 419, 411, 413, - 416, 418, 415, 417, 0, 421, 415, 420, 418, 422, - 419, 412, 0, 462, 414, 418, 416, 419, 428, 413, - 416, 420, 423, 0, 419, 421, 423, 420, 418, 422, - 424, 425, 421, 428, 420, 426, 422, 419, 428, 424, + 414, 408, 405, 415, 409, 412, 411, 404, 412, 405, + 411, 409, 413, 408, 0, 414, 413, 411, 415, 410, + 414, 416, 482, 415, 409, 412, 418, 414, 0, 417, + 415, 419, 413, 411, 416, 417, 418, 411, 0, 413, + 420, 416, 414, 413, 421, 415, 418, 414, 416, 417, + 415, 419, 425, 418, 423, 422, 417, 424, 419, 413, + 420, 416, 417, 418, 421, 422, 424, 420, 416, 427, + 423, 421, 425, 418, 423, 422, 417, 424, 419, 425, + 426, 423, 422, 431, 424, 431, 428, 420, 483, 427, + 428, 421, 422, 424, 430, 426, 427, 423, 430, 425, - 462, 423, 425, 426, 419, 428, 423, 430, 420, 423, - 424, 425, 421, 423, 420, 426, 422, 424, 425, 427, - 428, 429, 426, 427, 429, 428, 424, 430, 423, 425, - 426, 0, 431, 423, 430, 432, 437, 424, 425, 0, - 433, 429, 426, 427, 463, 0, 427, 0, 429, 434, - 427, 429, 431, 464, 430, 432, 437, 435, 433, 431, - 433, 0, 432, 437, 434, 0, 436, 433, 429, 434, - 427, 463, 435, 436, 441, 439, 434, 435, 438, 431, - 464, 0, 432, 437, 435, 433, 436, 433, 440, 438, - 439, 434, 442, 436, 441, 439, 434, 440, 438, 435, + 426, 423, 422, 431, 424, 484, 428, 426, 429, 429, + 431, 433, 431, 428, 435, 483, 427, 428, 430, 485, + 487, 430, 426, 432, 434, 430, 433, 426, 439, 429, + 431, 433, 484, 428, 435, 429, 429, 440, 433, 432, + 434, 435, 436, 432, 434, 430, 485, 487, 439, 436, + 432, 434, 437, 433, 438, 439, 429, 440, 433, 441, + 488, 435, 436, 441, 440, 437, 432, 434, 438, 436, + 432, 434, 437, 442, 438, 439, 436, 443, 441, 437, + 0, 438, 442, 441, 440, 0, 441, 488, 443, 436, + 441, 446, 437, 442, 444, 438, 489, 443, 0, 437, - 436, 441, 439, 0, 435, 438, 0, 446, 440, 443, - 0, 446, 442, 436, 465, 440, 438, 439, 443, 442, - 444, 441, 439, 445, 440, 438, 448, 0, 447, 443, - 444, 446, 444, 445, 446, 440, 443, 447, 446, 442, - 444, 465, 448, 445, 0, 443, 448, 444, 447, 0, - 445, 450, 467, 448, 449, 447, 443, 444, 446, 444, - 445, 468, 0, 469, 447, 470, 450, 444, 472, 448, - 445, 450, 449, 448, 449, 447, 451, 452, 450, 467, - 452, 449, 473, 474, 477, 451, 478, 479, 468, 451, - 469, 480, 470, 450, 481, 472, 451, 452, 450, 449, + 442, 438, 444, 445, 443, 441, 446, 445, 448, 442, + 441, 446, 449, 0, 444, 443, 447, 450, 446, 447, + 442, 444, 449, 489, 443, 451, 0, 445, 448, 444, + 445, 0, 449, 446, 445, 448, 447, 450, 446, 449, + 452, 444, 453, 447, 450, 451, 447, 0, 0, 449, + 454, 456, 451, 460, 445, 448, 490, 453, 452, 449, + 452, 455, 453, 447, 450, 454, 459, 452, 455, 453, + 454, 456, 451, 460, 461, 459, 458, 454, 456, 457, + 460, 455, 0, 490, 453, 452, 459, 452, 455, 453, + 457, 458, 454, 459, 461, 455, 458, 454, 456, 457, - 485, 449, 486, 451, 452, 488, 490, 452, 491, 473, - 474, 477, 451, 478, 479, 492, 451, 493, 480, 494, - 495, 481, 498, 451, 452, 496, 502, 485, 504, 486, - 505, 506, 488, 490, 507, 491, 496, 509, 510, 511, - 512, 513, 492, 516, 493, 517, 494, 495, 518, 498, - 519, 520, 496, 502, 521, 504, 522, 505, 506, 524, - 525, 507, 526, 496, 509, 510, 511, 512, 513, 527, - 516, 530, 517, 531, 532, 518, 533, 519, 520, 534, - 535, 521, 536, 522, 537, 539, 524, 525, 541, 526, - 0, 0, 0, 545, 546, 0, 527, 543, 530, 548, + 460, 461, 459, 458, 0, 462, 457, 465, 455, 464, + 463, 465, 0, 459, 462, 466, 0, 457, 458, 464, + 463, 461, 463, 458, 466, 462, 457, 0, 467, 464, + 463, 465, 462, 0, 465, 466, 464, 463, 465, 469, + 0, 462, 466, 468, 467, 492, 464, 463, 467, 463, + 493, 466, 462, 0, 469, 467, 464, 463, 465, 469, + 470, 468, 466, 468, 471, 472, 469, 471, 494, 470, + 468, 467, 492, 470, 497, 467, 498, 493, 472, 499, + 470, 469, 500, 501, 471, 472, 469, 470, 468, 502, + 468, 471, 472, 506, 471, 494, 470, 507, 509, 511, - 531, 532, 0, 533, 0, 544, 534, 535, 549, 536, - 543, 537, 539, 545, 546, 541, 547, 543, 544, 548, - 545, 546, 551, 550, 543, 544, 548, 550, 549, 547, - 0, 552, 544, 635, 0, 549, 547, 543, 0, 552, - 545, 546, 551, 547, 543, 544, 548, 550, 553, 551, - 550, 552, 544, 555, 550, 549, 547, 554, 552, 556, - 635, 553, 637, 547, 0, 558, 552, 555, 553, 551, - 0, 638, 554, 555, 550, 553, 557, 554, 552, 556, - 555, 558, 559, 557, 554, 558, 556, 560, 553, 637, - 0, 560, 558, 561, 555, 553, 557, 559, 638, 554, + 470, 497, 513, 498, 514, 472, 499, 470, 515, 500, + 501, 471, 472, 516, 517, 520, 502, 518, 524, 526, + 506, 527, 528, 528, 507, 509, 511, 529, 518, 513, + 530, 514, 532, 533, 534, 515, 535, 536, 539, 540, + 516, 517, 520, 541, 518, 524, 526, 542, 527, 528, + 528, 543, 544, 545, 529, 518, 546, 530, 548, 532, + 533, 534, 549, 535, 536, 539, 540, 550, 551, 554, + 541, 555, 556, 557, 542, 558, 559, 560, 543, 544, + 545, 561, 563, 546, 565, 548, 0, 570, 0, 549, + 571, 0, 568, 569, 550, 551, 554, 665, 555, 556, - 555, 0, 559, 557, 554, 562, 556, 562, 558, 559, - 557, 560, 558, 561, 560, 563, 565, 566, 560, 563, - 561, 564, 0, 557, 559, 639, 640, 562, 564, 559, - 0, 569, 562, 0, 562, 563, 565, 566, 560, 567, - 561, 564, 563, 565, 566, 568, 563, 569, 564, 572, - 567, 569, 639, 640, 562, 564, 568, 571, 569, 567, - 570, 571, 563, 565, 566, 568, 567, 0, 564, 572, - 573, 574, 568, 641, 569, 570, 572, 567, 569, 577, - 570, 571, 0, 568, 571, 575, 567, 570, 571, 575, - 573, 574, 568, 576, 578, 579, 572, 573, 574, 577, + 557, 0, 558, 559, 560, 568, 569, 570, 561, 563, + 571, 565, 568, 569, 570, 572, 573, 571, 574, 568, + 569, 576, 575, 667, 665, 0, 575, 668, 572, 0, + 0, 581, 568, 569, 570, 572, 573, 571, 574, 568, + 569, 576, 572, 573, 577, 574, 575, 578, 576, 575, + 667, 581, 577, 575, 668, 572, 580, 579, 581, 0, + 578, 0, 572, 573, 577, 574, 584, 578, 576, 583, + 580, 577, 579, 575, 578, 582, 580, 579, 581, 577, + 586, 584, 582, 580, 579, 583, 584, 578, 587, 583, + 587, 577, 0, 584, 578, 582, 583, 580, 0, 579, - 641, 0, 570, 578, 576, 581, 577, 570, 571, 575, - 0, 642, 575, 576, 578, 579, 575, 573, 574, 580, - 576, 578, 579, 644, 582, 581, 577, 645, 583, 580, - 578, 576, 581, 587, 0, 0, 575, 582, 642, 580, - 576, 578, 579, 0, 582, 584, 580, 583, 583, 585, - 644, 582, 581, 587, 645, 583, 580, 586, 584, 586, - 587, 588, 585, 589, 582, 584, 580, 590, 588, 585, - 586, 582, 584, 591, 583, 583, 585, 586, 593, 0, - 587, 588, 0, 589, 586, 584, 586, 590, 588, 585, - 589, 592, 584, 591, 590, 588, 585, 586, 593, 595, + 586, 585, 582, 580, 579, 585, 669, 586, 584, 582, + 587, 590, 583, 584, 588, 587, 583, 587, 588, 589, + 591, 0, 582, 670, 592, 585, 589, 586, 585, 0, + 0, 590, 585, 669, 588, 592, 0, 587, 590, 589, + 591, 588, 0, 593, 592, 588, 589, 591, 594, 598, + 670, 592, 585, 589, 593, 596, 597, 595, 590, 596, + 597, 588, 592, 593, 594, 599, 589, 591, 594, 598, + 593, 592, 595, 600, 601, 594, 598, 595, 601, 596, + 597, 593, 596, 597, 595, 599, 596, 597, 671, 603, + 593, 594, 599, 600, 604, 594, 598, 602, 601, 595, - 591, 596, 594, 597, 586, 593, 592, 598, 588, 594, - 589, 592, 600, 0, 590, 596, 597, 0, 592, 595, - 591, 596, 594, 597, 0, 593, 595, 598, 596, 594, - 597, 601, 600, 592, 598, 599, 594, 599, 592, 600, - 602, 604, 596, 597, 601, 605, 595, 646, 596, 594, - 597, 601, 606, 602, 598, 603, 606, 599, 601, 600, - 602, 604, 599, 603, 599, 605, 0, 602, 604, 607, - 0, 601, 605, 607, 646, 603, 606, 608, 601, 606, - 602, 609, 603, 606, 599, 608, 0, 602, 604, 613, - 603, 610, 605, 607, 609, 648, 607, 608, 0, 611, + 600, 601, 605, 604, 595, 601, 596, 597, 602, 603, + 672, 607, 599, 606, 604, 671, 603, 602, 0, 608, + 600, 604, 605, 606, 602, 601, 674, 0, 610, 605, + 604, 607, 609, 606, 614, 602, 603, 672, 607, 608, + 606, 604, 0, 611, 602, 609, 608, 610, 610, 605, + 606, 612, 609, 674, 614, 610, 611, 0, 607, 609, + 606, 614, 616, 611, 612, 617, 608, 613, 618, 613, + 611, 612, 609, 620, 610, 610, 0, 615, 612, 609, + 613, 614, 616, 611, 615, 617, 619, 613, 618, 616, + 611, 612, 617, 620, 613, 618, 613, 615, 612, 622, - 607, 609, 603, 606, 608, 614, 610, 611, 609, 613, - 615, 610, 608, 612, 615, 612, 613, 649, 610, 611, - 607, 609, 648, 616, 608, 614, 611, 618, 609, 617, - 615, 619, 614, 610, 611, 612, 613, 615, 610, 617, - 612, 615, 612, 616, 649, 620, 611, 618, 0, 617, - 616, 619, 614, 621, 618, 621, 617, 615, 619, 620, - 0, 623, 612, 624, 622, 620, 617, 624, 0, 627, - 616, 0, 620, 622, 618, 621, 617, 623, 619, 628, - 621, 623, 621, 625, 622, 629, 620, 624, 623, 627, - 624, 622, 620, 626, 624, 626, 627, 630, 625, 628, + 620, 619, 623, 621, 615, 624, 619, 613, 624, 616, + 621, 615, 617, 619, 613, 618, 623, 623, 625, 622, + 620, 626, 623, 621, 615, 624, 622, 628, 619, 623, + 621, 625, 624, 619, 627, 624, 627, 621, 625, 675, + 629, 626, 630, 623, 623, 625, 622, 628, 626, 623, + 621, 631, 624, 629, 628, 630, 627, 632, 625, 631, + 629, 627, 630, 627, 0, 625, 675, 629, 626, 630, + 633, 631, 634, 676, 628, 637, 634, 632, 631, 0, + 629, 635, 630, 627, 632, 635, 631, 629, 637, 630, + 633, 638, 0, 636, 642, 637, 634, 633, 631, 634, - 622, 629, 621, 625, 623, 629, 628, 631, 623, 632, - 625, 622, 629, 626, 624, 650, 627, 630, 651, 652, - 626, 653, 626, 654, 630, 625, 628, 631, 629, 632, - 625, 655, 629, 656, 631, 658, 632, 659, 661, 664, - 626, 665, 650, 666, 630, 651, 652, 667, 653, 672, - 654, 673, 674, 677, 631, 678, 632, 679, 655, 680, - 656, 681, 658, 683, 659, 661, 664, 684, 665, 685, - 666, 686, 687, 688, 667, 689, 672, 690, 673, 674, - 677, 692, 678, 693, 679, 694, 680, 696, 681, 697, - 683, 699, 765, 700, 684, 0, 685, 702, 686, 687, + 676, 636, 637, 634, 632, 635, 638, 678, 635, 0, + 640, 638, 635, 636, 642, 637, 639, 633, 638, 640, + 636, 642, 637, 634, 639, 641, 0, 641, 636, 643, + 640, 0, 635, 638, 678, 644, 639, 640, 638, 644, + 636, 642, 0, 639, 645, 647, 640, 641, 646, 643, + 648, 639, 641, 649, 641, 644, 643, 640, 646, 650, + 679, 650, 644, 639, 645, 647, 644, 649, 646, 651, + 648, 645, 647, 649, 641, 646, 643, 648, 651, 680, + 649, 650, 644, 652, 681, 646, 650, 679, 650, 651, + 0, 645, 647, 656, 649, 646, 651, 648, 653, 652, - 688, 701, 689, 703, 690, 704, 705, 705, 692, 708, - 693, 699, 694, 700, 696, 767, 697, 702, 699, 765, - 700, 701, 701, 703, 702, 704, 706, 705, 701, 708, - 703, 707, 704, 705, 705, 706, 708, 709, 699, 0, - 700, 707, 767, 712, 702, 710, 706, 713, 701, 701, - 703, 707, 704, 706, 705, 710, 708, 709, 707, 711, - 714, 716, 706, 712, 709, 710, 711, 713, 707, 0, - 712, 717, 710, 706, 713, 714, 715, 0, 707, 711, - 714, 716, 710, 0, 709, 715, 711, 714, 716, 718, - 712, 717, 710, 711, 713, 719, 715, 720, 717, 723, + 649, 657, 653, 652, 654, 651, 680, 655, 650, 655, + 652, 681, 659, 656, 682, 660, 651, 658, 661, 654, + 656, 657, 653, 662, 654, 653, 652, 655, 657, 653, + 652, 654, 659, 658, 655, 660, 655, 658, 661, 659, + 656, 682, 660, 662, 658, 661, 654, 683, 657, 653, + 662, 654, 684, 685, 655, 686, 687, 689, 690, 659, + 658, 692, 660, 695, 658, 661, 696, 697, 698, 703, + 662, 705, 706, 707, 683, 710, 711, 712, 713, 684, + 685, 714, 686, 687, 689, 690, 716, 717, 692, 718, + 695, 719, 720, 696, 697, 698, 703, 721, 705, 706, - 0, 721, 714, 715, 718, 721, 711, 714, 716, 718, - 719, 720, 715, 722, 726, 719, 718, 720, 717, 723, - 722, 721, 719, 715, 720, 724, 723, 724, 721, 768, - 725, 718, 721, 722, 726, 728, 718, 719, 720, 729, - 722, 726, 719, 725, 720, 724, 723, 722, 721, 727, - 725, 731, 724, 730, 724, 728, 768, 725, 0, 729, - 722, 726, 728, 734, 727, 732, 729, 733, 730, 727, - 725, 731, 724, 730, 733, 0, 727, 725, 731, 732, - 730, 0, 728, 734, 735, 732, 729, 733, 736, 737, - 734, 727, 732, 738, 733, 730, 727, 738, 731, 739, + 707, 722, 710, 711, 712, 713, 723, 724, 714, 726, + 727, 728, 730, 716, 717, 731, 718, 0, 719, 720, + 733, 734, 0, 735, 721, 736, 737, 0, 722, 738, + 739, 739, 0, 723, 724, 803, 726, 727, 728, 730, + 733, 734, 731, 735, 735, 736, 737, 733, 734, 738, + 735, 739, 736, 737, 740, 741, 738, 739, 739, 742, + 743, 805, 803, 740, 806, 741, 0, 733, 734, 746, + 735, 735, 736, 737, 740, 741, 738, 745, 739, 742, + 743, 740, 741, 744, 745, 747, 742, 743, 805, 746, + 740, 806, 741, 744, 748, 750, 746, 745, 751, 749, - 730, 733, 739, 740, 735, 741, 732, 742, 736, 737, - 734, 735, 732, 743, 733, 736, 737, 738, 740, 739, - 738, 0, 746, 740, 738, 741, 739, 742, 744, 739, - 740, 735, 741, 743, 742, 736, 737, 748, 745, 747, - 743, 744, 746, 747, 738, 740, 739, 769, 744, 746, - 740, 745, 741, 770, 742, 744, 750, 748, 745, 747, - 743, 751, 751, 749, 748, 745, 747, 749, 744, 746, - 747, 750, 0, 752, 769, 744, 750, 752, 745, 753, - 770, 755, 751, 750, 748, 745, 747, 749, 751, 751, - 749, 756, 754, 753, 749, 756, 755, 752, 750, 753, + 0, 740, 741, 744, 745, 747, 742, 743, 749, 748, + 744, 745, 747, 752, 748, 750, 746, 754, 751, 749, + 744, 748, 750, 753, 745, 751, 749, 756, 752, 756, + 744, 754, 747, 752, 0, 749, 748, 754, 753, 0, + 752, 748, 750, 753, 754, 751, 749, 755, 758, 756, + 753, 755, 757, 760, 756, 752, 756, 761, 754, 757, + 752, 759, 0, 759, 754, 753, 760, 755, 758, 763, + 753, 764, 757, 760, 755, 758, 756, 761, 755, 757, + 760, 759, 762, 766, 761, 0, 757, 807, 759, 763, + 759, 764, 765, 760, 755, 758, 763, 762, 764, 757, - 752, 755, 772, 750, 752, 754, 753, 757, 755, 751, - 758, 760, 754, 761, 749, 756, 773, 0, 756, 754, - 753, 763, 756, 755, 752, 763, 753, 757, 755, 772, - 758, 760, 754, 761, 757, 759, 759, 758, 760, 754, - 761, 762, 756, 773, 764, 763, 776, 780, 763, 782, - 785, 788, 763, 789, 757, 762, 759, 758, 760, 791, - 761, 762, 759, 759, 764, 792, 794, 795, 762, 796, - 798, 764, 763, 776, 780, 799, 782, 785, 788, 802, - 789, 804, 762, 759, 805, 806, 791, 811, 762, 812, - 813, 764, 792, 794, 795, 814, 796, 798, 815, 816, + 760, 767, 762, 766, 761, 769, 768, 765, 759, 762, + 766, 770, 765, 768, 807, 767, 763, 771, 764, 765, + 0, 767, 0, 772, 762, 769, 768, 773, 767, 762, + 766, 770, 769, 768, 765, 774, 777, 771, 770, 765, + 768, 775, 767, 772, 771, 775, 776, 773, 767, 776, + 772, 777, 769, 768, 773, 774, 777, 778, 770, 779, + 780, 0, 774, 777, 771, 775, 776, 0, 775, 783, + 772, 785, 775, 776, 773, 781, 776, 778, 777, 779, + 780, 782, 774, 777, 778, 0, 779, 780, 781, 783, + 0, 785, 775, 776, 782, 781, 783, 788, 785, 784, - 817, 818, 799, 0, 814, 0, 802, 817, 804, 812, - 813, 805, 806, 816, 811, 814, 812, 813, 815, 816, - 817, 818, 814, 820, 821, 815, 816, 817, 818, 822, - 819, 814, 819, 823, 817, 823, 812, 813, 820, 0, - 816, 824, 814, 820, 821, 815, 816, 817, 818, 822, - 820, 821, 819, 825, 826, 823, 822, 819, 827, 819, - 823, 824, 823, 828, 830, 820, 829, 831, 824, 832, - 820, 821, 833, 825, 826, 829, 822, 834, 827, 819, - 825, 826, 823, 828, 830, 827, 829, 831, 824, 832, - 828, 830, 833, 829, 831, 835, 832, 834, 836, 833, + 0, 782, 781, 784, 778, 786, 779, 780, 782, 786, + 787, 787, 788, 789, 789, 781, 783, 788, 785, 784, + 0, 782, 781, 790, 788, 795, 784, 790, 782, 786, + 784, 787, 786, 793, 789, 791, 786, 787, 787, 788, + 789, 789, 808, 810, 788, 795, 784, 790, 793, 791, + 790, 792, 795, 793, 790, 791, 786, 796, 787, 794, + 793, 789, 791, 794, 792, 798, 797, 797, 799, 808, + 810, 792, 795, 0, 790, 793, 791, 796, 792, 802, + 793, 811, 791, 794, 796, 798, 794, 797, 799, 800, + 794, 792, 798, 797, 797, 799, 801, 814, 792, 802, - 825, 826, 829, 837, 834, 827, 840, 864, 835, 842, - 828, 830, 843, 829, 831, 835, 832, 839, 836, 833, - 838, 839, 835, 837, 834, 836, 840, 838, 866, 842, - 837, 841, 843, 840, 864, 835, 842, 844, 871, 843, - 838, 839, 835, 0, 839, 836, 841, 838, 839, 846, - 837, 841, 847, 840, 838, 866, 842, 844, 841, 843, - 845, 848, 845, 846, 844, 871, 850, 838, 839, 846, - 851, 852, 847, 841, 851, 852, 846, 0, 841, 847, - 854, 848, 845, 855, 844, 849, 850, 845, 848, 845, - 846, 853, 849, 850, 851, 852, 846, 851, 852, 847, + 801, 818, 820, 800, 796, 821, 802, 824, 811, 800, + 794, 827, 798, 828, 797, 799, 800, 831, 832, 834, + 801, 835, 836, 801, 814, 838, 802, 801, 818, 820, + 800, 839, 821, 843, 824, 845, 800, 846, 827, 847, + 828, 852, 0, 853, 831, 832, 834, 801, 835, 836, + 0, 854, 838, 856, 858, 857, 855, 859, 839, 908, + 843, 858, 845, 853, 846, 855, 847, 0, 852, 857, + 853, 854, 0, 856, 858, 857, 855, 859, 854, 861, + 856, 858, 857, 855, 859, 860, 908, 860, 858, 862, + 853, 863, 855, 864, 861, 864, 857, 865, 854, 861, - 854, 851, 852, 855, 856, 849, 853, 854, 848, 845, - 855, 853, 849, 850, 857, 873, 858, 874, 853, 849, - 877, 851, 852, 858, 856, 880, 881, 854, 882, 884, - 855, 856, 849, 853, 857, 0, 858, 885, 853, 886, - 887, 857, 873, 858, 874, 888, 0, 877, 890, 884, - 858, 856, 880, 881, 889, 882, 884, 885, 889, 886, - 887, 857, 891, 858, 885, 888, 886, 887, 890, 0, - 892, 893, 888, 894, 895, 890, 884, 891, 889, 0, - 0, 889, 891, 897, 885, 889, 886, 887, 909, 891, - 892, 893, 888, 894, 895, 890, 899, 892, 893, 898, + 856, 858, 857, 855, 859, 866, 861, 860, 867, 862, + 868, 863, 860, 869, 860, 864, 862, 865, 863, 0, + 864, 861, 864, 872, 865, 866, 861, 873, 867, 874, + 868, 871, 866, 869, 860, 867, 862, 868, 863, 870, + 869, 875, 864, 872, 865, 876, 871, 873, 870, 874, + 872, 871, 866, 910, 873, 867, 874, 868, 871, 870, + 869, 875, 878, 879, 877, 876, 870, 880, 875, 916, + 872, 0, 876, 871, 873, 870, 874, 877, 871, 883, + 910, 882, 878, 879, 877, 882, 870, 880, 875, 878, + 879, 877, 876, 881, 880, 885, 916, 886, 887, 883, - 894, 895, 900, 897, 891, 889, 896, 901, 896, 891, - 897, 903, 898, 0, 911, 909, 899, 892, 893, 898, - 894, 895, 900, 899, 904, 902, 898, 901, 896, 900, - 897, 903, 913, 896, 901, 896, 915, 905, 903, 898, - 902, 911, 907, 899, 904, 902, 898, 916, 906, 900, - 905, 904, 902, 908, 901, 896, 906, 905, 903, 913, - 0, 918, 907, 915, 905, 919, 0, 902, 906, 907, - 921, 904, 902, 908, 916, 906, 918, 905, 920, 0, - 908, 918, 923, 906, 905, 919, 922, 924, 918, 907, - 921, 926, 919, 920, 927, 906, 929, 921, 920, 922, + 881, 884, 0, 890, 877, 882, 883, 0, 882, 878, + 879, 877, 882, 881, 880, 885, 884, 886, 887, 889, + 881, 884, 885, 890, 886, 887, 883, 881, 884, 888, + 890, 888, 882, 889, 891, 892, 0, 894, 0, 889, + 881, 0, 885, 884, 886, 887, 889, 918, 884, 895, + 890, 888, 893, 895, 891, 892, 888, 894, 888, 893, + 889, 891, 892, 896, 894, 898, 889, 896, 897, 899, + 0, 900, 893, 895, 918, 919, 895, 901, 888, 893, + 895, 891, 892, 897, 894, 898, 893, 896, 897, 899, + 896, 900, 898, 922, 896, 897, 899, 901, 900, 893, - 908, 0, 923, 918, 925, 920, 922, 924, 918, 923, - 932, 926, 919, 922, 924, 925, 933, 921, 926, 935, - 920, 927, 0, 929, 925, 920, 922, 934, 936, 923, - 932, 925, 939, 922, 924, 0, 933, 932, 926, 935, - 940, 934, 925, 933, 0, 0, 935, 934, 936, 0, - 0, 925, 939, 0, 934, 936, 0, 932, 0, 939, - 940, 0, 0, 933, 0, 0, 935, 940, 934, 0, - 0, 0, 0, 0, 934, 936, 0, 0, 0, 939, - 0, 0, 0, 0, 0, 0, 0, 940, 942, 0, - 0, 942, 943, 0, 943, 943, 945, 0, 945, 945, + 895, 902, 919, 925, 901, 926, 927, 929, 902, 930, + 897, 931, 898, 0, 896, 897, 899, 932, 900, 933, + 922, 902, 935, 937, 901, 955, 0, 929, 902, 930, + 925, 931, 926, 927, 929, 902, 930, 932, 931, 933, + 936, 934, 935, 937, 932, 934, 933, 0, 902, 935, + 937, 938, 955, 939, 929, 936, 930, 940, 931, 941, + 936, 942, 0, 942, 932, 934, 933, 936, 934, 935, + 937, 938, 934, 939, 943, 945, 944, 940, 938, 941, + 939, 0, 936, 942, 940, 946, 941, 936, 942, 944, + 942, 947, 934, 948, 943, 945, 944, 949, 938, 950, - 946, 0, 946, 946, 947, 0, 947, 947, 948, 0, - 948, 948, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 941, 941, 941, 941, 941, 941, 941, 941 + 939, 943, 945, 944, 940, 946, 941, 0, 948, 953, + 942, 947, 946, 948, 951, 957, 944, 949, 947, 950, + 948, 943, 945, 944, 949, 952, 950, 951, 954, 953, + 959, 961, 946, 952, 951, 948, 953, 962, 947, 965, + 948, 951, 957, 0, 949, 952, 950, 964, 954, 967, + 966, 969, 952, 970, 951, 954, 953, 959, 961, 965, + 952, 951, 964, 0, 962, 966, 965, 964, 968, 967, + 966, 969, 952, 970, 964, 954, 967, 966, 969, 971, + 970, 968, 972, 973, 975, 978, 965, 979, 968, 964, + 971, 0, 966, 981, 964, 968, 967, 966, 969, 971, + + 970, 982, 972, 985, 980, 978, 971, 979, 968, 972, + 973, 975, 978, 981, 979, 968, 986, 971, 980, 0, + 981, 982, 0, 985, 980, 0, 971, 0, 982, 972, + 985, 980, 978, 0, 979, 0, 986, 0, 0, 0, + 981, 0, 0, 986, 0, 980, 0, 0, 982, 0, + 985, 980, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 986, 988, 0, 0, 988, 989, 0, + 989, 989, 991, 0, 991, 991, 992, 0, 992, 992, + 993, 0, 993, 993, 994, 0, 994, 994, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987 } ; /* The intent behind this definition is that it'll catch @@ -1811,7 +1641,6 @@ static const flex_int16_t yy_chk[3781] = #define TOKEN(name) { return SQL_##name; } -#line 1814 "flex_lexer.cpp" /*************************** ** Section 2: Rules ***************************/ @@ -1824,7 +1653,7 @@ static const flex_int16_t yy_chk[3781] = /*************************** ** Section 3: Rules ***************************/ -#line 1827 "flex_lexer.cpp" +#line 1657 "flex_lexer.cpp" #define INITIAL 0 #define COMMENT 1 @@ -1879,7 +1708,7 @@ struct yyguts_t }; /* end struct yyguts_t */ -static int yy_init_globals ( yyscan_t yyscanner ); +static int yy_init_globals (yyscan_t yyscanner ); /* This must go here because YYSTYPE and YYLTYPE are included * from bison output in section 1.*/ @@ -1887,50 +1716,50 @@ static int yy_init_globals ( yyscan_t yyscanner ); # define yylloc yyg->yylloc_r -int yylex_init (yyscan_t* scanner); +int hsql_lex_init (yyscan_t* scanner); -int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); +int hsql_lex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy ( yyscan_t yyscanner ); +int hsql_lex_destroy (yyscan_t yyscanner ); -int yyget_debug ( yyscan_t yyscanner ); +int hsql_get_debug (yyscan_t yyscanner ); -void yyset_debug ( int debug_flag , yyscan_t yyscanner ); +void hsql_set_debug (int debug_flag ,yyscan_t yyscanner ); -YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); +YY_EXTRA_TYPE hsql_get_extra (yyscan_t yyscanner ); -void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); +void hsql_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); -FILE *yyget_in ( yyscan_t yyscanner ); +FILE *hsql_get_in (yyscan_t yyscanner ); -void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); +void hsql_set_in (FILE * _in_str ,yyscan_t yyscanner ); -FILE *yyget_out ( yyscan_t yyscanner ); +FILE *hsql_get_out (yyscan_t yyscanner ); -void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); +void hsql_set_out (FILE * _out_str ,yyscan_t yyscanner ); - int yyget_leng ( yyscan_t yyscanner ); + int hsql_get_leng (yyscan_t yyscanner ); -char *yyget_text ( yyscan_t yyscanner ); +char *hsql_get_text (yyscan_t yyscanner ); -int yyget_lineno ( yyscan_t yyscanner ); +int hsql_get_lineno (yyscan_t yyscanner ); -void yyset_lineno ( int _line_number , yyscan_t yyscanner ); +void hsql_set_lineno (int _line_number ,yyscan_t yyscanner ); -int yyget_column ( yyscan_t yyscanner ); +int hsql_get_column (yyscan_t yyscanner ); -void yyset_column ( int _column_no , yyscan_t yyscanner ); +void hsql_set_column (int _column_no ,yyscan_t yyscanner ); -YYSTYPE * yyget_lval ( yyscan_t yyscanner ); +YYSTYPE * hsql_get_lval (yyscan_t yyscanner ); -void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner ); +void hsql_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); - YYLTYPE *yyget_lloc ( yyscan_t yyscanner ); + YYLTYPE *hsql_get_lloc (yyscan_t yyscanner ); - void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner ); + void hsql_set_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1938,9 +1767,9 @@ void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap ( yyscan_t yyscanner ); +extern "C" int hsql_wrap (yyscan_t yyscanner ); #else -extern int yywrap ( yyscan_t yyscanner ); +extern int hsql_wrap (yyscan_t yyscanner ); #endif #endif @@ -1949,18 +1778,19 @@ extern int yywrap ( yyscan_t yyscanner ); #endif #ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); +static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * , yyscan_t yyscanner); +static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT + #ifdef __cplusplus -static int yyinput ( yyscan_t yyscanner ); +static int yyinput (yyscan_t yyscanner ); #else -static int input ( yyscan_t yyscanner ); +static int input (yyscan_t yyscanner ); #endif #endif @@ -1991,7 +1821,7 @@ static int input ( yyscan_t yyscanner ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -2004,7 +1834,7 @@ static int input ( yyscan_t yyscanner ); else \ { \ errno=0; \ - while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ + while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ @@ -2045,10 +1875,10 @@ static int input ( yyscan_t yyscanner ); #ifndef YY_DECL #define YY_DECL_IS_OURS 1 -extern int yylex \ - (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner); +extern int hsql_lex \ + (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner); -#define YY_DECL int yylex \ +#define YY_DECL int hsql_lex \ (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner) #endif /* !YY_DECL */ @@ -2098,19 +1928,19 @@ YY_DECL yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (yyscanner); + hsql_ensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); + hsql__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } - yy_load_buffer_state( yyscanner ); + hsql__load_buffer_state(yyscanner ); } { #line 51 "flex_lexer.l" -#line 2113 "flex_lexer.cpp" +#line 1944 "flex_lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2137,13 +1967,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 >= 942 ) - yy_c = yy_meta[yy_c]; + if ( yy_current_state >= 988 ) + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } - while ( yy_current_state != 941 ); + while ( yy_current_state != 987 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -2358,514 +2188,549 @@ TOKEN(EXISTS) case 39: YY_RULE_SETUP #line 93 "flex_lexer.l" -TOKEN(GLOBAL) +TOKEN(EXTRACT) YY_BREAK case 40: YY_RULE_SETUP #line 94 "flex_lexer.l" -TOKEN(HAVING) +TOKEN(GLOBAL) YY_BREAK case 41: YY_RULE_SETUP #line 95 "flex_lexer.l" -TOKEN(IMPORT) +TOKEN(HAVING) YY_BREAK case 42: YY_RULE_SETUP #line 96 "flex_lexer.l" -TOKEN(INSERT) +TOKEN(IMPORT) YY_BREAK case 43: YY_RULE_SETUP #line 97 "flex_lexer.l" -TOKEN(ISNULL) +TOKEN(INSERT) YY_BREAK case 44: YY_RULE_SETUP #line 98 "flex_lexer.l" -TOKEN(OFFSET) +TOKEN(ISNULL) YY_BREAK case 45: YY_RULE_SETUP #line 99 "flex_lexer.l" -TOKEN(RENAME) +TOKEN(OFFSET) YY_BREAK case 46: YY_RULE_SETUP #line 100 "flex_lexer.l" -TOKEN(SCHEMA) +TOKEN(RENAME) YY_BREAK case 47: YY_RULE_SETUP #line 101 "flex_lexer.l" -TOKEN(SELECT) +TOKEN(SCHEMA) YY_BREAK case 48: YY_RULE_SETUP #line 102 "flex_lexer.l" -TOKEN(SORTED) +TOKEN(SELECT) YY_BREAK case 49: YY_RULE_SETUP #line 103 "flex_lexer.l" -TOKEN(TABLES) +TOKEN(SORTED) YY_BREAK case 50: YY_RULE_SETUP #line 104 "flex_lexer.l" -TOKEN(UNIQUE) +TOKEN(TABLES) YY_BREAK case 51: YY_RULE_SETUP #line 105 "flex_lexer.l" -TOKEN(UNLOAD) +TOKEN(UNIQUE) YY_BREAK case 52: YY_RULE_SETUP #line 106 "flex_lexer.l" -TOKEN(UPDATE) +TOKEN(UNLOAD) YY_BREAK case 53: YY_RULE_SETUP #line 107 "flex_lexer.l" -TOKEN(VALUES) +TOKEN(UPDATE) YY_BREAK case 54: YY_RULE_SETUP #line 108 "flex_lexer.l" -TOKEN(AFTER) +TOKEN(VALUES) YY_BREAK case 55: YY_RULE_SETUP #line 109 "flex_lexer.l" -TOKEN(ALTER) +TOKEN(AFTER) YY_BREAK case 56: YY_RULE_SETUP #line 110 "flex_lexer.l" -TOKEN(ARRAY) +TOKEN(ALTER) YY_BREAK case 57: YY_RULE_SETUP #line 111 "flex_lexer.l" -TOKEN(CROSS) +TOKEN(ARRAY) YY_BREAK case 58: YY_RULE_SETUP #line 112 "flex_lexer.l" -TOKEN(DELTA) +TOKEN(CROSS) YY_BREAK case 59: YY_RULE_SETUP #line 113 "flex_lexer.l" -TOKEN(GROUP) +TOKEN(DELTA) YY_BREAK case 60: YY_RULE_SETUP #line 114 "flex_lexer.l" -TOKEN(INDEX) +TOKEN(GROUP) YY_BREAK case 61: YY_RULE_SETUP #line 115 "flex_lexer.l" -TOKEN(INNER) +TOKEN(INDEX) YY_BREAK case 62: YY_RULE_SETUP #line 116 "flex_lexer.l" -TOKEN(LIMIT) +TOKEN(INNER) YY_BREAK case 63: YY_RULE_SETUP #line 117 "flex_lexer.l" -TOKEN(LOCAL) +TOKEN(LIMIT) YY_BREAK case 64: YY_RULE_SETUP #line 118 "flex_lexer.l" -TOKEN(MERGE) +TOKEN(LOCAL) YY_BREAK case 65: YY_RULE_SETUP #line 119 "flex_lexer.l" -TOKEN(MINUS) +TOKEN(MERGE) YY_BREAK case 66: YY_RULE_SETUP #line 120 "flex_lexer.l" -TOKEN(ORDER) +TOKEN(MINUS) YY_BREAK case 67: YY_RULE_SETUP #line 121 "flex_lexer.l" -TOKEN(OUTER) +TOKEN(ORDER) YY_BREAK case 68: YY_RULE_SETUP #line 122 "flex_lexer.l" -TOKEN(RIGHT) +TOKEN(OUTER) YY_BREAK case 69: YY_RULE_SETUP #line 123 "flex_lexer.l" -TOKEN(TABLE) +TOKEN(RIGHT) YY_BREAK case 70: YY_RULE_SETUP #line 124 "flex_lexer.l" -TOKEN(UNION) +TOKEN(TABLE) YY_BREAK case 71: YY_RULE_SETUP #line 125 "flex_lexer.l" -TOKEN(USING) +TOKEN(UNION) YY_BREAK case 72: YY_RULE_SETUP #line 126 "flex_lexer.l" -TOKEN(WHERE) +TOKEN(USING) YY_BREAK case 73: YY_RULE_SETUP #line 127 "flex_lexer.l" -TOKEN(CALL) +TOKEN(WHERE) YY_BREAK case 74: YY_RULE_SETUP #line 128 "flex_lexer.l" -TOKEN(CASE) +TOKEN(CALL) YY_BREAK case 75: YY_RULE_SETUP #line 129 "flex_lexer.l" -TOKEN(DATE) +TOKEN(CASE) YY_BREAK case 76: YY_RULE_SETUP #line 130 "flex_lexer.l" -TOKEN(DESC) +TOKEN(DATE) YY_BREAK case 77: YY_RULE_SETUP #line 131 "flex_lexer.l" -TOKEN(DROP) +TOKEN(DESC) YY_BREAK case 78: YY_RULE_SETUP #line 132 "flex_lexer.l" -TOKEN(ELSE) +TOKEN(DROP) YY_BREAK case 79: YY_RULE_SETUP #line 133 "flex_lexer.l" -TOKEN(FILE) +TOKEN(ELSE) YY_BREAK case 80: YY_RULE_SETUP #line 134 "flex_lexer.l" -TOKEN(FROM) +TOKEN(FILE) YY_BREAK case 81: YY_RULE_SETUP #line 135 "flex_lexer.l" -TOKEN(FULL) +TOKEN(FROM) YY_BREAK case 82: YY_RULE_SETUP #line 136 "flex_lexer.l" -TOKEN(HASH) +TOKEN(FULL) YY_BREAK case 83: YY_RULE_SETUP #line 137 "flex_lexer.l" -TOKEN(HINT) +TOKEN(HASH) YY_BREAK case 84: YY_RULE_SETUP #line 138 "flex_lexer.l" -TOKEN(INTO) +TOKEN(HINT) YY_BREAK case 85: YY_RULE_SETUP #line 139 "flex_lexer.l" -TOKEN(JOIN) +TOKEN(INTO) YY_BREAK case 86: YY_RULE_SETUP #line 140 "flex_lexer.l" -TOKEN(LEFT) +TOKEN(JOIN) YY_BREAK case 87: YY_RULE_SETUP #line 141 "flex_lexer.l" -TOKEN(LIKE) +TOKEN(LEFT) YY_BREAK case 88: YY_RULE_SETUP #line 142 "flex_lexer.l" -TOKEN(ILIKE) +TOKEN(LIKE) YY_BREAK case 89: YY_RULE_SETUP #line 143 "flex_lexer.l" -TOKEN(LOAD) +TOKEN(ILIKE) YY_BREAK case 90: YY_RULE_SETUP #line 144 "flex_lexer.l" -TOKEN(NULL) +TOKEN(LOAD) YY_BREAK case 91: YY_RULE_SETUP #line 145 "flex_lexer.l" -TOKEN(PART) +TOKEN(NULL) YY_BREAK case 92: YY_RULE_SETUP #line 146 "flex_lexer.l" -TOKEN(PLAN) +TOKEN(PART) YY_BREAK case 93: YY_RULE_SETUP #line 147 "flex_lexer.l" -TOKEN(SHOW) +TOKEN(PLAN) YY_BREAK case 94: YY_RULE_SETUP #line 148 "flex_lexer.l" -TOKEN(TEXT) +TOKEN(SHOW) YY_BREAK case 95: YY_RULE_SETUP #line 149 "flex_lexer.l" -TOKEN(THEN) +TOKEN(TEXT) YY_BREAK case 96: YY_RULE_SETUP #line 150 "flex_lexer.l" -TOKEN(TIME) +TOKEN(THEN) YY_BREAK case 97: YY_RULE_SETUP #line 151 "flex_lexer.l" -TOKEN(VIEW) +TOKEN(TIME) YY_BREAK case 98: YY_RULE_SETUP #line 152 "flex_lexer.l" -TOKEN(WHEN) +TOKEN(VIEW) YY_BREAK case 99: YY_RULE_SETUP #line 153 "flex_lexer.l" -TOKEN(WITH) +TOKEN(WHEN) YY_BREAK case 100: YY_RULE_SETUP #line 154 "flex_lexer.l" -TOKEN(ADD) +TOKEN(WITH) YY_BREAK case 101: YY_RULE_SETUP #line 155 "flex_lexer.l" -TOKEN(ALL) +TOKEN(ADD) YY_BREAK case 102: YY_RULE_SETUP #line 156 "flex_lexer.l" -TOKEN(AND) +TOKEN(ALL) YY_BREAK case 103: YY_RULE_SETUP #line 157 "flex_lexer.l" -TOKEN(ASC) +TOKEN(AND) YY_BREAK case 104: YY_RULE_SETUP #line 158 "flex_lexer.l" -TOKEN(CSV) +TOKEN(ASC) YY_BREAK case 105: YY_RULE_SETUP #line 159 "flex_lexer.l" -TOKEN(END) +TOKEN(CSV) YY_BREAK case 106: YY_RULE_SETUP #line 160 "flex_lexer.l" -TOKEN(FOR) +TOKEN(END) YY_BREAK case 107: YY_RULE_SETUP #line 161 "flex_lexer.l" -TOKEN(INT) +TOKEN(FOR) YY_BREAK case 108: YY_RULE_SETUP #line 162 "flex_lexer.l" -TOKEN(KEY) +TOKEN(INT) YY_BREAK case 109: YY_RULE_SETUP #line 163 "flex_lexer.l" -TOKEN(NOT) +TOKEN(KEY) YY_BREAK case 110: YY_RULE_SETUP #line 164 "flex_lexer.l" -TOKEN(OFF) +TOKEN(NOT) YY_BREAK case 111: YY_RULE_SETUP #line 165 "flex_lexer.l" -TOKEN(SET) +TOKEN(OFF) YY_BREAK case 112: YY_RULE_SETUP #line 166 "flex_lexer.l" -TOKEN(TBL) +TOKEN(SET) YY_BREAK case 113: YY_RULE_SETUP #line 167 "flex_lexer.l" -TOKEN(TOP) +TOKEN(TBL) YY_BREAK case 114: YY_RULE_SETUP #line 168 "flex_lexer.l" -TOKEN(AS) +TOKEN(TOP) YY_BREAK case 115: YY_RULE_SETUP #line 169 "flex_lexer.l" -TOKEN(BY) +TOKEN(AS) YY_BREAK case 116: YY_RULE_SETUP #line 170 "flex_lexer.l" -TOKEN(IF) +TOKEN(BY) YY_BREAK case 117: YY_RULE_SETUP #line 171 "flex_lexer.l" -TOKEN(IN) +TOKEN(IF) YY_BREAK case 118: YY_RULE_SETUP #line 172 "flex_lexer.l" -TOKEN(IS) +TOKEN(IN) YY_BREAK case 119: YY_RULE_SETUP #line 173 "flex_lexer.l" -TOKEN(OF) +TOKEN(IS) YY_BREAK case 120: YY_RULE_SETUP #line 174 "flex_lexer.l" -TOKEN(ON) +TOKEN(OF) YY_BREAK case 121: YY_RULE_SETUP #line 175 "flex_lexer.l" -TOKEN(OR) +TOKEN(ON) YY_BREAK case 122: YY_RULE_SETUP #line 176 "flex_lexer.l" -TOKEN(TO) +TOKEN(OR) YY_BREAK -/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 123: YY_RULE_SETUP -#line 179 "flex_lexer.l" -TOKEN(EQUALS) +#line 177 "flex_lexer.l" +TOKEN(TO) YY_BREAK case 124: YY_RULE_SETUP -#line 180 "flex_lexer.l" -TOKEN(NOTEQUALS) +#line 178 "flex_lexer.l" +TOKEN(SECOND) YY_BREAK case 125: YY_RULE_SETUP -#line 181 "flex_lexer.l" -TOKEN(NOTEQUALS) +#line 179 "flex_lexer.l" +TOKEN(MINUTE) YY_BREAK case 126: YY_RULE_SETUP -#line 182 "flex_lexer.l" -TOKEN(LESSEQ) +#line 180 "flex_lexer.l" +TOKEN(HOUR) YY_BREAK case 127: YY_RULE_SETUP -#line 183 "flex_lexer.l" -TOKEN(GREATEREQ) +#line 181 "flex_lexer.l" +TOKEN(DAY) YY_BREAK case 128: YY_RULE_SETUP -#line 184 "flex_lexer.l" -TOKEN(CONCAT) +#line 182 "flex_lexer.l" +TOKEN(MONTH) YY_BREAK case 129: YY_RULE_SETUP -#line 186 "flex_lexer.l" -{ return yytext[0]; } +#line 183 "flex_lexer.l" +TOKEN(YEAR) YY_BREAK +/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 130: -#line 189 "flex_lexer.l" +YY_RULE_SETUP +#line 186 "flex_lexer.l" +TOKEN(EQUALS) + YY_BREAK case 131: YY_RULE_SETUP +#line 187 "flex_lexer.l" +TOKEN(NOTEQUALS) + YY_BREAK +case 132: +YY_RULE_SETUP +#line 188 "flex_lexer.l" +TOKEN(NOTEQUALS) + YY_BREAK +case 133: +YY_RULE_SETUP #line 189 "flex_lexer.l" +TOKEN(LESSEQ) + YY_BREAK +case 134: +YY_RULE_SETUP +#line 190 "flex_lexer.l" +TOKEN(GREATEREQ) + YY_BREAK +case 135: +YY_RULE_SETUP +#line 191 "flex_lexer.l" +TOKEN(CONCAT) + YY_BREAK +case 136: +YY_RULE_SETUP +#line 193 "flex_lexer.l" +{ return yytext[0]; } + YY_BREAK +case 137: +#line 196 "flex_lexer.l" +case 138: +YY_RULE_SETUP +#line 196 "flex_lexer.l" { yylval->fval = atof(yytext); return SQL_FLOATVAL; } YY_BREAK -case 132: +case 139: YY_RULE_SETUP -#line 194 "flex_lexer.l" +#line 201 "flex_lexer.l" { yylval->ival = atol(yytext); return SQL_INTVAL; } YY_BREAK -case 133: +case 140: YY_RULE_SETUP -#line 199 "flex_lexer.l" +#line 206 "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 134: +case 141: YY_RULE_SETUP -#line 205 "flex_lexer.l" +#line 212 "flex_lexer.l" { yylval->sval = strdup(yytext); return SQL_IDENTIFIER; } YY_BREAK -case 135: +case 142: YY_RULE_SETUP -#line 210 "flex_lexer.l" +#line 217 "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 136: +case 143: YY_RULE_SETUP -#line 216 "flex_lexer.l" +#line 223 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); return 0; } YY_BREAK -case 137: +case 144: YY_RULE_SETUP -#line 219 "flex_lexer.l" +#line 226 "flex_lexer.l" ECHO; YY_BREAK -#line 2868 "flex_lexer.cpp" +#line 2734 "flex_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): yyterminate(); @@ -2884,7 +2749,7 @@ case YY_STATE_EOF(COMMENT): /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure + * hsql_lex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a @@ -2945,7 +2810,7 @@ case YY_STATE_EOF(COMMENT): { yyg->yy_did_buffer_switch_on_eof = 0; - if ( yywrap( yyscanner ) ) + if ( hsql_wrap(yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up @@ -2999,7 +2864,7 @@ case YY_STATE_EOF(COMMENT): } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ -} /* end of yylex */ +} /* end of hsql_lex */ /* yy_get_next_buffer - try to read in a new buffer * @@ -3078,8 +2943,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); + hsql_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); } else /* Can't grow it, we don't own it. */ @@ -3111,7 +2975,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin , yyscanner); + hsql_restart(yyin ,yyscanner); } else @@ -3128,12 +2992,9 @@ static int yy_get_next_buffer (yyscan_t yyscanner) if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner ); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) hsql_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } yyg->yy_n_chars += number_to_move; @@ -3166,10 +3027,10 @@ 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 >= 942 ) - yy_c = yy_meta[yy_c]; + if ( yy_current_state >= 988 ) + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; } return yy_current_state; @@ -3195,11 +3056,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 >= 942 ) - yy_c = yy_meta[yy_c]; + if ( yy_current_state >= 988 ) + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 941); + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_is_jam = (yy_current_state == 987); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -3234,7 +3095,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else { /* need more input */ - int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr); + int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) @@ -3251,13 +3112,13 @@ static int yy_get_next_buffer (yyscan_t yyscanner) */ /* Reset buffer status. */ - yyrestart( yyin , yyscanner); + hsql_restart(yyin ,yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { - if ( yywrap( yyscanner ) ) + if ( hsql_wrap(yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) @@ -3289,34 +3150,34 @@ static int yy_get_next_buffer (yyscan_t yyscanner) * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ - void yyrestart (FILE * input_file , yyscan_t yyscanner) + void hsql_restart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (yyscanner); + hsql_ensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); + hsql__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } - yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner); - yy_load_buffer_state( yyscanner ); + hsql__init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); + hsql__load_buffer_state(yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) + void hsql__switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); + * hsql_pop_buffer_state(); + * hsql_push_buffer_state(new_buffer); */ - yyensure_buffer_stack (yyscanner); + hsql_ensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; @@ -3329,17 +3190,17 @@ static int yy_get_next_buffer (yyscan_t yyscanner) } YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( yyscanner ); + hsql__load_buffer_state(yyscanner ); /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe + * EOF (hsql_wrap()) processing, but the only time this flag + * is looked at is after hsql_wrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } -static void yy_load_buffer_state (yyscan_t yyscanner) +static void hsql__load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; @@ -3354,35 +3215,35 @@ static void yy_load_buffer_state (yyscan_t yyscanner) * @param yyscanner The scanner object. * @return the allocated buffer state. */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) + YY_BUFFER_STATE hsql__create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); + b = (YY_BUFFER_STATE) hsql_alloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in hsql__create_buffer()" ); - b->yy_buf_size = size; + b->yy_buf_size = (yy_size_t)size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); + b->yy_ch_buf = (char *) hsql_alloc(b->yy_buf_size + 2 ,yyscanner ); if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in hsql__create_buffer()" ); b->yy_is_our_buffer = 1; - yy_init_buffer( b, file , yyscanner); + hsql__init_buffer(b,file ,yyscanner); return b; } /** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() + * @param b a buffer created with hsql__create_buffer() * @param yyscanner The scanner object. */ - void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) + void hsql__delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; @@ -3393,28 +3254,28 @@ static void yy_load_buffer_state (yyscan_t yyscanner) YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf , yyscanner ); + hsql_free((void *) b->yy_ch_buf ,yyscanner ); - yyfree( (void *) b , yyscanner ); + hsql_free((void *) b ,yyscanner ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. + * such as during a hsql_restart() or at EOF. */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) + static void hsql__init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yy_flush_buffer( b , yyscanner); + hsql__flush_buffer(b ,yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. + /* If b is the current buffer, then hsql__init_buffer was _probably_ + * called from hsql_restart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ @@ -3431,7 +3292,7 @@ static void yy_load_buffer_state (yyscan_t yyscanner) * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ - void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) + void hsql__flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) @@ -3452,7 +3313,7 @@ static void yy_load_buffer_state (yyscan_t yyscanner) b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( yyscanner ); + hsql__load_buffer_state(yyscanner ); } /** Pushes the new state onto the stack. The new state becomes @@ -3461,15 +3322,15 @@ static void yy_load_buffer_state (yyscan_t yyscanner) * @param new_buffer The new state. * @param yyscanner The scanner object. */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) +void hsql_push_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; - yyensure_buffer_stack(yyscanner); + hsql_ensure_buffer_stack(yyscanner); - /* This block is copied from yy_switch_to_buffer. */ + /* This block is copied from hsql__switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ @@ -3483,8 +3344,8 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( yyscanner ); + /* copied from hsql__switch_to_buffer. */ + hsql__load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } @@ -3492,19 +3353,19 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) * The next element becomes the new top. * @param yyscanner The scanner object. */ -void yypop_buffer_state (yyscan_t yyscanner) +void hsql_pop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; - yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner); + hsql__delete_buffer(YY_CURRENT_BUFFER ,yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( yyscanner ); + hsql__load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } @@ -3512,9 +3373,9 @@ void yypop_buffer_state (yyscan_t yyscanner) /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ -static void yyensure_buffer_stack (yyscan_t yyscanner) +static void hsql_ensure_buffer_stack (yyscan_t yyscanner) { - yy_size_t num_to_alloc; + int num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { @@ -3524,11 +3385,11 @@ static void yyensure_buffer_stack (yyscan_t yyscanner) * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc + yyg->yy_buffer_stack = (struct yy_buffer_state**)hsql_alloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + YY_FATAL_ERROR( "out of dynamic memory in hsql_ensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); @@ -3543,12 +3404,12 @@ static void yyensure_buffer_stack (yyscan_t yyscanner) yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; - yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc + yyg->yy_buffer_stack = (struct yy_buffer_state**)hsql_realloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + YY_FATAL_ERROR( "out of dynamic memory in hsql_ensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); @@ -3562,7 +3423,7 @@ static void yyensure_buffer_stack (yyscan_t yyscanner) * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) +YY_BUFFER_STATE hsql__scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; @@ -3572,11 +3433,11 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscann /* They forgot to leave room for the EOB's. */ return NULL; - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); + b = (YY_BUFFER_STATE) hsql_alloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in hsql__scan_buffer()" ); - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; @@ -3586,33 +3447,33 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscann b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; - yy_switch_to_buffer( b , yyscanner ); + hsql__switch_to_buffer(b ,yyscanner ); return b; } -/** Setup the input buffer state to scan a string. The next call to yylex() will +/** Setup the input buffer state to scan a string. The next call to hsql_lex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. + * hsql__scan_bytes() instead. */ -YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner) +YY_BUFFER_STATE hsql__scan_string (yyconst char * yystr , yyscan_t yyscanner) { - return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner); + return hsql__scan_bytes(yystr,(int) strlen(yystr) ,yyscanner); } -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will +/** Setup the input buffer state to scan the given bytes. The next call to hsql_lex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan_t yyscanner) +YY_BUFFER_STATE hsql__scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; @@ -3621,18 +3482,18 @@ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n , yyscanner ); + buf = (char *) hsql_alloc(n ,yyscanner ); if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + YY_FATAL_ERROR( "out of dynamic memory in hsql__scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - b = yy_scan_buffer( buf, n , yyscanner); + b = hsql__scan_buffer(buf,n ,yyscanner); if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + YY_FATAL_ERROR( "bad buffer in hsql__scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. @@ -3646,11 +3507,11 @@ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan #define YY_EXIT_FAILURE 2 #endif -static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner) +static void yynoreturn yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; - fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -3676,7 +3537,7 @@ static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner) /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ -YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner) +YY_EXTRA_TYPE hsql_get_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; @@ -3685,7 +3546,7 @@ YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner) /** Get the current line number. * @param yyscanner The scanner object. */ -int yyget_lineno (yyscan_t yyscanner) +int hsql_get_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; @@ -3698,7 +3559,7 @@ int yyget_lineno (yyscan_t yyscanner) /** Get the current column number. * @param yyscanner The scanner object. */ -int yyget_column (yyscan_t yyscanner) +int hsql_get_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; @@ -3711,7 +3572,7 @@ int yyget_column (yyscan_t yyscanner) /** Get the input stream. * @param yyscanner The scanner object. */ -FILE *yyget_in (yyscan_t yyscanner) +FILE *hsql_get_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; @@ -3720,7 +3581,7 @@ FILE *yyget_in (yyscan_t yyscanner) /** Get the output stream. * @param yyscanner The scanner object. */ -FILE *yyget_out (yyscan_t yyscanner) +FILE *hsql_get_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; @@ -3729,7 +3590,7 @@ FILE *yyget_out (yyscan_t yyscanner) /** Get the length of the current token. * @param yyscanner The scanner object. */ -int yyget_leng (yyscan_t yyscanner) +int hsql_get_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; @@ -3739,7 +3600,7 @@ int yyget_leng (yyscan_t yyscanner) * @param yyscanner The scanner object. */ -char *yyget_text (yyscan_t yyscanner) +char *hsql_get_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; @@ -3749,7 +3610,7 @@ char *yyget_text (yyscan_t yyscanner) * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ -void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) +void hsql_set_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; @@ -3759,13 +3620,13 @@ void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) * @param _line_number line number * @param yyscanner The scanner object. */ -void yyset_lineno (int _line_number , yyscan_t yyscanner) +void hsql_set_lineno (int _line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) - YY_FATAL_ERROR( "yyset_lineno called with no buffer" ); + YY_FATAL_ERROR( "hsql_set_lineno called with no buffer" ); yylineno = _line_number; } @@ -3774,13 +3635,13 @@ void yyset_lineno (int _line_number , yyscan_t yyscanner) * @param _column_no column number * @param yyscanner The scanner object. */ -void yyset_column (int _column_no , yyscan_t yyscanner) +void hsql_set_column (int _column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) - YY_FATAL_ERROR( "yyset_column called with no buffer" ); + YY_FATAL_ERROR( "hsql_set_column called with no buffer" ); yycolumn = _column_no; } @@ -3789,27 +3650,27 @@ void yyset_column (int _column_no , yyscan_t yyscanner) * input buffer. * @param _in_str A readable stream. * @param yyscanner The scanner object. - * @see yy_switch_to_buffer + * @see hsql__switch_to_buffer */ -void yyset_in (FILE * _in_str , yyscan_t yyscanner) +void hsql_set_in (FILE * _in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = _in_str ; } -void yyset_out (FILE * _out_str , yyscan_t yyscanner) +void hsql_set_out (FILE * _out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = _out_str ; } -int yyget_debug (yyscan_t yyscanner) +int hsql_get_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } -void yyset_debug (int _bdebug , yyscan_t yyscanner) +void hsql_set_debug (int _bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = _bdebug ; @@ -3817,25 +3678,25 @@ void yyset_debug (int _bdebug , yyscan_t yyscanner) /* Accessor methods for yylval and yylloc */ -YYSTYPE * yyget_lval (yyscan_t yyscanner) +YYSTYPE * hsql_get_lval (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yylval; } -void yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) +void hsql_set_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yylval = yylval_param; } -YYLTYPE *yyget_lloc (yyscan_t yyscanner) +YYLTYPE *hsql_get_lloc (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yylloc; } -void yyset_lloc (YYLTYPE * yylloc_param , yyscan_t yyscanner) +void hsql_set_lloc (YYLTYPE * yylloc_param , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yylloc = yylloc_param; @@ -3843,18 +3704,20 @@ void yyset_lloc (YYLTYPE * yylloc_param , yyscan_t yyscanner) /* User-visible API */ -/* yylex_init is special because it creates the scanner itself, so it is +/* hsql_lex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ -int yylex_init(yyscan_t* ptr_yy_globals) + +int hsql_lex_init(yyscan_t* ptr_yy_globals) + { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } - *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL ); + *ptr_yy_globals = (yyscan_t) hsql_alloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; @@ -3867,25 +3730,27 @@ int yylex_init(yyscan_t* ptr_yy_globals) return yy_init_globals ( *ptr_yy_globals ); } -/* yylex_init_extra has the same functionality as yylex_init, but follows the +/* hsql_lex_init_extra has the same functionality as hsql_lex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). - * The user defined value in the first argument will be available to yyalloc in + * The user defined value in the first argument will be available to hsql_alloc in * the yyextra field. */ -int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) + +int hsql_lex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) + { struct yyguts_t dummy_yyguts; - yyset_extra (yy_user_defined, &dummy_yyguts); + hsql_set_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } - *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); + *ptr_yy_globals = (yyscan_t) hsql_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; @@ -3896,7 +3761,7 @@ int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - yyset_extra (yy_user_defined, *ptr_yy_globals); + hsql_set_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } @@ -3905,7 +3770,7 @@ static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. + * This function is called from hsql_lex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = NULL; @@ -3929,37 +3794,37 @@ static int yy_init_globals (yyscan_t yyscanner) #endif /* For future reference: Set errno on error, since we are called by - * yylex_init() + * hsql_lex_init() */ return 0; } -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (yyscan_t yyscanner) +/* hsql_lex_destroy is for both reentrant and non-reentrant scanners. */ +int hsql_lex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner ); + hsql__delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(yyscanner); + hsql_pop_buffer_state(yyscanner); } /* Destroy the stack itself. */ - yyfree(yyg->yy_buffer_stack , yyscanner); + hsql_free(yyg->yy_buffer_stack ,yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ - yyfree( yyg->yy_start_stack , yyscanner ); + hsql_free(yyg->yy_start_stack ,yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ + * hsql_lex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ - yyfree ( yyscanner , yyscanner ); + hsql_free ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } @@ -3969,7 +3834,7 @@ int yylex_destroy (yyscan_t yyscanner) */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner) +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; @@ -3981,7 +3846,7 @@ static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscann #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s , yyscan_t yyscanner) +static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { int n; for ( n = 0; s[n]; ++n ) @@ -3991,14 +3856,14 @@ static int yy_flex_strlen (const char * s , yyscan_t yyscanner) } #endif -void *yyalloc (yy_size_t size , yyscan_t yyscanner) +void *hsql_alloc (yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; return malloc(size); } -void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) +void *hsql_realloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; @@ -4013,16 +3878,17 @@ void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) return realloc(ptr, size); } -void yyfree (void * ptr , yyscan_t yyscanner) +void hsql_free (void * ptr , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ + free( (char *) ptr ); /* see hsql_realloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" -#line 219 "flex_lexer.l" +#line 226 "flex_lexer.l" + /*************************** ** Section 3: User code diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index dff05d4..6556ab0 100644 --- a/src/parser/flex_lexer.h +++ b/src/parser/flex_lexer.h @@ -2,9 +2,9 @@ #define hsql_HEADER_H 1 #define hsql_IN_HEADER 1 -#line 5 "flex_lexer.h" +#line 6 "flex_lexer.h" -#line 7 "flex_lexer.h" +#line 8 "flex_lexer.h" #define YY_INT_ALIGNED short int @@ -13,245 +13,11 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 +#define YY_FLEX_SUBMINOR_VERSION 1 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif -#ifdef yy_create_buffer -#define hsql__create_buffer_ALREADY_DEFINED -#else -#define yy_create_buffer hsql__create_buffer -#endif - -#ifdef yy_delete_buffer -#define hsql__delete_buffer_ALREADY_DEFINED -#else -#define yy_delete_buffer hsql__delete_buffer -#endif - -#ifdef yy_scan_buffer -#define hsql__scan_buffer_ALREADY_DEFINED -#else -#define yy_scan_buffer hsql__scan_buffer -#endif - -#ifdef yy_scan_string -#define hsql__scan_string_ALREADY_DEFINED -#else -#define yy_scan_string hsql__scan_string -#endif - -#ifdef yy_scan_bytes -#define hsql__scan_bytes_ALREADY_DEFINED -#else -#define yy_scan_bytes hsql__scan_bytes -#endif - -#ifdef yy_init_buffer -#define hsql__init_buffer_ALREADY_DEFINED -#else -#define yy_init_buffer hsql__init_buffer -#endif - -#ifdef yy_flush_buffer -#define hsql__flush_buffer_ALREADY_DEFINED -#else -#define yy_flush_buffer hsql__flush_buffer -#endif - -#ifdef yy_load_buffer_state -#define hsql__load_buffer_state_ALREADY_DEFINED -#else -#define yy_load_buffer_state hsql__load_buffer_state -#endif - -#ifdef yy_switch_to_buffer -#define hsql__switch_to_buffer_ALREADY_DEFINED -#else -#define yy_switch_to_buffer hsql__switch_to_buffer -#endif - -#ifdef yypush_buffer_state -#define hsql_push_buffer_state_ALREADY_DEFINED -#else -#define yypush_buffer_state hsql_push_buffer_state -#endif - -#ifdef yypop_buffer_state -#define hsql_pop_buffer_state_ALREADY_DEFINED -#else -#define yypop_buffer_state hsql_pop_buffer_state -#endif - -#ifdef yyensure_buffer_stack -#define hsql_ensure_buffer_stack_ALREADY_DEFINED -#else -#define yyensure_buffer_stack hsql_ensure_buffer_stack -#endif - -#ifdef yylex -#define hsql_lex_ALREADY_DEFINED -#else -#define yylex hsql_lex -#endif - -#ifdef yyrestart -#define hsql_restart_ALREADY_DEFINED -#else -#define yyrestart hsql_restart -#endif - -#ifdef yylex_init -#define hsql_lex_init_ALREADY_DEFINED -#else -#define yylex_init hsql_lex_init -#endif - -#ifdef yylex_init_extra -#define hsql_lex_init_extra_ALREADY_DEFINED -#else -#define yylex_init_extra hsql_lex_init_extra -#endif - -#ifdef yylex_destroy -#define hsql_lex_destroy_ALREADY_DEFINED -#else -#define yylex_destroy hsql_lex_destroy -#endif - -#ifdef yyget_debug -#define hsql_get_debug_ALREADY_DEFINED -#else -#define yyget_debug hsql_get_debug -#endif - -#ifdef yyset_debug -#define hsql_set_debug_ALREADY_DEFINED -#else -#define yyset_debug hsql_set_debug -#endif - -#ifdef yyget_extra -#define hsql_get_extra_ALREADY_DEFINED -#else -#define yyget_extra hsql_get_extra -#endif - -#ifdef yyset_extra -#define hsql_set_extra_ALREADY_DEFINED -#else -#define yyset_extra hsql_set_extra -#endif - -#ifdef yyget_in -#define hsql_get_in_ALREADY_DEFINED -#else -#define yyget_in hsql_get_in -#endif - -#ifdef yyset_in -#define hsql_set_in_ALREADY_DEFINED -#else -#define yyset_in hsql_set_in -#endif - -#ifdef yyget_out -#define hsql_get_out_ALREADY_DEFINED -#else -#define yyget_out hsql_get_out -#endif - -#ifdef yyset_out -#define hsql_set_out_ALREADY_DEFINED -#else -#define yyset_out hsql_set_out -#endif - -#ifdef yyget_leng -#define hsql_get_leng_ALREADY_DEFINED -#else -#define yyget_leng hsql_get_leng -#endif - -#ifdef yyget_text -#define hsql_get_text_ALREADY_DEFINED -#else -#define yyget_text hsql_get_text -#endif - -#ifdef yyget_lineno -#define hsql_get_lineno_ALREADY_DEFINED -#else -#define yyget_lineno hsql_get_lineno -#endif - -#ifdef yyset_lineno -#define hsql_set_lineno_ALREADY_DEFINED -#else -#define yyset_lineno hsql_set_lineno -#endif - -#ifdef yyget_column -#define hsql_get_column_ALREADY_DEFINED -#else -#define yyget_column hsql_get_column -#endif - -#ifdef yyset_column -#define hsql_set_column_ALREADY_DEFINED -#else -#define yyset_column hsql_set_column -#endif - -#ifdef yywrap -#define hsql_wrap_ALREADY_DEFINED -#else -#define yywrap hsql_wrap -#endif - -#ifdef yyget_lval -#define hsql_get_lval_ALREADY_DEFINED -#else -#define yyget_lval hsql_get_lval -#endif - -#ifdef yyset_lval -#define hsql_set_lval_ALREADY_DEFINED -#else -#define yyset_lval hsql_set_lval -#endif - -#ifdef yyget_lloc -#define hsql_get_lloc_ALREADY_DEFINED -#else -#define yyget_lloc hsql_get_lloc -#endif - -#ifdef yyset_lloc -#define hsql_set_lloc_ALREADY_DEFINED -#else -#define yyset_lloc hsql_set_lloc -#endif - -#ifdef yyalloc -#define hsql_alloc_ALREADY_DEFINED -#else -#define yyalloc hsql_alloc -#endif - -#ifdef yyrealloc -#define hsql_realloc_ALREADY_DEFINED -#else -#define yyrealloc hsql_realloc -#endif - -#ifdef yyfree -#define hsql_free_ALREADY_DEFINED -#else -#define yyfree hsql_free -#endif - /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ @@ -322,16 +88,10 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - #endif /* ! C99 */ #endif /* ! FLEXINT_H */ -/* begin standard C++ headers. */ - /* TODO: this is always defined, so inline it */ #define yyconst const @@ -432,21 +192,21 @@ struct yy_buffer_state }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ -void yyrestart ( FILE *input_file , yyscan_t yyscanner ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); -void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); -void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); -void yypop_buffer_state ( yyscan_t yyscanner ); +void hsql_restart (FILE *input_file ,yyscan_t yyscanner ); +void hsql__switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); +YY_BUFFER_STATE hsql__create_buffer (FILE *file,int size ,yyscan_t yyscanner ); +void hsql__delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); +void hsql__flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); +void hsql_push_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); +void hsql_pop_buffer_state (yyscan_t yyscanner ); -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner ); +YY_BUFFER_STATE hsql__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); +YY_BUFFER_STATE hsql__scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); +YY_BUFFER_STATE hsql__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); -void *yyalloc ( yy_size_t , yyscan_t yyscanner ); -void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); -void yyfree ( void * , yyscan_t yyscanner ); +void *hsql_alloc (yy_size_t ,yyscan_t yyscanner ); +void *hsql_realloc (void *,yy_size_t ,yyscan_t yyscanner ); +void hsql_free (void * ,yyscan_t yyscanner ); /* Begin user sect3 */ @@ -473,50 +233,50 @@ void yyfree ( void * , yyscan_t yyscanner ); #define YY_EXTRA_TYPE void * #endif -int yylex_init (yyscan_t* scanner); +int hsql_lex_init (yyscan_t* scanner); -int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); +int hsql_lex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy ( yyscan_t yyscanner ); +int hsql_lex_destroy (yyscan_t yyscanner ); -int yyget_debug ( yyscan_t yyscanner ); +int hsql_get_debug (yyscan_t yyscanner ); -void yyset_debug ( int debug_flag , yyscan_t yyscanner ); +void hsql_set_debug (int debug_flag ,yyscan_t yyscanner ); -YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); +YY_EXTRA_TYPE hsql_get_extra (yyscan_t yyscanner ); -void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); +void hsql_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); -FILE *yyget_in ( yyscan_t yyscanner ); +FILE *hsql_get_in (yyscan_t yyscanner ); -void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); +void hsql_set_in (FILE * _in_str ,yyscan_t yyscanner ); -FILE *yyget_out ( yyscan_t yyscanner ); +FILE *hsql_get_out (yyscan_t yyscanner ); -void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); +void hsql_set_out (FILE * _out_str ,yyscan_t yyscanner ); - int yyget_leng ( yyscan_t yyscanner ); + int hsql_get_leng (yyscan_t yyscanner ); -char *yyget_text ( yyscan_t yyscanner ); +char *hsql_get_text (yyscan_t yyscanner ); -int yyget_lineno ( yyscan_t yyscanner ); +int hsql_get_lineno (yyscan_t yyscanner ); -void yyset_lineno ( int _line_number , yyscan_t yyscanner ); +void hsql_set_lineno (int _line_number ,yyscan_t yyscanner ); -int yyget_column ( yyscan_t yyscanner ); +int hsql_get_column (yyscan_t yyscanner ); -void yyset_column ( int _column_no , yyscan_t yyscanner ); +void hsql_set_column (int _column_no ,yyscan_t yyscanner ); -YYSTYPE * yyget_lval ( yyscan_t yyscanner ); +YYSTYPE * hsql_get_lval (yyscan_t yyscanner ); -void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner ); +void hsql_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); - YYLTYPE *yyget_lloc ( yyscan_t yyscanner ); + YYLTYPE *hsql_get_lloc (yyscan_t yyscanner ); - void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner ); + void hsql_set_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -524,18 +284,18 @@ void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap ( yyscan_t yyscanner ); +extern "C" int hsql_wrap (yyscan_t yyscanner ); #else -extern int yywrap ( yyscan_t yyscanner ); +extern int hsql_wrap (yyscan_t yyscanner ); #endif #endif #ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); +static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * , yyscan_t yyscanner); +static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT @@ -563,10 +323,10 @@ static int yy_flex_strlen ( const char * , yyscan_t yyscanner); #ifndef YY_DECL #define YY_DECL_IS_OURS 1 -extern int yylex \ - (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner); +extern int hsql_lex \ + (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner); -#define YY_DECL int yylex \ +#define YY_DECL int hsql_lex \ (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner) #endif /* !YY_DECL */ @@ -584,154 +344,9 @@ extern int yylex \ #undef YY_DECL #endif -#ifndef hsql__create_buffer_ALREADY_DEFINED -#undef yy_create_buffer -#endif -#ifndef hsql__delete_buffer_ALREADY_DEFINED -#undef yy_delete_buffer -#endif -#ifndef hsql__scan_buffer_ALREADY_DEFINED -#undef yy_scan_buffer -#endif -#ifndef hsql__scan_string_ALREADY_DEFINED -#undef yy_scan_string -#endif -#ifndef hsql__scan_bytes_ALREADY_DEFINED -#undef yy_scan_bytes -#endif -#ifndef hsql__init_buffer_ALREADY_DEFINED -#undef yy_init_buffer -#endif -#ifndef hsql__flush_buffer_ALREADY_DEFINED -#undef yy_flush_buffer -#endif -#ifndef hsql__load_buffer_state_ALREADY_DEFINED -#undef yy_load_buffer_state -#endif -#ifndef hsql__switch_to_buffer_ALREADY_DEFINED -#undef yy_switch_to_buffer -#endif -#ifndef hsql_push_buffer_state_ALREADY_DEFINED -#undef yypush_buffer_state -#endif -#ifndef hsql_pop_buffer_state_ALREADY_DEFINED -#undef yypop_buffer_state -#endif -#ifndef hsql_ensure_buffer_stack_ALREADY_DEFINED -#undef yyensure_buffer_stack -#endif -#ifndef hsql_lex_ALREADY_DEFINED -#undef yylex -#endif -#ifndef hsql_restart_ALREADY_DEFINED -#undef yyrestart -#endif -#ifndef hsql_lex_init_ALREADY_DEFINED -#undef yylex_init -#endif -#ifndef hsql_lex_init_extra_ALREADY_DEFINED -#undef yylex_init_extra -#endif -#ifndef hsql_lex_destroy_ALREADY_DEFINED -#undef yylex_destroy -#endif -#ifndef hsql_get_debug_ALREADY_DEFINED -#undef yyget_debug -#endif -#ifndef hsql_set_debug_ALREADY_DEFINED -#undef yyset_debug -#endif -#ifndef hsql_get_extra_ALREADY_DEFINED -#undef yyget_extra -#endif -#ifndef hsql_set_extra_ALREADY_DEFINED -#undef yyset_extra -#endif -#ifndef hsql_get_in_ALREADY_DEFINED -#undef yyget_in -#endif -#ifndef hsql_set_in_ALREADY_DEFINED -#undef yyset_in -#endif -#ifndef hsql_get_out_ALREADY_DEFINED -#undef yyget_out -#endif -#ifndef hsql_set_out_ALREADY_DEFINED -#undef yyset_out -#endif -#ifndef hsql_get_leng_ALREADY_DEFINED -#undef yyget_leng -#endif -#ifndef hsql_get_text_ALREADY_DEFINED -#undef yyget_text -#endif -#ifndef hsql_get_lineno_ALREADY_DEFINED -#undef yyget_lineno -#endif -#ifndef hsql_set_lineno_ALREADY_DEFINED -#undef yyset_lineno -#endif -#ifndef hsql_get_column_ALREADY_DEFINED -#undef yyget_column -#endif -#ifndef hsql_set_column_ALREADY_DEFINED -#undef yyset_column -#endif -#ifndef hsql_wrap_ALREADY_DEFINED -#undef yywrap -#endif -#ifndef hsql_get_lval_ALREADY_DEFINED -#undef yyget_lval -#endif -#ifndef hsql_set_lval_ALREADY_DEFINED -#undef yyset_lval -#endif -#ifndef hsql_get_lloc_ALREADY_DEFINED -#undef yyget_lloc -#endif -#ifndef hsql_set_lloc_ALREADY_DEFINED -#undef yyset_lloc -#endif -#ifndef hsql_alloc_ALREADY_DEFINED -#undef yyalloc -#endif -#ifndef hsql_realloc_ALREADY_DEFINED -#undef yyrealloc -#endif -#ifndef hsql_free_ALREADY_DEFINED -#undef yyfree -#endif -#ifndef hsql_text_ALREADY_DEFINED -#undef yytext -#endif -#ifndef hsql_leng_ALREADY_DEFINED -#undef yyleng -#endif -#ifndef hsql_in_ALREADY_DEFINED -#undef yyin -#endif -#ifndef hsql_out_ALREADY_DEFINED -#undef yyout -#endif -#ifndef hsql__flex_debug_ALREADY_DEFINED -#undef yy_flex_debug -#endif -#ifndef hsql_lineno_ALREADY_DEFINED -#undef yylineno -#endif -#ifndef hsql_tables_fload_ALREADY_DEFINED -#undef yytables_fload -#endif -#ifndef hsql_tables_destroy_ALREADY_DEFINED -#undef yytables_destroy -#endif -#ifndef hsql_TABLES_NAME_ALREADY_DEFINED -#undef yyTABLES_NAME -#endif - -#line 219 "flex_lexer.l" +#line 226 "flex_lexer.l" -#line 735 "flex_lexer.h" +#line 351 "flex_lexer.h" #undef hsql_IN_HEADER #endif /* hsql_HEADER_H */ diff --git a/src/parser/flex_lexer.l b/src/parser/flex_lexer.l index f39d0ed..9dadc78 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -90,6 +90,7 @@ DOUBLE TOKEN(DOUBLE) ESCAPE TOKEN(ESCAPE) EXCEPT TOKEN(EXCEPT) EXISTS TOKEN(EXISTS) +EXTRACT TOKEN(EXTRACT) GLOBAL TOKEN(GLOBAL) HAVING TOKEN(HAVING) IMPORT TOKEN(IMPORT) @@ -174,6 +175,12 @@ OF TOKEN(OF) ON TOKEN(ON) OR TOKEN(OR) TO TOKEN(TO) +SECOND TOKEN(SECOND) +MINUTE TOKEN(MINUTE) +HOUR TOKEN(HOUR) +DAY TOKEN(DAY) +MONTH TOKEN(MONTH) +YEAR TOKEN(YEAR) /* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ "==" TOKEN(EQUALS) diff --git a/src/sql/Expr.cpp b/src/sql/Expr.cpp index 3f61277..36b027e 100644 --- a/src/sql/Expr.cpp +++ b/src/sql/Expr.cpp @@ -18,6 +18,7 @@ namespace hsql { fval(0), ival(0), ival2(0), + datetimeField(kDatetimeNone), opType(kOpNone), distinct(false) {}; @@ -208,6 +209,14 @@ namespace hsql { return e; } + Expr* Expr::makeExtract(DatetimeField datetimeField, Expr* expr) { + Expr* e = new Expr(kExprFunctionRef); + e->name = strdup("EXTRACT"); + e->datetimeField = datetimeField; + e->expr = expr; + return e; + } + bool Expr::isType(ExprType exprType) const { return exprType == type; } diff --git a/src/sql/Expr.h b/src/sql/Expr.h index 08becd7..92f35b8 100644 --- a/src/sql/Expr.h +++ b/src/sql/Expr.h @@ -25,7 +25,8 @@ namespace hsql { kExprSelect, kExprHint, kExprArray, - kExprArrayIndex + kExprArrayIndex, + kExprDatetimeField }; // Operator types. These are important for expressions of type kExprOperator. @@ -68,6 +69,16 @@ namespace hsql { kOpExists }; + enum DatetimeField { + kDatetimeNone, + kDatetimeSecond, + kDatetimeMinute, + kDatetimeHour, + kDatetimeDay, + kDatetimeMonth, + kDatetimeYear, + }; + typedef struct Expr Expr; // Represents SQL expressions (i.e. literals, operators, column_refs). @@ -90,6 +101,7 @@ namespace hsql { float fval; int64_t ival; int64_t ival2; + DatetimeField datetimeField; OperatorType opType; bool distinct; @@ -156,6 +168,8 @@ namespace hsql { static Expr* makeInOperator(Expr* expr, std::vector* exprList); static Expr* makeInOperator(Expr* expr, SelectStatement* select); + + static Expr* makeExtract(DatetimeField datetimeField1, Expr* expr); }; // Zero initializes an Expr object and assigns it to a space in the heap diff --git a/test/queries/queries-good.sql b/test/queries/queries-good.sql index d91715a..9b45fd4 100755 --- a/test/queries/queries-good.sql +++ b/test/queries/queries-good.sql @@ -7,7 +7,7 @@ SELECT a FROM some_schema.foo WHERE a > 12 OR b > 3 AND NOT c LIMIT 10 SELECT col1 AS myname, col2, 'test' FROM "table", foo AS t WHERE age > 12 AND zipcode = 12345 GROUP BY col1; SELECT * from "table" JOIN table2 ON a = b WHERE (b OR NOT a) AND a = 12.5 (SELECT a FROM foo WHERE a > 12 OR b > 3 AND c NOT LIKE 's%' LIMIT 10); -SELECT * FROM "table" LIMIT 10 OFFSET 10; SELECT * FROM second; +SELECT * FROM "table" LIMIT 10 OFFSET 10; SELECT * FROM another; SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY col1; SELECT * FROM (SELECT * FROM t1); SELECT * FROM t1 UNION (SELECT * FROM t2 UNION SELECT * FROM t3) ORDER BY col1; diff --git a/test/select_tests.cpp b/test/select_tests.cpp index e09ebbd..4291eb9 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -542,6 +542,42 @@ TEST(SetLimitOffset) { ASSERT_EQ(stmt->limit->offset, kNoOffset); } +TEST(Extract) { + SelectStatement* stmt; + + TEST_PARSE_SQL_QUERY("select extract(year from dc) FROM t;" + "select x, extract(month from dc) AS t FROM t;" + "select x FROM t WHERE extract(minute from dc) > 2011;", + result, 3); + + stmt = (SelectStatement*) result.getStatement(0); + ASSERT_TRUE(stmt->selectList); + ASSERT_EQ(stmt->selectList->size(), 1u); + ASSERT_EQ(stmt->selectList->at(0)->type, kExprFunctionRef); + ASSERT_EQ(stmt->selectList->at(0)->name, std::string("EXTRACT")); + ASSERT_EQ(stmt->selectList->at(0)->datetimeField, kDatetimeYear); + ASSERT_TRUE(stmt->selectList->at(0)->expr); + ASSERT_EQ(stmt->selectList->at(0)->expr->type, kExprColumnRef); + + stmt = (SelectStatement*) result.getStatement(1); + ASSERT_TRUE(stmt->selectList); + ASSERT_EQ(stmt->selectList->size(), 2u); + ASSERT_EQ(stmt->selectList->at(1)->type, kExprFunctionRef); + ASSERT_EQ(stmt->selectList->at(1)->name, std::string("EXTRACT")); + ASSERT_EQ(stmt->selectList->at(1)->datetimeField, kDatetimeMonth); + ASSERT_TRUE(stmt->selectList->at(1)->expr); + ASSERT_EQ(stmt->selectList->at(1)->expr->type, kExprColumnRef); + ASSERT_TRUE(stmt->selectList->at(1)->alias); + ASSERT_EQ(stmt->selectList->at(1)->alias, std::string("t")); + + stmt = (SelectStatement*) result.getStatement(2); + ASSERT_TRUE(stmt->whereClause); + ASSERT_TRUE(stmt->whereClause->expr); + ASSERT_EQ(stmt->whereClause->expr->type, kExprFunctionRef); + ASSERT_EQ(stmt->whereClause->expr->name, std::string("EXTRACT")); + ASSERT_EQ(stmt->whereClause->expr->datetimeField, kDatetimeMinute); +} + TEST(NoFromClause) { TEST_PARSE_SINGLE_SQL( "SELECT 1 + 2;", @@ -560,4 +596,3 @@ TEST(NoFromClause) { ASSERT_EQ(stmt->selectList->at(0)->expr->type, kExprLiteralInt); ASSERT_EQ(stmt->selectList->at(0)->expr2->type, kExprLiteralInt); } -