diff --git a/src/parser/Makefile b/src/parser/Makefile index 93db639..bfa0516 100644 --- a/src/parser/Makefile +++ b/src/parser/Makefile @@ -1,15 +1,26 @@ # bison's version is too old on OSX, allow user to pass in custom path BISON?=bison +FLEX?=flex + +BISON_VERSION=$(shell $(BISON) --version | head -n 1 | grep -o '[0-9]\.[0-9]\+') +BISON_VERSION_SUPPORTED=$(shell echo $(BISON_VERSION) \>= 3.0 | bc) +ifneq ($(BISON_VERSION_SUPPORTED), 1) +$(error Bison version $(BISON_VERSION) not supported. If you are using OS X, `bison` uses the system default instead of the brew version. Run BISON=/usr/local/opt/bison/bin/bison make) +endif + +FLEX_VERSION=$(shell $(FLEX) --version | head -n 1 | grep -o '[0-9]\.[0-9]\+') +FLEX_VERSION_SUPPORTED=$(shell echo $(FLEX_VERSION) \>= 2.6 | bc) +ifneq ($(FLEX_VERSION_SUPPORTED), 1) +$(error Flex version $(FLEX_VERSION) not supported. If you are using OS X, `flex` uses the system default instead of the brew version. Run FLEX=/usr/local/opt/flex/bin/flex make) +endif all: bison_parser.cpp flex_lexer.cpp bison_parser.cpp: bison_parser.y - @$(BISON) --version | head -n 1 $(BISON) bison_parser.y --output=bison_parser.cpp --defines=bison_parser.h --verbose flex_lexer.cpp: flex_lexer.l - @flex --version - flex flex_lexer.l + $(FLEX) flex_lexer.l clean: rm -f bison_parser.cpp flex_lexer.cpp bison_parser.h flex_lexer.h *.output diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 9334616..1d9a1d4 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.1. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.4" +#define YYBISON_VERSION "3.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -196,115 +196,119 @@ extern int hsql_debug; SQL_PRIMARY = 283, SQL_SCHEMAS = 284, SQL_SPATIAL = 285, - SQL_VIRTUAL = 286, - SQL_BEFORE = 287, - SQL_COLUMN = 288, - SQL_CREATE = 289, - SQL_DELETE = 290, - SQL_DIRECT = 291, - SQL_DOUBLE = 292, - SQL_ESCAPE = 293, - SQL_EXCEPT = 294, - SQL_EXISTS = 295, - 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_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_SECOND = 381, - SQL_MINUTE = 382, - SQL_HOUR = 383, - SQL_DAY = 384, - SQL_MONTH = 385, - SQL_YEAR = 386, - SQL_EQUALS = 387, - SQL_NOTEQUALS = 388, - SQL_LESS = 389, - SQL_GREATER = 390, - SQL_LESSEQ = 391, - SQL_GREATEREQ = 392, - SQL_NOTNULL = 393, - SQL_UMINUS = 394 + SQL_VARCHAR = 286, + SQL_VIRTUAL = 287, + SQL_BEFORE = 288, + SQL_COLUMN = 289, + SQL_CREATE = 290, + SQL_DELETE = 291, + SQL_DIRECT = 292, + SQL_DOUBLE = 293, + SQL_ESCAPE = 294, + SQL_EXCEPT = 295, + SQL_EXISTS = 296, + SQL_EXTRACT = 297, + SQL_GLOBAL = 298, + SQL_HAVING = 299, + SQL_IMPORT = 300, + SQL_INSERT = 301, + SQL_ISNULL = 302, + SQL_OFFSET = 303, + SQL_RENAME = 304, + SQL_SCHEMA = 305, + SQL_SELECT = 306, + SQL_SORTED = 307, + SQL_TABLES = 308, + SQL_UNIQUE = 309, + SQL_UNLOAD = 310, + SQL_UPDATE = 311, + SQL_VALUES = 312, + SQL_AFTER = 313, + SQL_ALTER = 314, + SQL_CROSS = 315, + SQL_DELTA = 316, + SQL_FLOAT = 317, + SQL_GROUP = 318, + SQL_INDEX = 319, + SQL_INNER = 320, + SQL_LIMIT = 321, + SQL_LOCAL = 322, + SQL_MERGE = 323, + SQL_MINUS = 324, + SQL_ORDER = 325, + SQL_OUTER = 326, + SQL_RIGHT = 327, + SQL_TABLE = 328, + SQL_UNION = 329, + SQL_USING = 330, + SQL_WHERE = 331, + SQL_CALL = 332, + SQL_CASE = 333, + SQL_CHAR = 334, + SQL_DATE = 335, + SQL_DESC = 336, + SQL_DROP = 337, + SQL_ELSE = 338, + SQL_FILE = 339, + SQL_FROM = 340, + SQL_FULL = 341, + SQL_HASH = 342, + SQL_HINT = 343, + SQL_INTO = 344, + SQL_JOIN = 345, + SQL_LEFT = 346, + SQL_LIKE = 347, + SQL_LOAD = 348, + SQL_LONG = 349, + SQL_NULL = 350, + SQL_PLAN = 351, + SQL_SHOW = 352, + SQL_TEXT = 353, + SQL_THEN = 354, + SQL_TIME = 355, + SQL_VIEW = 356, + SQL_WHEN = 357, + SQL_WITH = 358, + SQL_ADD = 359, + SQL_ALL = 360, + SQL_AND = 361, + SQL_ASC = 362, + SQL_CSV = 363, + SQL_END = 364, + SQL_FOR = 365, + SQL_INT = 366, + SQL_KEY = 367, + SQL_NOT = 368, + SQL_OFF = 369, + SQL_SET = 370, + SQL_TBL = 371, + SQL_TOP = 372, + SQL_AS = 373, + SQL_BY = 374, + SQL_IF = 375, + SQL_IN = 376, + SQL_IS = 377, + SQL_OF = 378, + SQL_ON = 379, + SQL_OR = 380, + SQL_TO = 381, + SQL_ARRAY = 382, + SQL_CONCAT = 383, + SQL_ILIKE = 384, + SQL_SECOND = 385, + SQL_MINUTE = 386, + SQL_HOUR = 387, + SQL_DAY = 388, + SQL_MONTH = 389, + SQL_YEAR = 390, + SQL_EQUALS = 391, + SQL_NOTEQUALS = 392, + SQL_LESS = 393, + SQL_GREATER = 394, + SQL_LESSEQ = 395, + SQL_GREATEREQ = 396, + SQL_NOTNULL = 397, + SQL_UMINUS = 398 }; #endif @@ -341,6 +345,7 @@ union HSQL_STYPE hsql::DatetimeField datetime_field; hsql::LimitDescription* limit; hsql::ColumnDefinition* column_t; + hsql::ColumnType column_type_t; hsql::GroupByDescription* group_t; hsql::UpdateClause* update_t; hsql::Alias* alias_t; @@ -354,7 +359,7 @@ union HSQL_STYPE std::vector* expr_vec; std::vector* order_vec; -#line 358 "bison_parser.cpp" /* yacc.c:355 */ +#line 363 "bison_parser.cpp" /* yacc.c:355 */ }; typedef union HSQL_STYPE HSQL_STYPE; @@ -384,7 +389,7 @@ int hsql_parse (hsql::SQLParserResult* result, yyscan_t scanner); /* Copy the second part of user declarations. */ -#line 388 "bison_parser.cpp" /* yacc.c:358 */ +#line 393 "bison_parser.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -405,13 +410,13 @@ typedef signed char yytype_int8; #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else -typedef unsigned short int yytype_uint16; +typedef unsigned short yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else -typedef short int yytype_int16; +typedef short yytype_int16; #endif #ifndef YYSIZE_T @@ -423,7 +428,7 @@ typedef short int yytype_int16; # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned int +# define YYSIZE_T unsigned # endif #endif @@ -475,7 +480,7 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ @@ -628,24 +633,24 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 52 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 646 +#define YYLAST 609 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 157 +#define YYNTOKENS 161 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 93 +#define YYNNTS 94 /* YYNRULES -- Number of rules. */ -#define YYNRULES 227 +#define YYNRULES 234 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 413 +#define YYNSTATES 427 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 394 +#define YYMAXUTOK 398 #define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex, without out-of-bounds checking. */ @@ -654,13 +659,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, 146, 2, 2, - 151, 152, 144, 142, 155, 143, 153, 145, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 154, - 135, 132, 136, 156, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 150, 2, 2, + 155, 156, 148, 146, 159, 147, 157, 149, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 158, + 139, 136, 140, 160, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 149, 2, 150, 147, 2, 2, 2, 2, 2, + 2, 153, 2, 154, 151, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -689,37 +694,38 @@ 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, 126, 127, 128, 129, 130, 131, 133, 134, 137, - 138, 139, 140, 141, 148 + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 137, 138, 141, 142, 143, 144, 145, 152 }; #if HSQL_DEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 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 + 0, 253, 253, 274, 280, 289, 293, 297, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 321, 322, 327, + 328, 332, 336, 348, 355, 358, 362, 374, 383, 387, + 397, 400, 414, 421, 428, 439, 440, 444, 445, 449, + 455, 456, 457, 458, 459, 460, 461, 462, 466, 467, + 468, 478, 484, 490, 498, 499, 508, 517, 530, 537, + 548, 549, 559, 568, 569, 573, 585, 586, 587, 604, + 605, 609, 610, 614, 624, 641, 645, 646, 647, 651, + 652, 656, 668, 669, 673, 677, 678, 681, 686, 687, + 691, 696, 700, 701, 704, 705, 709, 710, 714, 718, + 719, 720, 726, 727, 731, 732, 733, 734, 735, 736, + 737, 738, 745, 746, 750, 751, 755, 765, 766, 767, + 768, 769, 773, 774, 775, 776, 777, 778, 779, 780, + 781, 782, 786, 787, 791, 792, 793, 794, 795, 799, + 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, + 813, 814, 818, 819, 820, 821, 827, 828, 829, 830, + 834, 835, 839, 840, 844, 845, 846, 847, 848, 849, + 850, 854, 855, 859, 863, 864, 865, 866, 867, 868, + 871, 875, 879, 883, 884, 885, 886, 890, 891, 892, + 893, 897, 902, 903, 907, 911, 915, 927, 928, 938, + 939, 943, 944, 953, 954, 959, 970, 979, 980, 985, + 986, 991, 992, 996, 997, 1002, 1003, 1011, 1019, 1029, + 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, + 1062, 1071, 1072, 1077, 1078 }; #endif @@ -733,41 +739,42 @@ static const char *const yytname[] = "TIMESTAMP", "DISTINCT", "NVARCHAR", "RESTRICT", "TRUNCATE", "ANALYZE", "BETWEEN", "CASCADE", "COLUMNS", "CONTROL", "DEFAULT", "EXECUTE", "EXPLAIN", "HISTORY", "INTEGER", "NATURAL", "PREPARE", "PRIMARY", - "SCHEMAS", "SPATIAL", "VIRTUAL", "BEFORE", "COLUMN", "CREATE", "DELETE", - "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", "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", + "SCHEMAS", "SPATIAL", "VARCHAR", "VIRTUAL", "BEFORE", "COLUMN", "CREATE", + "DELETE", "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", "FLOAT", "GROUP", "INDEX", + "INNER", "LIMIT", "LOCAL", "MERGE", "MINUS", "ORDER", "OUTER", "RIGHT", + "TABLE", "UNION", "USING", "WHERE", "CALL", "CASE", "CHAR", "DATE", + "DESC", "DROP", "ELSE", "FILE", "FROM", "FULL", "HASH", "HINT", "INTO", + "JOIN", "LEFT", "LIKE", "LOAD", "LONG", "NULL", "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", - "column_def", "column_type", "drop_statement", "opt_exists", - "delete_statement", "truncate_statement", "insert_statement", - "opt_column_list", "update_statement", "update_clause_commalist", - "update_clause", "select_statement", "select_with_paren", - "select_paren_or_clause", "select_no_paren", "set_operator", "set_type", - "opt_all", "select_clause", "opt_distinct", "select_list", - "opt_from_clause", "from_clause", "opt_where", "opt_group", "opt_having", - "opt_order", "order_list", "order_desc", "opt_order_type", "opt_top", - "opt_limit", "expr_list", "literal_list", "expr_alias", "expr", - "operand", "scalar_expr", "unary_expr", "binary_expr", "logic_expr", - "in_expr", "case_expr", "case_list", "exists_expr", "comp_expr", - "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", + "column_def", "column_type", "opt_column_nullable", "drop_statement", + "opt_exists", "delete_statement", "truncate_statement", + "insert_statement", "opt_column_list", "update_statement", + "update_clause_commalist", "update_clause", "select_statement", + "select_with_paren", "select_paren_or_clause", "select_no_paren", + "set_operator", "set_type", "opt_all", "select_clause", "opt_distinct", + "select_list", "opt_from_clause", "from_clause", "opt_where", + "opt_group", "opt_having", "opt_order", "order_list", "order_desc", + "opt_order_type", "opt_top", "opt_limit", "expr_list", "literal_list", + "expr_alias", "expr", "operand", "scalar_expr", "unary_expr", + "binary_expr", "logic_expr", "in_expr", "case_expr", "case_list", + "exists_expr", "comp_expr", "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", @@ -793,9 +800,10 @@ static const yytype_uint16 yytoknum[] = 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, 381, 382, 383, 384, - 385, 386, 61, 387, 388, 60, 62, 389, 390, 391, - 392, 393, 43, 45, 42, 47, 37, 94, 394, 91, - 93, 40, 41, 46, 59, 44, 63 + 385, 386, 387, 388, 389, 390, 61, 391, 392, 60, + 62, 393, 394, 395, 396, 397, 43, 45, 42, 47, + 37, 94, 398, 91, 93, 40, 41, 46, 59, 44, + 63 }; # endif @@ -804,57 +812,58 @@ static const yytype_uint16 yytoknum[] = #define yypact_value_is_default(Yystate) \ (!!((Yystate) == (-312))) -#define YYTABLE_NINF -223 +#define YYTABLE_NINF -230 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-223))) + (!!((Yytable_value) == (-230))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 309, 18, 43, 79, 99, -18, 44, 45, 52, -3, - 43, 33, 2, -39, 180, 34, -312, 136, 136, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, 3, - -312, 5, 192, 83, -312, 68, 146, 135, 135, 43, - 153, 43, 257, 255, 170, -312, 169, 169, 43, -312, - 140, 147, -312, 309, -312, 202, -312, -312, -312, -312, - -312, -39, 197, 187, -39, -15, -312, 300, 20, 302, - 205, 43, 43, 237, -312, 234, 167, -312, -312, -312, - 161, 316, 281, 43, 43, -312, -312, -312, -312, 171, - -312, 259, -312, -312, -312, 161, 259, 257, 28, -312, - -312, -312, -312, -312, -312, 27, -312, -312, -312, -312, - -312, -312, -312, -312, 283, -63, 167, 161, -312, 321, - 326, 81, 91, 179, 181, 118, 219, 184, 285, -312, - 157, 252, 182, -312, 14, 322, -312, -312, -312, -312, + 18, -3, 34, 92, 113, -44, 40, 70, 81, 75, + 34, 36, 24, -29, 200, 64, -312, 131, 131, -312, + -312, -312, -312, -312, -312, -312, -312, -312, -312, 19, + -312, 12, 208, 93, -312, 94, 175, 142, 142, 34, + 160, 34, 263, 262, 161, -312, 167, 167, 34, -312, + 135, 153, -312, 18, -312, 226, -312, -312, -312, -312, + -312, -29, 221, 196, -29, -16, -312, 313, 2, 326, + 222, 34, 34, 261, -312, 257, 187, -312, -312, -312, + 185, 340, 303, 34, 34, -312, -312, -312, -312, 191, + -312, 277, -312, -312, -312, 185, 277, 263, 69, -312, + -312, -312, -312, -312, -312, -112, -312, -312, -312, -312, + -312, -312, -312, -312, 307, -68, 187, 185, -312, 352, + 354, 45, 66, 205, 206, 118, 211, 209, 289, -312, + 124, 278, 213, -312, 13, 282, -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, 203, -69, -312, -312, -312, -312, 335, -15, 185, - -312, -43, -15, -312, 294, 299, 301, -312, 20, -312, - 235, 346, 238, -41, 265, -312, -312, 31, 204, -312, - 16, 12, 306, 251, 161, 128, -6, 206, 285, 402, - 161, 66, 208, -55, 4, 237, -312, 161, -312, 161, - 355, 161, -312, -312, 285, -312, 285, -62, 214, 24, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 257, 161, 316, -312, 215, - 32, -312, -312, 161, -312, -312, -312, -312, 257, 257, - 257, -312, 286, -7, 62, -312, -39, 43, -312, 366, - 20, -312, 161, -312, -312, 220, -312, -312, -312, -312, - -312, -312, 289, -45, 95, 161, 161, -312, 306, 284, - -57, -312, -312, -39, -312, 26, -312, 228, -312, 6, - -312, 313, -312, -312, -312, 282, 361, 432, 285, 236, - 157, -312, 295, 240, 432, 432, 432, 432, 274, 274, - 274, 274, 66, 66, 96, 96, 96, -87, 241, -41, - -312, 20, -312, 335, -312, -312, -312, -312, 321, -312, - -312, -312, -312, -312, -312, 346, -312, -312, -312, 77, - 101, -312, 161, 161, 161, -312, 87, 75, 243, -312, - 244, 298, -312, -312, -312, 324, 328, 330, 303, 4, - 397, -312, -312, -312, 288, -312, 285, 432, 157, 249, - 116, -312, -312, 120, -312, -312, -312, -312, -312, -51, - -41, 129, -312, 161, -312, 6, 4, -312, -312, -312, - 4, 195, 253, 161, 402, 254, 121, -312, -312, -312, - -312, -312, -41, -312, -312, 526, 326, -30, -312, -312, - 261, 161, 141, 161, -312, 13, -41, -312, -312, -41, - 262, 270, -312 + -312, 228, -61, -312, -312, -312, -312, 362, -16, 214, + -312, -46, -16, -312, 320, 321, 322, -312, 2, -312, + 259, 373, 260, 62, 288, -312, -312, 76, 225, -312, + 7, 8, 330, 220, 185, 123, 11, 227, 289, 392, + 185, 169, 229, -55, 6, 261, -312, 185, -312, 185, + 380, 185, -312, -312, 289, -312, 289, -66, 231, -14, + 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 289, 289, 289, 289, 289, 263, 185, 340, -312, 232, + 108, -312, -312, 185, -312, -312, -312, -312, 263, 263, + 263, -312, 304, 415, 127, -312, -29, 34, -312, 386, + 2, -312, 185, -312, -312, 234, -312, -312, -312, -312, + -312, -312, 306, 78, 84, 185, 185, -312, 330, 300, + 53, -312, -312, -29, -312, 20, -312, 235, -312, 15, + -312, 333, -312, -312, -312, 287, 332, 426, 289, 242, + 124, -312, 305, 245, 426, 426, 426, 426, 456, 456, + 456, 456, 169, 169, -39, -39, -39, 29, 247, 62, + -312, 2, -312, 362, -312, -312, -312, -312, 352, -312, + 244, -312, -312, 250, -312, -312, -312, 88, -312, 373, + -312, -312, -312, 144, 146, -312, 185, 185, 185, -312, + 72, 99, 251, -312, 252, 316, -312, -312, -312, 338, + 341, 342, 324, 6, 412, -312, -312, -312, 298, -312, + 289, 426, 124, 267, 148, -312, -312, 152, -312, -312, + 421, 428, -312, 346, -312, -312, -312, -312, 74, 62, + 132, -312, 185, -312, 15, 6, -312, -312, -312, 6, + 168, 292, 185, 392, 286, 154, -312, -312, -312, 294, + 295, -312, -312, -312, 62, -312, -312, 210, 354, -24, + -312, -312, -312, -312, 293, 185, 180, 185, -312, 10, + 62, -312, -312, 62, 299, 296, -312 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -862,78 +871,79 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, - 0, 0, 0, 0, 0, 225, 3, 18, 18, 16, - 9, 7, 10, 15, 12, 13, 11, 14, 8, 59, - 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, 187, 95, 75, - 0, 0, 0, 0, 0, 31, 63, 62, 4, 0, - 64, 88, 65, 72, 68, 0, 88, 0, 0, 66, - 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, 103, + 0, 0, 0, 0, 0, 232, 3, 18, 18, 16, + 9, 7, 10, 15, 12, 13, 11, 14, 8, 66, + 67, 95, 0, 207, 57, 25, 0, 36, 36, 0, + 0, 0, 0, 83, 0, 206, 55, 55, 0, 30, + 0, 0, 1, 231, 2, 0, 6, 5, 77, 78, + 76, 0, 80, 0, 0, 111, 53, 0, 0, 0, + 0, 0, 0, 89, 28, 0, 61, 194, 102, 82, + 0, 0, 0, 0, 0, 31, 70, 69, 4, 0, + 71, 95, 72, 79, 75, 0, 95, 0, 0, 73, + 208, 191, 192, 195, 196, 0, 114, 187, 188, 193, + 189, 190, 24, 23, 0, 0, 61, 0, 56, 0, + 0, 0, 183, 0, 0, 0, 0, 0, 0, 185, + 0, 86, 84, 112, 216, 117, 124, 125, 126, 119, + 121, 127, 120, 139, 128, 129, 130, 123, 118, 132, + 133, 0, 89, 63, 54, 51, 52, 0, 111, 94, + 96, 101, 111, 106, 108, 107, 104, 26, 0, 35, + 0, 0, 0, 88, 0, 29, 233, 0, 0, 59, + 83, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 0, 134, 0, 0, 0, 89, 85, 0, 214, 0, + 0, 0, 215, 116, 0, 136, 0, 0, 0, 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, 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, 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 + 0, 0, 0, 0, 0, 0, 0, 0, 62, 21, + 0, 19, 68, 0, 100, 99, 98, 74, 0, 0, + 0, 115, 0, 0, 0, 37, 0, 0, 60, 0, + 0, 171, 0, 184, 186, 0, 174, 175, 176, 177, + 178, 179, 0, 0, 0, 0, 0, 158, 0, 0, + 0, 131, 122, 0, 87, 197, 199, 0, 201, 212, + 200, 91, 113, 150, 213, 151, 0, 146, 0, 0, + 0, 137, 0, 149, 148, 164, 165, 166, 167, 168, + 169, 170, 141, 140, 143, 142, 144, 145, 0, 65, + 64, 0, 17, 0, 97, 110, 109, 105, 0, 41, + 0, 44, 43, 0, 42, 47, 40, 50, 33, 0, + 34, 27, 234, 0, 0, 162, 0, 0, 0, 156, + 0, 0, 0, 180, 0, 0, 228, 220, 226, 224, + 227, 222, 0, 0, 0, 211, 205, 209, 0, 81, + 0, 147, 0, 0, 0, 138, 181, 0, 20, 32, + 0, 0, 48, 0, 39, 38, 58, 172, 0, 160, + 0, 159, 0, 163, 212, 0, 223, 225, 221, 0, + 198, 213, 0, 182, 0, 0, 154, 152, 22, 0, + 0, 49, 173, 157, 161, 202, 217, 229, 0, 93, + 155, 153, 45, 46, 0, 0, 0, 0, 90, 0, + 230, 218, 210, 92, 183, 0, 219 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -312, -312, -312, 352, -312, 406, -312, 112, -312, -312, - -312, -312, -312, 108, -312, -312, 389, -312, 105, -312, - -312, 385, -312, -312, -312, 317, -312, -312, 207, -206, - 30, 371, -13, 407, -312, -312, 233, 263, -312, -312, - -312, -130, -312, -312, 82, -312, 209, -312, -312, -129, - -184, -230, 247, -94, -70, -312, -312, -312, -312, -312, - -312, 260, -312, -312, -312, -312, -312, -312, -312, -312, - 46, -65, -115, -312, -34, -312, -312, -312, -311, 61, - -312, -312, -312, 0, -312, 74, 318, -312, -312, -312, - -312, -312, 57 + -312, -312, -312, 390, -312, 437, -312, 145, -312, -312, + -312, -312, -312, 139, -312, -312, 424, -312, 130, -312, + -312, -312, 416, -312, -312, -312, 348, -312, -312, 238, + -197, 1, 402, -13, 436, -312, -312, 264, 308, -312, + -312, -312, -122, -312, -312, 165, -312, 241, -312, -312, + -124, -186, -223, 290, -94, -70, -312, -312, -312, -312, + -312, -312, 301, -312, -312, -312, -312, -312, -312, -312, + -312, 71, -65, -114, -312, -30, -312, -312, -312, -311, + 104, -312, -312, -312, 0, -312, 107, 358, -312, -312, + -312, -312, -312, 85 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -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 + 19, 20, 75, 174, 21, 22, 71, 244, 245, 327, + 374, 23, 83, 24, 25, 26, 121, 27, 152, 153, + 28, 29, 91, 30, 61, 62, 94, 31, 80, 131, + 195, 196, 118, 359, 418, 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, 355, 356, 357, 203, 280, + 352, 421, 54, 177 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -941,216 +951,210 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 51, 161, 34, 106, 175, 117, 270, 33, 78, 198, - 45, 9, 58, 403, 58, 253, 410, 198, 319, 170, - 329, 48, 228, 173, 101, 102, 77, 288, 79, 232, - 320, 185, 97, 237, 77, 234, 193, 210, 381, 73, - 326, 76, 59, 50, 59, 32, 33, 199, 85, 98, - 333, 199, 341, 37, 49, 289, 189, 199, 191, 199, - 235, 199, 225, 163, 166, 281, 201, 340, 330, 395, - 201, 115, 116, 63, 265, 60, 201, 60, 201, 38, - 201, 363, 35, 155, 156, 342, 227, 321, 171, 343, - 263, 90, 266, 339, 90, 344, 345, 272, 197, 267, - 322, 390, 36, 241, 46, 283, 360, 285, 179, 346, - 42, 103, 13, -222, 347, 291, 199, 192, 189, 164, - 350, 122, 101, 102, 77, 197, 39, 40, 200, 165, - 47, 9, 309, 292, 286, 201, 287, 178, 41, 161, + 51, 161, 34, 106, 270, 175, 101, 102, 77, 33, + 45, 253, 78, 424, 50, 117, 198, 170, 198, 79, + 417, 58, 9, 173, 32, 1, 288, 333, 58, 37, + 228, 185, 97, 2, 232, 234, 193, 33, 237, 73, + 3, 76, 390, 48, 167, 4, 345, 168, 85, 330, + 98, 199, 59, 5, 6, 289, 189, 38, 191, 59, + 199, 235, 90, 7, 8, 90, 334, 163, 166, 9, + 201, 115, 116, 281, 10, 77, 344, 49, 407, 201, + 346, 291, 63, 155, 156, 347, 60, 171, 367, 210, + 263, 348, 349, 60, 265, 35, 9, 103, 227, 292, + 11, 272, 178, 241, 364, 283, 350, 285, 179, 46, + -229, 351, 224, 266, 225, 12, 36, 192, 189, 199, + 267, 122, 101, 102, 77, 39, 13, 122, 101, 102, + 77, 200, 309, 354, 286, 197, 287, 47, 201, 161, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 273, 254, 129, 123, 124, - 122, 101, 102, 77, 122, 101, 102, 77, 251, 255, - 373, 336, 337, 158, 386, 334, 104, 199, 162, 167, - 52, -196, 168, 248, 312, 106, 249, 313, 53, 199, - 210, 308, 372, 266, 125, 66, 201, 123, 124, 397, - 335, 123, 124, 175, 315, 316, 317, 9, 201, 103, - 221, 222, 223, 224, 324, 225, 184, 325, 357, 68, - 210, 341, 122, 101, 102, 77, 184, 126, 69, 367, - 199, 199, 168, 125, 391, 55, 67, 125, 369, 370, - 371, 127, 180, 224, 181, 225, 106, 327, 103, 201, - 201, 70, 103, 368, 342, 338, 197, 74, 343, 187, - 124, 128, 129, 77, 344, 345, 126, 79, 388, 130, - 126, 197, 389, 399, 104, 168, 197, 359, 346, 392, - 127, 81, -222, 347, 127, 82, 384, 89, 122, 101, - 102, 77, 86, 408, 92, 125, 249, 92, 93, 87, - 128, 129, 95, 100, 128, 129, 112, 406, 130, 409, - 103, 117, 130, 104, 114, 119, 1, 104, 120, 151, - 205, 154, 157, 169, 2, 101, 124, 63, 188, 176, - 182, 3, 183, 190, 194, 226, 4, 197, 229, 204, - 233, 238, 127, 5, 6, 385, 239, 242, 240, 243, - -197, 247, 246, 7, 8, 250, 9, 268, 284, 9, - 271, 125, 128, 129, 10, 290, 311, 318, 205, 328, - 130, 332, 331, 288, 354, 104, 103, 256, 257, 258, - 259, 260, 261, 349, 199, 376, 361, 358, 11, 225, - 380, 362, 209, 377, 188, 374, 375, 378, 210, 379, - 382, 387, 12, 383, 396, 88, 398, 205, 127, -223, - -223, 206, 405, -223, -223, 181, 219, 220, 221, 222, - 223, 224, 412, 225, 57, 364, 365, 72, 128, 129, - 366, 207, 84, 172, 310, 96, 130, 394, 64, 208, - 209, 104, 314, 252, 282, 264, 210, 211, 205, 393, - 206, 411, 202, 402, 212, 213, 214, 215, 216, 0, - 13, 217, 218, 356, 219, 220, 221, 222, 223, 224, - 269, 225, 0, 0, 0, 0, 0, 0, 205, 209, - 0, 0, 0, 0, 0, 210, 211, 0, 0, 0, - 0, 206, 0, 212, 213, 214, 215, 216, 0, 0, - 217, 218, 0, 219, 220, 221, 222, 223, 224, 0, - 225, 269, 0, 0, 0, 0, 0, 0, 0, 0, - 209, -223, 0, 0, 0, 0, 210, 211, 0, 0, - 0, 0, 0, 0, 212, 213, 214, 215, 216, 0, - 0, 217, 218, 0, 219, 220, 221, 222, 223, 224, - 209, 225, 341, 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, - 0, 225, 0, 0, 0, 342, 0, 0, 0, 343, - 0, 0, 0, 0, 0, 344, 345, 0, 0, 400, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 346, - 0, 0, 0, 0, 347, 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, 401 + 303, 304, 305, 306, 307, 40, 254, 210, 129, 123, + 124, 273, 104, 251, 164, 123, 124, 338, 199, 255, + 41, 340, 341, 13, 165, 9, 395, 337, 199, -203, + 199, 381, 225, 372, 199, 106, 266, 201, 122, 101, + 102, 77, 42, 339, 345, 308, 125, 201, 382, 201, + 52, 373, 125, 201, 175, 199, 409, 343, 315, 316, + 317, 66, 197, 103, 122, 101, 102, 77, 361, 103, + 184, 180, 53, 181, 201, 184, 123, 124, 346, 199, + 402, 126, 248, 347, 55, 249, 345, 126, 199, 348, + 349, 403, 378, 379, 380, 127, 106, 331, 201, 68, + 67, 127, 187, 124, 350, 342, 158, 201, -229, 351, + 69, 162, 70, 125, 312, 128, 129, 313, 74, 77, + 346, 128, 129, 130, 79, 347, 81, 363, 104, 130, + 103, 348, 349, 328, 104, 414, 329, 82, 404, 125, + 393, 86, 122, 101, 102, 77, 350, 210, 126, 204, + 376, 351, 377, 168, 397, 197, 103, 197, 398, 87, + 411, 168, 127, 197, 89, 95, 100, 221, 222, 223, + 224, 420, 225, 423, 188, 92, 93, -204, 92, 205, + 112, 124, 128, 129, 415, 114, 422, 117, 127, 249, + 130, 119, 120, 151, 154, 104, 157, 63, 169, 394, + 256, 257, 258, 259, 260, 261, 101, 176, 128, 129, + 182, 183, 190, 194, 226, 229, 130, 125, 238, 239, + 240, 104, 197, 233, 206, 242, 243, 247, 246, 205, + 250, 9, 268, 284, 103, 271, 290, 311, 318, 332, + 335, 336, 288, 199, 353, 207, 358, 362, 225, 370, + 365, 366, 188, 208, 209, 371, 385, 383, 384, 386, + 210, 211, 387, 388, 389, 391, 127, 392, 212, 213, + 214, 215, 216, 396, 206, 217, 218, 399, 219, 220, + 221, 222, 223, 224, 400, 225, 128, 129, 360, 205, + 319, 401, 410, 88, 130, 269, 320, 408, 419, 104, + 412, 413, 426, 321, 209, 57, 181, 369, 368, 375, + 210, 211, 72, 84, 172, 310, 96, 64, 212, 213, + 214, 215, 216, 205, 314, 217, 218, 322, 219, 220, + 221, 222, 223, 224, 206, 225, 264, 282, 252, 406, + 425, 405, 202, 416, 323, 0, 0, 0, 0, 0, + 0, 0, 0, 205, 0, 269, 0, 0, 0, 324, + 0, 0, 0, 325, 209, 0, 0, 0, -230, 0, + 210, 211, 0, 0, 0, 0, 326, 0, 212, 213, + 214, 215, 216, 0, 0, 217, 218, 0, 219, 220, + 221, 222, 223, 224, 0, 225, 0, 0, 209, 0, + 0, 0, 0, 0, 210, -230, 0, 0, 0, 0, + 0, 0, -230, -230, -230, 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, -230, -230, 0, 0, -230, + -230, 0, 219, 220, 221, 222, 223, 224, 0, 225 }; static const yytype_int16 yycheck[] = { - 13, 95, 2, 68, 119, 74, 190, 3, 42, 3, - 10, 50, 9, 43, 9, 3, 3, 3, 25, 82, - 250, 19, 152, 117, 4, 5, 6, 89, 12, 158, - 37, 125, 47, 162, 6, 78, 130, 124, 349, 39, - 246, 41, 39, 13, 39, 27, 3, 102, 48, 64, - 95, 102, 26, 71, 52, 117, 126, 102, 128, 102, - 103, 102, 149, 97, 98, 195, 121, 273, 252, 380, - 121, 71, 72, 68, 80, 72, 121, 72, 121, 97, - 121, 311, 3, 83, 84, 59, 155, 94, 151, 63, - 184, 61, 98, 150, 64, 69, 70, 152, 155, 105, - 107, 152, 3, 168, 71, 199, 290, 201, 121, 83, - 113, 91, 151, 87, 88, 91, 102, 130, 188, 91, - 114, 3, 4, 5, 6, 155, 82, 82, 114, 101, - 97, 50, 226, 109, 204, 121, 206, 56, 86, 233, + 13, 95, 2, 68, 190, 119, 4, 5, 6, 3, + 10, 3, 42, 3, 13, 76, 3, 85, 3, 12, + 44, 9, 51, 117, 27, 7, 92, 250, 9, 73, + 152, 125, 48, 15, 158, 81, 130, 3, 162, 39, + 22, 41, 353, 19, 156, 27, 26, 159, 48, 246, + 66, 106, 40, 35, 36, 121, 126, 101, 128, 40, + 106, 107, 61, 45, 46, 64, 252, 97, 98, 51, + 125, 71, 72, 195, 56, 6, 273, 53, 389, 125, + 60, 95, 70, 83, 84, 65, 74, 155, 311, 128, + 184, 71, 72, 74, 83, 3, 51, 95, 159, 113, + 82, 156, 57, 168, 290, 199, 86, 201, 121, 73, + 90, 91, 151, 102, 153, 97, 3, 130, 188, 106, + 109, 3, 4, 5, 6, 85, 155, 3, 4, 5, + 6, 118, 226, 118, 204, 159, 206, 101, 125, 233, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 151, 144, 144, 40, 41, - 3, 4, 5, 6, 3, 4, 5, 6, 152, 182, - 95, 265, 266, 91, 358, 80, 156, 102, 96, 152, - 0, 155, 155, 152, 152, 250, 155, 155, 154, 102, - 124, 225, 105, 98, 76, 3, 121, 40, 41, 383, - 105, 40, 41, 318, 238, 239, 240, 50, 121, 91, - 144, 145, 146, 147, 152, 149, 98, 155, 288, 151, - 124, 26, 3, 4, 5, 6, 98, 109, 82, 152, - 102, 102, 155, 76, 105, 99, 153, 76, 332, 333, - 334, 123, 151, 147, 153, 149, 311, 247, 91, 121, - 121, 116, 91, 152, 59, 268, 155, 104, 63, 40, - 41, 143, 144, 6, 69, 70, 109, 12, 152, 151, - 109, 155, 152, 152, 156, 155, 155, 290, 83, 373, - 123, 111, 87, 88, 123, 116, 356, 85, 3, 4, - 5, 6, 152, 152, 61, 76, 155, 64, 101, 152, - 143, 144, 115, 3, 143, 144, 4, 401, 151, 403, - 91, 74, 151, 156, 109, 81, 7, 156, 151, 3, - 46, 40, 151, 40, 15, 4, 41, 68, 109, 3, - 151, 22, 151, 149, 82, 132, 27, 155, 3, 17, - 155, 47, 123, 34, 35, 358, 47, 112, 47, 3, - 155, 86, 114, 44, 45, 151, 50, 151, 3, 50, - 152, 76, 143, 144, 55, 151, 151, 81, 46, 3, - 151, 82, 152, 89, 61, 156, 91, 126, 127, 128, - 129, 130, 131, 155, 102, 87, 91, 151, 79, 149, - 87, 150, 118, 69, 109, 152, 152, 69, 124, 69, - 3, 152, 93, 115, 151, 53, 152, 46, 123, 135, - 136, 89, 151, 139, 140, 153, 142, 143, 144, 145, - 146, 147, 152, 149, 18, 313, 318, 38, 143, 144, - 325, 109, 47, 116, 227, 64, 151, 376, 31, 117, - 118, 156, 233, 180, 197, 185, 124, 125, 46, 375, - 89, 405, 134, 396, 132, 133, 134, 135, 136, -1, - 151, 139, 140, 102, 142, 143, 144, 145, 146, 147, - 109, 149, -1, -1, -1, -1, -1, -1, 46, 118, - -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, - -1, 89, -1, 132, 133, 134, 135, 136, -1, -1, - 139, 140, -1, 142, 143, 144, 145, 146, 147, -1, - 149, 109, -1, -1, -1, -1, -1, -1, -1, -1, - 118, 89, -1, -1, -1, -1, 124, 125, -1, -1, - -1, -1, -1, -1, 132, 133, 134, 135, 136, -1, - -1, 139, 140, -1, 142, 143, 144, 145, 146, 147, - 118, 149, 26, -1, -1, -1, 124, 125, -1, -1, - -1, -1, -1, -1, 132, 133, 134, 135, 136, -1, - -1, 139, 140, -1, 142, 143, 144, 145, 146, 147, - -1, 149, -1, -1, -1, 59, -1, -1, -1, 63, - -1, -1, -1, -1, -1, 69, 70, -1, -1, 73, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, - -1, -1, -1, -1, 88, -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 + 220, 221, 222, 223, 224, 85, 148, 128, 148, 41, + 42, 155, 160, 156, 95, 41, 42, 83, 106, 182, + 89, 265, 266, 155, 105, 51, 362, 99, 106, 159, + 106, 109, 153, 95, 106, 250, 102, 125, 3, 4, + 5, 6, 117, 109, 26, 225, 78, 125, 99, 125, + 0, 113, 78, 125, 318, 106, 392, 154, 238, 239, + 240, 3, 159, 95, 3, 4, 5, 6, 288, 95, + 102, 155, 158, 157, 125, 102, 41, 42, 60, 106, + 156, 113, 156, 65, 103, 159, 26, 113, 106, 71, + 72, 109, 336, 337, 338, 127, 311, 247, 125, 155, + 157, 127, 41, 42, 86, 268, 91, 125, 90, 91, + 85, 96, 120, 78, 156, 147, 148, 159, 108, 6, + 60, 147, 148, 155, 12, 65, 115, 290, 160, 155, + 95, 71, 72, 156, 160, 75, 159, 120, 382, 78, + 360, 156, 3, 4, 5, 6, 86, 128, 113, 17, + 156, 91, 156, 159, 156, 159, 95, 159, 156, 156, + 156, 159, 127, 159, 88, 119, 3, 148, 149, 150, + 151, 415, 153, 417, 113, 61, 105, 159, 64, 47, + 4, 42, 147, 148, 124, 113, 156, 76, 127, 159, + 155, 84, 155, 3, 41, 160, 155, 70, 41, 362, + 130, 131, 132, 133, 134, 135, 4, 3, 147, 148, + 155, 155, 153, 85, 136, 3, 155, 78, 48, 48, + 48, 160, 159, 159, 92, 116, 3, 89, 118, 47, + 155, 51, 155, 3, 95, 156, 155, 155, 84, 3, + 156, 85, 92, 106, 159, 113, 63, 155, 153, 155, + 95, 154, 113, 121, 122, 155, 90, 156, 156, 71, + 128, 129, 71, 71, 90, 3, 127, 119, 136, 137, + 138, 139, 140, 156, 92, 143, 144, 6, 146, 147, + 148, 149, 150, 151, 6, 153, 147, 148, 106, 47, + 25, 95, 156, 53, 155, 113, 31, 155, 155, 160, + 156, 156, 156, 38, 122, 18, 157, 318, 313, 329, + 128, 129, 38, 47, 116, 227, 64, 31, 136, 137, + 138, 139, 140, 47, 233, 143, 144, 62, 146, 147, + 148, 149, 150, 151, 92, 153, 185, 197, 180, 385, + 419, 384, 134, 408, 79, -1, -1, -1, -1, -1, + -1, -1, -1, 47, -1, 113, -1, -1, -1, 94, + -1, -1, -1, 98, 122, -1, -1, -1, 92, -1, + 128, 129, -1, -1, -1, -1, 111, -1, 136, 137, + 138, 139, 140, -1, -1, 143, 144, -1, 146, 147, + 148, 149, 150, 151, -1, 153, -1, -1, 122, -1, + -1, -1, -1, -1, 128, 129, -1, -1, -1, -1, + -1, -1, 136, 137, 138, 139, 140, -1, -1, 143, + 144, -1, 146, 147, 148, 149, 150, 151, 122, 153, + -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 139, 140, -1, -1, 143, + 144, -1, 146, 147, 148, 149, 150, 151, -1, 153 }; /* 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, 44, 45, 50, - 55, 79, 93, 151, 158, 159, 160, 161, 165, 167, - 168, 171, 172, 177, 179, 180, 181, 183, 186, 187, - 189, 193, 27, 3, 240, 3, 3, 71, 97, 82, - 82, 86, 113, 205, 239, 240, 71, 97, 19, 52, - 187, 189, 0, 154, 248, 99, 162, 162, 9, 39, - 72, 190, 191, 68, 190, 201, 3, 153, 151, 82, - 116, 173, 173, 240, 104, 169, 240, 6, 231, 12, - 194, 111, 116, 178, 178, 240, 152, 152, 160, 85, - 187, 188, 193, 101, 192, 115, 188, 47, 64, 206, - 3, 4, 5, 91, 156, 208, 228, 229, 230, 231, - 232, 233, 4, 166, 109, 240, 240, 74, 198, 81, - 151, 182, 3, 40, 41, 76, 109, 123, 143, 144, - 151, 195, 207, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 219, 220, 221, 222, 224, 225, 226, 227, - 228, 3, 184, 185, 40, 240, 240, 151, 201, 202, - 203, 210, 201, 231, 91, 101, 231, 152, 155, 40, - 82, 151, 182, 210, 170, 229, 3, 249, 56, 189, - 151, 153, 151, 151, 98, 210, 218, 40, 109, 211, - 149, 211, 189, 210, 82, 196, 197, 155, 3, 102, - 114, 121, 243, 244, 17, 46, 89, 109, 117, 118, - 124, 125, 132, 133, 134, 135, 136, 139, 140, 142, - 143, 144, 145, 146, 147, 149, 132, 155, 198, 3, - 163, 164, 206, 155, 78, 103, 204, 206, 47, 47, - 47, 228, 112, 3, 174, 175, 114, 86, 152, 155, - 151, 152, 194, 3, 144, 189, 126, 127, 128, 129, - 130, 131, 223, 210, 218, 80, 98, 105, 151, 109, - 207, 152, 152, 151, 234, 235, 236, 237, 238, 240, - 245, 198, 209, 210, 3, 210, 211, 211, 89, 117, - 151, 91, 109, 211, 211, 211, 211, 211, 211, 211, - 211, 211, 211, 211, 211, 211, 211, 211, 231, 210, - 185, 151, 152, 155, 203, 231, 231, 231, 81, 25, - 37, 94, 107, 176, 152, 155, 186, 240, 3, 208, - 207, 152, 82, 95, 80, 105, 210, 210, 189, 150, - 186, 26, 59, 63, 69, 70, 83, 88, 246, 155, - 114, 241, 242, 243, 61, 199, 102, 211, 151, 189, - 207, 91, 150, 208, 164, 170, 175, 152, 152, 210, - 210, 210, 105, 95, 152, 152, 87, 69, 69, 69, - 87, 235, 3, 115, 211, 189, 207, 152, 152, 152, - 152, 105, 210, 242, 236, 235, 151, 207, 152, 152, - 73, 120, 249, 43, 200, 151, 210, 247, 152, 210, - 3, 227, 152 + 0, 7, 15, 22, 27, 35, 36, 45, 46, 51, + 56, 82, 97, 155, 162, 163, 164, 165, 169, 171, + 172, 175, 176, 182, 184, 185, 186, 188, 191, 192, + 194, 198, 27, 3, 245, 3, 3, 73, 101, 85, + 85, 89, 117, 210, 244, 245, 73, 101, 19, 53, + 192, 194, 0, 158, 253, 103, 166, 166, 9, 40, + 74, 195, 196, 70, 195, 206, 3, 157, 155, 85, + 120, 177, 177, 245, 108, 173, 245, 6, 236, 12, + 199, 115, 120, 183, 183, 245, 156, 156, 164, 88, + 192, 193, 198, 105, 197, 119, 193, 48, 66, 211, + 3, 4, 5, 95, 160, 213, 233, 234, 235, 236, + 237, 238, 4, 170, 113, 245, 245, 76, 203, 84, + 155, 187, 3, 41, 42, 78, 113, 127, 147, 148, + 155, 200, 212, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 224, 225, 226, 227, 229, 230, 231, 232, + 233, 3, 189, 190, 41, 245, 245, 155, 206, 207, + 208, 215, 206, 236, 95, 105, 236, 156, 159, 41, + 85, 155, 187, 215, 174, 234, 3, 254, 57, 194, + 155, 157, 155, 155, 102, 215, 223, 41, 113, 216, + 153, 216, 194, 215, 85, 201, 202, 159, 3, 106, + 118, 125, 248, 249, 17, 47, 92, 113, 121, 122, + 128, 129, 136, 137, 138, 139, 140, 143, 144, 146, + 147, 148, 149, 150, 151, 153, 136, 159, 203, 3, + 167, 168, 211, 159, 81, 107, 209, 211, 48, 48, + 48, 233, 116, 3, 178, 179, 118, 89, 156, 159, + 155, 156, 199, 3, 148, 194, 130, 131, 132, 133, + 134, 135, 228, 215, 223, 83, 102, 109, 155, 113, + 212, 156, 156, 155, 239, 240, 241, 242, 243, 245, + 250, 203, 214, 215, 3, 215, 216, 216, 92, 121, + 155, 95, 113, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 236, 215, + 190, 155, 156, 159, 208, 236, 236, 236, 84, 25, + 31, 38, 62, 79, 94, 98, 111, 180, 156, 159, + 191, 245, 3, 213, 212, 156, 85, 99, 83, 109, + 215, 215, 194, 154, 191, 26, 60, 65, 71, 72, + 86, 91, 251, 159, 118, 246, 247, 248, 63, 204, + 106, 216, 155, 194, 212, 95, 154, 213, 168, 174, + 155, 155, 95, 113, 181, 179, 156, 156, 215, 215, + 215, 109, 99, 156, 156, 90, 71, 71, 71, 90, + 240, 3, 119, 216, 194, 212, 156, 156, 156, 6, + 6, 95, 156, 109, 215, 247, 241, 240, 155, 212, + 156, 156, 156, 156, 75, 124, 254, 44, 205, 155, + 215, 252, 156, 215, 3, 232, 156 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 157, 158, 159, 159, 160, 160, 160, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 162, 162, 163, - 163, 164, 164, 165, 166, 167, 167, 168, 169, 170, - 171, 171, 172, 172, 172, 173, 173, 174, 174, 175, - 176, 176, 176, 176, 177, 177, 177, 178, 178, 179, - 180, 181, 181, 182, 182, 183, 184, 184, 185, 186, - 186, 186, 187, 187, 188, 188, 189, 189, 190, 191, - 191, 191, 192, 192, 193, 194, 194, 195, 196, 196, - 197, 198, 198, 199, 199, 200, 200, 201, 201, 202, - 202, 203, 204, 204, 204, 205, 205, 206, 206, 206, - 206, 206, 206, 206, 206, 207, 207, 208, 208, 209, - 210, 210, 210, 210, 210, 211, 211, 211, 211, 211, - 211, 211, 211, 211, 211, 212, 212, 213, 213, 213, - 213, 213, 214, 214, 214, 214, 214, 214, 214, 214, - 214, 214, 214, 215, 215, 216, 216, 216, 216, 217, - 217, 217, 217, 218, 218, 219, 219, 220, 220, 220, - 220, 220, 220, 220, 221, 221, 222, 223, 223, 223, - 223, 223, 223, 224, 225, 226, 227, 227, 227, 227, - 228, 228, 228, 228, 229, 230, 230, 231, 232, 233, - 234, 234, 235, 235, 236, 236, 237, 237, 238, 239, - 240, 240, 241, 241, 242, 242, 243, 243, 244, 244, - 245, 245, 245, 246, 246, 246, 246, 246, 246, 246, - 246, 246, 246, 247, 248, 248, 249, 249 + 0, 161, 162, 163, 163, 164, 164, 164, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 166, 166, 167, + 167, 168, 168, 169, 170, 171, 171, 172, 173, 174, + 175, 175, 176, 176, 176, 177, 177, 178, 178, 179, + 180, 180, 180, 180, 180, 180, 180, 180, 181, 181, + 181, 182, 182, 182, 183, 183, 184, 185, 186, 186, + 187, 187, 188, 189, 189, 190, 191, 191, 191, 192, + 192, 193, 193, 194, 194, 195, 196, 196, 196, 197, + 197, 198, 199, 199, 200, 201, 201, 202, 203, 203, + 204, 204, 205, 205, 206, 206, 207, 207, 208, 209, + 209, 209, 210, 210, 211, 211, 211, 211, 211, 211, + 211, 211, 212, 212, 213, 213, 214, 215, 215, 215, + 215, 215, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 217, 217, 218, 218, 218, 218, 218, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 220, 220, 221, 221, 221, 221, 222, 222, 222, 222, + 223, 223, 224, 224, 225, 225, 225, 225, 225, 225, + 225, 226, 226, 227, 228, 228, 228, 228, 228, 228, + 229, 230, 231, 232, 232, 232, 232, 233, 233, 233, + 233, 234, 235, 235, 236, 237, 238, 239, 239, 240, + 240, 241, 241, 242, 242, 243, 244, 245, 245, 246, + 246, 247, 247, 248, 248, 249, 249, 250, 250, 250, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 252, 253, 253, 254, 254 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1159,26 +1163,27 @@ static const yytype_uint8 yyr2[] = 0, 2, 2, 1, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 0, 1, 3, 1, 4, 4, 1, 2, 5, 7, 1, 1, - 2, 3, 8, 7, 7, 3, 0, 1, 3, 2, - 1, 1, 1, 1, 4, 4, 3, 2, 0, 4, - 2, 8, 5, 3, 0, 5, 1, 3, 3, 1, - 1, 5, 3, 3, 1, 1, 3, 5, 2, 1, - 1, 1, 1, 0, 7, 1, 0, 1, 1, 0, - 2, 2, 0, 4, 0, 2, 0, 3, 0, 1, - 3, 2, 1, 1, 0, 2, 0, 2, 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, 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 + 2, 3, 8, 7, 7, 3, 0, 1, 3, 3, + 1, 1, 1, 1, 1, 4, 4, 1, 1, 2, + 0, 4, 4, 3, 2, 0, 4, 2, 8, 5, + 3, 0, 5, 1, 3, 3, 1, 1, 5, 3, + 3, 1, 1, 3, 5, 2, 1, 1, 1, 1, + 0, 7, 1, 0, 1, 1, 0, 2, 2, 0, + 4, 0, 2, 0, 3, 0, 1, 3, 2, 1, + 1, 0, 2, 0, 2, 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, + 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 }; @@ -1383,7 +1388,7 @@ do { \ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, hsql::SQLParserResult* result, yyscan_t scanner) { - unsigned long int yylno = yyrline[yyrule]; + unsigned long yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", @@ -1609,6 +1614,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, case N: \ yyformat = S; \ break + default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); @@ -1675,31 +1681,31 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio switch (yytype) { case 3: /* IDENTIFIER */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ +#line 143 "bison_parser.y" /* yacc.c:1258 */ { free( (((*yyvaluep).sval)) ); } -#line 1681 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1687 "bison_parser.cpp" /* yacc.c:1258 */ break; case 4: /* STRING */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ +#line 143 "bison_parser.y" /* yacc.c:1258 */ { free( (((*yyvaluep).sval)) ); } -#line 1687 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1693 "bison_parser.cpp" /* yacc.c:1258 */ break; case 5: /* FLOATVAL */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ +#line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1693 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1699 "bison_parser.cpp" /* yacc.c:1258 */ break; case 6: /* INTVAL */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ +#line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1699 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1705 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 159: /* statement_list */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 163: /* statement_list */ +#line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).stmt_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).stmt_vec))) { @@ -1708,23 +1714,23 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).stmt_vec)); } -#line 1712 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1718 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 160: /* statement */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 164: /* statement */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).statement)); } -#line 1718 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1724 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 161: /* preparable_statement */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 165: /* preparable_statement */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).statement)); } -#line 1724 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1730 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 162: /* opt_hints */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 166: /* opt_hints */ +#line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1733,11 +1739,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1737 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1743 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 163: /* hint_list */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 167: /* hint_list */ +#line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1746,71 +1752,71 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1750 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1756 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 164: /* hint */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 168: /* hint */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 1756 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1762 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 165: /* prepare_statement */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 169: /* prepare_statement */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).prep_stmt)); } -#line 1762 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1768 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 166: /* prepare_target_query */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ + case 170: /* prepare_target_query */ +#line 143 "bison_parser.y" /* yacc.c:1258 */ { free( (((*yyvaluep).sval)) ); } -#line 1768 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1774 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 167: /* execute_statement */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 171: /* execute_statement */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).exec_stmt)); } -#line 1774 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1780 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 168: /* import_statement */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 172: /* import_statement */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).import_stmt)); } -#line 1780 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1786 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 169: /* import_file_type */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ + case 173: /* import_file_type */ +#line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1786 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1792 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 170: /* file_path */ -#line 142 "bison_parser.y" /* yacc.c:1257 */ + case 174: /* file_path */ +#line 143 "bison_parser.y" /* yacc.c:1258 */ { free( (((*yyvaluep).sval)) ); } -#line 1792 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1798 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 171: /* show_statement */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 175: /* show_statement */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).show_stmt)); } -#line 1798 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1804 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 172: /* create_statement */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 176: /* create_statement */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).create_stmt)); } -#line 1804 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1810 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 173: /* opt_not_exists */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ + case 177: /* opt_not_exists */ +#line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1810 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1816 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 174: /* column_def_commalist */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 178: /* column_def_commalist */ +#line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).column_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).column_vec))) { @@ -1819,53 +1825,59 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).column_vec)); } -#line 1823 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1829 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 175: /* column_def */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 179: /* column_def */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).column_t)); } -#line 1829 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1835 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 176: /* column_type */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ + case 180: /* column_type */ +#line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1835 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1841 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 177: /* drop_statement */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 181: /* opt_column_nullable */ +#line 141 "bison_parser.y" /* yacc.c:1258 */ + { } +#line 1847 "bison_parser.cpp" /* yacc.c:1258 */ + break; + + case 182: /* drop_statement */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).drop_stmt)); } -#line 1841 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1853 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 178: /* opt_exists */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ + case 183: /* opt_exists */ +#line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1847 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1859 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 179: /* delete_statement */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 184: /* delete_statement */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).delete_stmt)); } -#line 1853 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1865 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 180: /* truncate_statement */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 185: /* truncate_statement */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).delete_stmt)); } -#line 1859 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1871 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 181: /* insert_statement */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 186: /* insert_statement */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).insert_stmt)); } -#line 1865 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1877 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 182: /* opt_column_list */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 187: /* opt_column_list */ +#line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -1874,17 +1886,17 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 1878 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1890 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 183: /* update_statement */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 188: /* update_statement */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).update_stmt)); } -#line 1884 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1896 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 184: /* update_clause_commalist */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 189: /* update_clause_commalist */ +#line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).update_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).update_vec))) { @@ -1893,53 +1905,53 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).update_vec)); } -#line 1897 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1909 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 185: /* update_clause */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 190: /* update_clause */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).update_t)); } -#line 1903 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1915 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 186: /* select_statement */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 191: /* select_statement */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).select_stmt)); } -#line 1909 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1921 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 187: /* select_with_paren */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 192: /* select_with_paren */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).select_stmt)); } -#line 1915 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1927 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 188: /* select_paren_or_clause */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 193: /* select_paren_or_clause */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).select_stmt)); } -#line 1921 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1933 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 189: /* select_no_paren */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 194: /* select_no_paren */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).select_stmt)); } -#line 1927 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1939 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 193: /* select_clause */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 198: /* select_clause */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).select_stmt)); } -#line 1933 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1945 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 194: /* opt_distinct */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ + case 199: /* opt_distinct */ +#line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1939 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1951 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 195: /* select_list */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 200: /* select_list */ +#line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1948,41 +1960,41 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1952 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1964 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 196: /* opt_from_clause */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 201: /* opt_from_clause */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 1958 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1970 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 197: /* from_clause */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 202: /* from_clause */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 1964 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1976 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 198: /* opt_where */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 203: /* opt_where */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 1970 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1982 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 199: /* opt_group */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 204: /* opt_group */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).group_t)); } -#line 1976 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1988 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 200: /* opt_having */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 205: /* opt_having */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 1982 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1994 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 201: /* opt_order */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 206: /* opt_order */ +#line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -1991,11 +2003,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 1995 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2007 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 202: /* order_list */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 207: /* order_list */ +#line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2004,35 +2016,35 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 2008 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2020 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 203: /* order_desc */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 208: /* order_desc */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).order)); } -#line 2014 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2026 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 204: /* opt_order_type */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ + case 209: /* opt_order_type */ +#line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 2020 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2032 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 205: /* opt_top */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 210: /* opt_top */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).limit)); } -#line 2026 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2038 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 206: /* opt_limit */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 211: /* opt_limit */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).limit)); } -#line 2032 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2044 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 207: /* expr_list */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 212: /* expr_list */ +#line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2041,11 +2053,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2045 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2057 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 208: /* literal_list */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 213: /* literal_list */ +#line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2054,179 +2066,179 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2058 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2070 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 209: /* expr_alias */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 214: /* expr_alias */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2064 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2076 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 210: /* expr */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 215: /* expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2070 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2082 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 211: /* operand */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 216: /* operand */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2076 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2088 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 212: /* scalar_expr */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 217: /* scalar_expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2082 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2094 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 213: /* unary_expr */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 218: /* unary_expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2088 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2100 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 214: /* binary_expr */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 219: /* binary_expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2094 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2106 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 215: /* logic_expr */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 220: /* logic_expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2100 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2112 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 216: /* in_expr */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 221: /* in_expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2106 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2118 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 217: /* case_expr */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 222: /* case_expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2112 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2124 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 218: /* case_list */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 223: /* case_list */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2118 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2130 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 219: /* exists_expr */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 224: /* exists_expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2124 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2136 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 220: /* comp_expr */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 225: /* comp_expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2130 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2142 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 221: /* function_expr */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 226: /* function_expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2136 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2148 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 222: /* extract_expr */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 227: /* extract_expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2142 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2154 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 223: /* datetime_field */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ + case 228: /* datetime_field */ +#line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 2148 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2160 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 224: /* array_expr */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 229: /* array_expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2154 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2166 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 225: /* array_index */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 230: /* array_index */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2160 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2172 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 226: /* between_expr */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 231: /* between_expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2166 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2178 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 227: /* column_name */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 232: /* column_name */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2172 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2184 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 228: /* literal */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 233: /* literal */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2178 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2190 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 229: /* string_literal */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 234: /* string_literal */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2184 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2196 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 230: /* num_literal */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 235: /* num_literal */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2190 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2202 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 231: /* int_literal */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 236: /* int_literal */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2196 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2208 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 232: /* null_literal */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 237: /* null_literal */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2202 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2214 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 233: /* param_expr */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 238: /* param_expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2208 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2220 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 234: /* table_ref */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 239: /* table_ref */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 2214 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2226 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 235: /* table_ref_atomic */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 240: /* table_ref_atomic */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 2220 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2232 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 236: /* nonjoin_table_ref_atomic */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 241: /* nonjoin_table_ref_atomic */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 2226 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2238 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 237: /* table_ref_commalist */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 242: /* table_ref_commalist */ +#line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).table_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).table_vec))) { @@ -2235,71 +2247,71 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).table_vec)); } -#line 2239 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2251 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 238: /* table_ref_name */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 243: /* table_ref_name */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 2245 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2257 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 239: /* table_ref_name_no_alias */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 244: /* table_ref_name_no_alias */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 2251 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2263 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 240: /* table_name */ -#line 141 "bison_parser.y" /* yacc.c:1257 */ + case 245: /* table_name */ +#line 142 "bison_parser.y" /* yacc.c:1258 */ { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } -#line 2257 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2269 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 241: /* table_alias */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 246: /* table_alias */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).alias_t)); } -#line 2263 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2275 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 242: /* opt_table_alias */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 247: /* opt_table_alias */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).alias_t)); } -#line 2269 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2281 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 243: /* alias */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 248: /* alias */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).alias_t)); } -#line 2275 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2287 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 244: /* opt_alias */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 249: /* opt_alias */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).alias_t)); } -#line 2281 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2293 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 245: /* join_clause */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 250: /* join_clause */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 2287 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2299 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 246: /* opt_join_type */ -#line 140 "bison_parser.y" /* yacc.c:1257 */ + case 251: /* opt_join_type */ +#line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 2293 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2305 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 247: /* join_condition */ -#line 151 "bison_parser.y" /* yacc.c:1257 */ + case 252: /* join_condition */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2299 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2311 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 249: /* ident_commalist */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 254: /* ident_commalist */ +#line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2308,7 +2320,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 2312 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2324 "bison_parser.cpp" /* yacc.c:1258 */ break; @@ -2416,7 +2428,7 @@ YYLTYPE yylloc = yyloc_default; yychar = YYEMPTY; /* Cause a token to be read. */ /* User initialization code. */ -#line 73 "bison_parser.y" /* yacc.c:1429 */ +#line 73 "bison_parser.y" /* yacc.c:1440 */ { // Initialize yylloc.first_column = 0; @@ -2427,7 +2439,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 2431 "bison_parser.cpp" /* yacc.c:1429 */ +#line 2443 "bison_parser.cpp" /* yacc.c:1440 */ yylsp[0] = yylloc; goto yysetstate; @@ -2502,7 +2514,7 @@ YYLTYPE yylloc = yyloc_default; yylsp = yyls + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; @@ -2608,13 +2620,14 @@ yyreduce: GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; - /* Default location. */ + /* Default location. */ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); + yyerror_range[1] = yyloc; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: -#line 251 "bison_parser.y" /* yacc.c:1646 */ +#line 253 "bison_parser.y" /* yacc.c:1666 */ { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -2632,226 +2645,226 @@ yyreduce: } delete (yyvsp[-1].stmt_vec); } -#line 2636 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2649 "bison_parser.cpp" /* yacc.c:1666 */ break; case 3: -#line 272 "bison_parser.y" /* yacc.c:1646 */ +#line 274 "bison_parser.y" /* yacc.c:1666 */ { (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 2647 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2660 "bison_parser.cpp" /* yacc.c:1666 */ break; case 4: -#line 278 "bison_parser.y" /* yacc.c:1646 */ +#line 280 "bison_parser.y" /* yacc.c:1666 */ { (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 2658 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2671 "bison_parser.cpp" /* yacc.c:1666 */ break; case 5: -#line 287 "bison_parser.y" /* yacc.c:1646 */ +#line 289 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2667 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2680 "bison_parser.cpp" /* yacc.c:1666 */ break; case 6: -#line 291 "bison_parser.y" /* yacc.c:1646 */ +#line 293 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2676 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2689 "bison_parser.cpp" /* yacc.c:1666 */ break; case 7: -#line 295 "bison_parser.y" /* yacc.c:1646 */ +#line 297 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 2684 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2697 "bison_parser.cpp" /* yacc.c:1666 */ break; case 8: -#line 302 "bison_parser.y" /* yacc.c:1646 */ +#line 304 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 2690 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2703 "bison_parser.cpp" /* yacc.c:1666 */ break; case 9: -#line 303 "bison_parser.y" /* yacc.c:1646 */ +#line 305 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 2696 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2709 "bison_parser.cpp" /* yacc.c:1666 */ break; case 10: -#line 304 "bison_parser.y" /* yacc.c:1646 */ +#line 306 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 2702 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2715 "bison_parser.cpp" /* yacc.c:1666 */ break; case 11: -#line 305 "bison_parser.y" /* yacc.c:1646 */ +#line 307 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 2708 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2721 "bison_parser.cpp" /* yacc.c:1666 */ break; case 12: -#line 306 "bison_parser.y" /* yacc.c:1646 */ +#line 308 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2714 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2727 "bison_parser.cpp" /* yacc.c:1666 */ break; case 13: -#line 307 "bison_parser.y" /* yacc.c:1646 */ +#line 309 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2720 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2733 "bison_parser.cpp" /* yacc.c:1666 */ break; case 14: -#line 308 "bison_parser.y" /* yacc.c:1646 */ +#line 310 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 2726 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2739 "bison_parser.cpp" /* yacc.c:1666 */ break; case 15: -#line 309 "bison_parser.y" /* yacc.c:1646 */ +#line 311 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 2732 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2745 "bison_parser.cpp" /* yacc.c:1666 */ break; case 16: -#line 310 "bison_parser.y" /* yacc.c:1646 */ +#line 312 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 2738 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2751 "bison_parser.cpp" /* yacc.c:1666 */ break; case 17: -#line 319 "bison_parser.y" /* yacc.c:1646 */ +#line 321 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 2744 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2757 "bison_parser.cpp" /* yacc.c:1666 */ break; case 18: -#line 320 "bison_parser.y" /* yacc.c:1646 */ +#line 322 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr_vec) = nullptr; } -#line 2750 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2763 "bison_parser.cpp" /* yacc.c:1666 */ break; case 19: -#line 325 "bison_parser.y" /* yacc.c:1646 */ +#line 327 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 2756 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2769 "bison_parser.cpp" /* yacc.c:1666 */ break; case 20: -#line 326 "bison_parser.y" /* yacc.c:1646 */ +#line 328 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 2762 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2775 "bison_parser.cpp" /* yacc.c:1666 */ break; case 21: -#line 330 "bison_parser.y" /* yacc.c:1646 */ +#line 332 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 2771 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2784 "bison_parser.cpp" /* yacc.c:1666 */ break; case 22: -#line 334 "bison_parser.y" /* yacc.c:1646 */ +#line 336 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 2781 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2794 "bison_parser.cpp" /* yacc.c:1666 */ break; case 23: -#line 346 "bison_parser.y" /* yacc.c:1646 */ +#line 348 "bison_parser.y" /* yacc.c:1666 */ { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 2791 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2804 "bison_parser.cpp" /* yacc.c:1666 */ break; case 25: -#line 356 "bison_parser.y" /* yacc.c:1646 */ +#line 358 "bison_parser.y" /* yacc.c:1666 */ { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 2800 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2813 "bison_parser.cpp" /* yacc.c:1666 */ break; case 26: -#line 360 "bison_parser.y" /* yacc.c:1646 */ +#line 362 "bison_parser.y" /* yacc.c:1666 */ { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 2810 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2823 "bison_parser.cpp" /* yacc.c:1666 */ break; case 27: -#line 372 "bison_parser.y" /* yacc.c:1646 */ +#line 374 "bison_parser.y" /* yacc.c:1666 */ { (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 2821 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2834 "bison_parser.cpp" /* yacc.c:1666 */ break; case 28: -#line 381 "bison_parser.y" /* yacc.c:1646 */ +#line 383 "bison_parser.y" /* yacc.c:1666 */ { (yyval.uval) = kImportCSV; } -#line 2827 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2840 "bison_parser.cpp" /* yacc.c:1666 */ break; case 29: -#line 385 "bison_parser.y" /* yacc.c:1646 */ +#line 387 "bison_parser.y" /* yacc.c:1666 */ { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 2833 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2846 "bison_parser.cpp" /* yacc.c:1666 */ break; case 30: -#line 395 "bison_parser.y" /* yacc.c:1646 */ +#line 397 "bison_parser.y" /* yacc.c:1666 */ { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 2841 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2854 "bison_parser.cpp" /* yacc.c:1666 */ break; case 31: -#line 398 "bison_parser.y" /* yacc.c:1646 */ +#line 400 "bison_parser.y" /* yacc.c:1666 */ { (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 2851 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2864 "bison_parser.cpp" /* yacc.c:1666 */ break; case 32: -#line 412 "bison_parser.y" /* yacc.c:1646 */ +#line 414 "bison_parser.y" /* yacc.c:1666 */ { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -2859,11 +2872,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-4].table_name).name; (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 2863 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2876 "bison_parser.cpp" /* yacc.c:1666 */ break; case 33: -#line 419 "bison_parser.y" /* yacc.c:1646 */ +#line 421 "bison_parser.y" /* yacc.c:1666 */ { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -2871,11 +2884,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->columns = (yyvsp[-1].column_vec); } -#line 2875 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2888 "bison_parser.cpp" /* yacc.c:1666 */ break; case 34: -#line 426 "bison_parser.y" /* yacc.c:1646 */ +#line 428 "bison_parser.y" /* yacc.c:1666 */ { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -2884,132 +2897,174 @@ yyreduce: (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 2888 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2901 "bison_parser.cpp" /* yacc.c:1666 */ break; case 35: -#line 437 "bison_parser.y" /* yacc.c:1646 */ +#line 439 "bison_parser.y" /* yacc.c:1666 */ { (yyval.bval) = true; } -#line 2894 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2907 "bison_parser.cpp" /* yacc.c:1666 */ break; case 36: -#line 438 "bison_parser.y" /* yacc.c:1646 */ +#line 440 "bison_parser.y" /* yacc.c:1666 */ { (yyval.bval) = false; } -#line 2900 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2913 "bison_parser.cpp" /* yacc.c:1666 */ break; case 37: -#line 442 "bison_parser.y" /* yacc.c:1646 */ +#line 444 "bison_parser.y" /* yacc.c:1666 */ { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } -#line 2906 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2919 "bison_parser.cpp" /* yacc.c:1666 */ break; case 38: -#line 443 "bison_parser.y" /* yacc.c:1646 */ +#line 445 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[-2].column_vec)->push_back((yyvsp[0].column_t)); (yyval.column_vec) = (yyvsp[-2].column_vec); } -#line 2912 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2925 "bison_parser.cpp" /* yacc.c:1666 */ break; case 39: -#line 447 "bison_parser.y" /* yacc.c:1646 */ +#line 449 "bison_parser.y" /* yacc.c:1666 */ { - (yyval.column_t) = new ColumnDefinition((yyvsp[-1].sval), (ColumnDefinition::DataType) (yyvsp[0].uval)); + (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].bval)); } -#line 2920 "bison_parser.cpp" /* yacc.c:1646 */ +#line 2933 "bison_parser.cpp" /* yacc.c:1666 */ break; case 40: -#line 454 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = ColumnDefinition::INT; } -#line 2926 "bison_parser.cpp" /* yacc.c:1646 */ +#line 455 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.column_type_t) = ColumnType{DataType::INT}; } +#line 2939 "bison_parser.cpp" /* yacc.c:1666 */ break; case 41: -#line 455 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = ColumnDefinition::INT; } -#line 2932 "bison_parser.cpp" /* yacc.c:1646 */ +#line 456 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.column_type_t) = ColumnType{DataType::INT}; } +#line 2945 "bison_parser.cpp" /* yacc.c:1666 */ break; case 42: -#line 456 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = ColumnDefinition::DOUBLE; } -#line 2938 "bison_parser.cpp" /* yacc.c:1646 */ +#line 457 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.column_type_t) = ColumnType{DataType::LONG}; } +#line 2951 "bison_parser.cpp" /* yacc.c:1666 */ break; case 43: -#line 457 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = ColumnDefinition::TEXT; } -#line 2944 "bison_parser.cpp" /* yacc.c:1646 */ +#line 458 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } +#line 2957 "bison_parser.cpp" /* yacc.c:1666 */ break; case 44: -#line 467 "bison_parser.y" /* yacc.c:1646 */ +#line 459 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } +#line 2963 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 45: +#line 460 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } +#line 2969 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 46: +#line 461 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } +#line 2975 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 47: +#line 462 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } +#line 2981 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 48: +#line 466 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.bval) = true; } +#line 2987 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 49: +#line 467 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.bval) = false; } +#line 2993 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 50: +#line 468 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.bval) = false; } +#line 2999 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 51: +#line 478 "bison_parser.y" /* yacc.c:1666 */ { (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 2955 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3010 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 45: -#line 473 "bison_parser.y" /* yacc.c:1646 */ + case 52: +#line 484 "bison_parser.y" /* yacc.c:1666 */ { (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 2966 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3021 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 46: -#line 479 "bison_parser.y" /* yacc.c:1646 */ + case 53: +#line 490 "bison_parser.y" /* yacc.c:1666 */ { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 2976 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3031 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 47: -#line 487 "bison_parser.y" /* yacc.c:1646 */ + case 54: +#line 498 "bison_parser.y" /* yacc.c:1666 */ { (yyval.bval) = true; } -#line 2982 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3037 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 48: -#line 488 "bison_parser.y" /* yacc.c:1646 */ + case 55: +#line 499 "bison_parser.y" /* yacc.c:1666 */ { (yyval.bval) = false; } -#line 2988 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3043 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 49: -#line 497 "bison_parser.y" /* yacc.c:1646 */ + case 56: +#line 508 "bison_parser.y" /* yacc.c:1666 */ { (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 2999 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3054 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 50: -#line 506 "bison_parser.y" /* yacc.c:1646 */ + case 57: +#line 517 "bison_parser.y" /* yacc.c:1666 */ { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 3009 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3064 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 51: -#line 519 "bison_parser.y" /* yacc.c:1646 */ + case 58: +#line 530 "bison_parser.y" /* yacc.c:1666 */ { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -3017,11 +3072,11 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 3021 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3076 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 52: -#line 526 "bison_parser.y" /* yacc.c:1646 */ + case 59: +#line 537 "bison_parser.y" /* yacc.c:1666 */ { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -3029,56 +3084,56 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 3033 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3088 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 53: -#line 537 "bison_parser.y" /* yacc.c:1646 */ + case 60: +#line 548 "bison_parser.y" /* yacc.c:1666 */ { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 3039 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3094 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 54: -#line 538 "bison_parser.y" /* yacc.c:1646 */ + case 61: +#line 549 "bison_parser.y" /* yacc.c:1666 */ { (yyval.str_vec) = nullptr; } -#line 3045 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3100 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 55: -#line 548 "bison_parser.y" /* yacc.c:1646 */ + case 62: +#line 559 "bison_parser.y" /* yacc.c:1666 */ { (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 3056 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3111 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 56: -#line 557 "bison_parser.y" /* yacc.c:1646 */ + case 63: +#line 568 "bison_parser.y" /* yacc.c:1666 */ { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 3062 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3117 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 57: -#line 558 "bison_parser.y" /* yacc.c:1646 */ + case 64: +#line 569 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 3068 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3123 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 58: -#line 562 "bison_parser.y" /* yacc.c:1646 */ + case 65: +#line 573 "bison_parser.y" /* yacc.c:1666 */ { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 3078 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3133 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 61: -#line 576 "bison_parser.y" /* yacc.c:1646 */ + case 68: +#line 587 "bison_parser.y" /* yacc.c:1666 */ { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3093,23 +3148,23 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3097 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3152 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 62: -#line 593 "bison_parser.y" /* yacc.c:1646 */ + case 69: +#line 604 "bison_parser.y" /* yacc.c:1666 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3103 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3158 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 63: -#line 594 "bison_parser.y" /* yacc.c:1646 */ + case 70: +#line 605 "bison_parser.y" /* yacc.c:1666 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3109 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3164 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 66: -#line 603 "bison_parser.y" /* yacc.c:1646 */ + case 73: +#line 614 "bison_parser.y" /* yacc.c:1666 */ { (yyval.select_stmt) = (yyvsp[-2].select_stmt); (yyval.select_stmt)->order = (yyvsp[-1].order_vec); @@ -3120,11 +3175,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3124 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3179 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 67: -#line 613 "bison_parser.y" /* yacc.c:1646 */ + case 74: +#line 624 "bison_parser.y" /* yacc.c:1666 */ { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3139,11 +3194,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3143 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3198 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 74: -#line 645 "bison_parser.y" /* yacc.c:1646 */ + case 81: +#line 656 "bison_parser.y" /* yacc.c:1666 */ { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -3153,213 +3208,213 @@ yyreduce: (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 3157 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 75: -#line 657 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.bval) = true; } -#line 3163 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 76: -#line 658 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.bval) = false; } -#line 3169 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 78: -#line 666 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.table) = (yyvsp[0].table); } -#line 3175 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 79: -#line 667 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.table) = nullptr; } -#line 3181 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 80: -#line 670 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.table) = (yyvsp[0].table); } -#line 3187 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 81: -#line 675 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = (yyvsp[0].expr); } -#line 3193 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3212 "bison_parser.cpp" /* yacc.c:1666 */ break; case 82: -#line 676 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = nullptr; } -#line 3199 "bison_parser.cpp" /* yacc.c:1646 */ +#line 668 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.bval) = true; } +#line 3218 "bison_parser.cpp" /* yacc.c:1666 */ break; case 83: -#line 680 "bison_parser.y" /* yacc.c:1646 */ +#line 669 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.bval) = false; } +#line 3224 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 85: +#line 677 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.table) = (yyvsp[0].table); } +#line 3230 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 86: +#line 678 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.table) = nullptr; } +#line 3236 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 87: +#line 681 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.table) = (yyvsp[0].table); } +#line 3242 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 88: +#line 686 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = (yyvsp[0].expr); } +#line 3248 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 89: +#line 687 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = nullptr; } +#line 3254 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 90: +#line 691 "bison_parser.y" /* yacc.c:1666 */ { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 3209 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 84: -#line 685 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.group_t) = nullptr; } -#line 3215 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 85: -#line 689 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = (yyvsp[0].expr); } -#line 3221 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 86: -#line 690 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = nullptr; } -#line 3227 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 87: -#line 693 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 3233 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 88: -#line 694 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_vec) = nullptr; } -#line 3239 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - 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 3245 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - 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 3251 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3264 "bison_parser.cpp" /* yacc.c:1666 */ break; case 91: -#line 703 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 3257 "bison_parser.cpp" /* yacc.c:1646 */ +#line 696 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.group_t) = nullptr; } +#line 3270 "bison_parser.cpp" /* yacc.c:1666 */ break; case 92: -#line 707 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_type) = kOrderAsc; } -#line 3263 "bison_parser.cpp" /* yacc.c:1646 */ +#line 700 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = (yyvsp[0].expr); } +#line 3276 "bison_parser.cpp" /* yacc.c:1666 */ break; case 93: -#line 708 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_type) = kOrderDesc; } -#line 3269 "bison_parser.cpp" /* yacc.c:1646 */ +#line 701 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = nullptr; } +#line 3282 "bison_parser.cpp" /* yacc.c:1666 */ break; case 94: -#line 709 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.order_type) = kOrderAsc; } -#line 3275 "bison_parser.cpp" /* yacc.c:1646 */ +#line 704 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.order_vec) = (yyvsp[0].order_vec); } +#line 3288 "bison_parser.cpp" /* yacc.c:1666 */ break; case 95: -#line 715 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } -#line 3281 "bison_parser.cpp" /* yacc.c:1646 */ +#line 705 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.order_vec) = nullptr; } +#line 3294 "bison_parser.cpp" /* yacc.c:1666 */ break; case 96: -#line 716 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = nullptr; } -#line 3287 "bison_parser.cpp" /* yacc.c:1646 */ +#line 709 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } +#line 3300 "bison_parser.cpp" /* yacc.c:1666 */ break; case 97: -#line 720 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } -#line 3293 "bison_parser.cpp" /* yacc.c:1646 */ +#line 710 "bison_parser.y" /* yacc.c:1666 */ + { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } +#line 3306 "bison_parser.cpp" /* yacc.c:1666 */ break; 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 3299 "bison_parser.cpp" /* yacc.c:1646 */ +#line 714 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } +#line 3312 "bison_parser.cpp" /* yacc.c:1666 */ break; case 99: -#line 722 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } -#line 3305 "bison_parser.cpp" /* yacc.c:1646 */ +#line 718 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.order_type) = kOrderAsc; } +#line 3318 "bison_parser.cpp" /* yacc.c:1666 */ break; case 100: -#line 723 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = nullptr; } -#line 3311 "bison_parser.cpp" /* yacc.c:1646 */ +#line 719 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.order_type) = kOrderDesc; } +#line 3324 "bison_parser.cpp" /* yacc.c:1666 */ break; case 101: -#line 724 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = nullptr; } -#line 3317 "bison_parser.cpp" /* yacc.c:1646 */ +#line 720 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.order_type) = kOrderAsc; } +#line 3330 "bison_parser.cpp" /* yacc.c:1666 */ break; case 102: -#line 725 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } -#line 3323 "bison_parser.cpp" /* yacc.c:1646 */ +#line 726 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } +#line 3336 "bison_parser.cpp" /* yacc.c:1666 */ break; case 103: -#line 726 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } -#line 3329 "bison_parser.cpp" /* yacc.c:1646 */ +#line 727 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.limit) = nullptr; } +#line 3342 "bison_parser.cpp" /* yacc.c:1666 */ break; case 104: -#line 727 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.limit) = nullptr; } -#line 3335 "bison_parser.cpp" /* yacc.c:1646 */ +#line 731 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } +#line 3348 "bison_parser.cpp" /* yacc.c:1666 */ 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 3341 "bison_parser.cpp" /* yacc.c:1646 */ +#line 732 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.limit) = new LimitDescription((yyvsp[-2].expr)->ival, (yyvsp[0].expr)->ival); delete (yyvsp[-2].expr); delete (yyvsp[0].expr); } +#line 3354 "bison_parser.cpp" /* yacc.c:1666 */ 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 3347 "bison_parser.cpp" /* yacc.c:1646 */ +#line 733 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } +#line 3360 "bison_parser.cpp" /* yacc.c:1666 */ 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 3353 "bison_parser.cpp" /* yacc.c:1646 */ +#line 734 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.limit) = nullptr; } +#line 3366 "bison_parser.cpp" /* yacc.c:1666 */ 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 3359 "bison_parser.cpp" /* yacc.c:1646 */ +#line 735 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.limit) = nullptr; } +#line 3372 "bison_parser.cpp" /* yacc.c:1666 */ break; case 109: -#line 744 "bison_parser.y" /* yacc.c:1646 */ +#line 736 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } +#line 3378 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 110: +#line 737 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } +#line 3384 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 111: +#line 738 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.limit) = nullptr; } +#line 3390 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 112: +#line 745 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 3396 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 113: +#line 746 "bison_parser.y" /* yacc.c:1666 */ + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 3402 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 114: +#line 750 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 3408 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 115: +#line 751 "bison_parser.y" /* yacc.c:1666 */ + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 3414 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 116: +#line 755 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -3367,403 +3422,403 @@ yyreduce: delete (yyvsp[0].alias_t); } } -#line 3371 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3426 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 115: -#line 762 "bison_parser.y" /* yacc.c:1646 */ + case 122: +#line 773 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = (yyvsp[-1].expr); } -#line 3377 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 124: -#line 771 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 3383 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 127: -#line 780 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 3389 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 128: -#line 781 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 3395 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 129: -#line 782 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 3401 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 130: -#line 783 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 3407 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3432 "bison_parser.cpp" /* yacc.c:1666 */ break; case 131: -#line 784 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 3413 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 133: -#line 789 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 3419 "bison_parser.cpp" /* yacc.c:1646 */ +#line 782 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } +#line 3438 "bison_parser.cpp" /* yacc.c:1666 */ break; case 134: -#line 790 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 3425 "bison_parser.cpp" /* yacc.c:1646 */ +#line 791 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } +#line 3444 "bison_parser.cpp" /* yacc.c:1666 */ break; case 135: -#line 791 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 3431 "bison_parser.cpp" /* yacc.c:1646 */ +#line 792 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } +#line 3450 "bison_parser.cpp" /* yacc.c:1666 */ break; case 136: -#line 792 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 3437 "bison_parser.cpp" /* yacc.c:1646 */ +#line 793 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } +#line 3456 "bison_parser.cpp" /* yacc.c:1666 */ break; case 137: -#line 793 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 3443 "bison_parser.cpp" /* yacc.c:1646 */ +#line 794 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } +#line 3462 "bison_parser.cpp" /* yacc.c:1666 */ break; case 138: -#line 794 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 3449 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 139: -#line 795 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 3455 "bison_parser.cpp" /* yacc.c:1646 */ +#line 795 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } +#line 3468 "bison_parser.cpp" /* yacc.c:1666 */ break; case 140: -#line 796 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 3461 "bison_parser.cpp" /* yacc.c:1646 */ +#line 800 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } +#line 3474 "bison_parser.cpp" /* yacc.c:1666 */ break; case 141: -#line 797 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 3467 "bison_parser.cpp" /* yacc.c:1646 */ +#line 801 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } +#line 3480 "bison_parser.cpp" /* yacc.c:1666 */ break; case 142: -#line 798 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 3473 "bison_parser.cpp" /* yacc.c:1646 */ +#line 802 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } +#line 3486 "bison_parser.cpp" /* yacc.c:1666 */ break; case 143: -#line 802 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 3479 "bison_parser.cpp" /* yacc.c:1646 */ +#line 803 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } +#line 3492 "bison_parser.cpp" /* yacc.c:1666 */ break; case 144: -#line 803 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 3485 "bison_parser.cpp" /* yacc.c:1646 */ +#line 804 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } +#line 3498 "bison_parser.cpp" /* yacc.c:1666 */ break; case 145: -#line 807 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 3491 "bison_parser.cpp" /* yacc.c:1646 */ +#line 805 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } +#line 3504 "bison_parser.cpp" /* yacc.c:1666 */ break; 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 3497 "bison_parser.cpp" /* yacc.c:1646 */ +#line 806 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } +#line 3510 "bison_parser.cpp" /* yacc.c:1666 */ break; case 147: -#line 809 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 3503 "bison_parser.cpp" /* yacc.c:1646 */ +#line 807 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } +#line 3516 "bison_parser.cpp" /* yacc.c:1666 */ break; 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 3509 "bison_parser.cpp" /* yacc.c:1646 */ +#line 808 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } +#line 3522 "bison_parser.cpp" /* yacc.c:1666 */ break; case 149: -#line 816 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 3515 "bison_parser.cpp" /* yacc.c:1646 */ +#line 809 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } +#line 3528 "bison_parser.cpp" /* yacc.c:1666 */ break; case 150: -#line 817 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 3521 "bison_parser.cpp" /* yacc.c:1646 */ +#line 813 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } +#line 3534 "bison_parser.cpp" /* yacc.c:1666 */ break; case 151: -#line 818 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 3527 "bison_parser.cpp" /* yacc.c:1646 */ +#line 814 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } +#line 3540 "bison_parser.cpp" /* yacc.c:1666 */ break; case 152: -#line 819 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 3533 "bison_parser.cpp" /* yacc.c:1646 */ +#line 818 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } +#line 3546 "bison_parser.cpp" /* yacc.c:1666 */ break; case 153: -#line 823 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 3539 "bison_parser.cpp" /* yacc.c:1646 */ +#line 819 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } +#line 3552 "bison_parser.cpp" /* yacc.c:1666 */ break; 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 3545 "bison_parser.cpp" /* yacc.c:1646 */ +#line 820 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } +#line 3558 "bison_parser.cpp" /* yacc.c:1666 */ break; case 155: -#line 828 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 3551 "bison_parser.cpp" /* yacc.c:1646 */ +#line 821 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } +#line 3564 "bison_parser.cpp" /* yacc.c:1666 */ break; case 156: -#line 829 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 3557 "bison_parser.cpp" /* yacc.c:1646 */ +#line 827 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } +#line 3570 "bison_parser.cpp" /* yacc.c:1666 */ break; case 157: -#line 833 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 3563 "bison_parser.cpp" /* yacc.c:1646 */ +#line 828 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } +#line 3576 "bison_parser.cpp" /* yacc.c:1666 */ break; case 158: -#line 834 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 3569 "bison_parser.cpp" /* yacc.c:1646 */ +#line 829 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } +#line 3582 "bison_parser.cpp" /* yacc.c:1666 */ break; case 159: -#line 835 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 3575 "bison_parser.cpp" /* yacc.c:1646 */ +#line 830 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } +#line 3588 "bison_parser.cpp" /* yacc.c:1666 */ break; case 160: -#line 836 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 3581 "bison_parser.cpp" /* yacc.c:1646 */ +#line 834 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } +#line 3594 "bison_parser.cpp" /* yacc.c:1666 */ break; case 161: -#line 837 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 3587 "bison_parser.cpp" /* yacc.c:1646 */ +#line 835 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } +#line 3600 "bison_parser.cpp" /* yacc.c:1666 */ break; case 162: -#line 838 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 3593 "bison_parser.cpp" /* yacc.c:1646 */ +#line 839 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } +#line 3606 "bison_parser.cpp" /* yacc.c:1666 */ break; case 163: -#line 839 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 3599 "bison_parser.cpp" /* yacc.c:1646 */ +#line 840 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } +#line 3612 "bison_parser.cpp" /* yacc.c:1666 */ break; case 164: -#line 843 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } -#line 3605 "bison_parser.cpp" /* yacc.c:1646 */ +#line 844 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } +#line 3618 "bison_parser.cpp" /* yacc.c:1666 */ break; 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 3611 "bison_parser.cpp" /* yacc.c:1646 */ +#line 845 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } +#line 3624 "bison_parser.cpp" /* yacc.c:1666 */ break; case 166: -#line 848 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 3617 "bison_parser.cpp" /* yacc.c:1646 */ +#line 846 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } +#line 3630 "bison_parser.cpp" /* yacc.c:1666 */ break; case 167: -#line 852 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.datetime_field) = kDatetimeSecond; } -#line 3623 "bison_parser.cpp" /* yacc.c:1646 */ +#line 847 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } +#line 3636 "bison_parser.cpp" /* yacc.c:1666 */ break; case 168: -#line 853 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.datetime_field) = kDatetimeMinute; } -#line 3629 "bison_parser.cpp" /* yacc.c:1646 */ +#line 848 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } +#line 3642 "bison_parser.cpp" /* yacc.c:1666 */ break; case 169: -#line 854 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.datetime_field) = kDatetimeHour; } -#line 3635 "bison_parser.cpp" /* yacc.c:1646 */ +#line 849 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } +#line 3648 "bison_parser.cpp" /* yacc.c:1666 */ break; case 170: -#line 855 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.datetime_field) = kDatetimeDay; } -#line 3641 "bison_parser.cpp" /* yacc.c:1646 */ +#line 850 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } +#line 3654 "bison_parser.cpp" /* yacc.c:1666 */ break; case 171: -#line 856 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.datetime_field) = kDatetimeMonth; } -#line 3647 "bison_parser.cpp" /* yacc.c:1646 */ +#line 854 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } +#line 3660 "bison_parser.cpp" /* yacc.c:1666 */ break; case 172: -#line 857 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.datetime_field) = kDatetimeYear; } -#line 3653 "bison_parser.cpp" /* yacc.c:1646 */ +#line 855 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } +#line 3666 "bison_parser.cpp" /* yacc.c:1666 */ break; case 173: -#line 860 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 3659 "bison_parser.cpp" /* yacc.c:1646 */ +#line 859 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } +#line 3672 "bison_parser.cpp" /* yacc.c:1666 */ break; case 174: -#line 864 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 3665 "bison_parser.cpp" /* yacc.c:1646 */ +#line 863 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.datetime_field) = kDatetimeSecond; } +#line 3678 "bison_parser.cpp" /* yacc.c:1666 */ 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 3671 "bison_parser.cpp" /* yacc.c:1646 */ +#line 864 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.datetime_field) = kDatetimeMinute; } +#line 3684 "bison_parser.cpp" /* yacc.c:1666 */ break; case 176: -#line 872 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 3677 "bison_parser.cpp" /* yacc.c:1646 */ +#line 865 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.datetime_field) = kDatetimeHour; } +#line 3690 "bison_parser.cpp" /* yacc.c:1666 */ break; case 177: -#line 873 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 3683 "bison_parser.cpp" /* yacc.c:1646 */ +#line 866 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.datetime_field) = kDatetimeDay; } +#line 3696 "bison_parser.cpp" /* yacc.c:1666 */ break; case 178: -#line 874 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeStar(); } -#line 3689 "bison_parser.cpp" /* yacc.c:1646 */ +#line 867 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.datetime_field) = kDatetimeMonth; } +#line 3702 "bison_parser.cpp" /* yacc.c:1666 */ break; case 179: -#line 875 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 3695 "bison_parser.cpp" /* yacc.c:1646 */ +#line 868 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.datetime_field) = kDatetimeYear; } +#line 3708 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 180: +#line 871 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } +#line 3714 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 181: +#line 875 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } +#line 3720 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 182: +#line 879 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 3726 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 183: +#line 883 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } +#line 3732 "bison_parser.cpp" /* yacc.c:1666 */ break; case 184: -#line 886 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 3701 "bison_parser.cpp" /* yacc.c:1646 */ +#line 884 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } +#line 3738 "bison_parser.cpp" /* yacc.c:1666 */ break; case 185: -#line 891 "bison_parser.y" /* yacc.c:1646 */ +#line 885 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeStar(); } +#line 3744 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 186: +#line 886 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } +#line 3750 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 191: +#line 897 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } +#line 3756 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 192: +#line 902 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 3707 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3762 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 187: -#line 896 "bison_parser.y" /* yacc.c:1646 */ + case 194: +#line 907 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 3713 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3768 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 188: -#line 900 "bison_parser.y" /* yacc.c:1646 */ + case 195: +#line 911 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeNullLiteral(); } -#line 3719 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3774 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 189: -#line 904 "bison_parser.y" /* yacc.c:1646 */ + case 196: +#line 915 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); yyloc.param_list.push_back((yyval.expr)); } -#line 3729 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3784 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 191: -#line 917 "bison_parser.y" /* yacc.c:1646 */ + case 198: +#line 928 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); auto tbl = new TableRef(kTableCrossProduct); tbl->list = (yyvsp[-2].table_vec); (yyval.table) = tbl; } -#line 3740 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3795 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 195: -#line 933 "bison_parser.y" /* yacc.c:1646 */ + case 202: +#line 944 "bison_parser.y" /* yacc.c:1666 */ { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 3751 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3806 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 196: -#line 942 "bison_parser.y" /* yacc.c:1646 */ + case 203: +#line 953 "bison_parser.y" /* yacc.c:1666 */ { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 3757 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3812 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 197: -#line 943 "bison_parser.y" /* yacc.c:1646 */ + case 204: +#line 954 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 3763 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3818 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 198: -#line 948 "bison_parser.y" /* yacc.c:1646 */ + case 205: +#line 959 "bison_parser.y" /* yacc.c:1666 */ { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -3771,63 +3826,63 @@ yyreduce: tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 3775 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3830 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 199: -#line 959 "bison_parser.y" /* yacc.c:1646 */ + case 206: +#line 970 "bison_parser.y" /* yacc.c:1666 */ { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; (yyval.table)->name = (yyvsp[0].table_name).name; } -#line 3785 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 200: -#line 968 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} -#line 3791 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 201: -#line 969 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 3797 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 203: -#line 975 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 3803 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 205: -#line 981 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.alias_t) = nullptr; } -#line 3809 "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 3815 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3840 "bison_parser.cpp" /* yacc.c:1666 */ break; case 207: -#line 986 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 3821 "bison_parser.cpp" /* yacc.c:1646 */ +#line 979 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} +#line 3846 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 209: -#line 992 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.alias_t) = nullptr; } -#line 3827 "bison_parser.cpp" /* yacc.c:1646 */ + case 208: +#line 980 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } +#line 3852 "bison_parser.cpp" /* yacc.c:1666 */ break; case 210: -#line 1001 "bison_parser.y" /* yacc.c:1646 */ +#line 986 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } +#line 3858 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 212: +#line 992 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.alias_t) = nullptr; } +#line 3864 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 213: +#line 996 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } +#line 3870 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 214: +#line 997 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } +#line 3876 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 216: +#line 1003 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.alias_t) = nullptr; } +#line 3882 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 217: +#line 1012 "bison_parser.y" /* yacc.c:1666 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3835,11 +3890,11 @@ yyreduce: (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 3839 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3894 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 211: -#line 1009 "bison_parser.y" /* yacc.c:1646 */ + case 218: +#line 1020 "bison_parser.y" /* yacc.c:1666 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3848,11 +3903,11 @@ yyreduce: (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 3852 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3907 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 212: -#line 1019 "bison_parser.y" /* yacc.c:1646 */ + case 219: +#line 1030 "bison_parser.y" /* yacc.c:1666 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3868,83 +3923,83 @@ yyreduce: (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 3872 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 213: -#line 1037 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinInner; } -#line 3878 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 214: -#line 1038 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinLeft; } -#line 3884 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 215: -#line 1039 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinLeft; } -#line 3890 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 216: -#line 1040 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinRight; } -#line 3896 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 217: -#line 1041 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinRight; } -#line 3902 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 218: -#line 1042 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinFull; } -#line 3908 "bison_parser.cpp" /* yacc.c:1646 */ - break; - - case 219: -#line 1043 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinFull; } -#line 3914 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3927 "bison_parser.cpp" /* yacc.c:1666 */ break; case 220: -#line 1044 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinFull; } -#line 3920 "bison_parser.cpp" /* yacc.c:1646 */ +#line 1048 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinInner; } +#line 3933 "bison_parser.cpp" /* yacc.c:1666 */ break; case 221: -#line 1045 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinCross; } -#line 3926 "bison_parser.cpp" /* yacc.c:1646 */ +#line 1049 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinLeft; } +#line 3939 "bison_parser.cpp" /* yacc.c:1666 */ break; case 222: -#line 1046 "bison_parser.y" /* yacc.c:1646 */ - { (yyval.uval) = kJoinInner; } -#line 3932 "bison_parser.cpp" /* yacc.c:1646 */ +#line 1050 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinLeft; } +#line 3945 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 223: +#line 1051 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinRight; } +#line 3951 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 224: +#line 1052 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinRight; } +#line 3957 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 225: +#line 1053 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinFull; } +#line 3963 "bison_parser.cpp" /* yacc.c:1666 */ 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 3938 "bison_parser.cpp" /* yacc.c:1646 */ +#line 1054 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinFull; } +#line 3969 "bison_parser.cpp" /* yacc.c:1666 */ break; case 227: -#line 1067 "bison_parser.y" /* yacc.c:1646 */ +#line 1055 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinFull; } +#line 3975 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 228: +#line 1056 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinCross; } +#line 3981 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 229: +#line 1057 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinInner; } +#line 3987 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 233: +#line 1077 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } +#line 3993 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 234: +#line 1078 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 3944 "bison_parser.cpp" /* yacc.c:1646 */ +#line 3999 "bison_parser.cpp" /* yacc.c:1666 */ break; -#line 3948 "bison_parser.cpp" /* yacc.c:1646 */ +#line 4003 "bison_parser.cpp" /* yacc.c:1666 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4067,7 +4122,6 @@ yyerrorlab: if (/*CONSTCOND*/ 0) goto yyerrorlab; - yyerror_range[1] = yylsp[1-yylen]; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); @@ -4179,7 +4233,7 @@ yyreturn: #endif return yyresult; } -#line 1070 "bison_parser.y" /* yacc.c:1906 */ +#line 1081 "bison_parser.y" /* yacc.c:1910 */ /********************************* ** Section 4: Additional C code diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index c92653c..5b2203c 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.1. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -48,7 +48,7 @@ extern int hsql_debug; #endif /* "%code requires" blocks. */ -#line 35 "bison_parser.y" /* yacc.c:1909 */ +#line 35 "bison_parser.y" /* yacc.c:1919 */ // %code requires block @@ -72,7 +72,7 @@ extern int hsql_debug; } \ } -#line 76 "bison_parser.h" /* yacc.c:1909 */ +#line 76 "bison_parser.h" /* yacc.c:1919 */ /* Token type. */ #ifndef HSQL_TOKENTYPE @@ -107,115 +107,119 @@ extern int hsql_debug; SQL_PRIMARY = 283, SQL_SCHEMAS = 284, SQL_SPATIAL = 285, - SQL_VIRTUAL = 286, - SQL_BEFORE = 287, - SQL_COLUMN = 288, - SQL_CREATE = 289, - SQL_DELETE = 290, - SQL_DIRECT = 291, - SQL_DOUBLE = 292, - SQL_ESCAPE = 293, - SQL_EXCEPT = 294, - SQL_EXISTS = 295, - 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_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_SECOND = 381, - SQL_MINUTE = 382, - SQL_HOUR = 383, - SQL_DAY = 384, - SQL_MONTH = 385, - SQL_YEAR = 386, - SQL_EQUALS = 387, - SQL_NOTEQUALS = 388, - SQL_LESS = 389, - SQL_GREATER = 390, - SQL_LESSEQ = 391, - SQL_GREATEREQ = 392, - SQL_NOTNULL = 393, - SQL_UMINUS = 394 + SQL_VARCHAR = 286, + SQL_VIRTUAL = 287, + SQL_BEFORE = 288, + SQL_COLUMN = 289, + SQL_CREATE = 290, + SQL_DELETE = 291, + SQL_DIRECT = 292, + SQL_DOUBLE = 293, + SQL_ESCAPE = 294, + SQL_EXCEPT = 295, + SQL_EXISTS = 296, + SQL_EXTRACT = 297, + SQL_GLOBAL = 298, + SQL_HAVING = 299, + SQL_IMPORT = 300, + SQL_INSERT = 301, + SQL_ISNULL = 302, + SQL_OFFSET = 303, + SQL_RENAME = 304, + SQL_SCHEMA = 305, + SQL_SELECT = 306, + SQL_SORTED = 307, + SQL_TABLES = 308, + SQL_UNIQUE = 309, + SQL_UNLOAD = 310, + SQL_UPDATE = 311, + SQL_VALUES = 312, + SQL_AFTER = 313, + SQL_ALTER = 314, + SQL_CROSS = 315, + SQL_DELTA = 316, + SQL_FLOAT = 317, + SQL_GROUP = 318, + SQL_INDEX = 319, + SQL_INNER = 320, + SQL_LIMIT = 321, + SQL_LOCAL = 322, + SQL_MERGE = 323, + SQL_MINUS = 324, + SQL_ORDER = 325, + SQL_OUTER = 326, + SQL_RIGHT = 327, + SQL_TABLE = 328, + SQL_UNION = 329, + SQL_USING = 330, + SQL_WHERE = 331, + SQL_CALL = 332, + SQL_CASE = 333, + SQL_CHAR = 334, + SQL_DATE = 335, + SQL_DESC = 336, + SQL_DROP = 337, + SQL_ELSE = 338, + SQL_FILE = 339, + SQL_FROM = 340, + SQL_FULL = 341, + SQL_HASH = 342, + SQL_HINT = 343, + SQL_INTO = 344, + SQL_JOIN = 345, + SQL_LEFT = 346, + SQL_LIKE = 347, + SQL_LOAD = 348, + SQL_LONG = 349, + SQL_NULL = 350, + SQL_PLAN = 351, + SQL_SHOW = 352, + SQL_TEXT = 353, + SQL_THEN = 354, + SQL_TIME = 355, + SQL_VIEW = 356, + SQL_WHEN = 357, + SQL_WITH = 358, + SQL_ADD = 359, + SQL_ALL = 360, + SQL_AND = 361, + SQL_ASC = 362, + SQL_CSV = 363, + SQL_END = 364, + SQL_FOR = 365, + SQL_INT = 366, + SQL_KEY = 367, + SQL_NOT = 368, + SQL_OFF = 369, + SQL_SET = 370, + SQL_TBL = 371, + SQL_TOP = 372, + SQL_AS = 373, + SQL_BY = 374, + SQL_IF = 375, + SQL_IN = 376, + SQL_IS = 377, + SQL_OF = 378, + SQL_ON = 379, + SQL_OR = 380, + SQL_TO = 381, + SQL_ARRAY = 382, + SQL_CONCAT = 383, + SQL_ILIKE = 384, + SQL_SECOND = 385, + SQL_MINUTE = 386, + SQL_HOUR = 387, + SQL_DAY = 388, + SQL_MONTH = 389, + SQL_YEAR = 390, + SQL_EQUALS = 391, + SQL_NOTEQUALS = 392, + SQL_LESS = 393, + SQL_GREATER = 394, + SQL_LESSEQ = 395, + SQL_GREATEREQ = 396, + SQL_NOTNULL = 397, + SQL_UMINUS = 398 }; #endif @@ -224,7 +228,7 @@ extern int hsql_debug; union HSQL_STYPE { -#line 95 "bison_parser.y" /* yacc.c:1909 */ +#line 95 "bison_parser.y" /* yacc.c:1919 */ double fval; int64_t ival; @@ -252,6 +256,7 @@ union HSQL_STYPE hsql::DatetimeField datetime_field; hsql::LimitDescription* limit; hsql::ColumnDefinition* column_t; + hsql::ColumnType column_type_t; hsql::GroupByDescription* group_t; hsql::UpdateClause* update_t; hsql::Alias* alias_t; @@ -265,7 +270,7 @@ union HSQL_STYPE std::vector* expr_vec; std::vector* order_vec; -#line 269 "bison_parser.h" /* yacc.c:1909 */ +#line 274 "bison_parser.h" /* yacc.c:1919 */ }; typedef union HSQL_STYPE HSQL_STYPE; diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 400c781..d7c4fba 100755 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -119,6 +119,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha hsql::DatetimeField datetime_field; hsql::LimitDescription* limit; hsql::ColumnDefinition* column_t; + hsql::ColumnType column_type_t; hsql::GroupByDescription* group_t; hsql::UpdateClause* update_t; hsql::Alias* alias_t; @@ -137,7 +138,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,14 +164,14 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %token DISTINCT NVARCHAR RESTRICT TRUNCATE ANALYZE BETWEEN %token CASCADE COLUMNS CONTROL DEFAULT EXECUTE EXPLAIN %token HISTORY INTEGER NATURAL PREPARE PRIMARY SCHEMAS -%token SPATIAL VIRTUAL BEFORE COLUMN CREATE DELETE DIRECT +%token SPATIAL VARCHAR VIRTUAL BEFORE COLUMN CREATE DELETE DIRECT %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 -%token OUTER RIGHT TABLE UNION USING WHERE CALL CASE DATE +%token DELTA FLOAT GROUP INDEX INNER LIMIT LOCAL MERGE MINUS ORDER +%token OUTER RIGHT TABLE UNION USING WHERE CALL CASE CHAR DATE %token DESC DROP ELSE FILE FROM FULL HASH HINT INTO JOIN -%token LEFT LIKE LOAD NULL PLAN SHOW TEXT THEN TIME +%token LEFT LIKE LOAD LONG NULL 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 SECOND MINUTE HOUR DAY MONTH YEAR @@ -178,37 +179,38 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha /********************************* ** Non-Terminal types (http://www.gnu.org/software/bison/manual/html_node/Type-Decl.html) *********************************/ -%type statement_list -%type statement preparable_statement -%type execute_statement -%type prepare_statement -%type select_statement select_with_paren select_no_paren select_clause select_paren_or_clause -%type import_statement -%type create_statement -%type insert_statement -%type delete_statement truncate_statement -%type update_statement -%type drop_statement -%type show_statement -%type table_name -%type file_path prepare_target_query -%type opt_not_exists opt_exists opt_distinct -%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 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 -%type array_expr array_index null_literal -%type opt_limit opt_top -%type order_desc -%type opt_order_type +%type statement_list +%type statement preparable_statement +%type execute_statement +%type prepare_statement +%type select_statement select_with_paren select_no_paren select_clause select_paren_or_clause +%type import_statement +%type create_statement +%type insert_statement +%type delete_statement truncate_statement +%type update_statement +%type drop_statement +%type show_statement +%type table_name +%type file_path prepare_target_query +%type opt_not_exists opt_exists opt_distinct opt_column_nullable +%type import_file_type opt_join_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 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 +%type array_expr array_index null_literal +%type opt_limit opt_top +%type order_desc +%type opt_order_type %type datetime_field -%type column_def -%type update_clause -%type opt_group -%type opt_table_alias table_alias opt_alias alias +%type column_def +%type column_type +%type update_clause +%type opt_group +%type opt_table_alias table_alias opt_alias alias %type ident_commalist opt_column_list %type expr_list select_list literal_list hint_list opt_hints @@ -444,17 +446,26 @@ column_def_commalist: ; column_def: - IDENTIFIER column_type { - $$ = new ColumnDefinition($1, (ColumnDefinition::DataType) $2); + IDENTIFIER column_type opt_column_nullable { + $$ = new ColumnDefinition($1, $2, $3); } ; - column_type: - INT { $$ = ColumnDefinition::INT; } - | INTEGER { $$ = ColumnDefinition::INT; } - | DOUBLE { $$ = ColumnDefinition::DOUBLE; } - | TEXT { $$ = ColumnDefinition::TEXT; } + INT { $$ = ColumnType{DataType::INT}; } + | INTEGER { $$ = ColumnType{DataType::INT}; } + | LONG { $$ = ColumnType{DataType::LONG}; } + | FLOAT { $$ = ColumnType{DataType::FLOAT}; } + | DOUBLE { $$ = ColumnType{DataType::DOUBLE}; } + | VARCHAR '(' INTVAL ')' { $$ = ColumnType{DataType::VARCHAR, $3}; } + | CHAR '(' INTVAL ')' { $$ = ColumnType{DataType::CHAR, $3}; } + | TEXT { $$ = ColumnType{DataType::TEXT}; } + ; + +opt_column_nullable: + NULL { $$ = true; } + | NOT NULL { $$ = false; } + | /* empty */ { $$ = false; } ; /****************************** diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index 57369b8..059c6b0 100644 --- a/src/parser/flex_lexer.cpp +++ b/src/parser/flex_lexer.cpp @@ -1,6 +1,6 @@ -#line 2 "flex_lexer.cpp" +#line 1 "flex_lexer.cpp" -#line 4 "flex_lexer.cpp" +#line 3 "flex_lexer.cpp" #define YY_INT_ALIGNED short int @@ -573,8 +573,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 143 -#define YY_END_OF_BUFFER 144 +#define YY_NUM_RULES 145 +#define YY_END_OF_BUFFER 146 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -582,27 +582,27 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[986] = +static const flex_int16_t yy_accept[1002] = { 0, - 0, 0, 2, 2, 144, 142, 4, 4, 142, 142, - 135, 142, 135, 135, 138, 135, 135, 135, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 135, 2, 2, 3, 2, 2, 2, 2, + 0, 0, 2, 2, 146, 144, 4, 4, 144, 144, + 137, 144, 137, 137, 140, 137, 137, 137, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 137, 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, 2, - 2, 4, 130, 0, 0, 141, 1, 138, 137, 136, - 132, 131, 129, 133, 140, 140, 140, 140, 140, 140, + 2, 4, 132, 0, 0, 143, 1, 140, 139, 138, + 134, 133, 131, 135, 142, 142, 142, 142, 142, 142, - 114, 140, 115, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 116, 140, 140, 117, 118, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 119, 120, 121, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 122, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 134, 2, 2, 2, 2, 2, 2, 1, 2, + 116, 142, 117, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 118, 142, 142, 119, + 120, 142, 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 121, 122, 123, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 124, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 136, 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, @@ -612,19 +612,19 @@ static const flex_int16_t yy_accept[986] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 139, 136, 100, 140, 101, 140, - 140, 102, 140, 103, 140, 140, 140, 140, 140, 140, - 140, 140, 104, 140, 126, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 105, 140, 140, 140, 140, 140, + 2, 2, 2, 2, 2, 2, 141, 138, 102, 142, + 103, 142, 142, 104, 142, 105, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 106, 142, 128, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 107, 142, 142, - 140, 140, 106, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 107, 140, 140, - 108, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 109, 140, 140, 110, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 111, 140, 140, 140, - 140, 112, 140, 140, 140, 140, 113, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 142, 142, 142, 142, 142, 108, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, + 109, 142, 142, 110, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 111, 142, 142, 112, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 113, + 142, 142, 142, 142, 114, 142, 142, 142, 142, 115, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -635,18 +635,18 @@ static const flex_int16_t yy_accept[986] = 2, 2, 2, 2, 2, 2, 2, 2, 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, 140, 140, 140, 140, 140, 74, 140, - 75, 140, 140, 140, 140, 76, 140, 140, 140, 140, - 77, 140, 140, 140, 78, 79, 140, 140, 140, 140, + 2, 2, 2, 2, 2, 2, 2, 2, 142, 142, + 142, 142, 142, 142, 75, 142, 76, 77, 142, 142, + 142, 142, 78, 142, 142, 142, 142, 79, 142, 142, - 140, 140, 80, 81, 82, 140, 140, 83, 140, 84, - 140, 125, 140, 140, 140, 140, 140, 140, 85, 140, - 86, 87, 88, 140, 90, 140, 140, 140, 140, 140, - 91, 140, 140, 140, 140, 140, 92, 140, 140, 140, - 140, 140, 140, 140, 140, 93, 140, 140, 140, 140, - 94, 95, 96, 140, 140, 140, 140, 140, 140, 140, - 97, 140, 98, 140, 99, 128, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 142, 80, 81, 142, 142, 142, 142, 142, 142, 82, + 83, 84, 142, 142, 85, 142, 86, 142, 127, 142, + 142, 142, 142, 142, 142, 87, 142, 88, 89, 90, + 142, 92, 142, 142, 142, 142, 142, 93, 142, 142, + 142, 142, 142, 94, 142, 142, 142, 142, 142, 142, + 142, 142, 95, 142, 142, 142, 142, 96, 97, 98, + 142, 142, 142, 142, 142, 142, 142, 142, 99, 142, + 100, 142, 101, 130, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -656,42 +656,45 @@ static const flex_int16_t yy_accept[986] = 2, 2, 2, 2, 2, 2, 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, 140, 57, 140, 140, 140, 140, 140, 140, - 58, 140, 140, 140, 59, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 60, 140, 140, 89, 140, - 61, 62, 140, 140, 140, 140, 63, 64, 65, 66, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 56, 57, 142, 58, 142, 142, 142, 142, 142, 142, + 59, 142, 142, 142, 60, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 61, 142, 142, 91, 142, - 140, 127, 140, 140, 140, 67, 68, 140, 140, 140, - 140, 140, 69, 140, 140, 140, 140, 140, 70, 140, - 140, 140, 71, 140, 140, 140, 72, 140, 140, 73, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 62, 63, 142, 142, 142, 142, 64, 65, 66, 67, + 142, 129, 142, 142, 142, 68, 69, 142, 142, 142, + 142, 142, 70, 142, 142, 142, 142, 142, 71, 142, + 142, 142, 72, 142, 142, 142, 73, 142, 142, 142, + 74, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 30, 140, 140, 31, 140, 32, 140, 140, 33, - 34, 140, 35, 36, 37, 140, 38, 140, 140, 40, - 41, 140, 42, 43, 140, 140, 44, 124, 140, 140, - 45, 140, 140, 140, 46, 140, 47, 123, 48, 49, - 140, 50, 140, 140, 140, 51, 52, 53, 54, 140, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 142, 31, 142, 142, 32, 142, 33, 142, + 142, 34, 35, 142, 36, 37, 38, 142, 39, 142, + 142, 41, 42, 142, 43, 44, 142, 142, 45, 126, + 142, 142, 46, 142, 142, 142, 47, 142, 48, 125, + 49, 50, 142, 51, 142, 142, 142, 52, 53, 54, + 55, 142, 142, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 140, 19, 140, 20, 21, - 39, 22, 23, 140, 24, 140, 140, 25, 26, 140, - 27, 28, 140, 140, 140, 29, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 14, 15, 16, 17, 18, 142, + 19, 142, 20, 21, 40, 22, 23, 142, 24, 142, + 142, 25, 26, 142, 27, 28, 142, 142, 142, 29, + 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 140, 10, 140, 11, 140, 12, 140, 140, - 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 140, 7, 140, 8, 9, 2, 2, 2, 2, 2, - 5, 6, 2, 2, 0 + 2, 2, 2, 2, 2, 2, 2, 2, 142, 10, + 142, 11, 142, 12, 142, 142, 13, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 142, 7, 142, 8, + 9, 2, 2, 2, 2, 2, 5, 6, 2, 2, + + 0 } ; static const YY_CHAR yy_ec[256] = @@ -737,142 +740,143 @@ static const YY_CHAR yy_meta[68] = 4, 4, 4, 4, 4, 4, 1 } ; -static const flex_int16_t yy_base[993] = +static const flex_int16_t yy_base[1009] = { 0, - 0, 0, 67, 0, 523, 3916, 133, 135, 462, 0, - 3916, 463, 131, 456, 133, 132, 451, 434, 129, 129, - 137, 135, 145, 179, 127, 184, 189, 131, 144, 201, - 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, 3916, 279, 246, 3916, 3916, 306, 226, 207, - 3916, 3916, 3916, 3916, 0, 243, 280, 359, 438, 293, + 0, 0, 67, 0, 426, 3957, 133, 135, 405, 0, + 3957, 373, 131, 366, 133, 132, 358, 357, 129, 129, + 137, 135, 145, 179, 175, 189, 189, 124, 141, 201, + 204, 217, 235, 243, 0, 242, 276, 319, 244, 198, + 261, 144, 284, 0, 222, 283, 311, 315, 0, 301, + 253, 289, 297, 299, 276, 268, 377, 444, 498, 550, + 598, 646, 297, 373, 694, 298, 153, 375, 436, 746, + 794, 445, 300, 449, 844, 896, 486, 544, 457, 354, + 210, 311, 3957, 265, 260, 3957, 3957, 320, 255, 245, + 3957, 3957, 3957, 3957, 0, 258, 257, 373, 393, 294, - 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, 3916, 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, + 311, 447, 0, 314, 330, 496, 387, 313, 487, 551, + 441, 366, 384, 384, 424, 445, 551, 440, 438, 480, + 492, 499, 500, 539, 585, 498, 0, 511, 505, 587, + 548, 557, 548, 599, 598, 612, 590, 600, 602, 599, + 600, 609, 624, 621, 0, 625, 625, 635, 656, 653, + 646, 652, 655, 663, 653, 651, 669, 672, 664, 691, + 700, 696, 695, 691, 705, 712, 709, 710, 732, 716, + 705, 728, 3957, 0, 354, 0, 231, 198, 0, 0, + 349, 192, 154, 0, 0, 0, 0, 754, 758, 755, + 791, 836, 799, 850, 887, 796, 898, 804, 901, 930, - 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, 3916, 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, + 924, 938, 990, 942, 972, 974, 946, 976, 1000, 1050, + 1009, 1022, 1053, 1032, 1058, 1064, 1082, 1094, 1104, 884, + 1040, 1107, 1156, 1113, 1112, 1117, 1152, 1142, 1188, 1174, + 1196, 1200, 1202, 1204, 1218, 1210, 1239, 1146, 1242, 1255, + 1258, 1254, 1256, 1279, 1290, 1291, 1309, 1312, 1327, 1308, + 1333, 1341, 1344, 1253, 1342, 1365, 1366, 1394, 1384, 1395, + 1416, 1407, 1397, 1418, 1439, 0, 3957, 145, 0, 725, + 0, 749, 746, 0, 764, 0, 751, 747, 779, 954, + 827, 829, 834, 856, 839, 0, 858, 0, 861, 890, + 1030, 892, 922, 963, 1009, 996, 1014, 0, 1032, 1083, - 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, 1477, 1465, 1464, 1468, - 1481, 1464, 1477, 1485, 1477, 1489, 0, 1472, 1478, 1480, - 1489, 0, 1486, 1483, 1496, 1508, 0, 1500, 1501, 1500, - 1519, 1509, 1503, 1503, 1511, 1518, 1525, 1516, 0, 140, - 1530, 1539, 1541, 1543, 1544, 1547, 1569, 1552, 1573, 1584, - 1598, 1587, 1581, 1606, 1617, 1595, 1603, 1619, 1627, 1649, - 1655, 1643, 1659, 1641, 1672, 1680, 1697, 1671, 1689, 1705, + 1100, 1122, 1151, 1155, 1207, 0, 1288, 1338, 1349, 1362, + 1378, 1415, 1415, 1422, 1427, 1442, 1439, 1451, 1452, 1453, + 1458, 1439, 1452, 0, 1454, 1470, 1467, 1473, 1477, 1472, + 1461, 1466, 1467, 0, 1477, 1474, 1475, 1490, 1491, 1496, + 1484, 1483, 1494, 1507, 1490, 1503, 1507, 1499, 1512, 0, + 1495, 1500, 1507, 1516, 0, 1513, 1510, 1517, 1527, 0, + 1519, 1525, 1521, 1542, 1532, 1527, 1546, 1527, 1531, 1547, + 1544, 1535, 0, 140, 1557, 1559, 1561, 1569, 1578, 1580, + 1594, 1582, 1591, 1595, 1603, 1599, 1631, 1632, 1634, 1643, + 1633, 1635, 1645, 1657, 1686, 1668, 1683, 1669, 1685, 1687, - 1693, 1723, 1731, 1722, 1726, 1710, 1734, 1747, 1764, 1763, - 1759, 1765, 1776, 1789, 1793, 1801, 1799, 1817, 1818, 1822, - 1830, 1833, 1839, 1847, 1851, 1861, 1852, 1885, 1891, 1900, - 1895, 1909, 1906, 1914, 1919, 1943, 1931, 1935, 1940, 1945, - 1968, 1974, 1969, 1973, 1979, 1997, 2011, 1998, 2003, 2009, - 2022, 2028, 2032, 2051, 2057, 2033, 2043, 2067, 2076, 2068, - 2072, 2097, 2101, 2100, 2122, 2116, 2130, 2135, 2139, 2151, - 2165, 2170, 1520, 1536, 1615, 1618, 1654, 1711, 0, 1792, - 0, 1789, 1862, 1886, 1896, 0, 1952, 2018, 2020, 2106, - 0, 2107, 2103, 2124, 0, 0, 2150, 2156, 2156, 2159, + 1711, 1717, 1699, 1721, 1722, 1723, 1753, 1740, 1752, 1762, + 1736, 1757, 1785, 1788, 1774, 1776, 1807, 1813, 1811, 1828, + 1829, 1830, 1841, 1825, 1839, 1847, 1871, 1873, 1883, 1879, + 1882, 1884, 1901, 1913, 1927, 1915, 1925, 1936, 1937, 1887, + 1959, 1969, 1961, 1938, 1967, 1977, 1990, 1992, 2005, 1995, + 2021, 2031, 2023, 2035, 2027, 2029, 2046, 2060, 2069, 2079, + 2065, 2077, 2083, 2081, 2094, 2100, 2109, 2122, 2123, 2135, + 2137, 2151, 2154, 2148, 2165, 2163, 2186, 2191, 1553, 1660, + 1677, 1719, 1778, 1797, 0, 1899, 0, 0, 1935, 1936, + 1956, 1987, 0, 2004, 2028, 2172, 2192, 0, 2198, 2193, - 2179, 2180, 0, 0, 0, 2183, 2173, 0, 2180, 0, - 2183, 0, 2196, 2187, 2185, 2192, 2194, 2206, 0, 2202, - 0, 0, 0, 2198, 0, 2207, 2215, 2207, 2215, 2211, - 0, 2227, 2226, 2215, 2216, 2222, 0, 2237, 2241, 2230, - 2226, 2228, 2236, 2238, 2252, 0, 2254, 2254, 2259, 2251, - 0, 0, 2248, 2265, 2258, 2252, 2273, 2257, 2271, 2275, - 0, 2260, 0, 2278, 0, 0, 2284, 2293, 2287, 2292, - 2308, 2298, 2309, 2326, 2310, 2342, 2338, 2332, 2361, 2343, - 2360, 2366, 2376, 2372, 2384, 2400, 2397, 2414, 2406, 2410, - 2429, 2432, 2435, 2445, 2446, 2454, 2463, 2464, 2468, 2489, + 2193, 0, 0, 2191, 2194, 2192, 2194, 2221, 2223, 0, + 0, 0, 2224, 2210, 0, 2213, 0, 2215, 0, 2226, + 2215, 2211, 2221, 2224, 2237, 0, 2233, 0, 0, 0, + 2226, 0, 2235, 2243, 2244, 2242, 2238, 0, 2256, 2256, + 2247, 2249, 2255, 0, 2269, 2275, 2265, 2261, 2260, 2268, + 2270, 2282, 0, 2282, 2280, 2288, 2281, 0, 0, 2279, + 2296, 2286, 2280, 2301, 2284, 2302, 2305, 2305, 0, 2294, + 0, 2312, 0, 0, 2314, 2316, 2313, 2325, 2338, 2328, + 2330, 2346, 2344, 2347, 2362, 2368, 2383, 2386, 2384, 2392, + 2401, 2387, 2420, 2418, 2437, 2432, 2446, 2422, 2441, 2470, - 2486, 2480, 2494, 2498, 2519, 2508, 2517, 2534, 2523, 2538, - 2540, 2571, 2532, 2568, 2562, 2563, 2572, 2586, 2576, 2597, - 2594, 2612, 2622, 2616, 2620, 2637, 2638, 2648, 2660, 2666, - 2650, 2676, 2682, 2671, 2704, 2710, 2708, 2712, 2722, 2714, - 2726, 2736, 2738, 2750, 2754, 2762, 2764, 2768, 2790, 2776, - 2798, 2807, 2804, 2808, 2812, 2820, 2830, 2838, 2841, 2842, - 0, 0, 2296, 0, 2327, 2412, 2476, 2490, 2494, 2522, - 0, 2597, 2685, 2745, 0, 2760, 2777, 2816, 2829, 2829, - 2831, 2834, 2848, 2855, 2853, 0, 2862, 2853, 0, 2855, - 0, 0, 2857, 2874, 2862, 2871, 0, 0, 0, 0, + 2471, 2456, 2474, 2500, 2506, 2458, 2487, 2492, 2515, 2525, + 2504, 2528, 2530, 2546, 2540, 2541, 2558, 2570, 2579, 2581, + 2582, 2549, 2600, 2603, 2604, 2612, 2618, 2615, 2636, 2637, + 2652, 2641, 2669, 2653, 2677, 2654, 2678, 2690, 2687, 2686, + 2712, 2723, 2720, 2729, 2711, 2744, 2745, 2762, 2721, 2757, + 2774, 2763, 2775, 2766, 2780, 2797, 2798, 2799, 2814, 2820, + 2833, 2829, 2832, 2851, 2842, 2850, 2863, 2864, 2865, 2868, + 0, 0, 2328, 0, 2353, 2396, 2425, 2441, 2476, 2495, + 0, 2522, 2579, 2649, 0, 2643, 2752, 2828, 2872, 2858, + 2859, 2868, 2882, 2889, 2887, 0, 2894, 2889, 0, 2888, - 2881, 0, 2886, 2880, 2869, 0, 0, 2886, 2877, 2879, - 2894, 2891, 0, 2900, 2899, 2885, 2903, 2908, 2892, 2894, - 2897, 2918, 0, 2915, 2917, 2918, 0, 2906, 2928, 0, - 2926, 2928, 2936, 2932, 2938, 2940, 2950, 2962, 2954, 2966, - 2968, 2980, 2992, 2994, 2996, 3005, 3002, 3004, 3008, 3030, - 3033, 3042, 3054, 3046, 3079, 3064, 3068, 3087, 3076, 3090, - 3082, 3092, 3116, 3098, 3108, 3133, 3121, 3124, 3130, 3142, - 3146, 3152, 3165, 3156, 3175, 3154, 3164, 3178, 3187, 3196, - 3204, 3206, 3208, 3219, 3221, 3229, 3258, 3254, 3218, 3260, - 3252, 3286, 3263, 3269, 3292, 3275, 3288, 3297, 3325, 3303, + 0, 0, 2889, 2905, 2892, 2900, 0, 0, 0, 0, + 2908, 0, 2920, 2914, 2903, 0, 0, 2919, 2907, 2909, + 2924, 2921, 0, 2930, 2928, 2913, 2937, 2941, 2924, 2926, + 2925, 2945, 0, 2942, 2949, 2950, 0, 2942, 2961, 2962, + 0, 2959, 2960, 2961, 2970, 2971, 2972, 2974, 2993, 2995, + 2976, 3004, 3016, 3027, 3010, 3025, 3035, 3039, 3038, 3044, + 3068, 3069, 3067, 3093, 3078, 3092, 3080, 3102, 3117, 3101, + 3118, 3123, 3132, 3136, 3134, 3153, 3135, 3166, 3168, 3171, + 3172, 3176, 3177, 3189, 3187, 3205, 3201, 3202, 3206, 3230, + 3231, 3235, 3241, 3239, 3260, 3264, 3254, 3293, 3279, 3289, - 3010, 0, 3025, 3036, 3026, 3113, 0, 3172, 3198, 0, - 0, 3295, 0, 0, 0, 3304, 0, 3305, 3311, 0, - 0, 3307, 0, 0, 3315, 3329, 0, 0, 3325, 3338, - 0, 3321, 3337, 3320, 0, 3344, 3329, 0, 0, 0, - 3339, 0, 3351, 3353, 3336, 0, 0, 0, 0, 3350, - 3360, 3362, 3366, 3365, 3377, 3381, 3379, 3396, 3383, 3400, - 3411, 3419, 3414, 3422, 3432, 3433, 3435, 3436, 3450, 3437, - 3448, 3451, 3454, 3467, 3473, 3476, 3485, 3488, 3499, 3511, - 3489, 3502, 3510, 3521, 3525, 3542, 3539, 3527, 3543, 3551, - 3575, 3556, 3564, 3565, 3579, 3573, 3577, 3581, 3596, 3607, + 3285, 3295, 3304, 3294, 3308, 3318, 3323, 3329, 3333, 3352, + 3358, 3339, 2962, 0, 3005, 3033, 3032, 3072, 0, 3149, + 3169, 0, 0, 3212, 0, 0, 0, 3238, 0, 3231, + 3231, 0, 0, 3314, 0, 0, 3333, 3357, 0, 0, + 3355, 3367, 0, 3349, 3367, 3348, 0, 3371, 3357, 0, + 0, 0, 3370, 0, 3386, 3387, 3372, 0, 0, 0, + 0, 3375, 3385, 3393, 3397, 3402, 3401, 3412, 3416, 3407, + 3435, 3431, 3425, 3437, 3467, 3441, 3456, 3466, 3469, 3470, + 3471, 3485, 3475, 3479, 3481, 3504, 3509, 3510, 3515, 3519, + 3520, 3534, 3525, 3533, 3543, 3544, 3549, 3555, 3579, 3573, - 0, 0, 0, 0, 0, 3372, 0, 3476, 0, 0, - 0, 0, 0, 3530, 0, 3592, 3610, 0, 0, 3598, - 0, 0, 3602, 3609, 3618, 0, 3619, 3629, 3630, 3631, - 3633, 3652, 3635, 3668, 3647, 3664, 3665, 3669, 3670, 3673, - 3681, 3705, 3686, 3687, 3702, 3704, 3703, 3721, 3727, 3735, - 3736, 3737, 3621, 0, 3711, 0, 3725, 0, 3719, 3731, - 0, 3758, 3759, 3760, 3761, 3776, 3771, 3772, 3790, 3777, - 3793, 0, 3780, 0, 0, 3795, 3809, 3811, 3812, 3813, - 0, 0, 3814, 3826, 3916, 3891, 3895, 136, 3899, 3903, - 3907, 3911 + 3574, 3578, 3583, 3588, 3589, 3611, 3617, 3612, 3623, 3628, + 3629, 3633, 3652, 3661, 0, 0, 0, 0, 0, 3407, + 0, 3432, 0, 0, 0, 0, 0, 3513, 0, 3546, + 3565, 0, 0, 3582, 0, 0, 3605, 3611, 3642, 0, + 0, 3647, 3651, 3657, 3662, 3663, 3691, 3666, 3685, 3696, + 3697, 3701, 3702, 3706, 3736, 3715, 3737, 3719, 3720, 3725, + 3754, 3731, 3755, 3760, 3768, 3759, 3765, 3770, 3688, 0, + 3756, 0, 3776, 0, 3771, 3782, 0, 3794, 3799, 3808, + 3804, 3825, 3810, 3813, 3842, 3827, 3805, 0, 3808, 0, + 0, 3839, 3843, 3844, 3848, 3856, 0, 0, 3861, 3867, + 3957, 3932, 3936, 136, 3940, 3944, 3948, 3952 } ; -static const flex_int16_t yy_def[993] = +static const flex_int16_t yy_def[1009] = { 0, - 985, 1, 985, 3, 985, 985, 985, 985, 985, 986, - 985, 987, 985, 985, 985, 985, 985, 985, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 985, 989, 989, 985, 989, 990, 989, 991, - 989, 989, 989, 989, 989, 989, 992, 992, 58, 58, + 1001, 1, 1001, 3, 1001, 1001, 1001, 1001, 1001, 1002, + 1001, 1003, 1001, 1001, 1001, 1001, 1001, 1001, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1001, 1005, 1005, 1001, 1005, 1006, 1005, 1007, + 1005, 1005, 1005, 1005, 1005, 1005, 1008, 1008, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 989, 985, 985, 986, 987, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 988, 988, 988, 988, 988, 988, + 1005, 1001, 1001, 1002, 1003, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1004, 1004, 1004, 1004, 1004, 1004, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 985, 989, 989, 989, 990, 991, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 58, 58, 58, 58, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1001, 1005, 1005, 1005, 1006, 1007, 1005, 1005, + 1005, 1005, 1005, 1005, 1005, 1005, 1005, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, @@ -881,19 +885,19 @@ static const flex_int16_t yy_def[993] = 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, 989, 985, 985, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, + 58, 58, 58, 58, 58, 1005, 1001, 1001, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 989, 989, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1005, 1005, 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, @@ -904,18 +908,18 @@ static const flex_int16_t yy_def[993] = 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, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, + 58, 58, 58, 58, 58, 58, 58, 58, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 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, @@ -925,47 +929,48 @@ static const flex_int16_t yy_def[993] = 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, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 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, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 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, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 988, 988, 988, 988, 988, 58, 58, 58, 58, 58, - 988, 988, 58, 58, 0, 985, 985, 985, 985, 985, - 985, 985 + 58, 58, 58, 58, 58, 58, 58, 58, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 1004, 1004, 1004, 1004, + 1004, 58, 58, 58, 58, 58, 1004, 1004, 58, 58, + 0, 1001, 1001, 1001, 1001, 1001, 1001, 1001 } ; -static const flex_int16_t yy_nxt[3984] = +static const flex_int16_t yy_nxt[4025] = { 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, @@ -982,432 +987,437 @@ static const flex_int16_t yy_nxt[3984] = 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, + 88, 90, 88, 91, 92, 96, 102, 97, 109, 374, + 104, 132, 110, 98, 268, 99, 111, 105, 133, 100, + 101, 172, 112, 374, 106, 113, 103, 107, 108, 114, + 226, 115, 96, 102, 97, 109, 116, 104, 132, 110, + 98, 117, 99, 111, 105, 133, 100, 101, 172, 112, + 188, 106, 113, 103, 107, 108, 114, 226, 115, 122, - 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, + 118, 182, 124, 116, 179, 123, 119, 127, 117, 120, + 125, 168, 121, 128, 129, 130, 126, 188, 134, 169, + 131, 137, 135, 175, 82, 138, 122, 118, 136, 124, + 140, 139, 123, 119, 127, 373, 120, 125, 168, 121, + 128, 129, 130, 126, 141, 134, 169, 131, 137, 135, + 142, 143, 138, 144, 268, 136, 148, 140, 139, 151, + 180, 145, 181, 152, 89, 146, 86, 149, 147, 267, + 165, 141, 166, 150, 269, 167, 266, 142, 143, 187, + 144, 170, 171, 148, 82, 82, 151, 186, 145, 270, + 152, 153, 146, 154, 149, 147, 155, 165, 182, 166, - 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, + 150, 269, 167, 156, 157, 183, 181, 179, 170, 171, + 184, 185, 82, 82, 188, 188, 270, 188, 153, 174, + 154, 215, 176, 155, 275, 225, 276, 216, 90, 88, + 156, 157, 158, 159, 188, 188, 160, 188, 279, 161, + 162, 188, 188, 281, 188, 280, 163, 286, 215, 164, + 173, 275, 225, 276, 216, 175, 82, 183, 181, 158, + 159, 188, 188, 160, 188, 279, 161, 162, 94, 93, + 281, 265, 280, 163, 286, 89, 164, 174, 174, 86, + 174, 174, 174, 174, 174, 174, 217, 174, 174, 174, + 188, 188, 227, 189, 218, 190, 228, 271, 265, 295, - 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, + 219, 191, 229, 192, 284, 272, 273, 193, 194, 274, + 188, 296, 188, 217, 285, 297, 83, 188, 188, 227, + 189, 218, 190, 228, 271, 1001, 295, 219, 191, 229, + 192, 284, 272, 273, 193, 194, 274, 188, 296, 188, + 298, 285, 297, 174, 174, 174, 1001, 174, 174, 174, + 174, 174, 174, 230, 174, 174, 174, 231, 241, 1001, + 299, 195, 188, 232, 305, 277, 244, 298, 306, 242, + 245, 293, 294, 188, 188, 243, 1001, 263, 264, 278, + 230, 196, 188, 1001, 231, 241, 188, 299, 195, 188, + 232, 305, 277, 244, 188, 306, 242, 245, 293, 294, - 257, 187, 279, 258, 280, 284, 276, 187, 304, 187, - 285, 197, 305, 306, 198, 199, 187, 307, 312, 275, - 303, 187, 985, 985, 196, 256, 985, 257, 187, 279, - 258, 280, 284, 276, 985, 304, 187, 285, 197, 305, - 306, 198, 199, 259, 307, 312, 985, 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, 985, 200, 286, 260, 297, - 201, 298, 287, 308, 202, 299, 309, 313, 288, 314, - 203, 319, 300, 204, 187, 289, 301, 310, 320, 321, + 188, 188, 243, 188, 263, 264, 278, 307, 196, 188, + 174, 197, 258, 188, 259, 188, 308, 260, 198, 287, + 282, 188, 283, 188, 288, 199, 309, 310, 200, 201, + 188, 315, 316, 317, 307, 188, 1001, 1001, 197, 258, + 1001, 259, 188, 308, 260, 198, 287, 282, 1001, 283, + 188, 288, 199, 309, 310, 200, 201, 261, 315, 316, + 317, 188, 188, 202, 289, 262, 300, 203, 301, 290, + 311, 204, 302, 312, 322, 291, 1001, 205, 323, 303, + 206, 188, 292, 304, 261, 324, 1001, 188, 188, 1001, + 202, 289, 262, 300, 203, 301, 290, 311, 204, 302, - 187, 187, 311, 315, 322, 323, 327, 324, 205, 325, - 206, 326, 328, 316, 329, 207, 330, 331, 317, 318, - 208, 187, 985, 332, 310, 333, 985, 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, - 985, 985, 985, 350, 351, 352, 187, 985, 335, 985, - 209, 985, 336, 337, 338, 341, 210, 339, 343, 211, - 342, 340, 212, 344, 348, 349, 187, 187, 218, 345, + 312, 322, 291, 318, 205, 323, 303, 206, 188, 292, + 304, 313, 324, 319, 188, 188, 314, 325, 320, 321, + 330, 326, 207, 327, 208, 328, 331, 329, 332, 209, + 318, 333, 334, 335, 210, 188, 1001, 336, 313, 337, + 319, 338, 188, 314, 325, 320, 321, 330, 326, 207, + 327, 208, 328, 331, 329, 332, 209, 339, 333, 334, + 335, 210, 188, 188, 336, 340, 337, 211, 338, 341, + 342, 346, 344, 212, 343, 347, 213, 345, 348, 214, + 351, 352, 353, 188, 339, 1001, 354, 349, 355, 1001, + 188, 1001, 340, 1001, 211, 350, 341, 342, 346, 344, - 350, 351, 352, 353, 219, 220, 221, 355, 346, 356, - 357, 222, 358, 361, 354, 362, 347, 187, 985, 363, - 359, 985, 985, 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, 985, 473, 187, 366, 367, 368, 371, 187, 232, - 985, 365, 187, 474, 475, 233, 234, 985, 985, 187, - 985, 985, 231, 187, 476, 364, 187, 372, 187, 473, - 187, 985, 187, 985, 371, 187, 232, 187, 365, 187, - 474, 475, 233, 234, 373, 187, 187, 187, 235, 985, + 212, 343, 347, 213, 345, 348, 214, 351, 352, 353, + 188, 188, 220, 354, 349, 355, 356, 358, 221, 222, + 223, 359, 350, 360, 361, 224, 362, 357, 364, 363, + 365, 188, 1001, 370, 366, 1001, 1001, 371, 188, 220, + 367, 372, 479, 356, 358, 221, 222, 223, 359, 368, + 360, 361, 224, 362, 357, 364, 363, 365, 188, 233, + 370, 366, 369, 188, 371, 1001, 480, 367, 372, 479, + 481, 188, 188, 234, 375, 188, 368, 482, 483, 235, + 236, 1001, 484, 188, 1001, 1001, 233, 376, 1001, 369, + 188, 188, 188, 480, 1001, 188, 1001, 481, 188, 188, - 187, 476, 374, 477, 372, 187, 236, 187, 375, 187, - 237, 376, 187, 238, 187, 187, 385, 187, 985, 985, - 985, 373, 187, 985, 187, 235, 386, 478, 187, 374, - 477, 985, 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, - 985, 985, 396, 187, 483, 484, 187, 187, 377, 985, - 985, 187, 244, 187, 245, 187, 378, 246, 187, 479, - 485, 985, 985, 482, 247, 248, 187, 379, 187, 396, - 187, 483, 484, 187, 187, 249, 250, 381, 187, 251, + 234, 375, 188, 485, 482, 483, 235, 236, 188, 484, + 188, 188, 237, 188, 376, 377, 188, 387, 188, 188, + 238, 188, 188, 378, 239, 1001, 1001, 240, 188, 381, + 485, 188, 1001, 188, 1001, 188, 188, 1001, 188, 237, + 188, 188, 377, 188, 387, 1001, 1001, 238, 188, 379, + 378, 239, 380, 188, 240, 188, 381, 488, 188, 246, + 188, 247, 489, 188, 248, 382, 490, 188, 188, 491, + 492, 249, 250, 188, 1001, 493, 379, 1001, 1001, 380, + 188, 188, 1001, 1001, 488, 494, 246, 188, 247, 489, + 1001, 248, 382, 490, 188, 1001, 491, 492, 249, 250, - 985, 380, 252, 253, 382, 387, 187, 485, 187, 254, - 187, 985, 255, 187, 379, 187, 985, 187, 187, 187, - 486, 985, 249, 250, 381, 383, 251, 384, 380, 252, - 253, 382, 387, 187, 487, 187, 254, 187, 187, 255, - 187, 985, 488, 187, 985, 187, 187, 486, 187, 400, - 985, 187, 383, 491, 384, 388, 394, 395, 397, 492, - 389, 487, 985, 187, 985, 187, 985, 187, 187, 488, - 187, 187, 985, 399, 187, 187, 400, 187, 187, 985, - 491, 493, 388, 394, 395, 397, 492, 389, 390, 187, - 187, 398, 187, 391, 187, 187, 406, 187, 187, 392, + 188, 188, 493, 495, 188, 383, 1001, 498, 188, 251, + 252, 1001, 494, 253, 188, 188, 254, 255, 188, 384, + 1001, 188, 385, 256, 188, 388, 257, 389, 188, 386, + 495, 188, 383, 188, 498, 188, 251, 252, 188, 499, + 253, 188, 188, 254, 255, 188, 384, 390, 188, 385, + 256, 188, 388, 257, 389, 188, 386, 391, 392, 188, + 188, 188, 188, 188, 1001, 188, 499, 188, 188, 486, + 393, 487, 399, 400, 390, 394, 1001, 403, 1001, 188, + 1001, 1001, 188, 188, 391, 392, 188, 1001, 188, 188, + 188, 188, 404, 188, 188, 500, 486, 393, 487, 399, - 399, 187, 187, 494, 187, 985, 393, 985, 493, 187, - 985, 985, 187, 985, 187, 390, 187, 187, 398, 187, - 391, 187, 187, 406, 187, 187, 392, 407, 187, 187, - 494, 187, 409, 393, 187, 985, 187, 425, 408, 187, - 401, 187, 402, 985, 187, 187, 403, 416, 187, 187, - 187, 187, 187, 404, 407, 187, 187, 405, 187, 409, - 410, 187, 187, 985, 425, 408, 411, 401, 187, 402, - 187, 985, 187, 403, 416, 187, 187, 187, 187, 985, - 404, 187, 412, 187, 405, 413, 495, 410, 187, 187, - 187, 187, 418, 411, 187, 187, 496, 187, 417, 414, + 400, 402, 394, 395, 403, 401, 188, 188, 396, 188, + 188, 188, 1001, 188, 397, 405, 188, 188, 188, 404, + 188, 398, 500, 501, 502, 1001, 188, 188, 402, 1001, + 395, 503, 401, 411, 188, 396, 188, 188, 188, 188, + 188, 397, 405, 1001, 188, 504, 188, 496, 398, 188, + 501, 502, 412, 188, 188, 1001, 414, 188, 503, 188, + 411, 422, 497, 1001, 188, 406, 188, 407, 1001, 188, + 188, 408, 504, 188, 496, 188, 188, 188, 409, 412, + 413, 188, 410, 414, 188, 415, 188, 188, 422, 497, + 188, 416, 406, 1001, 407, 188, 188, 188, 408, 188, - 423, 187, 187, 187, 415, 497, 424, 985, 187, 412, - 187, 187, 413, 495, 187, 187, 985, 187, 187, 418, - 985, 187, 187, 496, 498, 417, 414, 423, 187, 187, - 985, 415, 497, 424, 187, 426, 985, 187, 187, 187, - 187, 187, 419, 187, 429, 427, 430, 428, 187, 187, - 499, 498, 420, 431, 187, 985, 187, 421, 422, 187, - 187, 187, 426, 187, 985, 432, 187, 187, 187, 419, - 187, 429, 427, 430, 428, 187, 187, 499, 187, 420, - 431, 187, 187, 187, 421, 422, 187, 187, 187, 985, - 187, 433, 432, 434, 187, 187, 187, 985, 187, 985, + 505, 188, 188, 1001, 188, 409, 1001, 413, 188, 410, + 1001, 188, 415, 417, 188, 506, 418, 188, 416, 188, + 419, 188, 188, 1001, 188, 420, 188, 505, 188, 188, + 188, 188, 1001, 429, 188, 423, 1001, 421, 188, 428, + 417, 188, 506, 418, 188, 1001, 188, 419, 188, 188, + 188, 188, 420, 507, 430, 1001, 188, 188, 188, 188, + 429, 188, 423, 188, 421, 432, 428, 433, 188, 188, + 431, 188, 424, 188, 1001, 508, 188, 188, 1001, 188, + 507, 430, 425, 188, 1001, 509, 188, 426, 427, 188, + 188, 188, 432, 188, 433, 1001, 188, 431, 1001, 424, - 437, 436, 187, 187, 187, 187, 187, 438, 187, 187, - 985, 435, 985, 500, 187, 187, 187, 985, 433, 459, - 434, 187, 985, 187, 187, 187, 187, 437, 436, 187, - 985, 187, 187, 187, 438, 187, 439, 187, 435, 187, - 500, 187, 187, 187, 442, 443, 459, 440, 187, 444, - 985, 187, 187, 187, 501, 441, 985, 187, 187, 187, - 447, 985, 187, 439, 187, 187, 187, 985, 187, 187, - 985, 442, 443, 985, 440, 187, 444, 187, 187, 187, - 187, 501, 441, 448, 187, 187, 445, 447, 187, 187, - 502, 446, 187, 985, 449, 187, 187, 187, 452, 187, + 188, 434, 508, 435, 436, 188, 188, 1001, 1001, 425, + 188, 188, 509, 188, 426, 427, 188, 188, 188, 188, + 188, 188, 437, 442, 510, 188, 438, 188, 434, 1001, + 435, 436, 188, 188, 439, 188, 440, 188, 188, 188, + 188, 188, 441, 1001, 188, 1001, 188, 188, 188, 437, + 442, 510, 188, 438, 188, 188, 188, 443, 444, 188, + 188, 439, 188, 440, 188, 1001, 188, 447, 188, 441, + 464, 188, 188, 448, 188, 188, 188, 449, 1001, 188, + 1001, 1001, 188, 188, 443, 444, 188, 445, 446, 1001, + 188, 188, 188, 188, 447, 188, 188, 464, 188, 188, - 187, 985, 985, 450, 187, 187, 455, 187, 187, 187, - 448, 451, 453, 445, 985, 187, 187, 502, 446, 187, - 480, 449, 481, 187, 187, 452, 187, 187, 454, 187, - 450, 187, 187, 455, 187, 187, 187, 985, 451, 453, - 187, 456, 461, 187, 503, 187, 187, 480, 460, 481, - 187, 187, 187, 457, 187, 454, 187, 985, 187, 187, - 187, 187, 985, 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, 985, 187, 187, 469, 470, + 448, 1001, 188, 188, 449, 450, 188, 188, 188, 452, + 451, 453, 1001, 511, 445, 446, 188, 188, 188, 188, + 188, 459, 188, 188, 454, 188, 188, 188, 188, 188, + 1001, 1001, 450, 455, 188, 188, 452, 451, 453, 457, + 511, 456, 1001, 188, 188, 188, 188, 460, 459, 188, + 188, 454, 188, 188, 188, 188, 188, 458, 188, 188, + 455, 188, 512, 513, 188, 461, 457, 465, 456, 462, + 188, 188, 188, 188, 460, 1001, 188, 188, 188, 188, + 463, 188, 188, 188, 458, 188, 188, 1001, 188, 512, + 513, 188, 461, 466, 465, 514, 462, 188, 515, 467, - 465, 187, 187, 187, 187, 187, 505, 187, 985, 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, - 536, 537, 538, 539, 540, 519, 541, 542, 526, 527, + 470, 188, 188, 188, 1001, 188, 188, 463, 188, 188, + 188, 188, 188, 1001, 476, 468, 471, 1001, 469, 1001, + 466, 188, 514, 1001, 474, 515, 467, 470, 188, 188, + 188, 188, 188, 188, 188, 188, 516, 475, 188, 188, + 472, 476, 468, 471, 188, 469, 473, 517, 188, 1001, + 477, 474, 478, 188, 518, 188, 188, 519, 188, 188, + 188, 188, 188, 516, 475, 520, 521, 472, 522, 523, + 524, 188, 527, 473, 517, 525, 188, 477, 528, 478, + 188, 518, 188, 188, 519, 526, 529, 530, 531, 532, + 533, 534, 520, 521, 535, 522, 523, 524, 536, 527, - 528, 529, 543, 530, 544, 531, 545, 546, 532, 533, - 547, 534, 548, 549, 550, 551, 535, 536, 537, 538, - 539, 540, 552, 541, 542, 553, 554, 557, 555, 543, - 556, 544, 558, 545, 546, 559, 560, 547, 561, 548, - 549, 550, 551, 562, 563, 565, 566, 187, 564, 552, - 661, 985, 553, 554, 557, 555, 567, 556, 187, 558, - 568, 187, 559, 560, 187, 561, 662, 187, 569, 187, - 562, 563, 565, 566, 187, 564, 187, 661, 187, 985, - 187, 187, 570, 567, 187, 187, 187, 568, 187, 187, - 187, 187, 985, 662, 187, 569, 187, 985, 187, 985, + 537, 538, 525, 188, 539, 528, 540, 541, 542, 543, + 544, 545, 526, 529, 530, 531, 532, 533, 534, 546, + 547, 535, 548, 549, 550, 536, 551, 537, 538, 552, + 553, 539, 554, 540, 541, 542, 543, 544, 545, 555, + 556, 557, 558, 559, 560, 561, 546, 547, 564, 548, + 549, 550, 562, 551, 563, 565, 552, 553, 566, 554, + 567, 568, 569, 570, 573, 574, 555, 556, 557, 558, + 559, 560, 561, 571, 188, 564, 575, 572, 188, 562, + 1001, 563, 565, 671, 1001, 566, 576, 567, 568, 569, + 570, 573, 574, 1001, 188, 188, 188, 188, 188, 188, - 571, 187, 574, 187, 575, 187, 187, 187, 187, 570, - 187, 187, 187, 187, 576, 187, 187, 187, 187, 572, - 187, 187, 573, 187, 187, 187, 579, 571, 187, 574, - 578, 575, 187, 187, 187, 187, 580, 187, 577, 187, - 187, 576, 187, 187, 187, 187, 572, 187, 187, 573, - 187, 187, 663, 579, 187, 664, 187, 578, 586, 187, - 583, 187, 187, 580, 187, 577, 187, 187, 582, 985, - 187, 187, 187, 581, 585, 584, 187, 985, 187, 663, - 187, 187, 664, 187, 665, 586, 187, 583, 590, 187, - 985, 187, 187, 187, 588, 582, 187, 187, 985, 187, + 571, 188, 577, 575, 572, 188, 188, 578, 188, 1001, + 671, 188, 188, 576, 582, 188, 583, 188, 579, 188, + 188, 188, 188, 188, 188, 188, 188, 581, 188, 577, + 580, 188, 188, 188, 578, 188, 188, 1001, 188, 188, + 188, 582, 188, 583, 188, 579, 188, 188, 188, 188, + 188, 188, 188, 1001, 581, 188, 587, 580, 188, 188, + 188, 584, 589, 188, 588, 585, 586, 188, 188, 188, + 188, 188, 188, 1001, 188, 188, 188, 188, 188, 188, + 188, 591, 188, 587, 594, 188, 188, 188, 584, 589, + 672, 588, 585, 586, 188, 188, 188, 188, 188, 188, - 581, 585, 584, 187, 587, 187, 187, 187, 187, 187, - 592, 665, 985, 187, 187, 590, 187, 187, 591, 187, - 985, 588, 187, 187, 187, 589, 187, 597, 666, 985, - 187, 587, 985, 187, 187, 187, 187, 592, 593, 187, - 187, 187, 187, 187, 187, 591, 595, 187, 187, 187, - 985, 187, 589, 187, 597, 666, 596, 187, 985, 187, - 187, 187, 594, 187, 187, 593, 187, 187, 187, 187, - 187, 187, 598, 595, 187, 187, 187, 600, 187, 985, - 187, 187, 187, 596, 187, 602, 187, 187, 599, 594, - 187, 187, 601, 187, 985, 187, 187, 603, 187, 598, + 592, 188, 595, 188, 188, 188, 188, 188, 591, 188, + 590, 594, 188, 188, 673, 593, 599, 672, 1001, 596, + 188, 188, 188, 188, 188, 597, 1001, 592, 188, 595, + 188, 188, 188, 188, 188, 600, 188, 590, 188, 188, + 601, 673, 593, 599, 1001, 598, 596, 188, 188, 188, + 188, 188, 597, 606, 188, 188, 674, 188, 188, 188, + 188, 188, 600, 188, 1001, 188, 188, 601, 602, 188, + 188, 603, 598, 188, 188, 188, 604, 188, 1001, 188, + 606, 188, 1001, 674, 188, 188, 188, 188, 609, 188, + 188, 188, 605, 188, 188, 602, 188, 188, 603, 188, - 187, 187, 187, 187, 600, 667, 187, 187, 187, 187, - 187, 187, 602, 187, 668, 599, 187, 985, 187, 601, - 187, 604, 607, 187, 603, 605, 187, 187, 187, 187, - 187, 606, 667, 187, 187, 609, 187, 187, 187, 610, - 187, 668, 985, 187, 608, 187, 985, 611, 604, 607, - 612, 985, 605, 187, 187, 187, 187, 187, 606, 187, - 613, 187, 609, 187, 187, 187, 610, 187, 187, 617, - 187, 608, 614, 615, 611, 985, 187, 612, 187, 985, - 985, 187, 187, 187, 187, 985, 187, 613, 187, 187, - 985, 187, 669, 616, 187, 187, 617, 187, 187, 614, + 188, 188, 188, 604, 188, 188, 188, 1001, 675, 610, + 607, 188, 608, 188, 676, 609, 188, 188, 188, 605, + 188, 188, 188, 1001, 188, 188, 188, 611, 188, 188, + 188, 1001, 188, 1001, 612, 675, 610, 607, 188, 608, + 188, 676, 618, 613, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 616, 611, 188, 619, 188, 188, 615, + 614, 612, 188, 1001, 620, 188, 188, 188, 617, 618, + 613, 188, 188, 188, 188, 188, 188, 188, 188, 1001, + 616, 1001, 1001, 619, 188, 188, 615, 614, 621, 188, + 188, 620, 188, 188, 188, 617, 188, 1001, 622, 188, - 615, 985, 187, 187, 985, 187, 618, 619, 187, 985, - 985, 187, 187, 620, 621, 187, 187, 187, 670, 669, - 616, 985, 187, 187, 985, 187, 187, 671, 187, 187, - 985, 187, 187, 618, 619, 187, 187, 187, 623, 187, - 620, 621, 622, 187, 187, 670, 187, 624, 187, 187, - 187, 187, 187, 187, 671, 187, 187, 628, 187, 187, - 187, 626, 629, 187, 187, 623, 627, 625, 187, 622, - 187, 985, 187, 187, 624, 187, 672, 187, 187, 187, - 187, 630, 187, 187, 628, 187, 187, 187, 626, 629, - 187, 187, 634, 627, 625, 187, 187, 632, 633, 187, + 188, 626, 1001, 188, 188, 188, 623, 1001, 188, 624, + 188, 188, 677, 1001, 625, 621, 188, 188, 188, 188, + 188, 188, 627, 188, 188, 622, 188, 188, 626, 628, + 188, 188, 188, 623, 630, 188, 624, 188, 188, 677, + 629, 625, 188, 188, 188, 188, 188, 188, 188, 627, + 188, 188, 188, 188, 188, 637, 628, 188, 631, 188, + 678, 630, 188, 1001, 188, 188, 679, 629, 632, 188, + 633, 188, 1001, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 637, 634, 638, 631, 188, 678, 680, 188, + 639, 188, 636, 679, 188, 632, 188, 633, 188, 635, - 631, 985, 985, 672, 187, 187, 187, 187, 630, 187, - 187, 187, 187, 187, 187, 637, 187, 187, 187, 634, - 187, 985, 985, 187, 632, 633, 639, 631, 187, 635, - 638, 636, 187, 187, 187, 187, 985, 187, 187, 187, - 187, 187, 637, 187, 985, 187, 187, 187, 187, 187, - 187, 673, 674, 639, 985, 187, 635, 638, 636, 187, - 187, 187, 187, 640, 641, 187, 187, 187, 187, 187, - 187, 644, 187, 187, 187, 187, 187, 187, 673, 674, - 187, 643, 985, 642, 187, 647, 187, 187, 187, 187, - 640, 641, 187, 187, 187, 187, 187, 187, 644, 645, + 188, 188, 188, 188, 188, 188, 188, 188, 643, 188, + 634, 638, 188, 188, 188, 680, 640, 639, 681, 636, + 641, 188, 188, 188, 1001, 188, 635, 188, 682, 188, + 642, 188, 188, 188, 188, 643, 188, 1001, 188, 188, + 646, 188, 188, 640, 648, 681, 188, 641, 188, 188, + 1001, 645, 188, 644, 188, 682, 188, 642, 188, 188, + 188, 683, 647, 188, 188, 188, 188, 646, 188, 188, + 1001, 648, 188, 188, 1001, 188, 1001, 188, 645, 188, + 644, 649, 188, 188, 1001, 188, 188, 188, 683, 647, + 188, 188, 650, 188, 188, 188, 188, 188, 188, 188, - 985, 187, 646, 985, 187, 187, 985, 187, 643, 187, - 642, 187, 647, 187, 187, 187, 187, 187, 187, 675, - 187, 187, 676, 648, 677, 985, 645, 651, 649, 646, - 650, 187, 187, 187, 187, 652, 187, 187, 187, 187, - 187, 187, 653, 985, 187, 187, 675, 187, 678, 676, - 648, 677, 187, 187, 651, 649, 187, 650, 985, 187, - 187, 187, 652, 654, 187, 187, 187, 187, 187, 653, - 655, 656, 187, 985, 187, 678, 187, 657, 679, 187, - 187, 658, 187, 187, 680, 659, 187, 187, 187, 681, - 654, 682, 683, 684, 187, 187, 685, 655, 656, 187, + 188, 651, 188, 652, 188, 653, 188, 655, 649, 188, + 188, 656, 1001, 188, 188, 654, 188, 188, 188, 650, + 188, 188, 1001, 188, 188, 188, 188, 188, 651, 188, + 652, 188, 653, 188, 655, 657, 1001, 188, 656, 188, + 188, 188, 654, 188, 188, 188, 188, 188, 661, 658, + 660, 659, 188, 188, 188, 1001, 1001, 1001, 188, 188, + 188, 1001, 657, 662, 188, 188, 188, 188, 188, 664, + 1001, 188, 188, 188, 188, 661, 658, 660, 659, 188, + 188, 188, 188, 665, 663, 188, 188, 188, 188, 667, + 662, 188, 188, 668, 1001, 188, 664, 666, 188, 188, - 660, 686, 187, 187, 657, 679, 687, 187, 658, 187, - 688, 680, 659, 689, 187, 187, 681, 690, 682, 683, - 684, 691, 692, 685, 693, 694, 696, 660, 686, 187, - 697, 698, 699, 687, 187, 702, 695, 688, 700, 701, - 689, 703, 704, 705, 690, 706, 707, 708, 691, 692, - 709, 693, 694, 696, 710, 711, 712, 697, 698, 699, - 713, 714, 702, 695, 715, 700, 701, 716, 703, 704, - 705, 717, 706, 707, 708, 718, 719, 709, 720, 721, - 722, 710, 711, 712, 723, 724, 725, 713, 714, 726, - 727, 715, 728, 729, 716, 730, 985, 985, 717, 985, + 188, 188, 188, 188, 684, 685, 669, 188, 188, 188, + 665, 663, 188, 686, 687, 188, 667, 688, 188, 689, + 668, 670, 690, 188, 666, 691, 692, 188, 188, 188, + 188, 684, 685, 669, 693, 188, 694, 695, 696, 697, + 686, 687, 698, 699, 688, 700, 689, 701, 670, 690, + 188, 702, 691, 692, 703, 188, 704, 706, 707, 708, + 709, 693, 712, 694, 695, 696, 697, 705, 713, 698, + 699, 714, 700, 715, 701, 710, 711, 716, 702, 717, + 718, 703, 719, 704, 706, 707, 708, 709, 720, 712, + 721, 722, 723, 724, 705, 713, 725, 726, 714, 727, - 985, 187, 718, 719, 187, 720, 721, 722, 985, 187, - 187, 723, 724, 725, 731, 736, 726, 727, 985, 728, - 729, 187, 730, 732, 733, 187, 187, 187, 187, 734, - 187, 187, 985, 985, 801, 187, 187, 187, 735, 737, - 985, 731, 736, 187, 802, 187, 187, 187, 187, 187, - 732, 733, 187, 187, 187, 187, 734, 187, 985, 187, - 187, 801, 187, 187, 740, 735, 737, 738, 739, 187, - 187, 802, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 985, 187, 187, 742, 745, 187, 187, 985, 187, - 187, 740, 741, 187, 738, 739, 187, 187, 187, 743, + 715, 728, 710, 711, 716, 729, 717, 718, 730, 719, + 731, 732, 733, 734, 735, 720, 736, 721, 722, 723, + 724, 737, 738, 725, 726, 739, 727, 740, 728, 741, + 188, 188, 729, 188, 1001, 730, 1001, 731, 732, 733, + 734, 735, 188, 736, 742, 747, 743, 188, 737, 738, + 744, 188, 739, 188, 740, 188, 741, 188, 188, 748, + 188, 188, 745, 188, 188, 188, 813, 188, 746, 188, + 814, 742, 747, 743, 188, 188, 1001, 744, 188, 188, + 188, 188, 188, 188, 188, 188, 748, 749, 188, 745, + 188, 188, 188, 813, 188, 746, 1001, 814, 750, 188, - 985, 187, 187, 187, 187, 187, 187, 187, 744, 187, - 187, 742, 745, 187, 187, 746, 187, 187, 747, 741, - 187, 187, 985, 187, 187, 187, 743, 187, 187, 803, - 187, 187, 985, 985, 187, 744, 187, 187, 748, 985, - 187, 187, 746, 187, 187, 747, 187, 187, 187, 187, - 187, 187, 187, 985, 187, 985, 803, 749, 187, 753, - 750, 187, 187, 187, 187, 748, 187, 754, 751, 187, - 187, 187, 187, 187, 187, 985, 187, 752, 187, 187, - 187, 187, 187, 187, 749, 187, 753, 750, 985, 187, - 187, 187, 804, 187, 754, 751, 187, 187, 187, 187, + 188, 188, 188, 188, 188, 188, 188, 1001, 188, 188, + 188, 188, 188, 815, 749, 751, 753, 752, 188, 755, + 188, 188, 1001, 188, 188, 750, 188, 188, 188, 188, + 188, 188, 188, 756, 754, 188, 188, 188, 188, 188, + 815, 816, 751, 753, 752, 188, 755, 188, 188, 188, + 188, 188, 757, 758, 188, 188, 188, 188, 188, 188, + 756, 754, 188, 188, 188, 188, 188, 817, 816, 188, + 759, 1001, 1001, 188, 188, 188, 188, 1001, 188, 757, + 758, 188, 188, 188, 188, 188, 188, 188, 188, 762, + 188, 188, 1001, 188, 817, 188, 188, 759, 760, 761, - 187, 187, 755, 187, 752, 187, 187, 187, 187, 187, - 187, 187, 187, 985, 756, 187, 805, 187, 187, 804, - 757, 806, 985, 187, 187, 187, 187, 187, 187, 755, - 187, 187, 187, 187, 759, 187, 187, 985, 187, 807, - 187, 756, 187, 805, 187, 187, 758, 757, 806, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 761, - 187, 759, 187, 187, 760, 985, 807, 187, 762, 187, - 763, 187, 187, 758, 985, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 761, 187, 187, 187, - 764, 760, 766, 187, 985, 762, 187, 763, 187, 187, + 188, 188, 188, 818, 188, 188, 763, 188, 188, 188, + 188, 188, 819, 764, 188, 188, 762, 188, 188, 765, + 188, 188, 188, 188, 188, 760, 761, 1001, 766, 188, + 818, 188, 188, 763, 188, 188, 188, 188, 188, 819, + 764, 188, 188, 188, 188, 188, 765, 188, 188, 820, + 188, 188, 188, 767, 768, 766, 188, 188, 770, 188, + 1001, 1001, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 1001, 188, 769, 188, 188, 820, 188, 188, 188, + 767, 768, 1001, 188, 188, 770, 188, 188, 771, 188, + 188, 1001, 188, 188, 188, 188, 188, 1001, 188, 188, - 187, 765, 187, 187, 187, 187, 187, 187, 187, 187, - 985, 769, 187, 187, 187, 187, 187, 764, 767, 766, - 187, 768, 985, 187, 808, 985, 187, 187, 765, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 769, 187, - 187, 187, 772, 770, 771, 767, 773, 985, 768, 187, - 187, 808, 774, 187, 187, 775, 187, 187, 187, 187, - 187, 187, 985, 985, 187, 187, 187, 187, 985, 772, - 770, 771, 985, 773, 187, 187, 187, 187, 776, 774, - 187, 187, 775, 187, 187, 187, 187, 187, 187, 779, - 777, 778, 187, 187, 187, 780, 781, 187, 985, 187, + 769, 775, 188, 821, 188, 188, 772, 188, 1001, 773, + 188, 774, 776, 188, 188, 771, 188, 188, 188, 188, + 188, 188, 188, 188, 777, 188, 188, 1001, 775, 188, + 821, 1001, 188, 772, 188, 188, 773, 188, 774, 776, + 188, 188, 1001, 188, 188, 188, 188, 188, 188, 188, + 778, 777, 188, 188, 780, 188, 188, 1001, 188, 188, + 779, 783, 188, 1001, 188, 1001, 822, 188, 188, 188, + 188, 786, 1001, 188, 188, 823, 188, 778, 188, 188, + 188, 780, 188, 781, 782, 188, 188, 779, 783, 188, + 188, 188, 785, 822, 188, 188, 188, 188, 786, 784, - 985, 187, 187, 187, 187, 776, 985, 985, 187, 809, - 187, 985, 187, 187, 187, 187, 779, 777, 778, 187, - 187, 187, 780, 781, 187, 187, 187, 187, 985, 187, - 187, 187, 985, 784, 782, 187, 809, 786, 785, 187, - 187, 187, 783, 787, 985, 187, 187, 187, 187, 187, - 985, 187, 187, 187, 187, 789, 187, 788, 187, 187, - 784, 782, 810, 187, 786, 785, 187, 187, 187, 783, - 787, 187, 187, 187, 187, 187, 187, 790, 187, 187, - 187, 187, 789, 792, 788, 187, 187, 187, 985, 810, - 187, 187, 811, 187, 187, 791, 985, 985, 187, 187, + 188, 188, 823, 188, 188, 188, 188, 188, 787, 1001, + 781, 782, 789, 188, 188, 188, 188, 188, 188, 785, + 788, 188, 188, 188, 188, 790, 784, 188, 188, 188, + 188, 188, 1001, 188, 188, 787, 791, 188, 188, 789, + 188, 188, 188, 794, 1001, 792, 188, 788, 188, 188, + 188, 188, 790, 1001, 188, 188, 188, 188, 188, 793, + 188, 188, 188, 791, 188, 188, 188, 188, 1001, 795, + 794, 796, 792, 188, 798, 188, 188, 797, 824, 188, + 800, 188, 188, 188, 188, 188, 793, 188, 188, 188, + 1001, 188, 188, 188, 188, 799, 795, 188, 796, 188, - 187, 187, 187, 812, 790, 187, 187, 187, 187, 794, - 792, 795, 187, 187, 187, 187, 793, 985, 187, 811, - 187, 187, 791, 797, 187, 798, 187, 187, 187, 187, - 812, 985, 187, 813, 187, 187, 794, 187, 795, 796, - 187, 187, 187, 793, 187, 187, 814, 187, 187, 187, - 797, 187, 798, 799, 187, 800, 187, 187, 187, 187, - 813, 815, 187, 816, 187, 817, 796, 187, 187, 818, - 819, 187, 187, 814, 187, 187, 187, 820, 187, 187, - 799, 821, 800, 822, 187, 187, 187, 823, 815, 824, - 816, 825, 817, 826, 187, 827, 818, 819, 828, 829, + 188, 798, 801, 188, 797, 824, 188, 800, 188, 188, + 188, 188, 188, 803, 188, 188, 188, 188, 188, 188, + 1001, 188, 799, 1001, 188, 804, 188, 188, 802, 801, + 188, 188, 1001, 806, 188, 188, 188, 188, 188, 188, + 803, 188, 188, 188, 188, 825, 188, 805, 808, 809, + 188, 188, 804, 1001, 1001, 802, 1001, 188, 188, 188, + 806, 188, 188, 188, 188, 807, 188, 188, 188, 188, + 188, 810, 825, 188, 805, 808, 809, 188, 188, 188, + 188, 812, 188, 811, 188, 188, 188, 188, 188, 826, + 827, 828, 807, 188, 188, 188, 188, 188, 810, 829, - 830, 831, 187, 832, 820, 187, 187, 833, 821, 834, - 822, 835, 836, 837, 823, 838, 824, 839, 825, 840, - 826, 841, 827, 842, 843, 828, 829, 830, 831, 844, - 832, 845, 846, 847, 833, 848, 834, 849, 835, 836, - 837, 850, 838, 187, 839, 187, 840, 985, 841, 187, - 842, 843, 985, 187, 985, 852, 844, 853, 845, 846, - 847, 985, 848, 187, 849, 187, 854, 187, 850, 187, - 187, 187, 187, 187, 851, 187, 187, 187, 985, 187, - 187, 856, 852, 857, 853, 187, 985, 187, 855, 985, - 187, 187, 187, 854, 187, 985, 187, 187, 187, 187, + 188, 188, 188, 830, 831, 188, 188, 188, 812, 188, + 811, 832, 188, 833, 188, 188, 826, 827, 828, 834, + 835, 836, 837, 838, 839, 840, 829, 188, 188, 188, + 830, 831, 188, 841, 842, 843, 844, 845, 832, 846, + 833, 847, 848, 849, 850, 851, 834, 835, 836, 837, + 838, 839, 840, 852, 853, 854, 855, 856, 857, 858, + 841, 842, 843, 844, 845, 859, 846, 860, 847, 848, + 849, 850, 851, 861, 862, 863, 188, 188, 188, 915, + 852, 853, 854, 855, 856, 857, 858, 188, 865, 866, + 867, 188, 859, 870, 860, 1001, 188, 188, 188, 864, - 187, 851, 187, 187, 187, 187, 187, 858, 856, 187, - 857, 860, 187, 187, 187, 855, 859, 187, 187, 187, - 985, 863, 187, 985, 187, 864, 187, 901, 862, 187, - 187, 187, 187, 187, 858, 985, 187, 861, 860, 187, - 187, 187, 187, 859, 187, 187, 187, 187, 863, 187, - 187, 902, 864, 903, 901, 862, 187, 904, 187, 187, - 187, 869, 865, 187, 861, 866, 187, 187, 187, 187, - 187, 187, 187, 867, 187, 868, 985, 187, 902, 187, - 903, 187, 985, 187, 904, 187, 187, 871, 869, 865, - 187, 187, 866, 187, 187, 985, 187, 187, 187, 187, + 861, 862, 863, 188, 188, 188, 915, 188, 188, 188, + 188, 188, 188, 188, 188, 865, 866, 867, 188, 868, + 870, 188, 869, 188, 188, 188, 864, 873, 1001, 1001, + 188, 916, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 871, 188, 1001, 868, 188, 188, 869, + 917, 872, 188, 188, 873, 876, 188, 188, 916, 188, + 188, 877, 188, 918, 188, 875, 1001, 874, 188, 188, + 871, 188, 188, 1001, 188, 188, 188, 917, 872, 188, + 188, 188, 876, 188, 188, 188, 188, 1001, 877, 188, + 918, 188, 875, 882, 874, 188, 919, 188, 880, 188, - 867, 187, 868, 870, 187, 187, 187, 187, 187, 187, - 187, 985, 187, 187, 871, 875, 187, 872, 187, 187, - 187, 985, 873, 187, 187, 187, 187, 187, 187, 187, - 870, 187, 187, 187, 187, 187, 187, 905, 187, 876, - 187, 187, 875, 187, 872, 187, 187, 187, 874, 873, - 187, 187, 187, 187, 187, 985, 187, 877, 187, 187, - 187, 187, 187, 878, 905, 187, 876, 187, 187, 187, - 187, 187, 187, 187, 187, 874, 880, 187, 879, 187, - 187, 187, 187, 187, 877, 187, 187, 906, 187, 187, - 878, 187, 187, 187, 187, 882, 187, 187, 187, 985, + 878, 879, 188, 188, 188, 188, 188, 1001, 188, 188, + 188, 188, 188, 188, 881, 188, 883, 188, 188, 188, + 882, 884, 188, 919, 188, 880, 1001, 878, 879, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 881, 188, 883, 188, 188, 188, 885, 884, 188, + 886, 888, 188, 188, 188, 188, 188, 188, 1001, 890, + 188, 188, 188, 1001, 920, 188, 188, 188, 887, 188, + 188, 188, 188, 188, 885, 1001, 188, 886, 888, 188, + 188, 188, 188, 188, 889, 188, 890, 188, 188, 188, + 188, 920, 1001, 891, 188, 887, 188, 188, 188, 188, - 187, 187, 187, 880, 187, 879, 187, 881, 187, 187, - 187, 985, 187, 187, 906, 187, 187, 883, 187, 187, - 187, 885, 882, 187, 187, 187, 884, 886, 187, 187, - 907, 187, 887, 187, 881, 187, 187, 888, 187, 187, - 187, 187, 187, 187, 883, 187, 187, 985, 885, 892, - 187, 187, 187, 884, 886, 187, 187, 907, 187, 887, - 187, 889, 187, 187, 888, 187, 187, 891, 187, 187, - 187, 187, 187, 187, 890, 187, 892, 187, 985, 985, - 187, 985, 187, 187, 894, 187, 896, 985, 889, 187, - 893, 187, 898, 187, 891, 187, 187, 187, 187, 895, + 188, 921, 892, 188, 188, 188, 188, 893, 188, 188, + 188, 889, 188, 188, 188, 188, 188, 188, 188, 188, + 891, 188, 188, 895, 188, 1001, 188, 922, 921, 892, + 188, 188, 188, 188, 893, 188, 188, 894, 188, 188, + 188, 188, 188, 188, 1001, 188, 188, 188, 188, 188, + 895, 188, 898, 188, 922, 923, 188, 924, 188, 1001, + 896, 897, 899, 925, 894, 188, 188, 188, 188, 188, + 188, 188, 188, 900, 188, 188, 188, 188, 188, 898, + 901, 188, 923, 188, 924, 188, 902, 896, 897, 899, + 925, 188, 904, 1001, 188, 188, 188, 188, 188, 188, - 187, 890, 187, 187, 187, 187, 187, 187, 897, 187, - 908, 894, 187, 896, 187, 985, 187, 893, 187, 898, - 187, 909, 187, 187, 187, 187, 895, 187, 899, 187, - 187, 910, 187, 187, 187, 897, 187, 908, 900, 187, - 187, 187, 187, 911, 912, 913, 914, 187, 909, 915, - 187, 916, 187, 917, 918, 899, 187, 919, 910, 920, - 921, 187, 187, 922, 923, 900, 924, 187, 925, 187, - 911, 912, 913, 914, 926, 985, 915, 927, 916, 187, - 917, 918, 929, 187, 919, 953, 920, 921, 985, 187, - 922, 923, 928, 924, 187, 925, 187, 187, 187, 187, + 900, 188, 188, 188, 188, 188, 188, 901, 188, 903, + 188, 188, 188, 902, 1001, 906, 188, 908, 188, 904, + 905, 188, 188, 188, 188, 909, 188, 907, 188, 188, + 188, 188, 188, 188, 910, 188, 903, 188, 188, 188, + 911, 188, 906, 188, 908, 188, 188, 905, 188, 188, + 188, 926, 909, 188, 907, 188, 188, 188, 188, 188, + 188, 910, 188, 927, 912, 913, 188, 911, 188, 188, + 188, 914, 188, 188, 928, 188, 188, 188, 926, 929, + 930, 931, 188, 188, 932, 933, 934, 188, 935, 188, + 927, 912, 913, 188, 936, 188, 188, 188, 914, 937, - 187, 926, 187, 187, 927, 931, 187, 985, 930, 929, - 187, 932, 953, 187, 187, 933, 187, 187, 187, 928, - 187, 187, 985, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 931, 187, 934, 930, 187, 187, 932, 187, - 187, 187, 933, 187, 187, 187, 985, 187, 187, 187, - 935, 187, 187, 187, 187, 187, 187, 985, 187, 187, - 187, 934, 936, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 935, 187, 187, - 187, 187, 937, 187, 187, 187, 187, 187, 938, 936, - 187, 187, 187, 940, 187, 187, 187, 187, 187, 187, + 938, 928, 188, 188, 939, 940, 929, 930, 931, 941, + 942, 932, 933, 934, 188, 935, 188, 1001, 944, 188, + 969, 936, 188, 1001, 188, 1001, 937, 938, 943, 188, + 188, 939, 940, 188, 188, 1001, 941, 942, 188, 188, + 946, 188, 188, 945, 188, 944, 188, 969, 188, 188, + 947, 188, 188, 188, 188, 943, 188, 188, 188, 1001, + 188, 188, 188, 948, 970, 188, 188, 946, 188, 188, + 945, 188, 188, 188, 188, 188, 188, 947, 188, 188, + 188, 188, 949, 188, 188, 188, 950, 188, 188, 188, + 948, 970, 188, 188, 1001, 188, 188, 951, 188, 188, - 187, 187, 187, 939, 187, 187, 187, 985, 954, 937, - 187, 187, 187, 187, 187, 938, 187, 187, 187, 187, - 940, 985, 187, 941, 942, 187, 187, 944, 187, 187, - 939, 187, 187, 187, 943, 954, 187, 187, 187, 187, - 187, 985, 187, 187, 187, 955, 187, 187, 187, 187, - 941, 942, 187, 187, 944, 187, 187, 946, 945, 187, - 187, 943, 187, 187, 187, 187, 187, 985, 187, 187, - 947, 187, 955, 187, 187, 187, 187, 949, 950, 187, - 187, 187, 187, 187, 946, 945, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 947, 187, 948, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 949, + 188, 188, 188, 950, 188, 188, 188, 952, 953, 188, + 188, 188, 188, 188, 951, 188, 188, 188, 971, 188, + 188, 188, 955, 188, 188, 188, 188, 188, 957, 188, + 954, 188, 188, 188, 952, 953, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 971, 188, 188, 956, 955, + 188, 959, 188, 188, 188, 957, 188, 954, 188, 188, + 188, 188, 188, 188, 188, 958, 972, 188, 188, 188, + 188, 188, 973, 188, 188, 956, 960, 188, 959, 188, + 188, 188, 188, 188, 961, 188, 188, 188, 188, 188, - 187, 187, 187, 187, 949, 950, 187, 187, 187, 187, - 187, 951, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 956, 187, 187, 187, 948, 957, 187, 187, - 958, 952, 959, 187, 960, 961, 187, 187, 951, 187, - 187, 187, 985, 187, 187, 187, 187, 187, 187, 956, - 187, 187, 187, 971, 957, 985, 187, 958, 952, 959, - 187, 960, 961, 187, 187, 962, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 985, 187, 985, 187, - 971, 187, 187, 187, 187, 187, 187, 187, 964, 187, - 187, 187, 962, 187, 187, 187, 187, 187, 187, 187, + 188, 1001, 958, 972, 962, 188, 188, 188, 188, 973, + 188, 188, 963, 960, 974, 188, 188, 188, 188, 188, + 188, 961, 188, 188, 964, 188, 188, 188, 188, 188, + 965, 962, 188, 188, 188, 975, 976, 188, 188, 963, + 188, 974, 188, 188, 966, 188, 188, 188, 188, 188, + 188, 964, 188, 188, 188, 188, 188, 965, 1001, 977, + 188, 188, 975, 976, 188, 188, 188, 188, 188, 188, + 188, 966, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 967, 188, 188, 968, 977, 188, 188, 188, + 1001, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 963, 187, 187, 966, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 964, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 985, 963, 187, 187, - 966, 187, 187, 187, 187, 965, 967, 187, 187, 187, - 187, 187, 187, 972, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 970, 187, 973, 974, 968, 187, 975, - 969, 985, 965, 967, 187, 187, 187, 187, 187, 187, - 972, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 970, 187, 973, 974, 968, 187, 975, 969, 187, 187, - 976, 187, 977, 187, 187, 187, 187, 187, 187, 187, + 188, 188, 188, 188, 978, 188, 188, 188, 188, 967, + 188, 188, 968, 188, 188, 188, 188, 979, 188, 188, + 987, 188, 188, 188, 1001, 188, 188, 188, 188, 188, + 188, 978, 188, 188, 188, 188, 982, 188, 188, 188, + 188, 188, 188, 188, 979, 188, 188, 987, 188, 188, + 188, 980, 188, 188, 188, 188, 188, 188, 1001, 188, + 188, 188, 188, 982, 188, 188, 188, 981, 188, 188, + 188, 188, 188, 188, 188, 188, 986, 188, 980, 188, + 188, 188, 188, 188, 188, 188, 983, 188, 988, 188, + 984, 188, 188, 985, 981, 188, 188, 188, 188, 188, - 187, 187, 187, 187, 187, 187, 978, 187, 187, 979, - 981, 982, 983, 187, 187, 187, 187, 976, 980, 977, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 978, 187, 187, 979, 981, 982, 983, - 187, 187, 984, 187, 985, 980, 187, 985, 187, 187, - 187, 187, 985, 187, 187, 187, 187, 187, 187, 187, - 985, 985, 985, 187, 985, 985, 985, 985, 985, 984, - 187, 985, 985, 187, 985, 187, 187, 187, 187, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 187, 84, 985, 985, 84, 85, 985, 85, 85, 173, + 188, 188, 188, 986, 188, 188, 989, 188, 990, 188, + 991, 188, 188, 983, 188, 988, 188, 984, 188, 188, + 985, 188, 997, 188, 188, 188, 992, 188, 1001, 188, + 188, 188, 188, 989, 188, 990, 188, 991, 188, 998, + 993, 188, 188, 188, 188, 188, 1001, 188, 188, 997, + 995, 1001, 188, 992, 188, 994, 999, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 998, 993, 188, 188, + 996, 188, 188, 188, 188, 1000, 188, 995, 188, 188, + 188, 188, 994, 999, 188, 188, 188, 188, 188, 188, + 1001, 188, 188, 188, 1001, 1001, 1001, 996, 188, 1001, - 985, 173, 173, 176, 985, 176, 176, 177, 985, 177, - 177, 187, 985, 187, 187, 5, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985 + 188, 1001, 1000, 188, 188, 188, 188, 188, 188, 1001, + 1001, 188, 188, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 188, 1001, 1001, 1001, 1001, 188, 1001, 1001, 1001, 1001, + 1001, 188, 84, 1001, 1001, 84, 85, 1001, 85, 85, + 174, 1001, 174, 174, 177, 1001, 177, 177, 178, 1001, + 178, 178, 188, 1001, 188, 188, 5, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001 } ; -static const flex_int16_t yy_chk[3984] = +static const flex_int16_t yy_chk[4025] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1423,430 +1433,435 @@ static const flex_int16_t yy_chk[3984] = 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, 988, - 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, - 42, 21, 22, 20, 21, 21, 23, 26, 23, 181, + 3, 3, 3, 3, 7, 7, 8, 8, 13, 1004, + 13, 15, 15, 16, 16, 19, 20, 19, 22, 374, + 21, 28, 22, 19, 268, 19, 22, 21, 29, 19, + 19, 42, 22, 183, 21, 22, 20, 21, 21, 23, + 67, 23, 19, 20, 19, 22, 23, 21, 28, 22, + 19, 23, 19, 22, 21, 29, 19, 19, 42, 22, + 67, 21, 22, 20, 21, 21, 23, 67, 23, 25, - 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, + 24, 182, 26, 23, 178, 25, 24, 27, 23, 24, + 26, 40, 24, 27, 27, 27, 26, 67, 30, 40, + 27, 31, 30, 45, 45, 31, 25, 24, 30, 26, + 32, 31, 25, 24, 27, 177, 24, 26, 40, 24, + 27, 27, 27, 26, 32, 30, 40, 27, 31, 30, + 32, 32, 31, 33, 90, 30, 34, 32, 31, 36, + 51, 33, 51, 36, 89, 33, 85, 34, 33, 84, + 39, 32, 39, 34, 96, 39, 81, 32, 32, 56, + 33, 41, 41, 34, 46, 46, 36, 55, 33, 97, + 36, 37, 33, 37, 34, 33, 37, 39, 52, 39, - 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, + 34, 96, 39, 37, 37, 53, 53, 50, 41, 41, + 54, 54, 82, 82, 63, 66, 97, 73, 37, 48, + 37, 63, 47, 37, 100, 66, 101, 63, 88, 88, + 37, 37, 38, 38, 63, 66, 38, 73, 104, 38, + 38, 63, 66, 105, 73, 104, 38, 108, 63, 38, + 43, 100, 66, 101, 63, 175, 175, 181, 181, 38, + 38, 63, 66, 38, 73, 104, 38, 38, 18, 17, + 105, 80, 104, 38, 108, 14, 38, 57, 57, 12, + 57, 57, 57, 57, 57, 57, 64, 57, 57, 57, + 64, 80, 68, 57, 64, 57, 68, 98, 80, 112, - 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, + 64, 57, 68, 57, 107, 98, 99, 57, 57, 99, + 64, 113, 68, 64, 107, 114, 9, 64, 80, 68, + 57, 64, 57, 68, 98, 5, 112, 64, 57, 68, + 57, 107, 98, 99, 57, 57, 99, 64, 113, 68, + 115, 107, 114, 57, 58, 58, 0, 58, 58, 58, + 58, 58, 58, 69, 58, 58, 58, 69, 72, 0, + 116, 58, 72, 69, 118, 102, 74, 115, 119, 72, + 74, 111, 111, 69, 79, 72, 0, 79, 79, 102, + 69, 58, 72, 0, 69, 72, 74, 116, 58, 72, + 69, 118, 102, 74, 79, 119, 72, 74, 111, 111, - 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, + 69, 79, 72, 77, 79, 79, 102, 120, 58, 72, + 58, 59, 77, 74, 77, 59, 121, 77, 59, 109, + 106, 79, 106, 77, 109, 59, 122, 123, 59, 59, + 77, 126, 128, 129, 120, 59, 0, 0, 59, 77, + 0, 77, 59, 121, 77, 59, 109, 106, 0, 106, + 77, 109, 59, 122, 123, 59, 59, 78, 126, 128, + 129, 78, 59, 60, 110, 78, 117, 60, 117, 110, + 124, 60, 117, 124, 131, 110, 0, 60, 132, 117, + 60, 78, 110, 117, 78, 133, 0, 60, 78, 0, + 60, 110, 78, 117, 60, 117, 110, 124, 60, 117, - 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, + 124, 131, 110, 130, 60, 132, 117, 60, 78, 110, + 117, 125, 133, 130, 60, 61, 125, 134, 130, 130, + 137, 135, 61, 135, 61, 136, 138, 136, 139, 61, + 130, 140, 141, 142, 61, 61, 0, 143, 125, 144, + 130, 146, 61, 125, 134, 130, 130, 137, 135, 61, + 135, 61, 136, 138, 136, 139, 61, 147, 140, 141, + 142, 61, 61, 62, 143, 148, 144, 62, 146, 149, + 150, 152, 151, 62, 150, 153, 62, 151, 154, 62, + 155, 156, 157, 62, 147, 0, 158, 154, 159, 0, + 62, 0, 148, 0, 62, 154, 149, 150, 152, 151, - 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, + 62, 150, 153, 62, 151, 154, 62, 155, 156, 157, + 62, 65, 65, 158, 154, 159, 160, 161, 65, 65, + 65, 162, 154, 163, 164, 65, 165, 160, 166, 165, + 167, 65, 0, 170, 168, 0, 0, 171, 65, 65, + 168, 172, 270, 160, 161, 65, 65, 65, 162, 169, + 163, 164, 65, 165, 160, 166, 165, 167, 65, 70, + 170, 168, 169, 70, 171, 0, 272, 168, 172, 270, + 273, 188, 190, 70, 189, 189, 169, 275, 277, 70, + 70, 0, 278, 70, 0, 0, 70, 190, 0, 169, + 70, 188, 190, 272, 0, 189, 0, 273, 188, 190, - 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, + 70, 189, 189, 279, 275, 277, 70, 70, 191, 278, + 70, 71, 71, 196, 190, 191, 193, 198, 188, 190, + 71, 198, 189, 191, 71, 0, 0, 71, 191, 193, + 279, 71, 0, 196, 0, 191, 193, 0, 71, 71, + 196, 198, 191, 193, 198, 0, 0, 71, 198, 192, + 191, 71, 192, 192, 71, 191, 193, 281, 71, 75, + 196, 75, 282, 193, 75, 194, 283, 194, 198, 284, + 285, 75, 75, 192, 0, 287, 192, 0, 0, 192, + 192, 75, 0, 0, 281, 289, 75, 194, 75, 282, + 0, 75, 194, 283, 194, 0, 284, 285, 75, 75, - 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, + 192, 220, 287, 290, 195, 195, 0, 292, 75, 76, + 76, 0, 289, 76, 194, 197, 76, 76, 199, 195, + 0, 220, 197, 76, 195, 199, 76, 199, 220, 197, + 290, 195, 195, 76, 292, 197, 76, 76, 199, 293, + 76, 201, 197, 76, 76, 199, 195, 200, 220, 197, + 76, 195, 199, 76, 199, 202, 197, 200, 201, 204, + 76, 201, 197, 207, 0, 199, 293, 200, 201, 280, + 202, 280, 204, 204, 200, 202, 0, 207, 0, 204, + 0, 0, 202, 207, 200, 201, 204, 0, 201, 205, + 207, 206, 208, 208, 200, 294, 280, 202, 280, 204, - 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, + 204, 206, 202, 203, 207, 205, 204, 203, 203, 205, + 207, 206, 0, 208, 203, 209, 205, 209, 206, 208, + 208, 203, 294, 295, 296, 0, 211, 203, 206, 0, + 203, 297, 205, 211, 203, 203, 205, 209, 206, 212, + 208, 203, 209, 0, 209, 299, 211, 291, 203, 214, + 295, 296, 212, 211, 203, 0, 214, 221, 297, 212, + 211, 221, 291, 0, 209, 210, 212, 210, 0, 214, + 213, 210, 299, 211, 291, 215, 214, 221, 210, 212, + 213, 216, 210, 214, 221, 215, 212, 210, 221, 291, + 213, 216, 210, 0, 210, 215, 214, 213, 210, 217, - 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, + 300, 216, 215, 0, 221, 210, 0, 213, 216, 210, + 0, 218, 215, 217, 210, 301, 217, 213, 216, 217, + 218, 219, 215, 0, 222, 218, 217, 300, 216, 225, + 224, 218, 0, 225, 226, 222, 0, 219, 218, 224, + 217, 219, 301, 217, 222, 0, 217, 218, 219, 225, + 224, 222, 218, 302, 226, 0, 225, 224, 218, 228, + 225, 226, 222, 238, 219, 228, 224, 228, 219, 227, + 227, 222, 223, 223, 0, 303, 225, 224, 0, 228, + 302, 226, 223, 238, 0, 304, 228, 223, 223, 227, + 238, 230, 228, 223, 228, 0, 227, 227, 0, 223, - 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, + 223, 229, 303, 229, 230, 229, 228, 0, 0, 223, + 238, 230, 304, 231, 223, 223, 227, 232, 230, 233, + 223, 234, 231, 236, 305, 229, 232, 236, 229, 0, + 229, 230, 229, 231, 233, 235, 234, 232, 230, 233, + 231, 234, 235, 0, 232, 0, 233, 236, 234, 231, + 236, 305, 229, 232, 236, 235, 237, 237, 239, 239, + 231, 233, 235, 234, 232, 0, 233, 242, 234, 235, + 254, 242, 240, 243, 236, 241, 237, 243, 0, 239, + 0, 0, 235, 237, 237, 239, 239, 240, 241, 0, + 254, 242, 240, 243, 242, 241, 244, 254, 242, 240, - 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, + 243, 0, 241, 237, 243, 244, 239, 245, 246, 245, + 244, 246, 0, 307, 240, 241, 244, 254, 242, 240, + 243, 250, 241, 244, 247, 250, 247, 245, 246, 248, + 0, 0, 244, 247, 245, 246, 245, 244, 246, 248, + 307, 247, 0, 244, 249, 250, 247, 251, 250, 248, + 251, 247, 250, 247, 245, 246, 248, 249, 252, 255, + 247, 253, 308, 309, 249, 252, 248, 255, 247, 253, + 251, 249, 250, 247, 251, 0, 248, 251, 252, 255, + 253, 253, 256, 257, 249, 252, 255, 0, 253, 308, + 309, 249, 252, 256, 255, 310, 253, 251, 311, 257, - 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, - 337, 338, 339, 340, 341, 318, 342, 343, 326, 327, + 259, 259, 256, 257, 0, 252, 255, 253, 253, 256, + 257, 258, 260, 0, 263, 258, 260, 0, 258, 0, + 256, 259, 310, 0, 262, 311, 257, 259, 259, 256, + 257, 258, 260, 261, 263, 264, 312, 262, 258, 260, + 261, 263, 258, 260, 262, 258, 261, 313, 259, 0, + 264, 262, 265, 261, 314, 264, 265, 315, 258, 260, + 261, 263, 264, 312, 262, 316, 317, 261, 318, 319, + 320, 262, 322, 261, 313, 321, 265, 264, 323, 265, + 261, 314, 264, 265, 315, 321, 325, 326, 327, 328, + 329, 330, 316, 317, 331, 318, 319, 320, 332, 322, - 328, 329, 344, 330, 345, 332, 346, 348, 333, 334, - 349, 335, 350, 351, 353, 354, 336, 337, 338, 339, - 340, 341, 355, 342, 343, 356, 358, 360, 359, 344, - 359, 345, 361, 346, 348, 362, 363, 349, 364, 350, - 351, 353, 354, 365, 366, 367, 368, 371, 366, 355, - 473, 0, 356, 358, 360, 359, 372, 359, 373, 361, - 374, 375, 362, 363, 376, 364, 474, 371, 375, 378, - 365, 366, 367, 368, 371, 366, 372, 473, 373, 0, - 374, 375, 377, 372, 376, 373, 377, 374, 375, 378, - 379, 376, 0, 474, 371, 375, 378, 0, 383, 0, + 333, 335, 321, 265, 336, 323, 337, 338, 339, 340, + 341, 342, 321, 325, 326, 327, 328, 329, 330, 343, + 344, 331, 345, 346, 347, 332, 348, 333, 335, 349, + 351, 336, 352, 337, 338, 339, 340, 341, 342, 353, + 354, 356, 357, 358, 359, 361, 343, 344, 363, 345, + 346, 347, 362, 348, 362, 364, 349, 351, 365, 352, + 366, 367, 368, 369, 371, 372, 353, 354, 356, 357, + 358, 359, 361, 370, 375, 363, 376, 370, 377, 362, + 0, 362, 364, 479, 0, 365, 378, 366, 367, 368, + 369, 371, 372, 0, 375, 379, 376, 380, 377, 382, - 379, 380, 382, 372, 382, 373, 377, 374, 375, 377, - 379, 376, 386, 377, 383, 381, 378, 379, 383, 380, - 387, 380, 381, 384, 382, 383, 386, 379, 380, 382, - 385, 382, 386, 377, 385, 381, 388, 379, 384, 386, - 387, 383, 381, 384, 389, 383, 380, 387, 380, 381, - 384, 382, 475, 386, 385, 476, 388, 385, 394, 386, - 392, 385, 381, 388, 389, 384, 390, 387, 391, 0, - 384, 389, 391, 390, 393, 392, 393, 0, 394, 475, - 392, 385, 476, 388, 477, 394, 390, 392, 398, 395, - 0, 389, 391, 390, 396, 391, 393, 396, 0, 391, + 370, 375, 379, 376, 370, 377, 378, 381, 383, 0, + 479, 381, 384, 378, 386, 379, 386, 380, 383, 382, + 385, 375, 379, 376, 380, 377, 382, 385, 383, 379, + 384, 381, 384, 378, 381, 383, 386, 0, 381, 384, + 385, 386, 379, 386, 380, 383, 382, 385, 387, 388, + 391, 389, 392, 0, 385, 383, 390, 384, 381, 384, + 390, 387, 393, 386, 391, 388, 389, 385, 387, 388, + 391, 389, 392, 0, 394, 387, 388, 391, 389, 392, + 390, 396, 393, 390, 398, 396, 398, 390, 387, 393, + 480, 391, 388, 389, 394, 387, 388, 391, 389, 392, - 390, 393, 392, 393, 395, 394, 399, 392, 398, 395, - 401, 477, 0, 390, 397, 398, 395, 396, 400, 391, - 0, 396, 400, 393, 396, 397, 399, 406, 478, 0, - 401, 395, 0, 399, 397, 398, 395, 401, 402, 404, - 402, 397, 400, 405, 396, 400, 404, 406, 403, 400, - 0, 407, 397, 399, 406, 478, 405, 401, 0, 404, - 402, 397, 403, 405, 408, 402, 404, 402, 403, 400, - 405, 407, 408, 404, 406, 403, 411, 410, 407, 0, - 410, 409, 412, 405, 408, 412, 404, 402, 409, 403, - 405, 408, 411, 413, 0, 403, 411, 413, 407, 408, + 397, 394, 399, 395, 400, 396, 398, 390, 396, 393, + 395, 398, 396, 398, 481, 397, 403, 480, 0, 400, + 397, 394, 399, 395, 400, 401, 0, 397, 401, 399, + 395, 400, 396, 398, 402, 405, 403, 395, 404, 405, + 406, 481, 397, 403, 0, 402, 400, 397, 401, 399, + 395, 400, 401, 411, 402, 401, 482, 408, 404, 405, + 406, 402, 405, 403, 0, 404, 405, 406, 407, 409, + 407, 408, 402, 411, 412, 401, 409, 408, 0, 410, + 411, 402, 0, 482, 408, 404, 405, 406, 415, 409, + 407, 415, 410, 416, 412, 407, 409, 407, 408, 410, - 410, 409, 412, 411, 410, 480, 414, 410, 409, 412, - 415, 408, 412, 413, 482, 409, 417, 0, 416, 411, - 413, 414, 417, 411, 413, 415, 414, 410, 409, 412, - 415, 416, 480, 414, 418, 419, 417, 415, 416, 420, - 413, 482, 0, 417, 418, 416, 0, 421, 414, 417, - 422, 0, 415, 414, 418, 419, 423, 415, 416, 420, - 422, 418, 419, 417, 424, 416, 420, 421, 425, 427, - 422, 418, 423, 424, 421, 0, 423, 422, 426, 0, - 0, 418, 419, 423, 424, 0, 420, 422, 425, 427, - 0, 424, 483, 426, 421, 425, 427, 422, 426, 423, + 411, 412, 413, 409, 408, 414, 410, 0, 483, 416, + 413, 415, 414, 416, 484, 415, 409, 407, 415, 410, + 416, 412, 413, 0, 417, 414, 410, 417, 419, 413, + 418, 0, 414, 0, 418, 483, 416, 413, 415, 414, + 416, 484, 424, 419, 417, 420, 421, 422, 419, 413, + 418, 417, 414, 422, 417, 419, 425, 418, 423, 421, + 420, 418, 424, 0, 426, 420, 421, 422, 423, 424, + 419, 417, 420, 421, 422, 419, 425, 418, 423, 0, + 422, 0, 0, 425, 426, 423, 421, 420, 427, 424, + 428, 426, 420, 421, 422, 423, 430, 0, 427, 431, - 424, 0, 428, 423, 0, 426, 428, 429, 429, 0, - 0, 424, 431, 430, 431, 425, 427, 430, 484, 483, - 426, 0, 428, 433, 0, 426, 432, 485, 429, 428, - 0, 434, 431, 428, 429, 429, 435, 430, 433, 431, - 430, 431, 432, 433, 430, 484, 432, 434, 437, 428, - 433, 434, 438, 432, 485, 429, 435, 439, 434, 431, - 436, 437, 440, 435, 430, 433, 438, 436, 437, 432, - 433, 0, 438, 432, 434, 437, 487, 439, 434, 438, - 436, 441, 440, 435, 439, 441, 443, 436, 437, 440, - 444, 442, 445, 438, 436, 437, 445, 443, 444, 438, + 429, 432, 0, 425, 440, 423, 428, 0, 427, 429, + 428, 426, 486, 0, 431, 427, 430, 428, 433, 431, + 429, 432, 433, 430, 440, 427, 431, 429, 432, 434, + 434, 440, 436, 428, 436, 427, 429, 428, 433, 486, + 435, 431, 437, 430, 435, 433, 431, 429, 432, 433, + 434, 440, 436, 438, 439, 444, 434, 434, 437, 436, + 489, 436, 437, 0, 435, 433, 490, 435, 438, 437, + 439, 435, 0, 438, 439, 444, 441, 434, 443, 436, + 438, 439, 444, 441, 445, 437, 442, 489, 491, 437, + 446, 435, 443, 490, 446, 438, 441, 439, 443, 442, - 442, 0, 0, 487, 439, 441, 443, 436, 441, 440, - 444, 442, 441, 443, 446, 448, 445, 444, 442, 445, - 449, 0, 0, 445, 443, 444, 450, 442, 447, 446, - 449, 447, 441, 443, 446, 448, 0, 444, 442, 451, - 449, 446, 448, 445, 0, 452, 450, 449, 447, 453, - 456, 488, 489, 450, 0, 447, 446, 449, 447, 451, - 457, 446, 448, 452, 453, 452, 451, 449, 454, 453, - 456, 457, 452, 450, 455, 447, 453, 456, 488, 489, - 457, 455, 0, 454, 458, 460, 451, 457, 454, 461, - 452, 453, 452, 459, 455, 454, 453, 456, 457, 458, + 438, 439, 444, 441, 445, 443, 442, 447, 450, 448, + 441, 445, 450, 442, 446, 491, 447, 446, 492, 443, + 448, 446, 449, 441, 0, 443, 442, 447, 494, 448, + 449, 445, 450, 442, 447, 450, 448, 0, 451, 450, + 453, 446, 449, 447, 455, 492, 456, 448, 452, 449, + 0, 452, 454, 451, 447, 494, 448, 449, 451, 450, + 453, 495, 454, 457, 455, 451, 456, 453, 452, 449, + 0, 455, 454, 456, 0, 452, 0, 458, 452, 454, + 451, 457, 461, 457, 0, 451, 459, 453, 495, 454, + 457, 455, 458, 456, 462, 452, 460, 458, 464, 454, - 0, 455, 459, 0, 458, 460, 0, 457, 455, 461, - 454, 458, 460, 459, 462, 454, 461, 464, 463, 490, - 459, 455, 492, 462, 493, 0, 458, 464, 463, 459, - 463, 458, 460, 466, 462, 465, 461, 464, 463, 465, - 459, 462, 466, 0, 464, 463, 490, 467, 494, 492, - 462, 493, 468, 466, 464, 463, 469, 463, 0, 465, - 466, 462, 465, 467, 464, 463, 465, 467, 470, 466, - 468, 469, 468, 0, 467, 494, 469, 470, 497, 468, - 466, 470, 471, 469, 498, 471, 465, 472, 470, 499, - 467, 500, 501, 502, 467, 470, 506, 468, 469, 468, + 463, 459, 461, 460, 458, 462, 459, 464, 457, 461, + 457, 465, 0, 459, 462, 463, 460, 466, 464, 458, + 463, 462, 0, 460, 458, 464, 467, 463, 459, 461, + 460, 465, 462, 459, 464, 467, 0, 466, 465, 468, + 469, 462, 463, 460, 466, 464, 467, 463, 470, 468, + 469, 468, 470, 467, 471, 0, 0, 0, 465, 468, + 469, 0, 467, 471, 466, 474, 468, 469, 472, 473, + 0, 473, 470, 467, 471, 470, 468, 469, 468, 470, + 476, 471, 475, 474, 472, 474, 468, 469, 472, 476, + 471, 473, 474, 476, 0, 472, 473, 475, 473, 470, - 472, 507, 471, 469, 470, 497, 509, 472, 470, 471, - 511, 498, 471, 513, 472, 470, 499, 514, 500, 501, - 502, 515, 516, 506, 517, 518, 520, 472, 507, 471, - 524, 526, 527, 509, 472, 529, 518, 511, 528, 528, - 513, 530, 532, 533, 514, 534, 535, 536, 515, 516, - 538, 517, 518, 520, 539, 540, 541, 524, 526, 527, - 542, 543, 529, 518, 544, 528, 528, 545, 530, 532, - 533, 547, 534, 535, 536, 548, 549, 538, 550, 553, - 554, 539, 540, 541, 555, 556, 557, 542, 543, 558, - 559, 544, 560, 562, 545, 564, 0, 0, 547, 0, + 476, 471, 475, 477, 496, 497, 477, 476, 478, 475, + 474, 472, 474, 499, 500, 472, 476, 501, 473, 504, + 476, 478, 505, 477, 475, 506, 507, 476, 478, 475, + 477, 496, 497, 477, 508, 478, 509, 513, 514, 516, + 499, 500, 518, 520, 501, 521, 504, 522, 478, 505, + 477, 523, 506, 507, 524, 478, 525, 527, 531, 533, + 534, 508, 536, 509, 513, 514, 516, 525, 537, 518, + 520, 539, 521, 540, 522, 535, 535, 541, 523, 542, + 543, 524, 545, 525, 527, 531, 533, 534, 546, 536, + 547, 548, 549, 550, 525, 537, 551, 552, 539, 554, - 0, 567, 548, 549, 569, 550, 553, 554, 0, 570, - 568, 555, 556, 557, 567, 572, 558, 559, 0, 560, - 562, 567, 564, 568, 569, 571, 573, 575, 567, 570, - 568, 569, 0, 0, 663, 572, 570, 568, 571, 574, - 0, 567, 572, 574, 665, 571, 573, 575, 567, 578, - 568, 569, 571, 573, 575, 577, 570, 568, 0, 576, - 580, 663, 572, 574, 578, 571, 574, 576, 577, 578, - 574, 665, 571, 573, 575, 577, 578, 581, 579, 576, - 580, 0, 577, 582, 581, 584, 576, 580, 0, 584, - 574, 578, 579, 583, 576, 577, 578, 581, 579, 582, + 540, 555, 535, 535, 541, 556, 542, 543, 557, 545, + 560, 561, 562, 563, 564, 546, 565, 547, 548, 549, + 550, 566, 567, 551, 552, 568, 554, 570, 555, 572, + 577, 575, 556, 576, 0, 557, 0, 560, 561, 562, + 563, 564, 578, 565, 575, 580, 576, 581, 566, 567, + 577, 575, 568, 576, 570, 579, 572, 577, 575, 582, + 576, 583, 578, 582, 584, 580, 673, 581, 579, 578, + 675, 575, 580, 576, 581, 579, 0, 577, 575, 585, + 576, 583, 579, 582, 584, 586, 582, 585, 583, 578, + 582, 584, 580, 673, 581, 579, 0, 675, 586, 585, - 0, 585, 577, 582, 581, 579, 576, 580, 583, 584, - 582, 581, 584, 583, 587, 586, 584, 586, 587, 579, - 583, 585, 0, 589, 581, 579, 582, 590, 585, 666, - 582, 588, 0, 0, 587, 583, 584, 586, 588, 0, - 583, 587, 586, 589, 586, 587, 591, 590, 585, 592, - 589, 588, 593, 0, 590, 0, 666, 591, 588, 595, - 592, 587, 594, 595, 586, 588, 591, 596, 593, 592, - 589, 596, 593, 591, 590, 0, 592, 594, 588, 593, - 597, 598, 594, 595, 591, 599, 595, 592, 0, 594, - 595, 596, 667, 591, 596, 593, 592, 602, 596, 593, + 587, 589, 579, 588, 592, 586, 585, 0, 583, 590, + 582, 584, 586, 676, 585, 587, 590, 588, 591, 592, + 587, 589, 0, 588, 592, 586, 585, 587, 589, 590, + 588, 592, 586, 593, 591, 594, 590, 593, 591, 598, + 676, 677, 587, 590, 588, 591, 592, 587, 589, 596, + 588, 592, 595, 596, 595, 594, 590, 593, 599, 598, + 593, 591, 594, 597, 593, 591, 598, 678, 677, 596, + 597, 0, 0, 602, 595, 606, 596, 0, 599, 595, + 596, 595, 594, 597, 593, 599, 598, 600, 601, 602, + 597, 603, 0, 602, 678, 606, 596, 597, 600, 601, - 597, 598, 600, 601, 594, 599, 600, 597, 598, 594, - 595, 603, 599, 0, 601, 604, 668, 602, 596, 667, - 603, 669, 0, 601, 602, 606, 600, 597, 598, 600, - 601, 603, 599, 600, 607, 604, 605, 0, 603, 670, - 609, 601, 604, 668, 602, 606, 605, 603, 669, 613, - 601, 608, 606, 600, 607, 610, 605, 611, 603, 609, - 609, 607, 604, 605, 608, 0, 670, 609, 610, 613, - 611, 608, 606, 605, 0, 610, 613, 611, 608, 615, - 616, 607, 610, 605, 611, 614, 609, 609, 612, 617, - 612, 608, 614, 619, 0, 610, 613, 611, 608, 615, + 602, 595, 606, 679, 607, 599, 603, 600, 601, 608, + 597, 603, 680, 604, 600, 601, 602, 604, 603, 605, + 602, 611, 606, 605, 607, 600, 601, 0, 609, 608, + 679, 607, 609, 603, 600, 601, 608, 604, 603, 680, + 604, 611, 610, 605, 604, 612, 605, 613, 611, 682, + 605, 607, 609, 610, 612, 609, 608, 615, 616, 609, + 0, 0, 610, 614, 604, 612, 622, 613, 611, 610, + 605, 0, 612, 614, 613, 617, 682, 615, 616, 609, + 610, 612, 0, 614, 615, 616, 622, 618, 617, 610, + 614, 0, 612, 622, 613, 617, 619, 0, 620, 621, - 616, 612, 610, 618, 611, 614, 615, 616, 612, 617, - 0, 621, 614, 619, 620, 612, 617, 612, 618, 614, - 619, 620, 0, 618, 672, 0, 615, 616, 612, 622, - 618, 621, 614, 624, 620, 612, 617, 625, 621, 623, - 619, 620, 623, 622, 622, 618, 624, 0, 620, 622, - 618, 672, 626, 624, 626, 627, 622, 625, 621, 623, - 624, 620, 0, 0, 625, 628, 623, 631, 0, 623, - 622, 622, 0, 624, 626, 627, 622, 629, 628, 626, - 624, 626, 627, 630, 625, 628, 623, 631, 634, 632, - 629, 630, 628, 632, 631, 633, 634, 629, 0, 633, + 614, 621, 617, 683, 615, 616, 618, 618, 0, 619, + 614, 620, 621, 622, 618, 617, 619, 623, 620, 621, + 624, 625, 617, 619, 623, 620, 621, 0, 621, 626, + 683, 0, 628, 618, 618, 627, 619, 623, 620, 621, + 624, 625, 0, 619, 623, 620, 621, 624, 625, 626, + 627, 623, 628, 629, 630, 627, 626, 0, 632, 628, + 629, 632, 627, 0, 623, 0, 684, 624, 625, 631, + 634, 636, 0, 629, 630, 686, 626, 627, 632, 628, + 629, 630, 627, 631, 631, 632, 633, 629, 632, 631, + 634, 636, 635, 684, 635, 637, 631, 634, 636, 633, - 0, 626, 627, 630, 629, 628, 0, 0, 634, 673, - 630, 0, 628, 632, 631, 634, 632, 629, 630, 633, - 632, 635, 633, 634, 629, 637, 633, 636, 0, 638, - 630, 640, 0, 637, 635, 634, 673, 639, 638, 639, - 632, 635, 636, 641, 0, 637, 633, 636, 635, 638, - 0, 640, 637, 642, 636, 643, 638, 642, 640, 639, - 637, 635, 674, 641, 639, 638, 639, 644, 635, 636, - 641, 645, 637, 642, 636, 643, 638, 644, 640, 646, - 642, 647, 643, 648, 642, 648, 639, 644, 0, 674, - 641, 645, 676, 650, 644, 647, 0, 0, 645, 646, + 629, 630, 686, 640, 639, 632, 633, 638, 637, 0, + 631, 631, 639, 633, 635, 637, 631, 634, 636, 635, + 638, 635, 637, 640, 639, 641, 633, 638, 645, 641, + 640, 639, 0, 633, 638, 637, 642, 643, 649, 639, + 642, 635, 637, 645, 0, 643, 644, 638, 645, 641, + 640, 639, 641, 0, 638, 645, 641, 643, 649, 644, + 642, 646, 647, 642, 643, 649, 644, 642, 0, 646, + 645, 647, 643, 644, 650, 645, 641, 648, 687, 648, + 652, 646, 647, 654, 643, 649, 644, 642, 646, 647, + 0, 651, 653, 644, 650, 651, 646, 655, 647, 648, - 642, 647, 643, 677, 644, 648, 646, 649, 647, 650, - 648, 651, 648, 650, 644, 651, 649, 0, 645, 676, - 650, 653, 647, 653, 652, 654, 646, 649, 647, 655, - 677, 0, 648, 678, 649, 651, 650, 656, 651, 652, - 650, 653, 651, 649, 652, 654, 679, 657, 653, 655, - 653, 652, 654, 656, 649, 658, 655, 656, 659, 660, - 678, 680, 651, 681, 656, 682, 652, 657, 653, 683, - 684, 652, 654, 679, 657, 658, 655, 685, 659, 660, - 656, 687, 658, 688, 656, 659, 660, 690, 680, 693, - 681, 694, 682, 695, 657, 696, 683, 684, 701, 703, + 652, 650, 653, 654, 648, 687, 648, 652, 646, 647, + 654, 651, 653, 657, 656, 657, 658, 655, 651, 653, + 0, 650, 651, 0, 655, 658, 648, 652, 656, 653, + 654, 659, 0, 660, 656, 657, 658, 660, 651, 653, + 657, 656, 657, 658, 655, 688, 662, 659, 662, 663, + 661, 659, 658, 0, 0, 656, 0, 660, 659, 665, + 660, 656, 657, 658, 660, 661, 662, 666, 664, 663, + 661, 664, 688, 662, 659, 662, 663, 661, 659, 665, + 667, 668, 669, 666, 660, 670, 665, 666, 664, 689, + 690, 691, 661, 662, 666, 664, 663, 661, 664, 692, - 704, 705, 658, 708, 685, 659, 660, 709, 687, 710, - 688, 711, 712, 714, 690, 715, 693, 716, 694, 717, - 695, 718, 696, 719, 720, 701, 703, 704, 705, 721, - 708, 722, 724, 725, 709, 726, 710, 728, 711, 712, - 714, 729, 715, 731, 716, 732, 717, 0, 718, 734, - 719, 720, 0, 733, 0, 735, 721, 736, 722, 724, - 725, 0, 726, 731, 728, 732, 737, 737, 729, 734, - 731, 739, 732, 733, 733, 735, 734, 736, 0, 738, - 733, 739, 735, 740, 736, 741, 0, 737, 738, 0, - 731, 739, 732, 737, 737, 0, 734, 742, 739, 738, + 667, 668, 669, 693, 694, 670, 665, 667, 668, 669, + 666, 695, 670, 697, 666, 664, 689, 690, 691, 698, + 700, 703, 704, 705, 706, 711, 692, 667, 668, 669, + 693, 694, 670, 713, 714, 715, 718, 719, 695, 720, + 697, 721, 722, 724, 725, 726, 698, 700, 703, 704, + 705, 706, 711, 727, 728, 729, 730, 731, 732, 734, + 713, 714, 715, 718, 719, 735, 720, 736, 721, 722, + 724, 725, 726, 738, 739, 740, 742, 743, 744, 813, + 727, 728, 729, 730, 731, 732, 734, 745, 746, 747, + 748, 748, 735, 751, 736, 0, 742, 743, 744, 744, - 733, 733, 735, 740, 736, 741, 738, 742, 739, 743, - 740, 744, 741, 745, 737, 738, 743, 742, 739, 747, - 0, 748, 746, 0, 742, 749, 738, 801, 747, 743, - 740, 744, 741, 745, 742, 0, 743, 746, 744, 747, - 745, 748, 746, 743, 742, 749, 747, 750, 748, 746, - 751, 803, 749, 804, 801, 747, 743, 805, 744, 752, - 745, 754, 750, 754, 746, 751, 747, 750, 748, 746, - 751, 753, 749, 752, 750, 753, 0, 751, 803, 752, - 804, 756, 0, 754, 805, 757, 752, 757, 754, 750, - 754, 753, 751, 759, 750, 0, 755, 751, 753, 761, + 738, 739, 740, 742, 743, 744, 813, 745, 746, 747, + 749, 748, 750, 751, 745, 746, 747, 748, 748, 749, + 751, 752, 750, 742, 743, 744, 744, 755, 0, 0, + 749, 815, 750, 753, 745, 746, 747, 749, 748, 750, + 751, 752, 756, 753, 754, 0, 749, 755, 752, 750, + 816, 754, 757, 753, 755, 759, 758, 749, 815, 750, + 753, 760, 756, 817, 754, 758, 0, 757, 752, 756, + 753, 754, 757, 0, 755, 759, 758, 816, 754, 757, + 753, 760, 759, 758, 763, 761, 762, 0, 760, 756, + 817, 754, 758, 765, 757, 765, 818, 767, 763, 757, - 752, 756, 753, 755, 758, 757, 752, 760, 756, 762, - 754, 0, 757, 759, 757, 764, 755, 758, 753, 761, - 759, 0, 760, 755, 758, 765, 761, 760, 756, 762, - 755, 758, 757, 763, 760, 764, 762, 806, 767, 765, - 759, 768, 764, 755, 758, 765, 761, 769, 763, 760, - 766, 758, 765, 763, 760, 0, 762, 766, 767, 770, - 763, 768, 764, 771, 806, 767, 765, 769, 768, 772, - 766, 776, 765, 774, 769, 763, 774, 766, 773, 770, - 763, 777, 773, 771, 766, 767, 770, 808, 768, 772, - 771, 776, 775, 774, 769, 778, 772, 766, 776, 0, + 761, 762, 759, 758, 763, 761, 762, 0, 760, 766, + 764, 763, 761, 762, 764, 765, 766, 767, 770, 768, + 765, 768, 765, 818, 767, 763, 0, 761, 762, 766, + 764, 763, 761, 762, 769, 771, 766, 764, 770, 768, + 772, 764, 765, 766, 767, 770, 768, 769, 768, 773, + 771, 775, 777, 774, 769, 771, 766, 764, 0, 777, + 772, 769, 771, 0, 820, 770, 768, 772, 774, 773, + 776, 775, 777, 774, 769, 0, 773, 771, 775, 777, + 774, 769, 771, 778, 776, 779, 777, 772, 780, 781, + 776, 820, 0, 782, 783, 774, 773, 776, 775, 777, - 774, 777, 773, 774, 779, 773, 770, 775, 777, 773, - 771, 0, 775, 780, 808, 778, 772, 779, 776, 775, - 774, 781, 778, 782, 779, 783, 780, 782, 777, 773, - 809, 779, 784, 780, 775, 789, 784, 785, 785, 775, - 780, 781, 778, 782, 779, 783, 786, 0, 781, 789, - 782, 779, 783, 780, 782, 789, 784, 809, 785, 784, - 780, 786, 789, 784, 785, 785, 786, 788, 781, 791, - 782, 788, 783, 786, 787, 787, 789, 790, 0, 0, - 793, 0, 789, 784, 791, 785, 794, 0, 786, 791, - 790, 788, 796, 786, 788, 787, 791, 790, 788, 792, + 774, 821, 784, 778, 785, 779, 784, 785, 780, 781, + 778, 776, 779, 782, 783, 780, 781, 776, 787, 788, + 782, 783, 786, 789, 785, 0, 784, 824, 821, 784, + 778, 785, 779, 784, 785, 780, 781, 786, 787, 788, + 782, 783, 786, 789, 0, 787, 788, 790, 791, 786, + 789, 785, 792, 784, 824, 828, 794, 830, 793, 0, + 790, 791, 793, 831, 786, 787, 788, 790, 791, 786, + 789, 797, 792, 795, 790, 791, 794, 795, 793, 792, + 796, 796, 828, 794, 830, 793, 797, 790, 791, 793, + 831, 797, 799, 0, 790, 791, 799, 795, 797, 792, - 793, 787, 787, 792, 790, 797, 794, 793, 795, 795, - 812, 791, 796, 794, 798, 0, 791, 790, 788, 796, - 800, 816, 787, 792, 790, 797, 792, 793, 798, 795, - 792, 818, 797, 794, 798, 795, 795, 812, 799, 796, - 800, 798, 799, 819, 822, 825, 826, 800, 816, 829, - 792, 830, 797, 832, 833, 798, 795, 834, 818, 836, - 837, 798, 799, 841, 843, 799, 844, 800, 845, 799, - 819, 822, 825, 826, 850, 0, 829, 851, 830, 852, - 832, 833, 854, 853, 834, 906, 836, 837, 0, 799, - 841, 843, 853, 844, 855, 845, 857, 851, 856, 852, + 795, 796, 801, 794, 795, 793, 800, 796, 796, 798, + 798, 804, 802, 797, 0, 801, 799, 803, 797, 799, + 800, 803, 801, 799, 795, 805, 800, 802, 796, 801, + 798, 804, 802, 800, 806, 806, 798, 798, 804, 802, + 807, 803, 801, 799, 803, 805, 808, 800, 803, 801, + 809, 834, 805, 800, 802, 806, 812, 798, 804, 802, + 807, 806, 806, 837, 809, 810, 808, 807, 803, 810, + 809, 811, 805, 808, 838, 811, 812, 809, 834, 841, + 842, 844, 806, 812, 845, 846, 848, 807, 849, 810, + 837, 809, 810, 808, 853, 811, 810, 809, 811, 855, - 859, 850, 854, 853, 851, 856, 852, 0, 855, 854, - 853, 858, 906, 858, 855, 859, 857, 860, 856, 853, - 859, 855, 0, 857, 851, 856, 852, 859, 861, 854, - 853, 863, 856, 858, 862, 855, 862, 860, 858, 864, - 858, 855, 859, 857, 860, 856, 0, 859, 861, 865, - 866, 863, 867, 868, 870, 861, 862, 0, 863, 864, - 858, 862, 868, 862, 860, 871, 864, 869, 872, 865, - 866, 873, 867, 868, 870, 861, 865, 866, 863, 867, - 868, 870, 869, 862, 874, 871, 864, 869, 872, 868, - 875, 873, 871, 876, 869, 872, 865, 866, 873, 867, + 856, 838, 811, 812, 857, 862, 841, 842, 844, 863, + 864, 845, 846, 848, 865, 849, 810, 0, 867, 866, + 920, 853, 811, 0, 870, 0, 855, 856, 866, 868, + 864, 857, 862, 869, 865, 0, 863, 864, 867, 866, + 869, 865, 873, 868, 870, 867, 866, 920, 872, 868, + 871, 870, 871, 869, 874, 866, 868, 864, 876, 0, + 869, 865, 873, 872, 922, 867, 866, 869, 872, 873, + 868, 870, 871, 877, 874, 872, 868, 871, 876, 871, + 869, 874, 875, 878, 875, 876, 879, 880, 881, 873, + 872, 922, 883, 877, 0, 872, 884, 881, 885, 871, - 868, 870, 877, 875, 874, 878, 881, 0, 908, 869, - 875, 874, 871, 876, 869, 872, 879, 875, 873, 882, - 876, 0, 877, 879, 880, 878, 881, 883, 880, 877, - 875, 874, 878, 881, 882, 908, 879, 875, 884, 882, - 876, 0, 885, 879, 888, 914, 882, 883, 880, 877, - 879, 880, 878, 881, 883, 880, 887, 886, 884, 886, - 889, 882, 885, 879, 888, 884, 882, 0, 890, 885, - 887, 888, 914, 892, 883, 880, 887, 893, 894, 886, - 889, 893, 894, 887, 886, 884, 886, 889, 890, 885, - 896, 888, 891, 892, 897, 890, 895, 887, 898, 891, + 877, 874, 882, 878, 875, 876, 879, 880, 881, 875, + 878, 875, 883, 879, 880, 881, 884, 882, 885, 883, + 877, 886, 882, 884, 881, 885, 887, 888, 928, 882, + 878, 875, 889, 879, 880, 881, 890, 891, 893, 883, + 888, 886, 893, 884, 882, 885, 887, 888, 886, 882, + 894, 892, 889, 887, 888, 928, 890, 891, 892, 889, + 895, 896, 893, 890, 891, 893, 897, 888, 886, 893, + 894, 892, 898, 887, 888, 895, 930, 894, 892, 889, + 895, 896, 931, 890, 891, 892, 897, 895, 896, 893, + 900, 901, 898, 897, 899, 902, 899, 894, 892, 898, - 892, 893, 894, 887, 893, 894, 886, 889, 893, 894, - 896, 895, 891, 899, 897, 890, 895, 896, 898, 891, - 892, 897, 916, 895, 900, 898, 891, 917, 893, 894, - 920, 900, 923, 899, 924, 925, 927, 896, 895, 891, - 899, 897, 0, 895, 900, 898, 928, 929, 930, 916, - 931, 900, 933, 953, 917, 0, 927, 920, 900, 923, - 899, 924, 925, 927, 935, 932, 928, 929, 930, 932, - 931, 900, 933, 928, 929, 930, 0, 931, 0, 933, - 953, 936, 937, 927, 935, 934, 938, 939, 940, 932, - 940, 935, 932, 928, 929, 930, 932, 931, 941, 933, + 903, 0, 895, 930, 900, 904, 905, 895, 896, 931, + 900, 901, 904, 897, 934, 902, 899, 900, 901, 898, + 903, 899, 902, 899, 906, 904, 905, 903, 906, 908, + 907, 900, 904, 905, 907, 937, 938, 900, 901, 904, + 909, 934, 902, 899, 908, 910, 911, 903, 906, 908, + 912, 906, 904, 905, 907, 906, 908, 907, 0, 939, + 909, 907, 937, 938, 942, 910, 911, 909, 943, 913, + 912, 908, 910, 911, 944, 906, 908, 912, 914, 945, + 946, 907, 913, 948, 942, 914, 939, 909, 943, 913, + 0, 942, 910, 911, 944, 943, 913, 912, 914, 945, - 934, 936, 937, 943, 944, 934, 938, 939, 936, 937, - 940, 935, 934, 938, 939, 940, 932, 940, 941, 945, - 947, 946, 942, 943, 944, 941, 0, 934, 936, 937, - 943, 944, 934, 938, 939, 942, 946, 940, 948, 945, - 947, 946, 942, 955, 949, 941, 945, 947, 946, 942, - 943, 944, 950, 951, 952, 957, 959, 949, 948, 960, - 950, 0, 942, 946, 949, 948, 945, 947, 946, 942, - 955, 949, 950, 951, 952, 962, 963, 964, 965, 950, - 951, 952, 957, 959, 949, 948, 960, 950, 967, 968, - 962, 949, 964, 966, 970, 962, 963, 964, 965, 950, + 946, 944, 949, 948, 947, 914, 945, 946, 947, 913, + 948, 942, 914, 950, 951, 943, 913, 949, 952, 953, + 969, 944, 949, 954, 0, 914, 945, 946, 947, 949, + 948, 947, 956, 950, 951, 947, 958, 959, 952, 953, + 950, 951, 960, 954, 949, 952, 953, 969, 962, 949, + 954, 955, 956, 955, 957, 947, 958, 959, 0, 956, + 950, 951, 960, 958, 959, 952, 953, 957, 962, 960, + 954, 961, 963, 955, 957, 962, 966, 964, 955, 956, + 955, 957, 967, 958, 959, 965, 961, 968, 971, 960, + 964, 961, 963, 965, 957, 962, 966, 964, 961, 963, - 951, 952, 962, 963, 964, 965, 966, 969, 967, 968, - 971, 973, 976, 966, 970, 967, 968, 962, 969, 964, - 966, 970, 962, 963, 964, 965, 977, 969, 978, 979, - 980, 983, 976, 966, 969, 967, 968, 971, 973, 976, - 966, 970, 978, 984, 0, 969, 977, 0, 978, 979, - 980, 983, 0, 977, 969, 978, 979, 980, 983, 976, - 0, 0, 0, 984, 0, 0, 0, 0, 0, 978, - 984, 0, 0, 977, 0, 978, 979, 980, 983, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 984, 986, 0, 0, 986, 987, 0, 987, 987, 989, + 955, 957, 967, 966, 964, 965, 973, 968, 975, 967, + 976, 978, 965, 961, 968, 971, 979, 964, 961, 963, + 965, 981, 987, 966, 964, 980, 978, 983, 0, 967, + 984, 978, 965, 973, 968, 975, 979, 976, 978, 989, + 980, 981, 982, 979, 986, 980, 0, 983, 981, 987, + 984, 0, 980, 978, 983, 982, 992, 984, 978, 985, + 993, 994, 982, 979, 986, 995, 989, 980, 981, 982, + 985, 986, 980, 996, 983, 994, 992, 984, 999, 985, + 993, 994, 982, 992, 1000, 995, 985, 993, 994, 982, + 0, 986, 995, 996, 0, 0, 0, 985, 999, 0, - 0, 989, 989, 990, 0, 990, 990, 991, 0, 991, - 991, 992, 0, 992, 992, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985 + 996, 0, 994, 992, 1000, 999, 985, 993, 994, 0, + 0, 1000, 995, 0, 0, 0, 0, 0, 0, 0, + 996, 0, 0, 0, 0, 999, 0, 0, 0, 0, + 0, 1000, 1002, 0, 0, 1002, 1003, 0, 1003, 1003, + 1005, 0, 1005, 1005, 1006, 0, 1006, 1006, 1007, 0, + 1007, 1007, 1008, 0, 1008, 1008, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001 } ; /* The intent behind this definition is that it'll catch @@ -1873,7 +1888,7 @@ static const flex_int16_t yy_chk[3984] = #define TOKEN(name) { return SQL_##name; } -#line 1877 "flex_lexer.cpp" +#line 1891 "flex_lexer.cpp" /*************************** ** Section 2: Rules ***************************/ @@ -1886,7 +1901,7 @@ static const flex_int16_t yy_chk[3984] = /*************************** ** Section 3: Rules ***************************/ -#line 1890 "flex_lexer.cpp" +#line 1904 "flex_lexer.cpp" #define INITIAL 0 #define COMMENT 1 @@ -2172,7 +2187,7 @@ YY_DECL #line 51 "flex_lexer.l" -#line 2176 "flex_lexer.cpp" +#line 2190 "flex_lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2199,13 +2214,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 >= 986 ) + if ( yy_current_state >= 1002 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 985 ); + while ( yy_current_state != 1001 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -2370,594 +2385,604 @@ TOKEN(SPATIAL) case 29: YY_RULE_SETUP #line 83 "flex_lexer.l" -TOKEN(VIRTUAL) +TOKEN(VARCHAR) YY_BREAK case 30: YY_RULE_SETUP #line 84 "flex_lexer.l" -TOKEN(BEFORE) +TOKEN(VIRTUAL) YY_BREAK case 31: YY_RULE_SETUP #line 85 "flex_lexer.l" -TOKEN(COLUMN) +TOKEN(BEFORE) YY_BREAK case 32: YY_RULE_SETUP #line 86 "flex_lexer.l" -TOKEN(CREATE) +TOKEN(COLUMN) YY_BREAK case 33: YY_RULE_SETUP #line 87 "flex_lexer.l" -TOKEN(DELETE) +TOKEN(CREATE) YY_BREAK case 34: YY_RULE_SETUP #line 88 "flex_lexer.l" -TOKEN(DIRECT) +TOKEN(DELETE) YY_BREAK case 35: YY_RULE_SETUP #line 89 "flex_lexer.l" -TOKEN(DOUBLE) +TOKEN(DIRECT) YY_BREAK case 36: YY_RULE_SETUP #line 90 "flex_lexer.l" -TOKEN(ESCAPE) +TOKEN(DOUBLE) YY_BREAK case 37: YY_RULE_SETUP #line 91 "flex_lexer.l" -TOKEN(EXCEPT) +TOKEN(ESCAPE) YY_BREAK case 38: YY_RULE_SETUP #line 92 "flex_lexer.l" -TOKEN(EXISTS) +TOKEN(EXCEPT) YY_BREAK case 39: YY_RULE_SETUP #line 93 "flex_lexer.l" -TOKEN(EXTRACT) +TOKEN(EXISTS) YY_BREAK case 40: YY_RULE_SETUP #line 94 "flex_lexer.l" -TOKEN(GLOBAL) +TOKEN(EXTRACT) YY_BREAK case 41: YY_RULE_SETUP #line 95 "flex_lexer.l" -TOKEN(HAVING) +TOKEN(GLOBAL) YY_BREAK case 42: YY_RULE_SETUP #line 96 "flex_lexer.l" -TOKEN(IMPORT) +TOKEN(HAVING) YY_BREAK case 43: YY_RULE_SETUP #line 97 "flex_lexer.l" -TOKEN(INSERT) +TOKEN(IMPORT) YY_BREAK case 44: YY_RULE_SETUP #line 98 "flex_lexer.l" -TOKEN(ISNULL) +TOKEN(INSERT) YY_BREAK case 45: YY_RULE_SETUP #line 99 "flex_lexer.l" -TOKEN(OFFSET) +TOKEN(ISNULL) YY_BREAK case 46: YY_RULE_SETUP #line 100 "flex_lexer.l" -TOKEN(RENAME) +TOKEN(OFFSET) YY_BREAK case 47: YY_RULE_SETUP #line 101 "flex_lexer.l" -TOKEN(SCHEMA) +TOKEN(RENAME) YY_BREAK case 48: YY_RULE_SETUP #line 102 "flex_lexer.l" -TOKEN(SELECT) +TOKEN(SCHEMA) YY_BREAK case 49: YY_RULE_SETUP #line 103 "flex_lexer.l" -TOKEN(SORTED) +TOKEN(SELECT) YY_BREAK case 50: YY_RULE_SETUP #line 104 "flex_lexer.l" -TOKEN(TABLES) +TOKEN(SORTED) YY_BREAK case 51: YY_RULE_SETUP #line 105 "flex_lexer.l" -TOKEN(UNIQUE) +TOKEN(TABLES) YY_BREAK case 52: YY_RULE_SETUP #line 106 "flex_lexer.l" -TOKEN(UNLOAD) +TOKEN(UNIQUE) YY_BREAK case 53: YY_RULE_SETUP #line 107 "flex_lexer.l" -TOKEN(UPDATE) +TOKEN(UNLOAD) YY_BREAK case 54: YY_RULE_SETUP #line 108 "flex_lexer.l" -TOKEN(VALUES) +TOKEN(UPDATE) YY_BREAK case 55: YY_RULE_SETUP #line 109 "flex_lexer.l" -TOKEN(AFTER) +TOKEN(VALUES) YY_BREAK case 56: YY_RULE_SETUP #line 110 "flex_lexer.l" -TOKEN(ALTER) +TOKEN(AFTER) YY_BREAK case 57: YY_RULE_SETUP #line 111 "flex_lexer.l" -TOKEN(ARRAY) +TOKEN(ALTER) YY_BREAK case 58: YY_RULE_SETUP #line 112 "flex_lexer.l" -TOKEN(CROSS) +TOKEN(ARRAY) YY_BREAK case 59: YY_RULE_SETUP #line 113 "flex_lexer.l" -TOKEN(DELTA) +TOKEN(CROSS) YY_BREAK case 60: YY_RULE_SETUP #line 114 "flex_lexer.l" -TOKEN(GROUP) +TOKEN(DELTA) YY_BREAK case 61: YY_RULE_SETUP #line 115 "flex_lexer.l" -TOKEN(INDEX) +TOKEN(GROUP) YY_BREAK case 62: YY_RULE_SETUP #line 116 "flex_lexer.l" -TOKEN(INNER) +TOKEN(INDEX) YY_BREAK case 63: YY_RULE_SETUP #line 117 "flex_lexer.l" -TOKEN(LIMIT) +TOKEN(INNER) YY_BREAK case 64: YY_RULE_SETUP #line 118 "flex_lexer.l" -TOKEN(LOCAL) +TOKEN(LIMIT) YY_BREAK case 65: YY_RULE_SETUP #line 119 "flex_lexer.l" -TOKEN(MERGE) +TOKEN(LOCAL) YY_BREAK case 66: YY_RULE_SETUP #line 120 "flex_lexer.l" -TOKEN(MINUS) +TOKEN(MERGE) YY_BREAK case 67: YY_RULE_SETUP #line 121 "flex_lexer.l" -TOKEN(ORDER) +TOKEN(MINUS) YY_BREAK case 68: YY_RULE_SETUP #line 122 "flex_lexer.l" -TOKEN(OUTER) +TOKEN(ORDER) YY_BREAK case 69: YY_RULE_SETUP #line 123 "flex_lexer.l" -TOKEN(RIGHT) +TOKEN(OUTER) YY_BREAK case 70: YY_RULE_SETUP #line 124 "flex_lexer.l" -TOKEN(TABLE) +TOKEN(RIGHT) YY_BREAK case 71: YY_RULE_SETUP #line 125 "flex_lexer.l" -TOKEN(UNION) +TOKEN(TABLE) YY_BREAK case 72: YY_RULE_SETUP #line 126 "flex_lexer.l" -TOKEN(USING) +TOKEN(UNION) YY_BREAK case 73: YY_RULE_SETUP #line 127 "flex_lexer.l" -TOKEN(WHERE) +TOKEN(USING) YY_BREAK case 74: YY_RULE_SETUP #line 128 "flex_lexer.l" -TOKEN(CALL) +TOKEN(WHERE) YY_BREAK case 75: YY_RULE_SETUP #line 129 "flex_lexer.l" -TOKEN(CASE) +TOKEN(CALL) YY_BREAK case 76: YY_RULE_SETUP #line 130 "flex_lexer.l" -TOKEN(DATE) +TOKEN(CASE) YY_BREAK case 77: YY_RULE_SETUP #line 131 "flex_lexer.l" -TOKEN(DESC) +TOKEN(CHAR) YY_BREAK case 78: YY_RULE_SETUP #line 132 "flex_lexer.l" -TOKEN(DROP) +TOKEN(DATE) YY_BREAK case 79: YY_RULE_SETUP #line 133 "flex_lexer.l" -TOKEN(ELSE) +TOKEN(DESC) YY_BREAK case 80: YY_RULE_SETUP #line 134 "flex_lexer.l" -TOKEN(FILE) +TOKEN(DROP) YY_BREAK case 81: YY_RULE_SETUP #line 135 "flex_lexer.l" -TOKEN(FROM) +TOKEN(ELSE) YY_BREAK case 82: YY_RULE_SETUP #line 136 "flex_lexer.l" -TOKEN(FULL) +TOKEN(FILE) YY_BREAK case 83: YY_RULE_SETUP #line 137 "flex_lexer.l" -TOKEN(HASH) +TOKEN(FROM) YY_BREAK case 84: YY_RULE_SETUP #line 138 "flex_lexer.l" -TOKEN(HINT) +TOKEN(FULL) YY_BREAK case 85: YY_RULE_SETUP #line 139 "flex_lexer.l" -TOKEN(INTO) +TOKEN(HASH) YY_BREAK case 86: YY_RULE_SETUP #line 140 "flex_lexer.l" -TOKEN(JOIN) +TOKEN(HINT) YY_BREAK case 87: YY_RULE_SETUP #line 141 "flex_lexer.l" -TOKEN(LEFT) +TOKEN(INTO) YY_BREAK case 88: YY_RULE_SETUP #line 142 "flex_lexer.l" -TOKEN(LIKE) +TOKEN(JOIN) YY_BREAK case 89: YY_RULE_SETUP #line 143 "flex_lexer.l" -TOKEN(ILIKE) +TOKEN(LEFT) YY_BREAK case 90: YY_RULE_SETUP #line 144 "flex_lexer.l" -TOKEN(LOAD) +TOKEN(LIKE) YY_BREAK case 91: YY_RULE_SETUP #line 145 "flex_lexer.l" -TOKEN(NULL) +TOKEN(ILIKE) YY_BREAK case 92: YY_RULE_SETUP #line 146 "flex_lexer.l" -TOKEN(PLAN) +TOKEN(LOAD) YY_BREAK case 93: YY_RULE_SETUP #line 147 "flex_lexer.l" -TOKEN(SHOW) +TOKEN(NULL) YY_BREAK case 94: YY_RULE_SETUP #line 148 "flex_lexer.l" -TOKEN(TEXT) +TOKEN(PLAN) YY_BREAK case 95: YY_RULE_SETUP #line 149 "flex_lexer.l" -TOKEN(THEN) +TOKEN(SHOW) YY_BREAK case 96: YY_RULE_SETUP #line 150 "flex_lexer.l" -TOKEN(TIME) +TOKEN(TEXT) YY_BREAK case 97: YY_RULE_SETUP #line 151 "flex_lexer.l" -TOKEN(VIEW) +TOKEN(THEN) YY_BREAK case 98: YY_RULE_SETUP #line 152 "flex_lexer.l" -TOKEN(WHEN) +TOKEN(TIME) YY_BREAK case 99: YY_RULE_SETUP #line 153 "flex_lexer.l" -TOKEN(WITH) +TOKEN(VIEW) YY_BREAK case 100: YY_RULE_SETUP #line 154 "flex_lexer.l" -TOKEN(ADD) +TOKEN(WHEN) YY_BREAK case 101: YY_RULE_SETUP #line 155 "flex_lexer.l" -TOKEN(ALL) +TOKEN(WITH) YY_BREAK case 102: YY_RULE_SETUP #line 156 "flex_lexer.l" -TOKEN(AND) +TOKEN(ADD) YY_BREAK case 103: YY_RULE_SETUP #line 157 "flex_lexer.l" -TOKEN(ASC) +TOKEN(ALL) YY_BREAK case 104: YY_RULE_SETUP #line 158 "flex_lexer.l" -TOKEN(CSV) +TOKEN(AND) YY_BREAK case 105: YY_RULE_SETUP #line 159 "flex_lexer.l" -TOKEN(END) +TOKEN(ASC) YY_BREAK case 106: YY_RULE_SETUP #line 160 "flex_lexer.l" -TOKEN(FOR) +TOKEN(CSV) YY_BREAK case 107: YY_RULE_SETUP #line 161 "flex_lexer.l" -TOKEN(INT) +TOKEN(END) YY_BREAK case 108: YY_RULE_SETUP #line 162 "flex_lexer.l" -TOKEN(KEY) +TOKEN(FOR) YY_BREAK case 109: YY_RULE_SETUP #line 163 "flex_lexer.l" -TOKEN(NOT) +TOKEN(INT) YY_BREAK case 110: YY_RULE_SETUP #line 164 "flex_lexer.l" -TOKEN(OFF) +TOKEN(KEY) YY_BREAK case 111: YY_RULE_SETUP #line 165 "flex_lexer.l" -TOKEN(SET) +TOKEN(NOT) YY_BREAK case 112: YY_RULE_SETUP #line 166 "flex_lexer.l" -TOKEN(TBL) +TOKEN(OFF) YY_BREAK case 113: YY_RULE_SETUP #line 167 "flex_lexer.l" -TOKEN(TOP) +TOKEN(SET) YY_BREAK case 114: YY_RULE_SETUP #line 168 "flex_lexer.l" -TOKEN(AS) +TOKEN(TBL) YY_BREAK case 115: YY_RULE_SETUP #line 169 "flex_lexer.l" -TOKEN(BY) +TOKEN(TOP) YY_BREAK case 116: YY_RULE_SETUP #line 170 "flex_lexer.l" -TOKEN(IF) +TOKEN(AS) YY_BREAK case 117: YY_RULE_SETUP #line 171 "flex_lexer.l" -TOKEN(IN) +TOKEN(BY) YY_BREAK case 118: YY_RULE_SETUP #line 172 "flex_lexer.l" -TOKEN(IS) +TOKEN(IF) YY_BREAK case 119: YY_RULE_SETUP #line 173 "flex_lexer.l" -TOKEN(OF) +TOKEN(IN) YY_BREAK case 120: YY_RULE_SETUP #line 174 "flex_lexer.l" -TOKEN(ON) +TOKEN(IS) YY_BREAK case 121: YY_RULE_SETUP #line 175 "flex_lexer.l" -TOKEN(OR) +TOKEN(OF) YY_BREAK case 122: YY_RULE_SETUP #line 176 "flex_lexer.l" -TOKEN(TO) +TOKEN(ON) YY_BREAK case 123: YY_RULE_SETUP #line 177 "flex_lexer.l" -TOKEN(SECOND) +TOKEN(OR) YY_BREAK case 124: YY_RULE_SETUP #line 178 "flex_lexer.l" -TOKEN(MINUTE) +TOKEN(TO) YY_BREAK case 125: YY_RULE_SETUP #line 179 "flex_lexer.l" -TOKEN(HOUR) +TOKEN(SECOND) YY_BREAK case 126: YY_RULE_SETUP #line 180 "flex_lexer.l" -TOKEN(DAY) +TOKEN(MINUTE) YY_BREAK case 127: YY_RULE_SETUP #line 181 "flex_lexer.l" -TOKEN(MONTH) +TOKEN(HOUR) YY_BREAK case 128: YY_RULE_SETUP #line 182 "flex_lexer.l" -TOKEN(YEAR) +TOKEN(DAY) YY_BREAK -/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 129: YY_RULE_SETUP -#line 185 "flex_lexer.l" -TOKEN(EQUALS) +#line 183 "flex_lexer.l" +TOKEN(MONTH) YY_BREAK case 130: YY_RULE_SETUP -#line 186 "flex_lexer.l" -TOKEN(NOTEQUALS) +#line 184 "flex_lexer.l" +TOKEN(YEAR) YY_BREAK +/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 131: YY_RULE_SETUP #line 187 "flex_lexer.l" -TOKEN(NOTEQUALS) +TOKEN(EQUALS) YY_BREAK case 132: YY_RULE_SETUP #line 188 "flex_lexer.l" -TOKEN(LESSEQ) +TOKEN(NOTEQUALS) YY_BREAK case 133: YY_RULE_SETUP #line 189 "flex_lexer.l" -TOKEN(GREATEREQ) +TOKEN(NOTEQUALS) YY_BREAK case 134: YY_RULE_SETUP #line 190 "flex_lexer.l" -TOKEN(CONCAT) +TOKEN(LESSEQ) YY_BREAK case 135: YY_RULE_SETUP -#line 192 "flex_lexer.l" -{ return yytext[0]; } +#line 191 "flex_lexer.l" +TOKEN(GREATEREQ) YY_BREAK case 136: -#line 195 "flex_lexer.l" +YY_RULE_SETUP +#line 192 "flex_lexer.l" +TOKEN(CONCAT) + YY_BREAK case 137: YY_RULE_SETUP -#line 195 "flex_lexer.l" +#line 194 "flex_lexer.l" +{ return yytext[0]; } + YY_BREAK +case 138: +#line 197 "flex_lexer.l" +case 139: +YY_RULE_SETUP +#line 197 "flex_lexer.l" { yylval->fval = atof(yytext); return SQL_FLOATVAL; } YY_BREAK -case 138: +case 140: YY_RULE_SETUP -#line 200 "flex_lexer.l" +#line 202 "flex_lexer.l" { yylval->ival = atol(yytext); return SQL_INTVAL; } YY_BREAK -case 139: +case 141: YY_RULE_SETUP -#line 205 "flex_lexer.l" +#line 207 "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 140: +case 142: YY_RULE_SETUP -#line 211 "flex_lexer.l" +#line 213 "flex_lexer.l" { yylval->sval = strdup(yytext); return SQL_IDENTIFIER; } YY_BREAK -case 141: +case 143: YY_RULE_SETUP -#line 216 "flex_lexer.l" +#line 218 "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 142: +case 144: YY_RULE_SETUP -#line 222 "flex_lexer.l" +#line 224 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); return 0; } YY_BREAK -case 143: +case 145: YY_RULE_SETUP -#line 225 "flex_lexer.l" +#line 227 "flex_lexer.l" ECHO; YY_BREAK -#line 2961 "flex_lexer.cpp" +#line 2985 "flex_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): yyterminate(); @@ -3258,7 +3283,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 986 ) + if ( yy_current_state >= 1002 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -3287,11 +3312,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 >= 986 ) + if ( yy_current_state >= 1002 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 985); + yy_is_jam = (yy_current_state == 1001); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -4114,7 +4139,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 225 "flex_lexer.l" +#line 227 "flex_lexer.l" /*************************** ** Section 3: User code diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index 34f907f..81dcd89 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 6 "flex_lexer.h" +#line 5 "flex_lexer.h" -#line 8 "flex_lexer.h" +#line 7 "flex_lexer.h" #define YY_INT_ALIGNED short int @@ -729,9 +729,9 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 225 "flex_lexer.l" +#line 227 "flex_lexer.l" -#line 736 "flex_lexer.h" +#line 735 "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 60ce15d..5d6a7a2 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -80,6 +80,7 @@ PREPARE TOKEN(PREPARE) PRIMARY TOKEN(PRIMARY) SCHEMAS TOKEN(SCHEMAS) SPATIAL TOKEN(SPATIAL) +VARCHAR TOKEN(VARCHAR) VIRTUAL TOKEN(VIRTUAL) BEFORE TOKEN(BEFORE) COLUMN TOKEN(COLUMN) @@ -127,6 +128,7 @@ USING TOKEN(USING) WHERE TOKEN(WHERE) CALL TOKEN(CALL) CASE TOKEN(CASE) +CHAR TOKEN(CHAR) DATE TOKEN(DATE) DESC TOKEN(DESC) DROP TOKEN(DROP) diff --git a/src/sql/CreateStatement.h b/src/sql/CreateStatement.h index 0419dd1..01a98d0 100755 --- a/src/sql/CreateStatement.h +++ b/src/sql/CreateStatement.h @@ -3,24 +3,43 @@ #include "SQLStatement.h" +#include + // Note: Implementations of constructors and destructors can be found in statements.cpp. namespace hsql { struct SelectStatement; + enum class DataType { + UNKNOWN, + INT, + LONG, + FLOAT, + DOUBLE, + CHAR, + VARCHAR, + TEXT + }; + + // Represents the type of a column, e.g., FLOAT or VARCHAR(10) + struct ColumnType { + ColumnType() = default; + ColumnType(DataType data_type, int64_t length = 0); + DataType data_type; + int64_t length; // Used for, e.g., VARCHAR(10) + }; + + bool operator==(const ColumnType& lhs, const ColumnType& rhs); + bool operator!=(const ColumnType& lhs, const ColumnType& rhs); + std::ostream& operator<<(std::ostream&, const ColumnType&); + // Represents definition of a table column struct ColumnDefinition { - enum DataType { - UNKNOWN, - TEXT, - INT, - DOUBLE - }; - - ColumnDefinition(char* name, DataType type); + ColumnDefinition(char* name, ColumnType type, bool nullable); virtual ~ColumnDefinition(); char* name; - DataType type; + ColumnType type; + bool nullable; }; enum CreateType { diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index 01fadae..8adf446 100755 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -1,17 +1,64 @@ - #include "statements.h" namespace hsql { // ColumnDefinition - ColumnDefinition::ColumnDefinition(char* name, DataType type) : + ColumnDefinition::ColumnDefinition(char* name, ColumnType type, bool nullable) : name(name), - type(type) {}; + type(type), + nullable(nullable) {}; ColumnDefinition::~ColumnDefinition() { free(name); } + ColumnType::ColumnType(DataType data_type, int64_t length) : + data_type(data_type), + length(length) {}; + + bool operator==(const ColumnType& lhs, const ColumnType& rhs) { + if (lhs.data_type != rhs.data_type) return false; + if (lhs.data_type == DataType::VARCHAR || lhs.data_type == DataType::CHAR) { + return lhs.length == rhs.length; + } + return true; + } + + bool operator!=(const ColumnType& lhs, const ColumnType& rhs) { + return !(lhs == rhs); + } + + std::ostream& operator<<(std::ostream& stream, const ColumnType& column_type) { + switch (column_type.data_type) { + case DataType::UNKNOWN: + stream << "UNKNOWN"; + break; + case DataType::INT: + stream << "INT"; + break; + case DataType::LONG: + stream << "LONG"; + break; + case DataType::FLOAT: + stream << "FLOAT"; + break; + case DataType::DOUBLE: + stream << "DOUBLE"; + break; + case DataType::CHAR: + stream << "CHAR(" << column_type.length << ")"; + break; + case DataType::VARCHAR: + stream << "VARCHAR(" << column_type.length << ")"; + break; + case DataType::TEXT: + stream << "TEXT"; + break; + } + return stream; + } + + // CreateStatemnet CreateStatement::CreateStatement(CreateType type) : SQLStatement(kStmtCreate), diff --git a/test/sql_tests.cpp b/test/sql_tests.cpp index e935fa5..11c39fa 100644 --- a/test/sql_tests.cpp +++ b/test/sql_tests.cpp @@ -30,7 +30,7 @@ TEST(DeleteStatementTest) { TEST(CreateStatementTest) { SQLParserResult result; - SQLParser::parse("CREATE TABLE students (name TEXT, student_number INT, city INTEGER, grade DOUBLE)", &result); + SQLParser::parse("CREATE TABLE students (name VARCHAR(50), student_number INT, city INTEGER NULL, grade DOUBLE NOT NULL, comment TEXT)", &result); ASSERT(result.isValid()); ASSERT_EQ(result.size(), 1); @@ -40,15 +40,22 @@ TEST(CreateStatementTest) { ASSERT_EQ(stmt->type, kCreateTable); ASSERT_STREQ(stmt->tableName, "students"); ASSERT_NOTNULL(stmt->columns); - ASSERT_EQ(stmt->columns->size(), 4); + ASSERT_EQ(stmt->columns->size(), 5); ASSERT_STREQ(stmt->columns->at(0)->name, "name"); ASSERT_STREQ(stmt->columns->at(1)->name, "student_number"); ASSERT_STREQ(stmt->columns->at(2)->name, "city"); ASSERT_STREQ(stmt->columns->at(3)->name, "grade"); - ASSERT_EQ(stmt->columns->at(0)->type, ColumnDefinition::TEXT); - ASSERT_EQ(stmt->columns->at(1)->type, ColumnDefinition::INT); - ASSERT_EQ(stmt->columns->at(2)->type, ColumnDefinition::INT); - ASSERT_EQ(stmt->columns->at(3)->type, ColumnDefinition::DOUBLE); + ASSERT_STREQ(stmt->columns->at(4)->name, "comment"); + ASSERT_EQ(stmt->columns->at(0)->type, (ColumnType{DataType::VARCHAR, 50})); + ASSERT_EQ(stmt->columns->at(1)->type, ColumnType{DataType::INT}); + ASSERT_EQ(stmt->columns->at(2)->type, ColumnType{DataType::INT}); + ASSERT_EQ(stmt->columns->at(3)->type, ColumnType{DataType::DOUBLE}); + ASSERT_EQ(stmt->columns->at(4)->type, ColumnType{DataType::TEXT}); + ASSERT_EQ(stmt->columns->at(0)->nullable, false); + ASSERT_EQ(stmt->columns->at(1)->nullable, false); + ASSERT_EQ(stmt->columns->at(2)->nullable, true); + ASSERT_EQ(stmt->columns->at(3)->nullable, false); + ASSERT_EQ(stmt->columns->at(3)->nullable, false); }