From 6ffd945b11e9803af18e37c5fef1fd6ac3acd3fd Mon Sep 17 00:00:00 2001 From: mweisgut Date: Fri, 7 Jan 2022 19:41:30 +0100 Subject: [PATCH 1/3] Add SMALLINT, remove ColumnSpecification --- src/parser/bison_parser.cpp | 3627 ++++++++++++++++++----------------- src/parser/bison_parser.h | 392 ++-- src/parser/bison_parser.y | 43 +- src/parser/flex_lexer.cpp | 1939 +++++++++---------- src/parser/flex_lexer.h | 6 +- src/parser/flex_lexer.l | 1 + src/sql/ColumnType.h | 31 +- src/sql/statements.cpp | 13 +- test/sql_tests.cpp | 87 +- 9 files changed, 3096 insertions(+), 3043 deletions(-) mode change 100755 => 100644 src/sql/ColumnType.h diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 9e231a61..f060e9d8 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.7.5. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison implementation for Yacc-like parsers in C @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -46,10 +46,10 @@ USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ -#define YYBISON 30705 +#define YYBISON 30802 /* Bison version string. */ -#define YYBISON_VERSION "3.7.5" +#define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -64,20 +64,20 @@ #define YYPULL 1 /* Substitute the type names. */ -#define YYSTYPE HSQL_STYPE -#define YYLTYPE HSQL_LTYPE +#define YYSTYPE HSQL_STYPE +#define YYLTYPE HSQL_LTYPE /* Substitute the variable and function names. */ -#define yyparse hsql_parse -#define yylex hsql_lex -#define yyerror hsql_error -#define yydebug hsql_debug -#define yynerrs hsql_nerrs +#define yyparse hsql_parse +#define yylex hsql_lex +#define yyerror hsql_error +#define yydebug hsql_debug +#define yynerrs hsql_nerrs /* First part of user prologue. */ #line 2 "bison_parser.y" - // clang-format on - /** +// clang-format on +/** * bison_parser.y * defines bison_parser.h * outputs bison_parser.c @@ -85,7 +85,7 @@ * Grammar File Spec: http://dinosaur.compilertools.net/bison/bison_6.html * */ - /********************************* +/********************************* ** Section 1: C Declarations *********************************/ @@ -95,14 +95,14 @@ #include #include - using namespace hsql; +using namespace hsql; - int yyerror(YYLTYPE * llocp, SQLParserResult * result, yyscan_t scanner, const char* msg) { - result->setIsValid(false); - result->setErrorDetails(strdup(msg), llocp->first_line, llocp->first_column); - return 0; - } - // clang-format off +int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const char* msg) { + result->setIsValid(false); + result->setErrorDetails(strdup(msg), llocp->first_line, llocp->first_column); + return 0; +} +// clang-format off #line 108 "bison_parser.cpp" @@ -165,273 +165,274 @@ enum yysymbol_kind_t YYSYMBOL_VARYING = 30, /* VARYING */ YYSYMBOL_REAL = 31, /* REAL */ YYSYMBOL_DECIMAL = 32, /* DECIMAL */ - YYSYMBOL_SPATIAL = 33, /* SPATIAL */ - YYSYMBOL_VARCHAR = 34, /* VARCHAR */ - YYSYMBOL_VIRTUAL = 35, /* VIRTUAL */ - YYSYMBOL_DESCRIBE = 36, /* DESCRIBE */ - YYSYMBOL_BEFORE = 37, /* BEFORE */ - YYSYMBOL_COLUMN = 38, /* COLUMN */ - YYSYMBOL_CREATE = 39, /* CREATE */ - YYSYMBOL_DELETE = 40, /* DELETE */ - YYSYMBOL_DIRECT = 41, /* DIRECT */ - YYSYMBOL_DOUBLE = 42, /* DOUBLE */ - YYSYMBOL_ESCAPE = 43, /* ESCAPE */ - YYSYMBOL_EXCEPT = 44, /* EXCEPT */ - YYSYMBOL_EXISTS = 45, /* EXISTS */ - YYSYMBOL_EXTRACT = 46, /* EXTRACT */ - YYSYMBOL_CAST = 47, /* CAST */ - YYSYMBOL_FORMAT = 48, /* FORMAT */ - YYSYMBOL_GLOBAL = 49, /* GLOBAL */ - YYSYMBOL_HAVING = 50, /* HAVING */ - YYSYMBOL_IMPORT = 51, /* IMPORT */ - YYSYMBOL_INSERT = 52, /* INSERT */ - YYSYMBOL_ISNULL = 53, /* ISNULL */ - YYSYMBOL_OFFSET = 54, /* OFFSET */ - YYSYMBOL_RENAME = 55, /* RENAME */ - YYSYMBOL_SCHEMA = 56, /* SCHEMA */ - YYSYMBOL_SELECT = 57, /* SELECT */ - YYSYMBOL_SORTED = 58, /* SORTED */ - YYSYMBOL_TABLES = 59, /* TABLES */ - YYSYMBOL_UNIQUE = 60, /* UNIQUE */ - YYSYMBOL_UNLOAD = 61, /* UNLOAD */ - YYSYMBOL_UPDATE = 62, /* UPDATE */ - YYSYMBOL_VALUES = 63, /* VALUES */ - YYSYMBOL_AFTER = 64, /* AFTER */ - YYSYMBOL_ALTER = 65, /* ALTER */ - YYSYMBOL_CROSS = 66, /* CROSS */ - YYSYMBOL_DELTA = 67, /* DELTA */ - YYSYMBOL_FLOAT = 68, /* FLOAT */ - YYSYMBOL_GROUP = 69, /* GROUP */ - YYSYMBOL_INDEX = 70, /* INDEX */ - YYSYMBOL_INNER = 71, /* INNER */ - YYSYMBOL_LIMIT = 72, /* LIMIT */ - YYSYMBOL_LOCAL = 73, /* LOCAL */ - YYSYMBOL_MERGE = 74, /* MERGE */ - YYSYMBOL_MINUS = 75, /* MINUS */ - YYSYMBOL_ORDER = 76, /* ORDER */ - YYSYMBOL_OUTER = 77, /* OUTER */ - YYSYMBOL_RIGHT = 78, /* RIGHT */ - YYSYMBOL_TABLE = 79, /* TABLE */ - YYSYMBOL_UNION = 80, /* UNION */ - YYSYMBOL_USING = 81, /* USING */ - YYSYMBOL_WHERE = 82, /* WHERE */ - YYSYMBOL_CALL = 83, /* CALL */ - YYSYMBOL_CASE = 84, /* CASE */ - YYSYMBOL_CHAR = 85, /* CHAR */ - YYSYMBOL_COPY = 86, /* COPY */ - YYSYMBOL_DATE = 87, /* DATE */ - YYSYMBOL_DATETIME = 88, /* DATETIME */ - YYSYMBOL_DESC = 89, /* DESC */ - YYSYMBOL_DROP = 90, /* DROP */ - YYSYMBOL_ELSE = 91, /* ELSE */ - YYSYMBOL_FILE = 92, /* FILE */ - YYSYMBOL_FROM = 93, /* FROM */ - YYSYMBOL_FULL = 94, /* FULL */ - YYSYMBOL_HASH = 95, /* HASH */ - YYSYMBOL_HINT = 96, /* HINT */ - YYSYMBOL_INTO = 97, /* INTO */ - YYSYMBOL_JOIN = 98, /* JOIN */ - YYSYMBOL_LEFT = 99, /* LEFT */ - YYSYMBOL_LIKE = 100, /* LIKE */ - YYSYMBOL_LOAD = 101, /* LOAD */ - YYSYMBOL_LONG = 102, /* LONG */ - YYSYMBOL_NULL = 103, /* NULL */ - YYSYMBOL_PLAN = 104, /* PLAN */ - YYSYMBOL_SHOW = 105, /* SHOW */ - YYSYMBOL_TEXT = 106, /* TEXT */ - YYSYMBOL_THEN = 107, /* THEN */ - YYSYMBOL_TIME = 108, /* TIME */ - YYSYMBOL_VIEW = 109, /* VIEW */ - YYSYMBOL_WHEN = 110, /* WHEN */ - YYSYMBOL_WITH = 111, /* WITH */ - YYSYMBOL_ADD = 112, /* ADD */ - YYSYMBOL_ALL = 113, /* ALL */ - YYSYMBOL_AND = 114, /* AND */ - YYSYMBOL_ASC = 115, /* ASC */ - YYSYMBOL_END = 116, /* END */ - YYSYMBOL_FOR = 117, /* FOR */ - YYSYMBOL_INT = 118, /* INT */ - YYSYMBOL_KEY = 119, /* KEY */ - YYSYMBOL_NOT = 120, /* NOT */ - YYSYMBOL_OFF = 121, /* OFF */ - YYSYMBOL_SET = 122, /* SET */ - YYSYMBOL_TOP = 123, /* TOP */ - YYSYMBOL_AS = 124, /* AS */ - YYSYMBOL_BY = 125, /* BY */ - YYSYMBOL_IF = 126, /* IF */ - YYSYMBOL_IN = 127, /* IN */ - YYSYMBOL_IS = 128, /* IS */ - YYSYMBOL_OF = 129, /* OF */ - YYSYMBOL_ON = 130, /* ON */ - YYSYMBOL_OR = 131, /* OR */ - YYSYMBOL_TO = 132, /* TO */ - YYSYMBOL_ARRAY = 133, /* ARRAY */ - YYSYMBOL_CONCAT = 134, /* CONCAT */ - YYSYMBOL_ILIKE = 135, /* ILIKE */ - YYSYMBOL_SECOND = 136, /* SECOND */ - YYSYMBOL_MINUTE = 137, /* MINUTE */ - YYSYMBOL_HOUR = 138, /* HOUR */ - YYSYMBOL_DAY = 139, /* DAY */ - YYSYMBOL_MONTH = 140, /* MONTH */ - YYSYMBOL_YEAR = 141, /* YEAR */ - YYSYMBOL_SECONDS = 142, /* SECONDS */ - YYSYMBOL_MINUTES = 143, /* MINUTES */ - YYSYMBOL_HOURS = 144, /* HOURS */ - YYSYMBOL_DAYS = 145, /* DAYS */ - YYSYMBOL_MONTHS = 146, /* MONTHS */ - YYSYMBOL_YEARS = 147, /* YEARS */ - YYSYMBOL_INTERVAL = 148, /* INTERVAL */ - YYSYMBOL_TRUE = 149, /* TRUE */ - YYSYMBOL_FALSE = 150, /* FALSE */ - YYSYMBOL_TRANSACTION = 151, /* TRANSACTION */ - YYSYMBOL_BEGIN = 152, /* BEGIN */ - YYSYMBOL_COMMIT = 153, /* COMMIT */ - YYSYMBOL_ROLLBACK = 154, /* ROLLBACK */ - YYSYMBOL_155_ = 155, /* '=' */ - YYSYMBOL_EQUALS = 156, /* EQUALS */ - YYSYMBOL_NOTEQUALS = 157, /* NOTEQUALS */ - YYSYMBOL_158_ = 158, /* '<' */ - YYSYMBOL_159_ = 159, /* '>' */ - YYSYMBOL_LESS = 160, /* LESS */ - YYSYMBOL_GREATER = 161, /* GREATER */ - YYSYMBOL_LESSEQ = 162, /* LESSEQ */ - YYSYMBOL_GREATEREQ = 163, /* GREATEREQ */ - YYSYMBOL_NOTNULL = 164, /* NOTNULL */ - YYSYMBOL_165_ = 165, /* '+' */ - YYSYMBOL_166_ = 166, /* '-' */ - YYSYMBOL_167_ = 167, /* '*' */ - YYSYMBOL_168_ = 168, /* '/' */ - YYSYMBOL_169_ = 169, /* '%' */ - YYSYMBOL_170_ = 170, /* '^' */ - YYSYMBOL_UMINUS = 171, /* UMINUS */ - YYSYMBOL_172_ = 172, /* '[' */ - YYSYMBOL_173_ = 173, /* ']' */ - YYSYMBOL_174_ = 174, /* '(' */ - YYSYMBOL_175_ = 175, /* ')' */ - YYSYMBOL_176_ = 176, /* '.' */ - YYSYMBOL_177_ = 177, /* ';' */ - YYSYMBOL_178_ = 178, /* ',' */ - YYSYMBOL_179_ = 179, /* '?' */ - YYSYMBOL_YYACCEPT = 180, /* $accept */ - YYSYMBOL_input = 181, /* input */ - YYSYMBOL_statement_list = 182, /* statement_list */ - YYSYMBOL_statement = 183, /* statement */ - YYSYMBOL_preparable_statement = 184, /* preparable_statement */ - YYSYMBOL_opt_hints = 185, /* opt_hints */ - YYSYMBOL_hint_list = 186, /* hint_list */ - YYSYMBOL_hint = 187, /* hint */ - YYSYMBOL_transaction_statement = 188, /* transaction_statement */ - YYSYMBOL_opt_transaction_keyword = 189, /* opt_transaction_keyword */ - YYSYMBOL_prepare_statement = 190, /* prepare_statement */ - YYSYMBOL_prepare_target_query = 191, /* prepare_target_query */ - YYSYMBOL_execute_statement = 192, /* execute_statement */ - YYSYMBOL_import_statement = 193, /* import_statement */ - YYSYMBOL_file_type = 194, /* file_type */ - YYSYMBOL_file_path = 195, /* file_path */ - YYSYMBOL_opt_file_type = 196, /* opt_file_type */ - YYSYMBOL_export_statement = 197, /* export_statement */ - YYSYMBOL_show_statement = 198, /* show_statement */ - YYSYMBOL_create_statement = 199, /* create_statement */ - YYSYMBOL_opt_not_exists = 200, /* opt_not_exists */ - YYSYMBOL_table_elem_commalist = 201, /* table_elem_commalist */ - YYSYMBOL_table_elem = 202, /* table_elem */ - YYSYMBOL_column_def = 203, /* column_def */ - YYSYMBOL_column_type = 204, /* column_type */ - YYSYMBOL_opt_time_specification = 205, /* opt_time_specification */ - YYSYMBOL_opt_decimal_specification = 206, /* opt_decimal_specification */ - YYSYMBOL_opt_column_constraints = 207, /* opt_column_constraints */ - YYSYMBOL_column_constraint_list = 208, /* column_constraint_list */ - YYSYMBOL_column_constraint = 209, /* column_constraint */ - YYSYMBOL_table_constraint = 210, /* table_constraint */ - YYSYMBOL_drop_statement = 211, /* drop_statement */ - YYSYMBOL_opt_exists = 212, /* opt_exists */ - YYSYMBOL_alter_statement = 213, /* alter_statement */ - YYSYMBOL_alter_action = 214, /* alter_action */ - YYSYMBOL_drop_action = 215, /* drop_action */ - YYSYMBOL_delete_statement = 216, /* delete_statement */ - YYSYMBOL_truncate_statement = 217, /* truncate_statement */ - YYSYMBOL_insert_statement = 218, /* insert_statement */ - YYSYMBOL_opt_column_list = 219, /* opt_column_list */ - YYSYMBOL_update_statement = 220, /* update_statement */ - YYSYMBOL_update_clause_commalist = 221, /* update_clause_commalist */ - YYSYMBOL_update_clause = 222, /* update_clause */ - YYSYMBOL_select_statement = 223, /* select_statement */ - YYSYMBOL_select_within_set_operation = 224, /* select_within_set_operation */ - YYSYMBOL_select_within_set_operation_no_parentheses = 225, /* select_within_set_operation_no_parentheses */ - YYSYMBOL_select_with_paren = 226, /* select_with_paren */ - YYSYMBOL_select_no_paren = 227, /* select_no_paren */ - YYSYMBOL_set_operator = 228, /* set_operator */ - YYSYMBOL_set_type = 229, /* set_type */ - YYSYMBOL_opt_all = 230, /* opt_all */ - YYSYMBOL_select_clause = 231, /* select_clause */ - YYSYMBOL_opt_distinct = 232, /* opt_distinct */ - YYSYMBOL_select_list = 233, /* select_list */ - YYSYMBOL_opt_from_clause = 234, /* opt_from_clause */ - YYSYMBOL_from_clause = 235, /* from_clause */ - YYSYMBOL_opt_where = 236, /* opt_where */ - YYSYMBOL_opt_group = 237, /* opt_group */ - YYSYMBOL_opt_having = 238, /* opt_having */ - YYSYMBOL_opt_order = 239, /* opt_order */ - YYSYMBOL_order_list = 240, /* order_list */ - YYSYMBOL_order_desc = 241, /* order_desc */ - YYSYMBOL_opt_order_type = 242, /* opt_order_type */ - YYSYMBOL_opt_top = 243, /* opt_top */ - YYSYMBOL_opt_limit = 244, /* opt_limit */ - YYSYMBOL_expr_list = 245, /* expr_list */ - YYSYMBOL_opt_literal_list = 246, /* opt_literal_list */ - YYSYMBOL_literal_list = 247, /* literal_list */ - YYSYMBOL_expr_alias = 248, /* expr_alias */ - YYSYMBOL_expr = 249, /* expr */ - YYSYMBOL_operand = 250, /* operand */ - YYSYMBOL_scalar_expr = 251, /* scalar_expr */ - YYSYMBOL_unary_expr = 252, /* unary_expr */ - YYSYMBOL_binary_expr = 253, /* binary_expr */ - YYSYMBOL_logic_expr = 254, /* logic_expr */ - YYSYMBOL_in_expr = 255, /* in_expr */ - YYSYMBOL_case_expr = 256, /* case_expr */ - YYSYMBOL_case_list = 257, /* case_list */ - YYSYMBOL_exists_expr = 258, /* exists_expr */ - YYSYMBOL_comp_expr = 259, /* comp_expr */ - YYSYMBOL_function_expr = 260, /* function_expr */ - YYSYMBOL_extract_expr = 261, /* extract_expr */ - YYSYMBOL_cast_expr = 262, /* cast_expr */ - YYSYMBOL_datetime_field = 263, /* datetime_field */ - YYSYMBOL_datetime_field_plural = 264, /* datetime_field_plural */ - YYSYMBOL_duration_field = 265, /* duration_field */ - YYSYMBOL_array_expr = 266, /* array_expr */ - YYSYMBOL_array_index = 267, /* array_index */ - YYSYMBOL_between_expr = 268, /* between_expr */ - YYSYMBOL_column_name = 269, /* column_name */ - YYSYMBOL_literal = 270, /* literal */ - YYSYMBOL_string_literal = 271, /* string_literal */ - YYSYMBOL_bool_literal = 272, /* bool_literal */ - YYSYMBOL_num_literal = 273, /* num_literal */ - YYSYMBOL_int_literal = 274, /* int_literal */ - YYSYMBOL_null_literal = 275, /* null_literal */ - YYSYMBOL_date_literal = 276, /* date_literal */ - YYSYMBOL_interval_literal = 277, /* interval_literal */ - YYSYMBOL_param_expr = 278, /* param_expr */ - YYSYMBOL_table_ref = 279, /* table_ref */ - YYSYMBOL_table_ref_atomic = 280, /* table_ref_atomic */ - YYSYMBOL_nonjoin_table_ref_atomic = 281, /* nonjoin_table_ref_atomic */ - YYSYMBOL_table_ref_commalist = 282, /* table_ref_commalist */ - YYSYMBOL_table_ref_name = 283, /* table_ref_name */ - YYSYMBOL_table_ref_name_no_alias = 284, /* table_ref_name_no_alias */ - YYSYMBOL_table_name = 285, /* table_name */ - YYSYMBOL_opt_index_name = 286, /* opt_index_name */ - YYSYMBOL_table_alias = 287, /* table_alias */ - YYSYMBOL_opt_table_alias = 288, /* opt_table_alias */ - YYSYMBOL_alias = 289, /* alias */ - YYSYMBOL_opt_alias = 290, /* opt_alias */ - YYSYMBOL_opt_with_clause = 291, /* opt_with_clause */ - YYSYMBOL_with_clause = 292, /* with_clause */ - YYSYMBOL_with_description_list = 293, /* with_description_list */ - YYSYMBOL_with_description = 294, /* with_description */ - YYSYMBOL_join_clause = 295, /* join_clause */ - YYSYMBOL_opt_join_type = 296, /* opt_join_type */ - YYSYMBOL_join_condition = 297, /* join_condition */ - YYSYMBOL_opt_semicolon = 298, /* opt_semicolon */ - YYSYMBOL_ident_commalist = 299 /* ident_commalist */ + YYSYMBOL_SMALLINT = 33, /* SMALLINT */ + YYSYMBOL_SPATIAL = 34, /* SPATIAL */ + YYSYMBOL_VARCHAR = 35, /* VARCHAR */ + YYSYMBOL_VIRTUAL = 36, /* VIRTUAL */ + YYSYMBOL_DESCRIBE = 37, /* DESCRIBE */ + YYSYMBOL_BEFORE = 38, /* BEFORE */ + YYSYMBOL_COLUMN = 39, /* COLUMN */ + YYSYMBOL_CREATE = 40, /* CREATE */ + YYSYMBOL_DELETE = 41, /* DELETE */ + YYSYMBOL_DIRECT = 42, /* DIRECT */ + YYSYMBOL_DOUBLE = 43, /* DOUBLE */ + YYSYMBOL_ESCAPE = 44, /* ESCAPE */ + YYSYMBOL_EXCEPT = 45, /* EXCEPT */ + YYSYMBOL_EXISTS = 46, /* EXISTS */ + YYSYMBOL_EXTRACT = 47, /* EXTRACT */ + YYSYMBOL_CAST = 48, /* CAST */ + YYSYMBOL_FORMAT = 49, /* FORMAT */ + YYSYMBOL_GLOBAL = 50, /* GLOBAL */ + YYSYMBOL_HAVING = 51, /* HAVING */ + YYSYMBOL_IMPORT = 52, /* IMPORT */ + YYSYMBOL_INSERT = 53, /* INSERT */ + YYSYMBOL_ISNULL = 54, /* ISNULL */ + YYSYMBOL_OFFSET = 55, /* OFFSET */ + YYSYMBOL_RENAME = 56, /* RENAME */ + YYSYMBOL_SCHEMA = 57, /* SCHEMA */ + YYSYMBOL_SELECT = 58, /* SELECT */ + YYSYMBOL_SORTED = 59, /* SORTED */ + YYSYMBOL_TABLES = 60, /* TABLES */ + YYSYMBOL_UNIQUE = 61, /* UNIQUE */ + YYSYMBOL_UNLOAD = 62, /* UNLOAD */ + YYSYMBOL_UPDATE = 63, /* UPDATE */ + YYSYMBOL_VALUES = 64, /* VALUES */ + YYSYMBOL_AFTER = 65, /* AFTER */ + YYSYMBOL_ALTER = 66, /* ALTER */ + YYSYMBOL_CROSS = 67, /* CROSS */ + YYSYMBOL_DELTA = 68, /* DELTA */ + YYSYMBOL_FLOAT = 69, /* FLOAT */ + YYSYMBOL_GROUP = 70, /* GROUP */ + YYSYMBOL_INDEX = 71, /* INDEX */ + YYSYMBOL_INNER = 72, /* INNER */ + YYSYMBOL_LIMIT = 73, /* LIMIT */ + YYSYMBOL_LOCAL = 74, /* LOCAL */ + YYSYMBOL_MERGE = 75, /* MERGE */ + YYSYMBOL_MINUS = 76, /* MINUS */ + YYSYMBOL_ORDER = 77, /* ORDER */ + YYSYMBOL_OUTER = 78, /* OUTER */ + YYSYMBOL_RIGHT = 79, /* RIGHT */ + YYSYMBOL_TABLE = 80, /* TABLE */ + YYSYMBOL_UNION = 81, /* UNION */ + YYSYMBOL_USING = 82, /* USING */ + YYSYMBOL_WHERE = 83, /* WHERE */ + YYSYMBOL_CALL = 84, /* CALL */ + YYSYMBOL_CASE = 85, /* CASE */ + YYSYMBOL_CHAR = 86, /* CHAR */ + YYSYMBOL_COPY = 87, /* COPY */ + YYSYMBOL_DATE = 88, /* DATE */ + YYSYMBOL_DATETIME = 89, /* DATETIME */ + YYSYMBOL_DESC = 90, /* DESC */ + YYSYMBOL_DROP = 91, /* DROP */ + YYSYMBOL_ELSE = 92, /* ELSE */ + YYSYMBOL_FILE = 93, /* FILE */ + YYSYMBOL_FROM = 94, /* FROM */ + YYSYMBOL_FULL = 95, /* FULL */ + YYSYMBOL_HASH = 96, /* HASH */ + YYSYMBOL_HINT = 97, /* HINT */ + YYSYMBOL_INTO = 98, /* INTO */ + YYSYMBOL_JOIN = 99, /* JOIN */ + YYSYMBOL_LEFT = 100, /* LEFT */ + YYSYMBOL_LIKE = 101, /* LIKE */ + YYSYMBOL_LOAD = 102, /* LOAD */ + YYSYMBOL_LONG = 103, /* LONG */ + YYSYMBOL_NULL = 104, /* NULL */ + YYSYMBOL_PLAN = 105, /* PLAN */ + YYSYMBOL_SHOW = 106, /* SHOW */ + YYSYMBOL_TEXT = 107, /* TEXT */ + YYSYMBOL_THEN = 108, /* THEN */ + YYSYMBOL_TIME = 109, /* TIME */ + YYSYMBOL_VIEW = 110, /* VIEW */ + YYSYMBOL_WHEN = 111, /* WHEN */ + YYSYMBOL_WITH = 112, /* WITH */ + YYSYMBOL_ADD = 113, /* ADD */ + YYSYMBOL_ALL = 114, /* ALL */ + YYSYMBOL_AND = 115, /* AND */ + YYSYMBOL_ASC = 116, /* ASC */ + YYSYMBOL_END = 117, /* END */ + YYSYMBOL_FOR = 118, /* FOR */ + YYSYMBOL_INT = 119, /* INT */ + YYSYMBOL_KEY = 120, /* KEY */ + YYSYMBOL_NOT = 121, /* NOT */ + YYSYMBOL_OFF = 122, /* OFF */ + YYSYMBOL_SET = 123, /* SET */ + YYSYMBOL_TOP = 124, /* TOP */ + YYSYMBOL_AS = 125, /* AS */ + YYSYMBOL_BY = 126, /* BY */ + YYSYMBOL_IF = 127, /* IF */ + YYSYMBOL_IN = 128, /* IN */ + YYSYMBOL_IS = 129, /* IS */ + YYSYMBOL_OF = 130, /* OF */ + YYSYMBOL_ON = 131, /* ON */ + YYSYMBOL_OR = 132, /* OR */ + YYSYMBOL_TO = 133, /* TO */ + YYSYMBOL_ARRAY = 134, /* ARRAY */ + YYSYMBOL_CONCAT = 135, /* CONCAT */ + YYSYMBOL_ILIKE = 136, /* ILIKE */ + YYSYMBOL_SECOND = 137, /* SECOND */ + YYSYMBOL_MINUTE = 138, /* MINUTE */ + YYSYMBOL_HOUR = 139, /* HOUR */ + YYSYMBOL_DAY = 140, /* DAY */ + YYSYMBOL_MONTH = 141, /* MONTH */ + YYSYMBOL_YEAR = 142, /* YEAR */ + YYSYMBOL_SECONDS = 143, /* SECONDS */ + YYSYMBOL_MINUTES = 144, /* MINUTES */ + YYSYMBOL_HOURS = 145, /* HOURS */ + YYSYMBOL_DAYS = 146, /* DAYS */ + YYSYMBOL_MONTHS = 147, /* MONTHS */ + YYSYMBOL_YEARS = 148, /* YEARS */ + YYSYMBOL_INTERVAL = 149, /* INTERVAL */ + YYSYMBOL_TRUE = 150, /* TRUE */ + YYSYMBOL_FALSE = 151, /* FALSE */ + YYSYMBOL_TRANSACTION = 152, /* TRANSACTION */ + YYSYMBOL_BEGIN = 153, /* BEGIN */ + YYSYMBOL_COMMIT = 154, /* COMMIT */ + YYSYMBOL_ROLLBACK = 155, /* ROLLBACK */ + YYSYMBOL_156_ = 156, /* '=' */ + YYSYMBOL_EQUALS = 157, /* EQUALS */ + YYSYMBOL_NOTEQUALS = 158, /* NOTEQUALS */ + YYSYMBOL_159_ = 159, /* '<' */ + YYSYMBOL_160_ = 160, /* '>' */ + YYSYMBOL_LESS = 161, /* LESS */ + YYSYMBOL_GREATER = 162, /* GREATER */ + YYSYMBOL_LESSEQ = 163, /* LESSEQ */ + YYSYMBOL_GREATEREQ = 164, /* GREATEREQ */ + YYSYMBOL_NOTNULL = 165, /* NOTNULL */ + YYSYMBOL_166_ = 166, /* '+' */ + YYSYMBOL_167_ = 167, /* '-' */ + YYSYMBOL_168_ = 168, /* '*' */ + YYSYMBOL_169_ = 169, /* '/' */ + YYSYMBOL_170_ = 170, /* '%' */ + YYSYMBOL_171_ = 171, /* '^' */ + YYSYMBOL_UMINUS = 172, /* UMINUS */ + YYSYMBOL_173_ = 173, /* '[' */ + YYSYMBOL_174_ = 174, /* ']' */ + YYSYMBOL_175_ = 175, /* '(' */ + YYSYMBOL_176_ = 176, /* ')' */ + YYSYMBOL_177_ = 177, /* '.' */ + YYSYMBOL_178_ = 178, /* ';' */ + YYSYMBOL_179_ = 179, /* ',' */ + YYSYMBOL_180_ = 180, /* '?' */ + YYSYMBOL_YYACCEPT = 181, /* $accept */ + YYSYMBOL_input = 182, /* input */ + YYSYMBOL_statement_list = 183, /* statement_list */ + YYSYMBOL_statement = 184, /* statement */ + YYSYMBOL_preparable_statement = 185, /* preparable_statement */ + YYSYMBOL_opt_hints = 186, /* opt_hints */ + YYSYMBOL_hint_list = 187, /* hint_list */ + YYSYMBOL_hint = 188, /* hint */ + YYSYMBOL_transaction_statement = 189, /* transaction_statement */ + YYSYMBOL_opt_transaction_keyword = 190, /* opt_transaction_keyword */ + YYSYMBOL_prepare_statement = 191, /* prepare_statement */ + YYSYMBOL_prepare_target_query = 192, /* prepare_target_query */ + YYSYMBOL_execute_statement = 193, /* execute_statement */ + YYSYMBOL_import_statement = 194, /* import_statement */ + YYSYMBOL_file_type = 195, /* file_type */ + YYSYMBOL_file_path = 196, /* file_path */ + YYSYMBOL_opt_file_type = 197, /* opt_file_type */ + YYSYMBOL_export_statement = 198, /* export_statement */ + YYSYMBOL_show_statement = 199, /* show_statement */ + YYSYMBOL_create_statement = 200, /* create_statement */ + YYSYMBOL_opt_not_exists = 201, /* opt_not_exists */ + YYSYMBOL_table_elem_commalist = 202, /* table_elem_commalist */ + YYSYMBOL_table_elem = 203, /* table_elem */ + YYSYMBOL_column_def = 204, /* column_def */ + YYSYMBOL_column_type = 205, /* column_type */ + YYSYMBOL_opt_time_precision = 206, /* opt_time_precision */ + YYSYMBOL_opt_decimal_specification = 207, /* opt_decimal_specification */ + YYSYMBOL_opt_column_constraints = 208, /* opt_column_constraints */ + YYSYMBOL_column_constraint_list = 209, /* column_constraint_list */ + YYSYMBOL_column_constraint = 210, /* column_constraint */ + YYSYMBOL_table_constraint = 211, /* table_constraint */ + YYSYMBOL_drop_statement = 212, /* drop_statement */ + YYSYMBOL_opt_exists = 213, /* opt_exists */ + YYSYMBOL_alter_statement = 214, /* alter_statement */ + YYSYMBOL_alter_action = 215, /* alter_action */ + YYSYMBOL_drop_action = 216, /* drop_action */ + YYSYMBOL_delete_statement = 217, /* delete_statement */ + YYSYMBOL_truncate_statement = 218, /* truncate_statement */ + YYSYMBOL_insert_statement = 219, /* insert_statement */ + YYSYMBOL_opt_column_list = 220, /* opt_column_list */ + YYSYMBOL_update_statement = 221, /* update_statement */ + YYSYMBOL_update_clause_commalist = 222, /* update_clause_commalist */ + YYSYMBOL_update_clause = 223, /* update_clause */ + YYSYMBOL_select_statement = 224, /* select_statement */ + YYSYMBOL_select_within_set_operation = 225, /* select_within_set_operation */ + YYSYMBOL_select_within_set_operation_no_parentheses = 226, /* select_within_set_operation_no_parentheses */ + YYSYMBOL_select_with_paren = 227, /* select_with_paren */ + YYSYMBOL_select_no_paren = 228, /* select_no_paren */ + YYSYMBOL_set_operator = 229, /* set_operator */ + YYSYMBOL_set_type = 230, /* set_type */ + YYSYMBOL_opt_all = 231, /* opt_all */ + YYSYMBOL_select_clause = 232, /* select_clause */ + YYSYMBOL_opt_distinct = 233, /* opt_distinct */ + YYSYMBOL_select_list = 234, /* select_list */ + YYSYMBOL_opt_from_clause = 235, /* opt_from_clause */ + YYSYMBOL_from_clause = 236, /* from_clause */ + YYSYMBOL_opt_where = 237, /* opt_where */ + YYSYMBOL_opt_group = 238, /* opt_group */ + YYSYMBOL_opt_having = 239, /* opt_having */ + YYSYMBOL_opt_order = 240, /* opt_order */ + YYSYMBOL_order_list = 241, /* order_list */ + YYSYMBOL_order_desc = 242, /* order_desc */ + YYSYMBOL_opt_order_type = 243, /* opt_order_type */ + YYSYMBOL_opt_top = 244, /* opt_top */ + YYSYMBOL_opt_limit = 245, /* opt_limit */ + YYSYMBOL_expr_list = 246, /* expr_list */ + YYSYMBOL_opt_literal_list = 247, /* opt_literal_list */ + YYSYMBOL_literal_list = 248, /* literal_list */ + YYSYMBOL_expr_alias = 249, /* expr_alias */ + YYSYMBOL_expr = 250, /* expr */ + YYSYMBOL_operand = 251, /* operand */ + YYSYMBOL_scalar_expr = 252, /* scalar_expr */ + YYSYMBOL_unary_expr = 253, /* unary_expr */ + YYSYMBOL_binary_expr = 254, /* binary_expr */ + YYSYMBOL_logic_expr = 255, /* logic_expr */ + YYSYMBOL_in_expr = 256, /* in_expr */ + YYSYMBOL_case_expr = 257, /* case_expr */ + YYSYMBOL_case_list = 258, /* case_list */ + YYSYMBOL_exists_expr = 259, /* exists_expr */ + YYSYMBOL_comp_expr = 260, /* comp_expr */ + YYSYMBOL_function_expr = 261, /* function_expr */ + YYSYMBOL_extract_expr = 262, /* extract_expr */ + YYSYMBOL_cast_expr = 263, /* cast_expr */ + YYSYMBOL_datetime_field = 264, /* datetime_field */ + YYSYMBOL_datetime_field_plural = 265, /* datetime_field_plural */ + YYSYMBOL_duration_field = 266, /* duration_field */ + YYSYMBOL_array_expr = 267, /* array_expr */ + YYSYMBOL_array_index = 268, /* array_index */ + YYSYMBOL_between_expr = 269, /* between_expr */ + YYSYMBOL_column_name = 270, /* column_name */ + YYSYMBOL_literal = 271, /* literal */ + YYSYMBOL_string_literal = 272, /* string_literal */ + YYSYMBOL_bool_literal = 273, /* bool_literal */ + YYSYMBOL_num_literal = 274, /* num_literal */ + YYSYMBOL_int_literal = 275, /* int_literal */ + YYSYMBOL_null_literal = 276, /* null_literal */ + YYSYMBOL_date_literal = 277, /* date_literal */ + YYSYMBOL_interval_literal = 278, /* interval_literal */ + YYSYMBOL_param_expr = 279, /* param_expr */ + YYSYMBOL_table_ref = 280, /* table_ref */ + YYSYMBOL_table_ref_atomic = 281, /* table_ref_atomic */ + YYSYMBOL_nonjoin_table_ref_atomic = 282, /* nonjoin_table_ref_atomic */ + YYSYMBOL_table_ref_commalist = 283, /* table_ref_commalist */ + YYSYMBOL_table_ref_name = 284, /* table_ref_name */ + YYSYMBOL_table_ref_name_no_alias = 285, /* table_ref_name_no_alias */ + YYSYMBOL_table_name = 286, /* table_name */ + YYSYMBOL_opt_index_name = 287, /* opt_index_name */ + YYSYMBOL_table_alias = 288, /* table_alias */ + YYSYMBOL_opt_table_alias = 289, /* opt_table_alias */ + YYSYMBOL_alias = 290, /* alias */ + YYSYMBOL_opt_alias = 291, /* opt_alias */ + YYSYMBOL_opt_with_clause = 292, /* opt_with_clause */ + YYSYMBOL_with_clause = 293, /* with_clause */ + YYSYMBOL_with_description_list = 294, /* with_description_list */ + YYSYMBOL_with_description = 295, /* with_description */ + YYSYMBOL_join_clause = 296, /* join_clause */ + YYSYMBOL_opt_join_type = 297, /* opt_join_type */ + YYSYMBOL_join_condition = 298, /* join_condition */ + YYSYMBOL_opt_semicolon = 299, /* opt_semicolon */ + YYSYMBOL_ident_commalist = 300 /* ident_commalist */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -589,12 +590,18 @@ typedef int yy_state_fast_t; # define YY_USE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else @@ -756,19 +763,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 67 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 886 +#define YYLAST 870 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 180 +#define YYNTOKENS 181 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 120 /* YYNRULES -- Number of rules. */ -#define YYNRULES 302 +#define YYNRULES 303 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 549 +#define YYNSTATES 550 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 417 +#define YYMAXUTOK 418 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -785,13 +792,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, 169, 2, 2, - 174, 175, 167, 165, 178, 166, 176, 168, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 177, - 158, 155, 159, 179, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 170, 2, 2, + 175, 176, 168, 166, 179, 167, 177, 169, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 178, + 159, 156, 160, 180, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 172, 2, 173, 170, 2, 2, 2, 2, 2, + 2, 173, 2, 174, 171, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -823,44 +830,44 @@ static const yytype_uint8 yytranslate[] = 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 156, 157, 160, 161, 162, 163, 164, 171 + 155, 157, 158, 161, 162, 163, 164, 165, 172 }; #if HSQL_DEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 293, 293, 312, 318, 325, 329, 333, 334, 335, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 352, 353, 355, 359, 364, 368, 378, 379, 380, 382, - 382, 388, 394, 396, 400, 411, 417, 424, 439, 444, - 445, 451, 463, 464, 469, 480, 493, 501, 508, 515, - 524, 525, 527, 531, 536, 537, 539, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 559, 560, 562, 563, 564, 566, 567, 569, 573, - 578, 579, 580, 581, 583, 584, 592, 598, 604, 610, - 616, 617, 624, 630, 632, 642, 649, 660, 667, 675, - 676, 683, 690, 694, 699, 709, 713, 717, 729, 729, - 731, 732, 741, 742, 744, 754, 765, 770, 774, 778, - 783, 784, 786, 796, 797, 799, 801, 802, 804, 806, - 807, 809, 814, 816, 817, 819, 820, 822, 826, 831, - 833, 834, 835, 839, 840, 842, 843, 844, 845, 846, - 847, 852, 856, 861, 862, 864, 868, 873, 881, 881, - 881, 881, 881, 883, 884, 884, 884, 884, 884, 884, - 884, 884, 885, 885, 889, 889, 891, 892, 893, 894, - 895, 897, 897, 898, 899, 900, 901, 902, 903, 904, - 905, 906, 908, 909, 911, 912, 913, 914, 918, 919, - 920, 921, 923, 924, 926, 927, 929, 930, 931, 932, - 933, 934, 935, 937, 938, 940, 942, 944, 945, 946, - 947, 948, 949, 951, 952, 953, 954, 955, 956, 958, - 958, 960, 962, 964, 966, 967, 968, 969, 971, 971, - 971, 971, 971, 971, 971, 973, 975, 976, 978, 979, - 981, 983, 985, 996, 1000, 1011, 1043, 1052, 1052, 1059, - 1059, 1061, 1061, 1068, 1072, 1077, 1085, 1091, 1095, 1100, - 1101, 1103, 1103, 1105, 1105, 1107, 1108, 1110, 1110, 1116, - 1116, 1118, 1120, 1124, 1129, 1139, 1146, 1154, 1170, 1171, - 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1181, 1187, - 1187, 1190, 1194 + 0, 294, 294, 313, 319, 326, 330, 334, 335, 336, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 353, 354, 356, 360, 365, 369, 379, 380, 381, 383, + 383, 389, 395, 397, 401, 412, 418, 425, 440, 445, + 446, 452, 464, 465, 470, 481, 494, 502, 509, 516, + 525, 526, 528, 532, 537, 538, 540, 545, 546, 547, + 548, 549, 550, 554, 555, 556, 557, 558, 559, 560, + 561, 562, 564, 565, 567, 568, 569, 571, 572, 574, + 578, 583, 584, 585, 586, 588, 589, 597, 603, 609, + 615, 621, 622, 629, 635, 637, 647, 654, 665, 672, + 680, 681, 688, 695, 699, 704, 714, 718, 722, 734, + 734, 736, 737, 746, 747, 749, 759, 770, 775, 779, + 783, 788, 789, 791, 801, 802, 804, 806, 807, 809, + 811, 812, 814, 819, 821, 822, 824, 825, 827, 831, + 836, 838, 839, 840, 844, 845, 847, 848, 849, 850, + 851, 852, 857, 861, 866, 867, 869, 873, 878, 886, + 886, 886, 886, 886, 888, 889, 889, 889, 889, 889, + 889, 889, 889, 890, 890, 894, 894, 896, 897, 898, + 899, 900, 902, 902, 903, 904, 905, 906, 907, 908, + 909, 910, 911, 913, 914, 916, 917, 918, 919, 923, + 924, 925, 926, 928, 929, 931, 932, 934, 935, 936, + 937, 938, 939, 940, 942, 943, 945, 947, 949, 950, + 951, 952, 953, 954, 956, 957, 958, 959, 960, 961, + 963, 963, 965, 967, 969, 971, 972, 973, 974, 976, + 976, 976, 976, 976, 976, 976, 978, 980, 981, 983, + 984, 986, 988, 990, 1001, 1005, 1016, 1048, 1057, 1057, + 1064, 1064, 1066, 1066, 1073, 1077, 1082, 1090, 1096, 1100, + 1105, 1106, 1108, 1108, 1110, 1110, 1112, 1113, 1115, 1115, + 1121, 1121, 1123, 1125, 1129, 1134, 1144, 1151, 1159, 1175, + 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1186, + 1192, 1192, 1195, 1199 }; #endif @@ -881,22 +888,22 @@ static const char *const yytname[] = "TEMPORARY", "TIMESTAMP", "DISTINCT", "NVARCHAR", "RESTRICT", "TRUNCATE", "ANALYZE", "BETWEEN", "CASCADE", "COLUMNS", "CONTROL", "DEFAULT", "EXECUTE", "EXPLAIN", "INTEGER", "NATURAL", "PREPARE", "PRIMARY", - "SCHEMAS", "CHARACTER", "VARYING", "REAL", "DECIMAL", "SPATIAL", - "VARCHAR", "VIRTUAL", "DESCRIBE", "BEFORE", "COLUMN", "CREATE", "DELETE", - "DIRECT", "DOUBLE", "ESCAPE", "EXCEPT", "EXISTS", "EXTRACT", "CAST", - "FORMAT", "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", - "COPY", "DATE", "DATETIME", "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", "END", "FOR", "INT", "KEY", "NOT", "OFF", - "SET", "TOP", "AS", "BY", "IF", "IN", "IS", "OF", "ON", "OR", "TO", - "ARRAY", "CONCAT", "ILIKE", "SECOND", "MINUTE", "HOUR", "DAY", "MONTH", - "YEAR", "SECONDS", "MINUTES", "HOURS", "DAYS", "MONTHS", "YEARS", - "INTERVAL", "TRUE", "FALSE", "TRANSACTION", "BEGIN", "COMMIT", + "SCHEMAS", "CHARACTER", "VARYING", "REAL", "DECIMAL", "SMALLINT", + "SPATIAL", "VARCHAR", "VIRTUAL", "DESCRIBE", "BEFORE", "COLUMN", + "CREATE", "DELETE", "DIRECT", "DOUBLE", "ESCAPE", "EXCEPT", "EXISTS", + "EXTRACT", "CAST", "FORMAT", "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", "COPY", "DATE", "DATETIME", "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", "END", "FOR", "INT", + "KEY", "NOT", "OFF", "SET", "TOP", "AS", "BY", "IF", "IN", "IS", "OF", + "ON", "OR", "TO", "ARRAY", "CONCAT", "ILIKE", "SECOND", "MINUTE", "HOUR", + "DAY", "MONTH", "YEAR", "SECONDS", "MINUTES", "HOURS", "DAYS", "MONTHS", + "YEARS", "INTERVAL", "TRUE", "FALSE", "TRANSACTION", "BEGIN", "COMMIT", "ROLLBACK", "'='", "EQUALS", "NOTEQUALS", "'<'", "'>'", "LESS", "GREATER", "LESSEQ", "GREATEREQ", "NOTNULL", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", @@ -907,7 +914,7 @@ static const char *const yytname[] = "file_type", "file_path", "opt_file_type", "export_statement", "show_statement", "create_statement", "opt_not_exists", "table_elem_commalist", "table_elem", "column_def", "column_type", - "opt_time_specification", "opt_decimal_specification", + "opt_time_precision", "opt_decimal_specification", "opt_column_constraints", "column_constraint_list", "column_constraint", "table_constraint", "drop_statement", "opt_exists", "alter_statement", "alter_action", "drop_action", "delete_statement", "truncate_statement", @@ -942,486 +949,458 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 61, 410, 411, 60, 62, - 412, 413, 414, 415, 416, 43, 45, 42, 47, 37, - 94, 417, 91, 93, 40, 41, 46, 59, 44, 63 -}; -#endif - -#define YYPACT_NINF (-321) +#define YYPACT_NINF (-432) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-300) +#define YYTABLE_NINF (-301) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const yytype_int16 yypact[] = { - 618, 65, 87, 127, 142, 87, 104, 68, 95, 60, - 87, 138, 87, 122, 18, 201, 51, 51, 51, 225, - 71, -321, 126, -321, 126, -321, -321, -321, -321, -321, - -321, -321, -321, -321, -321, -321, -321, -23, -321, 246, - 74, -321, 86, 185, -321, 153, 153, 153, 87, 288, - 87, 170, -321, 171, -49, 171, 171, 171, 87, -321, - 179, 133, -321, -321, -321, -321, -321, -321, 587, -321, - 204, -321, -321, 189, -23, 129, -321, 61, -321, 302, - 37, 314, 200, 318, 87, 87, 255, -321, 236, 164, - 341, 308, 87, 355, 355, 358, 87, 87, -321, 202, - 201, -321, 214, 360, 363, 207, 219, -321, -321, -321, - -23, 290, 280, -23, 24, -321, -321, -321, -321, 402, - -321, 403, -321, -321, -321, 233, 234, -321, -321, -321, - -321, 713, -321, -321, -321, -321, -321, -321, 369, -321, - 285, -40, 164, 326, -321, 355, 413, 66, 262, -46, - -321, -321, 328, 309, -321, 309, -321, -321, -321, -321, - -321, 416, -321, -321, 326, -321, -321, 345, -321, -321, - 129, -321, -321, 326, 345, 326, 160, -321, -321, 130, - -321, 37, -321, -321, -321, -321, -321, -321, -321, -321, - -321, -321, -321, -321, -321, -321, -321, -321, 87, 419, - 312, 35, 300, 8, 251, 256, 260, 230, 386, 263, - 396, -321, 278, -68, 449, -321, -321, -321, -321, -321, - -321, -321, -321, -321, -321, -321, -321, -321, -321, -321, - -321, 339, -321, 121, 264, -321, 326, 341, -321, 399, - -321, -321, 391, -321, -321, 266, 123, -321, 348, 269, - -321, 19, 24, -23, 271, -321, -34, 24, -68, 397, - 17, -321, -321, 276, 361, -321, 453, 335, 281, 141, - -321, -321, -321, 312, 6, 12, 401, 130, 326, 326, - 109, -43, 282, 396, 646, 326, 118, 286, -74, 326, - 326, 396, -321, 396, -55, 289, -44, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, - 396, 396, 360, 87, -321, 457, 37, -68, -321, 171, - 288, 37, -321, 416, 20, 255, -321, 326, -321, 459, - -321, -321, -321, -321, 326, -321, -321, -321, -321, 326, - 326, 413, 355, -321, 434, -321, 291, 293, -321, -321, - 294, -321, -321, -321, -321, 295, -321, 22, 297, 413, - -321, 35, -321, -321, 326, -321, -321, 303, 379, 131, - -56, 148, 326, 326, -321, 401, 381, 54, -321, -321, - -321, 365, 593, 664, 396, 316, 278, -321, 383, 319, - 664, 664, 664, 664, 714, 714, 714, 714, 118, 118, - 56, 56, 56, -87, 315, -321, -321, 167, 491, -321, - 168, -321, 312, -321, 144, -321, 320, -321, 28, -321, - 427, -321, -321, -321, -68, -68, 174, -321, 323, 495, - -321, 497, 498, 501, -321, 389, -321, -321, 406, -321, - 22, -321, 413, 176, -321, 180, -321, 326, 453, 326, - 326, -321, 44, 64, 336, -321, 396, 664, 278, 337, - 182, -321, -321, -321, -321, -321, 338, 412, -321, -321, - -321, 437, 438, 440, 420, 20, 517, -321, -321, -321, - 398, -321, -321, 516, 192, 349, 350, 351, -321, -321, - -321, 199, -321, -321, 39, 352, -68, 143, -321, 326, - -321, 646, 353, 208, -321, -321, 28, 20, -321, -321, - -321, 20, 270, 356, 326, 357, -321, 525, -321, -321, - -321, -321, -321, -321, -321, -68, -321, -321, -321, -321, - 78, 413, -24, -321, 362, 359, 326, 209, 326, -321, - -321, 13, -68, -321, -321, -68, 366, 364, -321 + 567, 128, 64, 171, 179, 64, 96, 69, 135, 102, + 64, 163, 64, 97, 15, 266, 101, 101, 101, 271, + 119, -432, 186, -432, 186, -432, -432, -432, -432, -432, + -432, -432, -432, -432, -432, -432, -432, -30, -432, 277, + 129, -432, 127, 218, -432, 192, 192, 192, 64, 313, + 64, 208, -432, 210, -57, 210, 210, 210, 64, -432, + 223, 173, -432, -432, -432, -432, -432, -432, 562, -432, + 257, -432, -432, 234, -30, 42, -432, 160, -432, 364, + 36, 365, 252, 371, 64, 64, 292, -432, 283, 203, + 381, 339, 64, 389, 389, 392, 64, 64, -432, 224, + 266, -432, 225, 400, 395, 232, 235, -432, -432, -432, + -30, 299, 289, -30, -19, -432, -432, -432, -432, 412, + -432, 413, -432, -432, -432, 242, 243, -432, -432, -432, + -432, 658, -432, -432, -432, -432, -432, -432, 375, -432, + 294, -31, 203, 324, -432, 389, 423, 182, 273, -45, + -432, -432, 336, 320, -432, 320, -432, -432, -432, -432, + -432, 432, -432, -432, 324, -432, -432, 359, -432, -432, + 42, -432, -432, 324, 359, 324, 124, -432, -432, 250, + -432, 36, -432, -432, -432, -432, -432, -432, -432, -432, + -432, -432, -432, -432, -432, -432, -432, -432, 64, 434, + 326, 99, 315, -74, 267, 268, 274, 175, 356, 275, + 335, -432, 230, -53, 397, -432, -432, -432, -432, -432, + -432, -432, -432, -432, -432, -432, -432, -432, -432, -432, + -432, 348, -432, -111, 278, -432, 324, 381, -432, 411, + -432, -432, 405, -432, -432, 280, -96, -432, 363, 282, + -432, 18, -19, -30, 284, -432, -44, -19, -53, 404, + 27, -432, -432, 287, 372, -432, 751, 344, 291, -15, + -432, -432, -432, 326, 19, 21, 409, 250, 324, 324, + 151, 91, 293, 335, 577, 324, 176, 295, 41, 324, + 324, 335, -432, 335, 56, 297, 106, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 400, 64, -432, 467, 36, -53, -432, 210, + 313, 36, -432, 432, 13, 292, -432, 324, -432, 473, + -432, -432, -432, -432, 324, -432, -432, -432, -432, 324, + 324, 423, 389, -432, 448, -432, 304, -432, 305, -432, + -432, 306, -432, -432, -432, -432, 307, -432, 34, 312, + 423, -432, 99, -432, -432, 324, -432, -432, 317, 394, + -66, 140, 133, 324, 324, -432, 409, 388, -127, -432, + -432, -432, 380, 526, 603, 335, 319, 230, -432, 393, + 323, 603, 603, 603, 603, 379, 379, 379, 379, 176, + 176, -82, -82, -82, -100, 327, -432, -432, 25, 497, + -432, 63, -432, 326, -432, 53, -432, 330, -432, 24, + -432, 441, -432, -432, -432, -53, -53, 105, -432, 337, + 507, -432, 510, 511, 513, -432, 401, -432, -432, 416, + -432, 34, -432, 423, 111, -432, 144, -432, 324, 751, + 324, 324, -432, 150, 153, 346, -432, 335, 603, 230, + 351, 156, -432, -432, -432, -432, -432, 353, 429, -432, + -432, -432, 452, 456, 457, 438, 13, 537, -432, -432, + -432, 415, -432, -432, 538, 157, 382, 383, 396, -432, + -432, -432, 177, -432, -432, 43, 399, -53, 178, -432, + 324, -432, 577, 402, 187, -432, -432, 24, 13, -432, + -432, -432, 13, 222, 376, 324, 403, -432, 565, -432, + -432, -432, -432, -432, -432, -432, -53, -432, -432, -432, + -432, 352, 423, -28, -432, 407, 398, 324, 189, 324, + -432, -432, 26, -53, -432, -432, -53, 408, 410, -432 }; - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_int16 yydefact[] = { - 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 0, - 300, 3, 21, 19, 21, 18, 8, 9, 7, 11, - 16, 17, 13, 14, 12, 15, 10, 0, 279, 0, - 267, 96, 33, 0, 44, 51, 51, 51, 0, 0, - 0, 0, 266, 91, 0, 91, 91, 91, 0, 42, - 0, 281, 282, 29, 26, 28, 27, 1, 280, 2, - 0, 6, 5, 144, 0, 105, 106, 136, 88, 0, - 154, 0, 0, 270, 0, 0, 130, 37, 0, 100, + 301, 3, 21, 19, 21, 18, 8, 9, 7, 11, + 16, 17, 13, 14, 12, 15, 10, 0, 280, 0, + 268, 97, 33, 0, 44, 51, 51, 51, 0, 0, + 0, 0, 267, 92, 0, 92, 92, 92, 0, 42, + 0, 282, 283, 29, 26, 28, 27, 1, 281, 2, + 0, 6, 5, 145, 0, 106, 107, 137, 89, 0, + 155, 0, 0, 271, 0, 0, 131, 37, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, - 0, 4, 0, 0, 124, 0, 0, 118, 119, 117, - 0, 121, 0, 0, 150, 268, 245, 248, 250, 0, - 251, 0, 246, 247, 256, 0, 153, 155, 238, 239, - 240, 249, 241, 242, 243, 244, 32, 31, 0, 269, - 0, 0, 100, 0, 95, 0, 0, 0, 0, 130, - 102, 90, 0, 40, 38, 40, 89, 86, 87, 284, - 283, 0, 143, 123, 0, 113, 112, 136, 109, 108, - 110, 120, 116, 0, 136, 0, 0, 114, 252, 255, - 34, 0, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 253, 50, 0, 0, - 280, 0, 0, 234, 0, 0, 0, 0, 0, 0, - 0, 236, 0, 129, 158, 165, 166, 167, 160, 162, - 168, 161, 181, 169, 170, 171, 172, 164, 159, 174, - 175, 0, 301, 0, 0, 98, 0, 0, 101, 0, - 92, 93, 0, 36, 41, 24, 0, 22, 127, 125, - 151, 278, 150, 0, 135, 137, 142, 150, 146, 148, - 145, 254, 156, 0, 0, 47, 0, 0, 0, 0, - 52, 54, 55, 280, 124, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 177, 0, 176, 0, 0, 0, - 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 125, 0, 0, 119, 120, 118, + 0, 122, 0, 0, 151, 269, 246, 249, 251, 0, + 252, 0, 247, 248, 257, 0, 154, 156, 239, 240, + 241, 250, 242, 243, 244, 245, 32, 31, 0, 270, + 0, 0, 101, 0, 96, 0, 0, 0, 0, 131, + 103, 91, 0, 40, 38, 40, 90, 87, 88, 285, + 284, 0, 144, 124, 0, 114, 113, 137, 110, 109, + 111, 121, 117, 0, 137, 0, 0, 115, 253, 256, + 34, 0, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 254, 50, 0, 0, + 281, 0, 0, 235, 0, 0, 0, 0, 0, 0, + 0, 237, 0, 130, 159, 166, 167, 168, 161, 163, + 169, 162, 182, 170, 171, 172, 173, 165, 160, 175, + 176, 0, 302, 0, 0, 99, 0, 0, 102, 0, + 93, 94, 0, 36, 41, 24, 0, 22, 128, 126, + 152, 279, 151, 0, 136, 138, 143, 151, 147, 149, + 146, 255, 157, 0, 0, 47, 0, 0, 0, 0, + 52, 54, 55, 281, 125, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 178, 0, 177, 0, 0, 0, + 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 99, 0, 0, 104, 103, 91, - 0, 0, 20, 0, 0, 130, 126, 0, 276, 0, - 277, 157, 107, 111, 0, 141, 140, 139, 115, 0, - 0, 0, 0, 58, 0, 63, 75, 0, 62, 60, - 0, 70, 69, 59, 67, 72, 57, 77, 0, 0, - 46, 0, 49, 213, 0, 235, 237, 0, 0, 0, - 0, 0, 0, 0, 200, 0, 0, 0, 173, 163, - 192, 193, 0, 188, 0, 0, 0, 179, 0, 191, - 190, 206, 207, 208, 209, 210, 211, 212, 183, 182, - 185, 184, 186, 187, 0, 35, 302, 0, 0, 39, - 0, 23, 280, 128, 257, 259, 0, 261, 274, 260, - 132, 152, 275, 138, 149, 147, 0, 45, 0, 0, - 61, 0, 0, 0, 68, 0, 81, 82, 0, 56, - 76, 78, 0, 0, 53, 0, 204, 0, 0, 0, - 0, 198, 0, 0, 0, 231, 0, 189, 0, 0, - 0, 180, 232, 97, 94, 25, 0, 0, 296, 288, - 294, 292, 295, 290, 0, 0, 0, 273, 265, 271, - 0, 122, 48, 0, 0, 0, 0, 0, 80, 83, - 79, 0, 85, 214, 0, 0, 202, 0, 201, 0, - 205, 233, 0, 0, 196, 194, 274, 0, 291, 293, - 289, 0, 258, 275, 0, 0, 74, 0, 64, 66, - 71, 84, 215, 216, 199, 203, 197, 195, 262, 285, - 297, 0, 134, 65, 0, 0, 0, 0, 0, 131, - 73, 0, 298, 286, 272, 133, 234, 0, 287 + 0, 0, 0, 0, 100, 0, 0, 105, 104, 92, + 0, 0, 20, 0, 0, 131, 127, 0, 277, 0, + 278, 158, 108, 112, 0, 142, 141, 140, 116, 0, + 0, 0, 0, 65, 0, 67, 76, 68, 0, 63, + 64, 0, 60, 61, 66, 69, 73, 57, 78, 0, + 0, 46, 0, 49, 214, 0, 236, 238, 0, 0, + 0, 0, 0, 0, 0, 201, 0, 0, 0, 174, + 164, 193, 194, 0, 189, 0, 0, 0, 180, 0, + 192, 191, 207, 208, 209, 210, 211, 212, 213, 184, + 183, 186, 185, 187, 188, 0, 35, 303, 0, 0, + 39, 0, 23, 281, 129, 258, 260, 0, 262, 275, + 261, 133, 153, 276, 139, 150, 148, 0, 45, 0, + 0, 62, 0, 0, 0, 70, 0, 82, 83, 0, + 56, 77, 79, 0, 0, 53, 0, 205, 0, 0, + 0, 0, 199, 0, 0, 0, 232, 0, 190, 0, + 0, 0, 181, 233, 98, 95, 25, 0, 0, 297, + 289, 295, 293, 296, 291, 0, 0, 0, 274, 266, + 272, 0, 123, 48, 0, 0, 0, 0, 0, 81, + 84, 80, 0, 86, 215, 0, 0, 203, 0, 202, + 0, 206, 234, 0, 0, 197, 195, 275, 0, 292, + 294, 290, 0, 259, 276, 0, 0, 75, 0, 71, + 58, 72, 85, 216, 217, 200, 204, 198, 196, 263, + 286, 298, 0, 135, 59, 0, 0, 0, 0, 0, + 132, 74, 0, 299, 287, 273, 134, 235, 0, 288 }; - /* YYPGOTO[NTERM-NUM]. */ +/* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -321, -321, -321, 475, -321, 523, -321, 227, -321, 48, - -321, -321, -321, -321, 228, -89, 409, -321, -321, -321, - 42, -321, 190, -321, 106, -321, -321, -321, -321, 116, - -321, -321, -47, -321, -321, -321, -321, -321, -321, 415, - -321, -321, 321, -194, -85, -321, 125, -73, -42, -321, - -321, -86, 292, -321, -321, -321, -136, -321, -321, -106, - -321, 238, -321, -321, -11, -260, -321, -27, 240, -143, - -191, -321, -321, -321, -321, -321, -321, 298, -321, -321, - -321, -321, -321, -150, -321, -321, -321, -321, -321, 27, - -60, -91, -321, -321, -92, -321, -321, -321, -321, -321, - -299, 67, -321, -321, -321, 2, -321, -321, 73, 322, - -321, -321, -321, -321, 480, -321, -321, -321, -321, -320 + -432, -432, -432, 508, -432, 557, -432, 264, -432, 39, + -432, -432, -432, -432, 270, -85, 436, -432, -432, -432, + 168, -432, 233, -432, 143, -432, -432, -432, -432, 155, + -432, -432, -49, -432, -432, -432, -432, -432, -432, 455, + -432, -432, 357, -187, -87, -432, 125, -73, -33, -432, + -432, -88, 331, -432, -432, -432, -135, -432, -432, -97, + -432, 272, -432, -432, -39, -266, -432, -65, 285, -143, + -193, -432, -432, -432, -432, -432, -432, 318, -432, -432, + -432, -432, -432, -136, -432, -432, -432, -432, -432, 58, + -62, -90, -432, -432, -92, -432, -432, -432, -432, -432, + -431, 93, -432, -432, -432, 0, -432, -432, 103, 358, + -432, -432, -432, -432, 516, -432, -432, -432, -432, -321 }; - /* YYDEFGOTO[NTERM-NUM]. */ +/* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { 0, 19, 20, 21, 22, 71, 246, 247, 23, 64, 24, 137, 25, 26, 88, 153, 243, 27, 28, 29, - 83, 269, 270, 271, 357, 434, 430, 439, 440, 441, + 83, 269, 270, 271, 358, 435, 431, 440, 441, 442, 272, 30, 92, 31, 240, 241, 32, 33, 34, 147, 35, 149, 150, 36, 167, 168, 169, 76, 110, 111, - 172, 77, 164, 248, 325, 326, 144, 481, 539, 114, + 172, 77, 164, 248, 325, 326, 144, 482, 540, 114, 254, 255, 337, 104, 177, 249, 125, 126, 250, 251, 214, 215, 216, 217, 218, 219, 220, 281, 221, 222, 223, 224, 225, 194, 195, 196, 226, 227, 228, 229, - 230, 128, 129, 130, 131, 132, 133, 134, 135, 413, - 414, 415, 416, 417, 51, 418, 140, 477, 478, 479, - 331, 37, 38, 61, 62, 419, 474, 543, 69, 233 + 230, 128, 129, 130, 131, 132, 133, 134, 135, 414, + 415, 416, 417, 418, 51, 419, 140, 478, 479, 480, + 331, 37, 38, 61, 62, 420, 475, 544, 69, 233 }; - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 213, 106, 154, 154, 41, 155, 265, 44, 95, 96, - 97, 162, 52, 238, 54, 365, 546, 284, 163, 286, - 127, 426, 328, 40, 170, 377, 538, 170, 174, 261, - 256, 328, 258, 260, 73, 113, 143, 58, 266, 443, - 289, 116, 117, 118, 93, 384, 289, 297, 372, 435, - 86, 449, 89, 199, 154, 335, 231, 290, 289, 387, - 98, 252, 267, 290, 280, 65, 66, 373, 257, 288, - 107, 340, 385, 374, 235, 290, 388, 59, 175, 362, - 289, 336, 436, 94, 200, 312, 141, 142, 84, 85, - 40, 39, 284, 317, 152, 268, 176, 290, 157, 158, - 382, 379, 383, 467, 445, 108, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 262, 491, 73, 119, 437, 460, 368, 253, 234, - 42, 289, 237, 289, 201, 369, 370, 112, 107, 287, - 120, 109, 438, 329, 468, 43, 380, 381, 290, 469, - 290, 74, 476, 289, 327, 470, 471, 50, 289, 535, - 498, 48, 75, 203, 116, 117, 118, 170, 333, 467, - 290, 499, 472, 108, 45, 290, 512, 473, 289, 366, - 211, 363, 274, 46, 275, 121, 122, 123, 49, 420, - 297, 256, 55, 457, 412, 290, 424, 425, 503, 105, - 263, 56, 63, 367, 60, 204, 205, 206, 536, 109, - 468, 537, 530, 47, 522, 469, 124, 53, 466, 279, - 404, 470, 471, 289, 159, 67, 311, 455, 312, 452, - 453, 57, 327, 203, 116, 117, 118, 70, 472, 450, - 290, 332, -297, 473, 207, 289, 338, 119, 68, 78, - 79, 154, 297, 427, 532, 448, 127, 289, 373, 524, - 80, 127, 290, 120, 451, 501, 182, 183, 184, 185, - 186, 187, 408, 259, 290, 204, 205, 206, 81, 82, - 208, 203, 116, 117, 118, 308, 309, 310, 311, 407, - 312, 87, 90, 209, 410, 467, 314, 91, 322, 315, - 102, 323, 454, 99, 494, 115, 496, 497, 121, 122, - 123, 100, 103, 459, 207, 405, 360, 119, 136, 361, - 138, 139, -263, 204, 205, 206, 210, 211, 145, 203, - 116, 117, 118, 120, 212, 73, 468, 143, 146, 124, - 279, 469, 463, 465, 148, 181, 181, 470, 471, 482, - 208, 492, 315, 151, 315, 493, 525, 505, 327, 116, - 327, 156, 207, 209, 472, 119, 118, 516, -297, 473, - 517, 204, 205, 206, 521, 163, 74, 315, 121, 122, - 123, 120, 165, 527, 544, 502, 327, 315, 161, 203, - 116, 117, 118, 542, 166, 545, 210, 211, 208, 203, - 116, 117, 118, 171, 212, 173, 178, 179, 180, 124, - 207, 209, 181, 119, 197, 198, 232, 236, 239, 245, - 242, 112, 264, 15, 273, 276, 121, 122, 123, 120, - 277, 282, 205, 206, 278, 285, 313, 319, 316, 320, - 321, 324, 205, 206, 210, 211, 208, 327, -264, 334, - 341, 339, 212, 342, 358, 359, 375, 124, 73, 209, - 406, 378, 422, 386, 428, 429, 291, 431, 432, 433, - 207, 442, 447, 119, 121, 122, 123, 343, 446, 289, - 207, 384, 344, 119, 345, 346, 461, 347, 462, 120, - 458, 312, 210, 211, 464, 348, 480, 483, 475, 120, - 212, 484, 292, 485, 486, 124, 283, 487, 488, 489, - 507, 500, 504, 506, 508, 509, 283, 510, 511, 209, - 513, 349, 515, 514, 518, 519, 520, 523, 526, 209, - 531, 534, 533, 541, 121, 122, 123, 540, 350, 548, - 351, 352, 275, 101, 121, 122, 123, 72, 409, 293, - 411, 444, 210, 211, 495, 353, 490, 202, 318, 354, - 212, 355, 210, 211, 244, 124, 364, 421, 547, 294, - 212, 356, 423, 330, 529, 124, 295, 296, 371, 528, - 160, 0, 0, 297, 298, 0, 0, -299, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 299, 300, 301, 302, 303, 3, - 0, 304, 305, 4, 306, 307, 308, 309, 310, 311, - 0, 312, 0, 5, 0, 1, 6, 7, 0, 0, - 0, 0, 0, 2, 0, 0, 0, 0, 8, 9, - 3, 0, 0, 0, 4, 0, 292, 0, 0, 10, - 0, 0, 11, 0, 5, 0, 0, 6, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, - 9, 0, 0, 12, 0, 0, 0, 13, 0, 0, - 10, 0, 0, 11, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 293, 0, 0, 0, 0, 15, 292, - 0, 0, 0, 0, 12, 0, 0, 456, 13, 0, - 0, 0, 0, 376, 0, 0, 0, 292, 0, 0, - 0, 296, 0, 14, 0, 0, 0, 297, 298, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 17, 18, 0, 0, 0, 0, 293, 0, 299, 300, - 301, 302, 303, 0, 0, 304, 305, 0, 306, 307, - 308, 309, 310, 311, -300, 312, 376, 292, 0, 0, - 16, 17, 18, 0, 296, 0, 0, 0, 0, 0, - 297, 298, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 296, 0, 0, 0, 0, 0, 297, -300, - 0, 299, 300, 301, 302, 303, 0, 0, 304, 305, - 0, 306, 307, 308, 309, 310, 311, 0, 312, -300, - -300, -300, 302, 303, 0, 0, 304, 305, 0, 306, - 307, 308, 309, 310, 311, 0, 312, 0, 0, 0, - 0, 0, 296, 0, 0, 0, 0, 0, 297, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -300, -300, 0, 0, -300, -300, 0, 306, - 307, 308, 309, 310, 311, 0, 312 + 213, 106, 41, 154, 154, 44, 95, 96, 97, 155, + 52, 162, 54, 265, 238, 284, 40, 286, 127, 378, + 427, 328, 170, 539, 366, 170, 174, 328, 73, 547, + 256, 163, 258, 260, 58, 297, 175, 93, 143, 444, + 116, 117, 118, 261, 113, 513, 335, 456, 86, 289, + 89, 107, 327, 297, 176, 154, 65, 66, 98, 449, + 231, 436, 289, 199, 280, 314, 290, 40, 315, 288, + 252, 289, 336, 312, 235, 59, 94, 257, 468, 290, + 322, 531, 340, 323, 141, 142, 363, 108, 290, 311, + 284, 312, 152, 317, 200, 437, 157, 158, 383, 446, + 384, 274, 266, 275, 390, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 262, + 469, 461, 492, 109, 119, 470, 267, 203, 116, 117, + 118, 471, 472, 289, 237, 370, 371, 253, 438, 287, + 120, 369, 289, 329, 201, 74, 381, 382, 473, 477, + 290, 327, -298, 474, 39, 439, 289, 385, 289, 290, + 268, 361, 75, 48, 362, 170, 333, 45, 55, 107, + 204, 205, 206, 290, 42, 290, 46, 56, 203, 116, + 117, 118, 43, 373, 386, 121, 122, 123, 413, 367, + 421, 256, 458, 504, 211, 364, 425, 426, 263, 105, + 50, 464, 374, 368, 181, 108, 47, 57, 375, 207, + 388, 538, 119, 332, 84, 85, 124, 380, 338, 523, + 405, 204, 205, 206, 159, 451, 467, 389, 120, 49, + 453, 454, -264, 203, 116, 117, 118, 112, 259, 466, + 73, 109, 181, 53, 374, 208, 234, 468, 450, 533, + 452, 408, 154, 63, 127, 289, 411, 428, 209, 127, + 207, 500, 279, 119, 502, 289, 289, 499, 289, 60, + 409, 67, 290, 121, 122, 123, 204, 205, 206, 120, + 78, 483, 290, 290, 315, 290, 279, 493, 73, 469, + 315, 210, 211, 289, 470, 525, 208, 68, 70, 212, + 471, 472, 80, 455, 124, 495, 79, 497, 498, 209, + 290, 297, 81, 406, 460, 207, 87, 473, 119, 82, + 494, -298, 474, 327, 121, 122, 123, 203, 116, 117, + 118, 90, 506, 517, 120, 327, 518, 91, 203, 116, + 117, 118, 210, 211, 308, 309, 310, 311, 99, 312, + 212, 208, 100, 522, 102, 124, 315, 526, 103, 203, + 116, 117, 118, 528, 209, 545, 327, 115, 315, 136, + 204, 205, 206, 138, 139, 143, 145, 468, 146, 121, + 122, 123, 205, 206, 148, 151, 503, 182, 183, 184, + 185, 186, 187, 116, 543, 156, 546, 210, 211, 74, + 161, -265, 282, 205, 206, 212, 118, 163, 165, 207, + 124, 166, 119, 171, 291, 173, 178, 179, 180, 469, + 207, 197, 181, 119, 470, 198, 232, 239, 120, 236, + 471, 472, 242, 292, 536, 245, 112, 264, 15, 120, + 273, 207, 276, 277, 119, 208, 313, 473, 285, 278, + 319, 292, 474, 316, 320, 321, 283, 324, 209, 339, + 120, 327, 341, 334, 359, 342, 360, 73, 376, 209, + 407, 379, 387, 121, 122, 123, 423, 283, 429, 430, + 432, 433, 434, 537, 121, 122, 123, 443, 448, 385, + 209, 210, 211, 447, 459, 289, 312, 462, 293, 212, + 465, 463, 210, 211, 124, 121, 122, 123, 296, 476, + 212, 481, 484, 485, 297, 124, 486, 487, 294, 488, + 490, 489, 501, 210, 211, 295, 296, 505, 508, 507, + 509, 212, 297, 298, 510, 511, 124, 512, -301, -301, + 514, 515, -301, -301, 516, 306, 307, 308, 309, 310, + 311, 532, 312, 299, 300, 301, 302, 303, 519, 520, + 304, 305, -300, 306, 307, 308, 309, 310, 311, 1, + 312, 535, 521, 542, 1, 524, 101, 2, 527, 534, + 292, 72, 2, 541, 3, 275, 549, 412, 4, 3, + 410, 244, 496, 4, 318, 445, 491, 202, 372, 5, + 548, 530, 6, 7, 5, 365, 424, 6, 7, 330, + 529, 0, 422, 0, 8, 9, 160, 0, 0, 8, + 9, 0, 0, 0, 0, 10, 0, 293, 11, 0, + 10, 292, 0, 11, 0, 0, 0, 0, 0, 0, + 0, 457, 0, 0, 0, 0, 0, 377, 0, 12, + 0, 0, 0, 13, 12, 296, 0, 292, 13, 0, + 0, 297, 298, 0, 0, 0, 0, 0, 14, 0, + 0, 0, 0, 14, 15, 0, 0, 0, 293, 15, + 0, 0, 299, 300, 301, 302, 303, 0, 0, 304, + 305, 0, 306, 307, 308, 309, 310, 311, 377, 312, + 0, 0, 0, 0, -301, 0, 296, 0, 0, 0, + 0, 0, 297, 298, 0, 16, 17, 18, 0, 0, + 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 296, 299, 300, 301, 302, 303, 297, -301, + 304, 305, 0, 306, 307, 308, 309, 310, 311, 0, + 312, 0, 0, 0, 0, 0, 0, 0, 0, -301, + -301, -301, 302, 303, 0, 0, 304, 305, 0, 306, + 307, 308, 309, 310, 311, 343, 312, 0, 0, 0, + 344, 0, 345, 346, 347, 0, 348, 0, 0, 0, + 0, 0, 0, 0, 349, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 351, 0, 352, + 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 354, 0, 0, 0, 355, 0, + 356, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 357 }; static const yytype_int16 yycheck[] = { - 143, 74, 93, 94, 2, 94, 200, 5, 55, 56, - 57, 103, 10, 149, 12, 3, 3, 208, 12, 210, - 80, 341, 3, 3, 110, 285, 50, 113, 113, 179, - 173, 3, 175, 176, 57, 77, 82, 19, 3, 359, - 114, 4, 5, 6, 93, 100, 114, 134, 91, 27, - 48, 107, 50, 93, 145, 89, 145, 131, 114, 103, - 58, 167, 27, 131, 207, 17, 18, 110, 174, 212, - 9, 54, 127, 116, 147, 131, 120, 59, 54, 273, - 114, 115, 60, 132, 124, 172, 84, 85, 46, 47, - 3, 26, 283, 236, 92, 60, 72, 131, 96, 97, - 291, 175, 293, 25, 364, 44, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 181, 442, 57, 87, 103, 386, 277, 170, 63, - 3, 114, 178, 114, 174, 278, 279, 76, 9, 212, - 103, 80, 120, 124, 66, 3, 289, 290, 131, 71, - 131, 174, 124, 114, 178, 77, 78, 97, 114, 81, - 116, 93, 37, 3, 4, 5, 6, 253, 253, 25, - 131, 107, 94, 44, 70, 131, 475, 99, 114, 167, - 167, 175, 174, 79, 176, 148, 149, 150, 93, 325, - 134, 334, 70, 384, 174, 131, 339, 340, 458, 74, - 198, 79, 151, 276, 3, 45, 46, 47, 130, 80, - 66, 531, 511, 109, 175, 71, 179, 79, 412, 110, - 312, 77, 78, 114, 99, 0, 170, 173, 172, 372, - 373, 109, 178, 3, 4, 5, 6, 111, 94, 91, - 131, 252, 98, 99, 84, 114, 257, 87, 177, 3, - 176, 342, 134, 342, 514, 124, 316, 114, 110, 116, - 174, 321, 131, 103, 116, 456, 136, 137, 138, 139, - 140, 141, 319, 113, 131, 45, 46, 47, 93, 126, - 120, 3, 4, 5, 6, 167, 168, 169, 170, 316, - 172, 3, 122, 133, 321, 25, 175, 126, 175, 178, - 96, 178, 375, 124, 447, 3, 449, 450, 148, 149, - 150, 178, 123, 386, 84, 313, 175, 87, 4, 178, - 120, 3, 178, 45, 46, 47, 166, 167, 92, 3, - 4, 5, 6, 103, 174, 57, 66, 82, 174, 179, - 110, 71, 175, 175, 3, 178, 178, 77, 78, 175, - 120, 175, 178, 45, 178, 175, 499, 175, 178, 4, - 178, 3, 84, 133, 94, 87, 6, 175, 98, 99, - 178, 45, 46, 47, 175, 12, 174, 178, 148, 149, - 150, 103, 175, 175, 175, 458, 178, 178, 174, 3, - 4, 5, 6, 536, 175, 538, 166, 167, 120, 3, - 4, 5, 6, 113, 174, 125, 4, 4, 175, 179, - 84, 133, 178, 87, 45, 130, 3, 155, 90, 3, - 111, 76, 3, 111, 124, 174, 148, 149, 150, 103, - 174, 45, 46, 47, 174, 172, 97, 38, 174, 48, - 174, 93, 46, 47, 166, 167, 120, 178, 178, 178, - 174, 54, 174, 92, 119, 174, 174, 179, 57, 133, - 3, 175, 3, 174, 30, 174, 17, 174, 174, 174, - 84, 174, 93, 87, 148, 149, 150, 24, 175, 114, - 84, 100, 29, 87, 31, 32, 103, 34, 173, 103, - 174, 172, 166, 167, 3, 42, 69, 174, 178, 103, - 174, 6, 53, 6, 6, 179, 120, 6, 119, 103, - 98, 175, 175, 175, 77, 77, 120, 77, 98, 133, - 3, 68, 6, 125, 175, 175, 175, 175, 175, 133, - 174, 6, 175, 174, 148, 149, 150, 175, 85, 175, - 87, 88, 176, 68, 148, 149, 150, 24, 320, 100, - 323, 361, 166, 167, 448, 102, 440, 142, 237, 106, - 174, 108, 166, 167, 155, 179, 274, 327, 541, 120, - 174, 118, 334, 251, 507, 179, 127, 128, 280, 506, - 100, -1, -1, 134, 135, -1, -1, 0, -1, -1, - -1, -1, -1, -1, 7, -1, -1, -1, -1, -1, - -1, -1, 15, -1, 155, 156, 157, 158, 159, 22, - -1, 162, 163, 26, 165, 166, 167, 168, 169, 170, - -1, 172, -1, 36, -1, 7, 39, 40, -1, -1, - -1, -1, -1, 15, -1, -1, -1, -1, 51, 52, - 22, -1, -1, -1, 26, -1, 53, -1, -1, 62, - -1, -1, 65, -1, 36, -1, -1, 39, 40, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, - 52, -1, -1, 86, -1, -1, -1, 90, -1, -1, - 62, -1, -1, 65, -1, -1, -1, -1, -1, -1, - -1, -1, 105, 100, -1, -1, -1, -1, 111, 53, - -1, -1, -1, -1, 86, -1, -1, 114, 90, -1, - -1, -1, -1, 120, -1, -1, -1, 53, -1, -1, - -1, 128, -1, 105, -1, -1, -1, 134, 135, 111, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, - 153, 154, -1, -1, -1, -1, 100, -1, 155, 156, - 157, 158, 159, -1, -1, 162, 163, -1, 165, 166, - 167, 168, 169, 170, 100, 172, 120, 53, -1, -1, - 152, 153, 154, -1, 128, -1, -1, -1, -1, -1, - 134, 135, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 128, -1, -1, -1, -1, -1, 134, 135, - -1, 155, 156, 157, 158, 159, -1, -1, 162, 163, - -1, 165, 166, 167, 168, 169, 170, -1, 172, 155, - 156, 157, 158, 159, -1, -1, 162, 163, -1, 165, - 166, 167, 168, 169, 170, -1, 172, -1, -1, -1, - -1, -1, 128, -1, -1, -1, -1, -1, 134, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 158, 159, -1, -1, 162, 163, -1, 165, - 166, 167, 168, 169, 170, -1, 172 + 143, 74, 2, 93, 94, 5, 55, 56, 57, 94, + 10, 103, 12, 200, 149, 208, 3, 210, 80, 285, + 341, 3, 110, 51, 3, 113, 113, 3, 58, 3, + 173, 12, 175, 176, 19, 135, 55, 94, 83, 360, + 4, 5, 6, 179, 77, 476, 90, 174, 48, 115, + 50, 9, 179, 135, 73, 145, 17, 18, 58, 125, + 145, 27, 115, 94, 207, 176, 132, 3, 179, 212, + 167, 115, 116, 173, 147, 60, 133, 174, 25, 132, + 176, 512, 55, 179, 84, 85, 273, 45, 132, 171, + 283, 173, 92, 236, 125, 61, 96, 97, 291, 365, + 293, 175, 3, 177, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 181, + 67, 387, 443, 81, 88, 72, 27, 3, 4, 5, + 6, 78, 79, 115, 179, 278, 279, 170, 104, 212, + 104, 277, 115, 125, 175, 175, 289, 290, 95, 125, + 132, 179, 99, 100, 26, 121, 115, 101, 115, 132, + 61, 176, 37, 94, 179, 253, 253, 71, 71, 9, + 46, 47, 48, 132, 3, 132, 80, 80, 3, 4, + 5, 6, 3, 92, 128, 149, 150, 151, 175, 168, + 325, 334, 385, 459, 168, 176, 339, 340, 198, 74, + 98, 176, 111, 276, 179, 45, 110, 110, 117, 85, + 104, 532, 88, 252, 46, 47, 180, 176, 257, 176, + 312, 46, 47, 48, 99, 92, 413, 121, 104, 94, + 373, 374, 179, 3, 4, 5, 6, 77, 114, 176, + 58, 81, 179, 80, 111, 121, 64, 25, 108, 515, + 117, 316, 342, 152, 316, 115, 321, 342, 134, 321, + 85, 108, 111, 88, 457, 115, 115, 117, 115, 3, + 319, 0, 132, 149, 150, 151, 46, 47, 48, 104, + 3, 176, 132, 132, 179, 132, 111, 176, 58, 67, + 179, 167, 168, 115, 72, 117, 121, 178, 112, 175, + 78, 79, 175, 376, 180, 448, 177, 450, 451, 134, + 132, 135, 94, 313, 387, 85, 3, 95, 88, 127, + 176, 99, 100, 179, 149, 150, 151, 3, 4, 5, + 6, 123, 176, 176, 104, 179, 179, 127, 3, 4, + 5, 6, 167, 168, 168, 169, 170, 171, 125, 173, + 175, 121, 179, 176, 97, 180, 179, 500, 124, 3, + 4, 5, 6, 176, 134, 176, 179, 3, 179, 4, + 46, 47, 48, 121, 3, 83, 93, 25, 175, 149, + 150, 151, 47, 48, 3, 46, 459, 137, 138, 139, + 140, 141, 142, 4, 537, 3, 539, 167, 168, 175, + 175, 179, 46, 47, 48, 175, 6, 12, 176, 85, + 180, 176, 88, 114, 17, 126, 4, 4, 176, 67, + 85, 46, 179, 88, 72, 131, 3, 91, 104, 156, + 78, 79, 112, 54, 82, 3, 77, 3, 112, 104, + 125, 85, 175, 175, 88, 121, 98, 95, 173, 175, + 39, 54, 100, 175, 49, 175, 121, 94, 134, 55, + 104, 179, 175, 179, 120, 93, 175, 58, 175, 134, + 3, 176, 175, 149, 150, 151, 3, 121, 30, 175, + 175, 175, 175, 131, 149, 150, 151, 175, 94, 101, + 134, 167, 168, 176, 175, 115, 173, 104, 101, 175, + 3, 174, 167, 168, 180, 149, 150, 151, 129, 179, + 175, 70, 175, 6, 135, 180, 6, 6, 121, 6, + 104, 120, 176, 167, 168, 128, 129, 176, 99, 176, + 78, 175, 135, 136, 78, 78, 180, 99, 159, 160, + 3, 126, 163, 164, 6, 166, 167, 168, 169, 170, + 171, 175, 173, 156, 157, 158, 159, 160, 176, 176, + 163, 164, 0, 166, 167, 168, 169, 170, 171, 7, + 173, 6, 176, 175, 7, 176, 68, 15, 176, 176, + 54, 24, 15, 176, 22, 177, 176, 323, 26, 22, + 320, 155, 449, 26, 237, 362, 441, 142, 280, 37, + 542, 508, 40, 41, 37, 274, 334, 40, 41, 251, + 507, -1, 327, -1, 52, 53, 100, -1, -1, 52, + 53, -1, -1, -1, -1, 63, -1, 101, 66, -1, + 63, 54, -1, 66, -1, -1, -1, -1, -1, -1, + -1, 115, -1, -1, -1, -1, -1, 121, -1, 87, + -1, -1, -1, 91, 87, 129, -1, 54, 91, -1, + -1, 135, 136, -1, -1, -1, -1, -1, 106, -1, + -1, -1, -1, 106, 112, -1, -1, -1, 101, 112, + -1, -1, 156, 157, 158, 159, 160, -1, -1, 163, + 164, -1, 166, 167, 168, 169, 170, 171, 121, 173, + -1, -1, -1, -1, 101, -1, 129, -1, -1, -1, + -1, -1, 135, 136, -1, 153, 154, 155, -1, -1, + 153, 154, 155, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 129, 156, 157, 158, 159, 160, 135, 136, + 163, 164, -1, 166, 167, 168, 169, 170, 171, -1, + 173, -1, -1, -1, -1, -1, -1, -1, -1, 156, + 157, 158, 159, 160, -1, -1, 163, 164, -1, 166, + 167, 168, 169, 170, 171, 24, 173, -1, -1, -1, + 29, -1, 31, 32, 33, -1, 35, -1, -1, -1, + -1, -1, -1, -1, 43, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 86, -1, 88, + 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 103, -1, -1, -1, 107, -1, + 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 119 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 7, 15, 22, 26, 36, 39, 40, 51, 52, - 62, 65, 86, 90, 105, 111, 152, 153, 154, 181, - 182, 183, 184, 188, 190, 192, 193, 197, 198, 199, - 211, 213, 216, 217, 218, 220, 223, 291, 292, 26, - 3, 285, 3, 3, 285, 70, 79, 109, 93, 93, - 97, 284, 285, 79, 285, 70, 79, 109, 19, 59, - 3, 293, 294, 151, 189, 189, 189, 0, 177, 298, - 111, 185, 185, 57, 174, 226, 227, 231, 3, 176, - 174, 93, 126, 200, 200, 200, 285, 3, 194, 285, - 122, 126, 212, 93, 132, 212, 212, 212, 285, 124, - 178, 183, 96, 123, 243, 226, 227, 9, 44, 80, - 228, 229, 76, 228, 239, 3, 4, 5, 6, 87, - 103, 148, 149, 150, 179, 246, 247, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 4, 191, 120, 3, - 286, 285, 285, 82, 236, 92, 174, 219, 3, 221, - 222, 45, 285, 195, 271, 195, 3, 285, 285, 226, - 294, 174, 274, 12, 232, 175, 175, 224, 225, 226, - 231, 113, 230, 125, 224, 54, 72, 244, 4, 4, - 175, 178, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 263, 264, 265, 45, 130, 93, - 124, 174, 219, 3, 45, 46, 47, 84, 120, 133, - 166, 167, 174, 249, 250, 251, 252, 253, 254, 255, - 256, 258, 259, 260, 261, 262, 266, 267, 268, 269, - 270, 195, 3, 299, 63, 227, 155, 178, 236, 90, - 214, 215, 111, 196, 196, 3, 186, 187, 233, 245, - 248, 249, 239, 228, 240, 241, 249, 239, 249, 113, - 249, 263, 270, 285, 3, 223, 3, 27, 60, 201, - 202, 203, 210, 124, 174, 176, 174, 174, 174, 110, - 249, 257, 45, 120, 250, 172, 250, 227, 249, 114, - 131, 17, 53, 100, 120, 127, 128, 134, 135, 155, - 156, 157, 158, 159, 162, 163, 165, 166, 167, 168, - 169, 170, 172, 97, 175, 178, 174, 249, 222, 38, - 48, 174, 175, 178, 93, 234, 235, 178, 3, 124, - 289, 290, 244, 224, 178, 89, 115, 242, 244, 54, - 54, 174, 92, 24, 29, 31, 32, 34, 42, 68, - 85, 87, 88, 102, 106, 108, 118, 204, 119, 174, - 175, 178, 223, 175, 232, 3, 167, 227, 263, 249, - 249, 257, 91, 110, 116, 174, 120, 245, 175, 175, - 249, 249, 250, 250, 100, 127, 174, 103, 120, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 274, 285, 3, 247, 212, 194, - 247, 187, 174, 279, 280, 281, 282, 283, 285, 295, - 236, 248, 3, 241, 249, 249, 299, 195, 30, 174, - 206, 174, 174, 174, 205, 27, 60, 103, 120, 207, - 208, 209, 174, 299, 202, 245, 175, 93, 124, 107, - 91, 116, 249, 249, 227, 173, 114, 250, 174, 227, - 245, 103, 173, 175, 3, 175, 223, 25, 66, 71, - 77, 78, 94, 99, 296, 178, 124, 287, 288, 289, - 69, 237, 175, 174, 6, 6, 6, 6, 119, 103, - 209, 299, 175, 175, 249, 204, 249, 249, 116, 107, - 175, 250, 227, 245, 175, 175, 175, 98, 77, 77, - 77, 98, 280, 3, 125, 6, 175, 178, 175, 175, - 175, 175, 175, 175, 116, 249, 175, 175, 288, 281, - 280, 174, 245, 175, 6, 81, 130, 299, 50, 238, - 175, 174, 249, 297, 175, 249, 3, 269, 175 + 0, 7, 15, 22, 26, 37, 40, 41, 52, 53, + 63, 66, 87, 91, 106, 112, 153, 154, 155, 182, + 183, 184, 185, 189, 191, 193, 194, 198, 199, 200, + 212, 214, 217, 218, 219, 221, 224, 292, 293, 26, + 3, 286, 3, 3, 286, 71, 80, 110, 94, 94, + 98, 285, 286, 80, 286, 71, 80, 110, 19, 60, + 3, 294, 295, 152, 190, 190, 190, 0, 178, 299, + 112, 186, 186, 58, 175, 227, 228, 232, 3, 177, + 175, 94, 127, 201, 201, 201, 286, 3, 195, 286, + 123, 127, 213, 94, 133, 213, 213, 213, 286, 125, + 179, 184, 97, 124, 244, 227, 228, 9, 45, 81, + 229, 230, 77, 229, 240, 3, 4, 5, 6, 88, + 104, 149, 150, 151, 180, 247, 248, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 4, 192, 121, 3, + 287, 286, 286, 83, 237, 93, 175, 220, 3, 222, + 223, 46, 286, 196, 272, 196, 3, 286, 286, 227, + 295, 175, 275, 12, 233, 176, 176, 225, 226, 227, + 232, 114, 231, 126, 225, 55, 73, 245, 4, 4, + 176, 179, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 264, 265, 266, 46, 131, 94, + 125, 175, 220, 3, 46, 47, 48, 85, 121, 134, + 167, 168, 175, 250, 251, 252, 253, 254, 255, 256, + 257, 259, 260, 261, 262, 263, 267, 268, 269, 270, + 271, 196, 3, 300, 64, 228, 156, 179, 237, 91, + 215, 216, 112, 197, 197, 3, 187, 188, 234, 246, + 249, 250, 240, 229, 241, 242, 250, 240, 250, 114, + 250, 264, 271, 286, 3, 224, 3, 27, 61, 202, + 203, 204, 211, 125, 175, 177, 175, 175, 175, 111, + 250, 258, 46, 121, 251, 173, 251, 228, 250, 115, + 132, 17, 54, 101, 121, 128, 129, 135, 136, 156, + 157, 158, 159, 160, 163, 164, 166, 167, 168, 169, + 170, 171, 173, 98, 176, 179, 175, 250, 223, 39, + 49, 175, 176, 179, 94, 235, 236, 179, 3, 125, + 290, 291, 245, 225, 179, 90, 116, 243, 245, 55, + 55, 175, 93, 24, 29, 31, 32, 33, 35, 43, + 69, 86, 88, 89, 103, 107, 109, 119, 205, 120, + 175, 176, 179, 224, 176, 233, 3, 168, 228, 264, + 250, 250, 258, 92, 111, 117, 175, 121, 246, 176, + 176, 250, 250, 251, 251, 101, 128, 175, 104, 121, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 275, 286, 3, 248, 213, + 195, 248, 188, 175, 280, 281, 282, 283, 284, 286, + 296, 237, 249, 3, 242, 250, 250, 300, 196, 30, + 175, 207, 175, 175, 175, 206, 27, 61, 104, 121, + 208, 209, 210, 175, 300, 203, 246, 176, 94, 125, + 108, 92, 117, 250, 250, 228, 174, 115, 251, 175, + 228, 246, 104, 174, 176, 3, 176, 224, 25, 67, + 72, 78, 79, 95, 100, 297, 179, 125, 288, 289, + 290, 70, 238, 176, 175, 6, 6, 6, 6, 120, + 104, 210, 300, 176, 176, 250, 205, 250, 250, 117, + 108, 176, 251, 228, 246, 176, 176, 176, 99, 78, + 78, 78, 99, 281, 3, 126, 6, 176, 179, 176, + 176, 176, 176, 176, 176, 117, 250, 176, 176, 289, + 282, 281, 175, 246, 176, 6, 82, 131, 300, 51, + 239, 176, 175, 250, 298, 176, 250, 3, 270, 176 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 180, 181, 182, 182, 183, 183, 183, 183, 183, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 185, 185, 186, 186, 187, 187, 188, 188, 188, 189, - 189, 190, 191, 192, 192, 193, 193, 194, 195, 196, - 196, 197, 198, 198, 198, 199, 199, 199, 199, 199, - 200, 200, 201, 201, 202, 202, 203, 204, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, - 204, 205, 205, 206, 206, 206, 207, 207, 208, 208, - 209, 209, 209, 209, 210, 210, 211, 211, 211, 211, - 212, 212, 213, 214, 215, 216, 217, 218, 218, 219, - 219, 220, 221, 221, 222, 223, 223, 223, 224, 224, - 225, 225, 226, 226, 227, 227, 228, 229, 229, 229, - 230, 230, 231, 232, 232, 233, 234, 234, 235, 236, - 236, 237, 237, 238, 238, 239, 239, 240, 240, 241, - 242, 242, 242, 243, 243, 244, 244, 244, 244, 244, - 244, 245, 245, 246, 246, 247, 247, 248, 249, 249, - 249, 249, 249, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 251, 251, 252, 252, 252, 252, - 252, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 254, 254, 255, 255, 255, 255, 256, 256, - 256, 256, 257, 257, 258, 258, 259, 259, 259, 259, - 259, 259, 259, 260, 260, 261, 262, 263, 263, 263, - 263, 263, 263, 264, 264, 264, 264, 264, 264, 265, - 265, 266, 267, 268, 269, 269, 269, 269, 270, 270, - 270, 270, 270, 270, 270, 271, 272, 272, 273, 273, - 274, 275, 276, 277, 277, 277, 278, 279, 279, 280, - 280, 281, 281, 282, 282, 283, 284, 285, 285, 286, - 286, 287, 287, 288, 288, 289, 289, 290, 290, 291, - 291, 292, 293, 293, 294, 295, 295, 295, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 297, 298, - 298, 299, 299 + 0, 181, 182, 183, 183, 184, 184, 184, 184, 184, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 186, 186, 187, 187, 188, 188, 189, 189, 189, 190, + 190, 191, 192, 193, 193, 194, 194, 195, 196, 197, + 197, 198, 199, 199, 199, 200, 200, 200, 200, 200, + 201, 201, 202, 202, 203, 203, 204, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 206, 206, 207, 207, 207, 208, 208, 209, + 209, 210, 210, 210, 210, 211, 211, 212, 212, 212, + 212, 213, 213, 214, 215, 216, 217, 218, 219, 219, + 220, 220, 221, 222, 222, 223, 224, 224, 224, 225, + 225, 226, 226, 227, 227, 228, 228, 229, 230, 230, + 230, 231, 231, 232, 233, 233, 234, 235, 235, 236, + 237, 237, 238, 238, 239, 239, 240, 240, 241, 241, + 242, 243, 243, 243, 244, 244, 245, 245, 245, 245, + 245, 245, 246, 246, 247, 247, 248, 248, 249, 250, + 250, 250, 250, 250, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 252, 252, 253, 253, 253, + 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 255, 255, 256, 256, 256, 256, 257, + 257, 257, 257, 258, 258, 259, 259, 260, 260, 260, + 260, 260, 260, 260, 261, 261, 262, 263, 264, 264, + 264, 264, 264, 264, 265, 265, 265, 265, 265, 265, + 266, 266, 267, 268, 269, 270, 270, 270, 270, 271, + 271, 271, 271, 271, 271, 271, 272, 273, 273, 274, + 274, 275, 276, 277, 278, 278, 278, 279, 280, 280, + 281, 281, 282, 282, 283, 283, 284, 285, 286, 286, + 287, 287, 288, 288, 289, 289, 290, 290, 291, 291, + 292, 292, 293, 294, 294, 295, 296, 296, 296, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 298, + 299, 299, 300, 300 }; - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { 0, 2, 2, 1, 3, 2, 2, 1, 1, 1, @@ -1429,32 +1408,32 @@ static const yytype_int8 yyr2[] = 5, 0, 1, 3, 1, 4, 2, 2, 2, 1, 0, 4, 1, 2, 5, 7, 5, 1, 1, 3, 0, 5, 2, 3, 2, 8, 7, 6, 9, 7, - 3, 0, 1, 3, 1, 1, 3, 1, 1, 1, - 1, 2, 1, 1, 4, 5, 4, 1, 2, 1, - 1, 3, 0, 5, 3, 0, 1, 0, 1, 2, - 2, 1, 1, 2, 5, 4, 4, 4, 3, 4, - 2, 0, 5, 1, 4, 4, 2, 8, 5, 3, - 0, 5, 1, 3, 3, 2, 2, 6, 1, 1, - 1, 3, 3, 3, 3, 5, 2, 1, 1, 1, - 1, 0, 7, 1, 0, 1, 1, 0, 2, 2, - 0, 4, 0, 2, 0, 3, 0, 1, 3, 2, - 1, 1, 0, 2, 0, 2, 2, 4, 2, 4, - 0, 1, 3, 1, 0, 1, 3, 2, 1, 1, - 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 1, 1, 2, 2, 2, 3, - 4, 1, 3, 3, 3, 3, 3, 3, 3, 4, - 3, 3, 3, 3, 5, 6, 5, 6, 4, 6, - 3, 5, 4, 5, 4, 5, 3, 3, 3, 3, - 3, 3, 3, 3, 5, 6, 6, 1, 1, 1, + 3, 0, 1, 3, 1, 1, 3, 1, 4, 5, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 2, 4, 3, 0, 5, 3, 0, 1, 0, 1, + 2, 2, 1, 1, 2, 5, 4, 4, 4, 3, + 4, 2, 0, 5, 1, 4, 4, 2, 8, 5, + 3, 0, 5, 1, 3, 3, 2, 2, 6, 1, + 1, 1, 3, 3, 3, 3, 5, 2, 1, 1, + 1, 1, 0, 7, 1, 0, 1, 1, 0, 2, + 2, 0, 4, 0, 2, 0, 3, 0, 1, 3, + 2, 1, 1, 0, 2, 0, 2, 2, 4, 2, + 4, 0, 1, 3, 1, 0, 1, 3, 2, 1, + 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 1, 1, 2, 2, 2, + 3, 4, 1, 3, 3, 3, 3, 3, 3, 3, + 4, 3, 3, 3, 3, 5, 6, 5, 6, 4, + 6, 3, 5, 4, 5, 4, 5, 3, 3, 3, + 3, 3, 3, 3, 3, 5, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 4, 4, 5, 1, 3, 1, 3, 1, 1, + 1, 1, 4, 4, 5, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 3, 2, 1, 1, 3, 1, - 1, 1, 4, 1, 3, 2, 1, 1, 3, 1, - 0, 1, 5, 1, 0, 2, 1, 1, 0, 1, - 0, 2, 1, 3, 3, 4, 6, 8, 1, 2, - 1, 2, 1, 2, 1, 1, 1, 0, 1, 1, - 0, 1, 3 + 1, 1, 1, 2, 2, 3, 2, 1, 1, 3, + 1, 1, 1, 4, 1, 3, 2, 1, 1, 3, + 1, 0, 1, 5, 1, 0, 2, 1, 1, 0, + 1, 0, 2, 1, 3, 3, 4, 6, 8, 1, + 2, 1, 2, 1, 2, 1, 1, 1, 0, 1, + 1, 0, 1, 3 }; @@ -1466,6 +1445,7 @@ enum { YYENOMEM = -2 }; #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) @@ -1533,12 +1513,19 @@ do { \ } while (0) -/* YY_LOCATION_PRINT -- Print the location on the stream. +/* YYLOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ -# ifndef YY_LOCATION_PRINT -# if defined HSQL_LTYPE_IS_TRIVIAL && HSQL_LTYPE_IS_TRIVIAL +# ifndef YYLOCATION_PRINT + +# if defined YY_LOCATION_PRINT + + /* Temporary convenience wrapper in case some people defined the + undocumented and private YY_LOCATION_PRINT macros. */ +# define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc)) + +# elif defined HSQL_LTYPE_IS_TRIVIAL && HSQL_LTYPE_IS_TRIVIAL /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ @@ -1566,15 +1553,23 @@ yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) res += YYFPRINTF (yyo, "-%d", end_col); } return res; - } +} -# define YY_LOCATION_PRINT(File, Loc) \ - yy_location_print_ (File, &(Loc)) +# define YYLOCATION_PRINT yy_location_print_ + + /* Temporary convenience wrapper in case some people defined the + undocumented and private YY_LOCATION_PRINT macros. */ +# define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc)) # else -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) + +# define YYLOCATION_PRINT(File, Loc) ((void) 0) + /* Temporary convenience wrapper in case some people defined the + undocumented and private YY_LOCATION_PRINT macros. */ +# define YY_LOCATION_PRINT YYLOCATION_PRINT + # endif -# endif /* !defined YY_LOCATION_PRINT */ +# endif /* !defined YYLOCATION_PRINT */ # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ @@ -1604,10 +1599,6 @@ yy_symbol_value_print (FILE *yyo, YY_USE (scanner); if (!yyvaluep) return; -# ifdef YYPRINT - if (yykind < YYNTOKENS) - YYPRINT (yyo, yytoknum[yykind], *yyvaluep); -# endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END @@ -1625,7 +1616,7 @@ yy_symbol_print (FILE *yyo, YYFPRINTF (yyo, "%s %s (", yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); - YY_LOCATION_PRINT (yyo, *yylocationp); + YYLOCATION_PRINT (yyo, yylocationp); YYFPRINTF (yyo, ": "); yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, result, scanner); YYFPRINTF (yyo, ")"); @@ -2006,31 +1997,31 @@ yydestruct (const char *yymsg, switch (yykind) { case YYSYMBOL_IDENTIFIER: /* IDENTIFIER */ -#line 162 "bison_parser.y" +#line 163 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2012 "bison_parser.cpp" +#line 2003 "bison_parser.cpp" break; case YYSYMBOL_STRING: /* STRING */ -#line 162 "bison_parser.y" +#line 163 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2018 "bison_parser.cpp" +#line 2009 "bison_parser.cpp" break; case YYSYMBOL_FLOATVAL: /* FLOATVAL */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2024 "bison_parser.cpp" +#line 2015 "bison_parser.cpp" break; case YYSYMBOL_INTVAL: /* INTVAL */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2030 "bison_parser.cpp" +#line 2021 "bison_parser.cpp" break; case YYSYMBOL_statement_list: /* statement_list */ -#line 163 "bison_parser.y" +#line 164 "bison_parser.y" { if ((((*yyvaluep).stmt_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).stmt_vec))) { @@ -2039,23 +2030,23 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).stmt_vec)); } -#line 2043 "bison_parser.cpp" +#line 2034 "bison_parser.cpp" break; case YYSYMBOL_statement: /* statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2049 "bison_parser.cpp" +#line 2040 "bison_parser.cpp" break; case YYSYMBOL_preparable_statement: /* preparable_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2055 "bison_parser.cpp" +#line 2046 "bison_parser.cpp" break; case YYSYMBOL_opt_hints: /* opt_hints */ -#line 163 "bison_parser.y" +#line 164 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2064,11 +2055,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2068 "bison_parser.cpp" +#line 2059 "bison_parser.cpp" break; case YYSYMBOL_hint_list: /* hint_list */ -#line 163 "bison_parser.y" +#line 164 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2077,89 +2068,89 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2081 "bison_parser.cpp" +#line 2072 "bison_parser.cpp" break; case YYSYMBOL_hint: /* hint */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2087 "bison_parser.cpp" +#line 2078 "bison_parser.cpp" break; case YYSYMBOL_transaction_statement: /* transaction_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).transaction_stmt)); } -#line 2093 "bison_parser.cpp" +#line 2084 "bison_parser.cpp" break; case YYSYMBOL_prepare_statement: /* prepare_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).prep_stmt)); } -#line 2099 "bison_parser.cpp" +#line 2090 "bison_parser.cpp" break; case YYSYMBOL_prepare_target_query: /* prepare_target_query */ -#line 162 "bison_parser.y" +#line 163 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2105 "bison_parser.cpp" +#line 2096 "bison_parser.cpp" break; case YYSYMBOL_execute_statement: /* execute_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).exec_stmt)); } -#line 2111 "bison_parser.cpp" +#line 2102 "bison_parser.cpp" break; case YYSYMBOL_import_statement: /* import_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).import_stmt)); } -#line 2117 "bison_parser.cpp" +#line 2108 "bison_parser.cpp" break; case YYSYMBOL_file_type: /* file_type */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2123 "bison_parser.cpp" +#line 2114 "bison_parser.cpp" break; case YYSYMBOL_file_path: /* file_path */ -#line 162 "bison_parser.y" +#line 163 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2129 "bison_parser.cpp" +#line 2120 "bison_parser.cpp" break; case YYSYMBOL_opt_file_type: /* opt_file_type */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2135 "bison_parser.cpp" +#line 2126 "bison_parser.cpp" break; case YYSYMBOL_export_statement: /* export_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).export_stmt)); } -#line 2141 "bison_parser.cpp" +#line 2132 "bison_parser.cpp" break; case YYSYMBOL_show_statement: /* show_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).show_stmt)); } -#line 2147 "bison_parser.cpp" +#line 2138 "bison_parser.cpp" break; case YYSYMBOL_create_statement: /* create_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).create_stmt)); } -#line 2153 "bison_parser.cpp" +#line 2144 "bison_parser.cpp" break; case YYSYMBOL_opt_not_exists: /* opt_not_exists */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2159 "bison_parser.cpp" +#line 2150 "bison_parser.cpp" break; case YYSYMBOL_table_elem_commalist: /* table_elem_commalist */ -#line 163 "bison_parser.y" +#line 164 "bison_parser.y" { if ((((*yyvaluep).table_element_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).table_element_vec))) { @@ -2168,113 +2159,113 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_element_vec)); } -#line 2172 "bison_parser.cpp" +#line 2163 "bison_parser.cpp" break; case YYSYMBOL_table_elem: /* table_elem */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).table_element_t)); } -#line 2178 "bison_parser.cpp" +#line 2169 "bison_parser.cpp" break; case YYSYMBOL_column_def: /* column_def */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).column_t)); } -#line 2184 "bison_parser.cpp" +#line 2175 "bison_parser.cpp" break; case YYSYMBOL_column_type: /* column_type */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2190 "bison_parser.cpp" +#line 2181 "bison_parser.cpp" break; - case YYSYMBOL_opt_time_specification: /* opt_time_specification */ -#line 160 "bison_parser.y" + case YYSYMBOL_opt_time_precision: /* opt_time_precision */ +#line 161 "bison_parser.y" { } -#line 2196 "bison_parser.cpp" +#line 2187 "bison_parser.cpp" break; case YYSYMBOL_opt_decimal_specification: /* opt_decimal_specification */ -#line 160 "bison_parser.y" - { } -#line 2202 "bison_parser.cpp" +#line 172 "bison_parser.y" + { delete (((*yyvaluep).ival_pair)); } +#line 2193 "bison_parser.cpp" break; case YYSYMBOL_opt_column_constraints: /* opt_column_constraints */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2208 "bison_parser.cpp" +#line 2199 "bison_parser.cpp" break; case YYSYMBOL_column_constraint_list: /* column_constraint_list */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2214 "bison_parser.cpp" +#line 2205 "bison_parser.cpp" break; case YYSYMBOL_column_constraint: /* column_constraint */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2220 "bison_parser.cpp" +#line 2211 "bison_parser.cpp" break; case YYSYMBOL_table_constraint: /* table_constraint */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).table_constraint_t)); } -#line 2226 "bison_parser.cpp" +#line 2217 "bison_parser.cpp" break; case YYSYMBOL_drop_statement: /* drop_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).drop_stmt)); } -#line 2232 "bison_parser.cpp" +#line 2223 "bison_parser.cpp" break; case YYSYMBOL_opt_exists: /* opt_exists */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2238 "bison_parser.cpp" +#line 2229 "bison_parser.cpp" break; case YYSYMBOL_alter_statement: /* alter_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).alter_stmt)); } -#line 2244 "bison_parser.cpp" +#line 2235 "bison_parser.cpp" break; case YYSYMBOL_alter_action: /* alter_action */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).alter_action_t)); } -#line 2250 "bison_parser.cpp" +#line 2241 "bison_parser.cpp" break; case YYSYMBOL_drop_action: /* drop_action */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).drop_action_t)); } -#line 2256 "bison_parser.cpp" +#line 2247 "bison_parser.cpp" break; case YYSYMBOL_delete_statement: /* delete_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2262 "bison_parser.cpp" +#line 2253 "bison_parser.cpp" break; case YYSYMBOL_truncate_statement: /* truncate_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2268 "bison_parser.cpp" +#line 2259 "bison_parser.cpp" break; case YYSYMBOL_insert_statement: /* insert_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).insert_stmt)); } -#line 2274 "bison_parser.cpp" +#line 2265 "bison_parser.cpp" break; case YYSYMBOL_opt_column_list: /* opt_column_list */ -#line 163 "bison_parser.y" +#line 164 "bison_parser.y" { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2283,17 +2274,17 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2287 "bison_parser.cpp" +#line 2278 "bison_parser.cpp" break; case YYSYMBOL_update_statement: /* update_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } -#line 2293 "bison_parser.cpp" +#line 2284 "bison_parser.cpp" break; case YYSYMBOL_update_clause_commalist: /* update_clause_commalist */ -#line 163 "bison_parser.y" +#line 164 "bison_parser.y" { if ((((*yyvaluep).update_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).update_vec))) { @@ -2302,77 +2293,77 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).update_vec)); } -#line 2306 "bison_parser.cpp" +#line 2297 "bison_parser.cpp" break; case YYSYMBOL_update_clause: /* update_clause */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).update_t)); } -#line 2312 "bison_parser.cpp" +#line 2303 "bison_parser.cpp" break; case YYSYMBOL_select_statement: /* select_statement */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2318 "bison_parser.cpp" +#line 2309 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation: /* select_within_set_operation */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2324 "bison_parser.cpp" +#line 2315 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation_no_parentheses: /* select_within_set_operation_no_parentheses */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2330 "bison_parser.cpp" +#line 2321 "bison_parser.cpp" break; case YYSYMBOL_select_with_paren: /* select_with_paren */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2336 "bison_parser.cpp" +#line 2327 "bison_parser.cpp" break; case YYSYMBOL_select_no_paren: /* select_no_paren */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2342 "bison_parser.cpp" +#line 2333 "bison_parser.cpp" break; case YYSYMBOL_set_operator: /* set_operator */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2348 "bison_parser.cpp" +#line 2339 "bison_parser.cpp" break; case YYSYMBOL_set_type: /* set_type */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2354 "bison_parser.cpp" +#line 2345 "bison_parser.cpp" break; case YYSYMBOL_opt_all: /* opt_all */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2360 "bison_parser.cpp" +#line 2351 "bison_parser.cpp" break; case YYSYMBOL_select_clause: /* select_clause */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2366 "bison_parser.cpp" +#line 2357 "bison_parser.cpp" break; case YYSYMBOL_opt_distinct: /* opt_distinct */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2372 "bison_parser.cpp" +#line 2363 "bison_parser.cpp" break; case YYSYMBOL_select_list: /* select_list */ -#line 163 "bison_parser.y" +#line 164 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2381,41 +2372,41 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2385 "bison_parser.cpp" +#line 2376 "bison_parser.cpp" break; case YYSYMBOL_opt_from_clause: /* opt_from_clause */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2391 "bison_parser.cpp" +#line 2382 "bison_parser.cpp" break; case YYSYMBOL_from_clause: /* from_clause */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2397 "bison_parser.cpp" +#line 2388 "bison_parser.cpp" break; case YYSYMBOL_opt_where: /* opt_where */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2403 "bison_parser.cpp" +#line 2394 "bison_parser.cpp" break; case YYSYMBOL_opt_group: /* opt_group */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).group_t)); } -#line 2409 "bison_parser.cpp" +#line 2400 "bison_parser.cpp" break; case YYSYMBOL_opt_having: /* opt_having */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2415 "bison_parser.cpp" +#line 2406 "bison_parser.cpp" break; case YYSYMBOL_opt_order: /* opt_order */ -#line 163 "bison_parser.y" +#line 164 "bison_parser.y" { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2424,11 +2415,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2428 "bison_parser.cpp" +#line 2419 "bison_parser.cpp" break; case YYSYMBOL_order_list: /* order_list */ -#line 163 "bison_parser.y" +#line 164 "bison_parser.y" { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2437,35 +2428,35 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2441 "bison_parser.cpp" +#line 2432 "bison_parser.cpp" break; case YYSYMBOL_order_desc: /* order_desc */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).order)); } -#line 2447 "bison_parser.cpp" +#line 2438 "bison_parser.cpp" break; case YYSYMBOL_opt_order_type: /* opt_order_type */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2453 "bison_parser.cpp" +#line 2444 "bison_parser.cpp" break; case YYSYMBOL_opt_top: /* opt_top */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2459 "bison_parser.cpp" +#line 2450 "bison_parser.cpp" break; case YYSYMBOL_opt_limit: /* opt_limit */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2465 "bison_parser.cpp" +#line 2456 "bison_parser.cpp" break; case YYSYMBOL_expr_list: /* expr_list */ -#line 163 "bison_parser.y" +#line 164 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2474,11 +2465,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2478 "bison_parser.cpp" +#line 2469 "bison_parser.cpp" break; case YYSYMBOL_opt_literal_list: /* opt_literal_list */ -#line 163 "bison_parser.y" +#line 164 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2487,11 +2478,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2491 "bison_parser.cpp" +#line 2482 "bison_parser.cpp" break; case YYSYMBOL_literal_list: /* literal_list */ -#line 163 "bison_parser.y" +#line 164 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2500,215 +2491,215 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2504 "bison_parser.cpp" +#line 2495 "bison_parser.cpp" break; case YYSYMBOL_expr_alias: /* expr_alias */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2510 "bison_parser.cpp" +#line 2501 "bison_parser.cpp" break; case YYSYMBOL_expr: /* expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2516 "bison_parser.cpp" +#line 2507 "bison_parser.cpp" break; case YYSYMBOL_operand: /* operand */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2522 "bison_parser.cpp" +#line 2513 "bison_parser.cpp" break; case YYSYMBOL_scalar_expr: /* scalar_expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2528 "bison_parser.cpp" +#line 2519 "bison_parser.cpp" break; case YYSYMBOL_unary_expr: /* unary_expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2534 "bison_parser.cpp" +#line 2525 "bison_parser.cpp" break; case YYSYMBOL_binary_expr: /* binary_expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2540 "bison_parser.cpp" +#line 2531 "bison_parser.cpp" break; case YYSYMBOL_logic_expr: /* logic_expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2546 "bison_parser.cpp" +#line 2537 "bison_parser.cpp" break; case YYSYMBOL_in_expr: /* in_expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2552 "bison_parser.cpp" +#line 2543 "bison_parser.cpp" break; case YYSYMBOL_case_expr: /* case_expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2558 "bison_parser.cpp" +#line 2549 "bison_parser.cpp" break; case YYSYMBOL_case_list: /* case_list */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2564 "bison_parser.cpp" +#line 2555 "bison_parser.cpp" break; case YYSYMBOL_exists_expr: /* exists_expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2570 "bison_parser.cpp" +#line 2561 "bison_parser.cpp" break; case YYSYMBOL_comp_expr: /* comp_expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2576 "bison_parser.cpp" +#line 2567 "bison_parser.cpp" break; case YYSYMBOL_function_expr: /* function_expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2582 "bison_parser.cpp" +#line 2573 "bison_parser.cpp" break; case YYSYMBOL_extract_expr: /* extract_expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2588 "bison_parser.cpp" +#line 2579 "bison_parser.cpp" break; case YYSYMBOL_cast_expr: /* cast_expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2594 "bison_parser.cpp" +#line 2585 "bison_parser.cpp" break; case YYSYMBOL_datetime_field: /* datetime_field */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2600 "bison_parser.cpp" +#line 2591 "bison_parser.cpp" break; case YYSYMBOL_datetime_field_plural: /* datetime_field_plural */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2606 "bison_parser.cpp" +#line 2597 "bison_parser.cpp" break; case YYSYMBOL_duration_field: /* duration_field */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2612 "bison_parser.cpp" +#line 2603 "bison_parser.cpp" break; case YYSYMBOL_array_expr: /* array_expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2618 "bison_parser.cpp" +#line 2609 "bison_parser.cpp" break; case YYSYMBOL_array_index: /* array_index */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2624 "bison_parser.cpp" +#line 2615 "bison_parser.cpp" break; case YYSYMBOL_between_expr: /* between_expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2630 "bison_parser.cpp" +#line 2621 "bison_parser.cpp" break; case YYSYMBOL_column_name: /* column_name */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2636 "bison_parser.cpp" +#line 2627 "bison_parser.cpp" break; case YYSYMBOL_literal: /* literal */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2642 "bison_parser.cpp" +#line 2633 "bison_parser.cpp" break; case YYSYMBOL_string_literal: /* string_literal */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2648 "bison_parser.cpp" +#line 2639 "bison_parser.cpp" break; case YYSYMBOL_bool_literal: /* bool_literal */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2654 "bison_parser.cpp" +#line 2645 "bison_parser.cpp" break; case YYSYMBOL_num_literal: /* num_literal */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2660 "bison_parser.cpp" +#line 2651 "bison_parser.cpp" break; case YYSYMBOL_int_literal: /* int_literal */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2666 "bison_parser.cpp" +#line 2657 "bison_parser.cpp" break; case YYSYMBOL_null_literal: /* null_literal */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2672 "bison_parser.cpp" +#line 2663 "bison_parser.cpp" break; case YYSYMBOL_date_literal: /* date_literal */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2678 "bison_parser.cpp" +#line 2669 "bison_parser.cpp" break; case YYSYMBOL_interval_literal: /* interval_literal */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2684 "bison_parser.cpp" +#line 2675 "bison_parser.cpp" break; case YYSYMBOL_param_expr: /* param_expr */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2690 "bison_parser.cpp" +#line 2681 "bison_parser.cpp" break; case YYSYMBOL_table_ref: /* table_ref */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2696 "bison_parser.cpp" +#line 2687 "bison_parser.cpp" break; case YYSYMBOL_table_ref_atomic: /* table_ref_atomic */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2702 "bison_parser.cpp" +#line 2693 "bison_parser.cpp" break; case YYSYMBOL_nonjoin_table_ref_atomic: /* nonjoin_table_ref_atomic */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2708 "bison_parser.cpp" +#line 2699 "bison_parser.cpp" break; case YYSYMBOL_table_ref_commalist: /* table_ref_commalist */ -#line 163 "bison_parser.y" +#line 164 "bison_parser.y" { if ((((*yyvaluep).table_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).table_vec))) { @@ -2717,101 +2708,101 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_vec)); } -#line 2721 "bison_parser.cpp" +#line 2712 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name: /* table_ref_name */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2727 "bison_parser.cpp" +#line 2718 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name_no_alias: /* table_ref_name_no_alias */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2733 "bison_parser.cpp" +#line 2724 "bison_parser.cpp" break; case YYSYMBOL_table_name: /* table_name */ -#line 161 "bison_parser.y" +#line 162 "bison_parser.y" { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } -#line 2739 "bison_parser.cpp" +#line 2730 "bison_parser.cpp" break; case YYSYMBOL_opt_index_name: /* opt_index_name */ -#line 162 "bison_parser.y" +#line 163 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2745 "bison_parser.cpp" +#line 2736 "bison_parser.cpp" break; case YYSYMBOL_table_alias: /* table_alias */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2751 "bison_parser.cpp" +#line 2742 "bison_parser.cpp" break; case YYSYMBOL_opt_table_alias: /* opt_table_alias */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2757 "bison_parser.cpp" +#line 2748 "bison_parser.cpp" break; case YYSYMBOL_alias: /* alias */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2763 "bison_parser.cpp" +#line 2754 "bison_parser.cpp" break; case YYSYMBOL_opt_alias: /* opt_alias */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2769 "bison_parser.cpp" +#line 2760 "bison_parser.cpp" break; case YYSYMBOL_opt_with_clause: /* opt_with_clause */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2775 "bison_parser.cpp" +#line 2766 "bison_parser.cpp" break; case YYSYMBOL_with_clause: /* with_clause */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2781 "bison_parser.cpp" +#line 2772 "bison_parser.cpp" break; case YYSYMBOL_with_description_list: /* with_description_list */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2787 "bison_parser.cpp" +#line 2778 "bison_parser.cpp" break; case YYSYMBOL_with_description: /* with_description */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).with_description_t)); } -#line 2793 "bison_parser.cpp" +#line 2784 "bison_parser.cpp" break; case YYSYMBOL_join_clause: /* join_clause */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2799 "bison_parser.cpp" +#line 2790 "bison_parser.cpp" break; case YYSYMBOL_opt_join_type: /* opt_join_type */ -#line 160 "bison_parser.y" +#line 161 "bison_parser.y" { } -#line 2805 "bison_parser.cpp" +#line 2796 "bison_parser.cpp" break; case YYSYMBOL_join_condition: /* join_condition */ -#line 171 "bison_parser.y" +#line 172 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2811 "bison_parser.cpp" +#line 2802 "bison_parser.cpp" break; case YYSYMBOL_ident_commalist: /* ident_commalist */ -#line 163 "bison_parser.y" +#line 164 "bison_parser.y" { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2820,7 +2811,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2824 "bison_parser.cpp" +#line 2815 "bison_parser.cpp" break; default: @@ -2915,6 +2906,7 @@ YYLTYPE yylloc = yyloc_default; yychar = SQL_HSQL_EMPTY; /* Cause a token to be read. */ + /* User initialization code. */ #line 77 "bison_parser.y" { @@ -2927,7 +2919,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 2931 "bison_parser.cpp" +#line 2923 "bison_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -2955,7 +2947,7 @@ YYLTYPE yylloc = yyloc_default; if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; + YYNOMEM; #else { /* Get the current used size of the three stacks, in elements. */ @@ -2986,7 +2978,7 @@ YYLTYPE yylloc = yyloc_default; # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; @@ -2997,7 +2989,7 @@ YYLTYPE yylloc = yyloc_default; YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) - goto yyexhaustedlab; + YYNOMEM; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); YYSTACK_RELOCATE (yyls_alloc, yyls); @@ -3021,6 +3013,7 @@ YYLTYPE yylloc = yyloc_default; } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + if (yystate == YYFINAL) YYACCEPT; @@ -3137,7 +3130,7 @@ YYLTYPE yylloc = yyloc_default; switch (yyn) { case 2: /* input: statement_list opt_semicolon */ -#line 293 "bison_parser.y" +#line 294 "bison_parser.y" { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -3155,247 +3148,247 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].stmt_vec); } -#line 3159 "bison_parser.cpp" +#line 3152 "bison_parser.cpp" break; case 3: /* statement_list: statement */ -#line 312 "bison_parser.y" +#line 313 "bison_parser.y" { (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 3170 "bison_parser.cpp" +#line 3163 "bison_parser.cpp" break; case 4: /* statement_list: statement_list ';' statement */ -#line 318 "bison_parser.y" +#line 319 "bison_parser.y" { (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 3181 "bison_parser.cpp" +#line 3174 "bison_parser.cpp" break; case 5: /* statement: prepare_statement opt_hints */ -#line 325 "bison_parser.y" +#line 326 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3190 "bison_parser.cpp" +#line 3183 "bison_parser.cpp" break; case 6: /* statement: preparable_statement opt_hints */ -#line 329 "bison_parser.y" +#line 330 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3199 "bison_parser.cpp" +#line 3192 "bison_parser.cpp" break; case 7: /* statement: show_statement */ -#line 333 "bison_parser.y" +#line 334 "bison_parser.y" { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 3205 "bison_parser.cpp" +#line 3198 "bison_parser.cpp" break; case 8: /* statement: import_statement */ -#line 334 "bison_parser.y" +#line 335 "bison_parser.y" { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 3211 "bison_parser.cpp" +#line 3204 "bison_parser.cpp" break; case 9: /* statement: export_statement */ -#line 335 "bison_parser.y" +#line 336 "bison_parser.y" { (yyval.statement) = (yyvsp[0].export_stmt); } -#line 3217 "bison_parser.cpp" +#line 3210 "bison_parser.cpp" break; case 10: /* preparable_statement: select_statement */ -#line 337 "bison_parser.y" +#line 338 "bison_parser.y" { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 3223 "bison_parser.cpp" +#line 3216 "bison_parser.cpp" break; case 11: /* preparable_statement: create_statement */ -#line 338 "bison_parser.y" +#line 339 "bison_parser.y" { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 3229 "bison_parser.cpp" +#line 3222 "bison_parser.cpp" break; case 12: /* preparable_statement: insert_statement */ -#line 339 "bison_parser.y" +#line 340 "bison_parser.y" { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 3235 "bison_parser.cpp" +#line 3228 "bison_parser.cpp" break; case 13: /* preparable_statement: delete_statement */ -#line 340 "bison_parser.y" +#line 341 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3241 "bison_parser.cpp" +#line 3234 "bison_parser.cpp" break; case 14: /* preparable_statement: truncate_statement */ -#line 341 "bison_parser.y" +#line 342 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3247 "bison_parser.cpp" +#line 3240 "bison_parser.cpp" break; case 15: /* preparable_statement: update_statement */ -#line 342 "bison_parser.y" +#line 343 "bison_parser.y" { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 3253 "bison_parser.cpp" +#line 3246 "bison_parser.cpp" break; case 16: /* preparable_statement: drop_statement */ -#line 343 "bison_parser.y" +#line 344 "bison_parser.y" { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 3259 "bison_parser.cpp" +#line 3252 "bison_parser.cpp" break; case 17: /* preparable_statement: alter_statement */ -#line 344 "bison_parser.y" +#line 345 "bison_parser.y" { (yyval.statement) = (yyvsp[0].alter_stmt); } -#line 3265 "bison_parser.cpp" +#line 3258 "bison_parser.cpp" break; case 18: /* preparable_statement: execute_statement */ -#line 345 "bison_parser.y" +#line 346 "bison_parser.y" { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 3271 "bison_parser.cpp" +#line 3264 "bison_parser.cpp" break; case 19: /* preparable_statement: transaction_statement */ -#line 346 "bison_parser.y" +#line 347 "bison_parser.y" { (yyval.statement) = (yyvsp[0].transaction_stmt); } -#line 3277 "bison_parser.cpp" +#line 3270 "bison_parser.cpp" break; case 20: /* opt_hints: WITH HINT '(' hint_list ')' */ -#line 352 "bison_parser.y" +#line 353 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 3283 "bison_parser.cpp" +#line 3276 "bison_parser.cpp" break; case 21: /* opt_hints: %empty */ -#line 353 "bison_parser.y" +#line 354 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 3289 "bison_parser.cpp" +#line 3282 "bison_parser.cpp" break; case 22: /* hint_list: hint */ -#line 355 "bison_parser.y" +#line 356 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3298 "bison_parser.cpp" +#line 3291 "bison_parser.cpp" break; case 23: /* hint_list: hint_list ',' hint */ -#line 359 "bison_parser.y" +#line 360 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3307 "bison_parser.cpp" +#line 3300 "bison_parser.cpp" break; case 24: /* hint: IDENTIFIER */ -#line 364 "bison_parser.y" +#line 365 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 3316 "bison_parser.cpp" +#line 3309 "bison_parser.cpp" break; case 25: /* hint: IDENTIFIER '(' literal_list ')' */ -#line 368 "bison_parser.y" +#line 369 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 3326 "bison_parser.cpp" +#line 3319 "bison_parser.cpp" break; case 26: /* transaction_statement: BEGIN opt_transaction_keyword */ -#line 378 "bison_parser.y" +#line 379 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kBeginTransaction); } -#line 3332 "bison_parser.cpp" +#line 3325 "bison_parser.cpp" break; case 27: /* transaction_statement: ROLLBACK opt_transaction_keyword */ -#line 379 "bison_parser.y" +#line 380 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kRollbackTransaction); } -#line 3338 "bison_parser.cpp" +#line 3331 "bison_parser.cpp" break; case 28: /* transaction_statement: COMMIT opt_transaction_keyword */ -#line 380 "bison_parser.y" +#line 381 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kCommitTransaction); } -#line 3344 "bison_parser.cpp" +#line 3337 "bison_parser.cpp" break; case 31: /* prepare_statement: PREPARE IDENTIFIER FROM prepare_target_query */ -#line 388 "bison_parser.y" +#line 389 "bison_parser.y" { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 3354 "bison_parser.cpp" +#line 3347 "bison_parser.cpp" break; case 33: /* execute_statement: EXECUTE IDENTIFIER */ -#line 396 "bison_parser.y" +#line 397 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 3363 "bison_parser.cpp" +#line 3356 "bison_parser.cpp" break; case 34: /* execute_statement: EXECUTE IDENTIFIER '(' opt_literal_list ')' */ -#line 400 "bison_parser.y" +#line 401 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 3373 "bison_parser.cpp" +#line 3366 "bison_parser.cpp" break; case 35: /* import_statement: IMPORT FROM file_type FILE file_path INTO table_name */ -#line 411 "bison_parser.y" +#line 412 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-4].import_type_t)); (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 3384 "bison_parser.cpp" +#line 3377 "bison_parser.cpp" break; case 36: /* import_statement: COPY table_name FROM file_path opt_file_type */ -#line 417 "bison_parser.y" +#line 418 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[0].import_type_t)); (yyval.import_stmt)->filePath = (yyvsp[-1].sval); (yyval.import_stmt)->schema = (yyvsp[-3].table_name).schema; (yyval.import_stmt)->tableName = (yyvsp[-3].table_name).name; } -#line 3395 "bison_parser.cpp" +#line 3388 "bison_parser.cpp" break; case 37: /* file_type: IDENTIFIER */ -#line 424 "bison_parser.y" +#line 425 "bison_parser.y" { if (strcasecmp((yyvsp[0].sval), "csv") == 0) { (yyval.import_type_t) = kImportCSV; @@ -3410,69 +3403,69 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[0].sval)); } -#line 3414 "bison_parser.cpp" +#line 3407 "bison_parser.cpp" break; case 38: /* file_path: string_literal */ -#line 439 "bison_parser.y" +#line 440 "bison_parser.y" { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 3423 "bison_parser.cpp" +#line 3416 "bison_parser.cpp" break; case 39: /* opt_file_type: WITH FORMAT file_type */ -#line 444 "bison_parser.y" +#line 445 "bison_parser.y" { (yyval.import_type_t) = (yyvsp[0].import_type_t); } -#line 3429 "bison_parser.cpp" +#line 3422 "bison_parser.cpp" break; case 40: /* opt_file_type: %empty */ -#line 445 "bison_parser.y" +#line 446 "bison_parser.y" { (yyval.import_type_t) = kImportAuto; } -#line 3435 "bison_parser.cpp" +#line 3428 "bison_parser.cpp" break; case 41: /* export_statement: COPY table_name TO file_path opt_file_type */ -#line 451 "bison_parser.y" +#line 452 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_type_t)); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); (yyval.export_stmt)->schema = (yyvsp[-3].table_name).schema; (yyval.export_stmt)->tableName = (yyvsp[-3].table_name).name; } -#line 3446 "bison_parser.cpp" +#line 3439 "bison_parser.cpp" break; case 42: /* show_statement: SHOW TABLES */ -#line 463 "bison_parser.y" +#line 464 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3452 "bison_parser.cpp" +#line 3445 "bison_parser.cpp" break; case 43: /* show_statement: SHOW COLUMNS table_name */ -#line 464 "bison_parser.y" +#line 465 "bison_parser.y" { (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 3462 "bison_parser.cpp" +#line 3455 "bison_parser.cpp" break; case 44: /* show_statement: DESCRIBE table_name */ -#line 469 "bison_parser.y" +#line 470 "bison_parser.y" { (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 3472 "bison_parser.cpp" +#line 3465 "bison_parser.cpp" break; case 45: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ -#line 480 "bison_parser.y" +#line 481 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -3486,11 +3479,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3490 "bison_parser.cpp" +#line 3483 "bison_parser.cpp" break; case 46: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ -#line 493 "bison_parser.y" +#line 494 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3499,11 +3492,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->setColumnDefsAndConstraints((yyvsp[-1].table_element_vec)); delete (yyvsp[-1].table_element_vec); } -#line 3503 "bison_parser.cpp" +#line 3496 "bison_parser.cpp" break; case 47: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ -#line 501 "bison_parser.y" +#line 502 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3511,11 +3504,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3515 "bison_parser.cpp" +#line 3508 "bison_parser.cpp" break; case 48: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ -#line 508 "bison_parser.y" +#line 509 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateIndex); (yyval.create_stmt)->indexName = (yyvsp[-5].sval); @@ -3523,11 +3516,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->indexColumns = (yyvsp[-1].str_vec); } -#line 3527 "bison_parser.cpp" +#line 3520 "bison_parser.cpp" break; case 49: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ -#line 515 "bison_parser.y" +#line 516 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3536,342 +3529,351 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3540 "bison_parser.cpp" +#line 3533 "bison_parser.cpp" break; case 50: /* opt_not_exists: IF NOT EXISTS */ -#line 524 "bison_parser.y" +#line 525 "bison_parser.y" { (yyval.bval) = true; } -#line 3546 "bison_parser.cpp" +#line 3539 "bison_parser.cpp" break; case 51: /* opt_not_exists: %empty */ -#line 525 "bison_parser.y" +#line 526 "bison_parser.y" { (yyval.bval) = false; } -#line 3552 "bison_parser.cpp" +#line 3545 "bison_parser.cpp" break; case 52: /* table_elem_commalist: table_elem */ -#line 527 "bison_parser.y" +#line 528 "bison_parser.y" { (yyval.table_element_vec) = new std::vector(); (yyval.table_element_vec)->push_back((yyvsp[0].table_element_t)); } -#line 3561 "bison_parser.cpp" +#line 3554 "bison_parser.cpp" break; case 53: /* table_elem_commalist: table_elem_commalist ',' table_elem */ -#line 531 "bison_parser.y" +#line 532 "bison_parser.y" { (yyvsp[-2].table_element_vec)->push_back((yyvsp[0].table_element_t)); (yyval.table_element_vec) = (yyvsp[-2].table_element_vec); } -#line 3570 "bison_parser.cpp" +#line 3563 "bison_parser.cpp" break; case 54: /* table_elem: column_def */ -#line 536 "bison_parser.y" +#line 537 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].column_t); } -#line 3576 "bison_parser.cpp" +#line 3569 "bison_parser.cpp" break; case 55: /* table_elem: table_constraint */ -#line 537 "bison_parser.y" +#line 538 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3582 "bison_parser.cpp" +#line 3575 "bison_parser.cpp" break; case 56: /* column_def: IDENTIFIER column_type opt_column_constraints */ -#line 539 "bison_parser.y" +#line 540 "bison_parser.y" { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].column_constraint_vec)); (yyval.column_t)->setNullableExplicit(); } -#line 3591 "bison_parser.cpp" +#line 3584 "bison_parser.cpp" break; case 57: /* column_type: INT */ -#line 544 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3597 "bison_parser.cpp" - break; - - case 58: /* column_type: INTEGER */ #line 545 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3603 "bison_parser.cpp" + { (yyval.column_type_t) = ColumnType{DataType::INT}; } +#line 3590 "bison_parser.cpp" break; - case 59: /* column_type: LONG */ + case 58: /* column_type: CHAR '(' INTVAL ')' */ #line 546 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 3609 "bison_parser.cpp" + { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } +#line 3596 "bison_parser.cpp" break; - case 60: /* column_type: FLOAT */ + case 59: /* column_type: CHARACTER VARYING '(' INTVAL ')' */ #line 547 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 3615 "bison_parser.cpp" + { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } +#line 3602 "bison_parser.cpp" break; - case 61: /* column_type: DECIMAL opt_decimal_specification */ + case 60: /* column_type: DATE */ #line 548 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::DECIMAL, 0, (yyvsp[0].column_specification_t)}; } -#line 3621 "bison_parser.cpp" + { (yyval.column_type_t) = ColumnType{DataType::DATE}; } +#line 3608 "bison_parser.cpp" break; - case 62: /* column_type: DOUBLE */ + case 61: /* column_type: DATETIME */ #line 549 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 3627 "bison_parser.cpp" + { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } +#line 3614 "bison_parser.cpp" break; - case 63: /* column_type: REAL */ + case 62: /* column_type: DECIMAL opt_decimal_specification */ #line 550 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::REAL}; } -#line 3633 "bison_parser.cpp" - break; - - case 64: /* column_type: VARCHAR '(' INTVAL ')' */ -#line 551 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3639 "bison_parser.cpp" - break; - - case 65: /* column_type: CHARACTER VARYING '(' INTVAL ')' */ -#line 552 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3645 "bison_parser.cpp" - break; - - case 66: /* column_type: CHAR '(' INTVAL ')' */ -#line 553 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3651 "bison_parser.cpp" + { + (yyval.column_type_t) = ColumnType{DataType::DECIMAL, 0, (yyvsp[0].ival_pair)->first, (yyvsp[0].ival_pair)->second}; + delete (yyvsp[0].ival_pair); +} +#line 3623 "bison_parser.cpp" break; - case 67: /* column_type: TEXT */ + case 63: /* column_type: DOUBLE */ #line 554 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 3657 "bison_parser.cpp" + { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } +#line 3629 "bison_parser.cpp" break; - case 68: /* column_type: TIME opt_time_specification */ + case 64: /* column_type: FLOAT */ #line 555 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::TIME, 0, (yyvsp[0].column_specification_t)}; } -#line 3663 "bison_parser.cpp" + { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } +#line 3635 "bison_parser.cpp" break; - case 69: /* column_type: DATETIME */ + case 65: /* column_type: INTEGER */ #line 556 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3669 "bison_parser.cpp" + { (yyval.column_type_t) = ColumnType{DataType::INT}; } +#line 3641 "bison_parser.cpp" break; - case 70: /* column_type: DATE */ + case 66: /* column_type: LONG */ #line 557 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::DATE}; } -#line 3675 "bison_parser.cpp" + { (yyval.column_type_t) = ColumnType{DataType::LONG}; } +#line 3647 "bison_parser.cpp" + break; + + case 67: /* column_type: REAL */ +#line 558 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::REAL}; } +#line 3653 "bison_parser.cpp" break; - case 71: /* opt_time_specification: '(' INTVAL ')' */ + case 68: /* column_type: SMALLINT */ #line 559 "bison_parser.y" - { (yyval.column_specification_t) = ColumnSpecification{(yyvsp[-1].ival)}; } -#line 3681 "bison_parser.cpp" + { (yyval.column_type_t) = ColumnType{DataType::SMALLINT}; } +#line 3659 "bison_parser.cpp" break; - case 72: /* opt_time_specification: %empty */ + case 69: /* column_type: TEXT */ #line 560 "bison_parser.y" - { (yyval.column_specification_t) = ColumnSpecification{}; } -#line 3687 "bison_parser.cpp" + { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } +#line 3665 "bison_parser.cpp" break; - case 73: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ -#line 562 "bison_parser.y" - { (yyval.column_specification_t) = ColumnSpecification{(yyvsp[-3].ival), (yyvsp[-1].ival)}; } -#line 3693 "bison_parser.cpp" + case 70: /* column_type: TIME opt_time_precision */ +#line 561 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::TIME, 0, (yyvsp[0].ival)}; } +#line 3671 "bison_parser.cpp" break; - case 74: /* opt_decimal_specification: '(' INTVAL ')' */ -#line 563 "bison_parser.y" - { (yyval.column_specification_t) = ColumnSpecification{(yyvsp[-1].ival)}; } -#line 3699 "bison_parser.cpp" + case 71: /* column_type: VARCHAR '(' INTVAL ')' */ +#line 562 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } +#line 3677 "bison_parser.cpp" break; - case 75: /* opt_decimal_specification: %empty */ + case 72: /* opt_time_precision: '(' INTVAL ')' */ #line 564 "bison_parser.y" - { (yyval.column_specification_t) = ColumnSpecification{}; } -#line 3705 "bison_parser.cpp" + { (yyval.ival) = (yyvsp[-1].ival); } +#line 3683 "bison_parser.cpp" break; - case 76: /* opt_column_constraints: column_constraint_list */ -#line 566 "bison_parser.y" - { (yyval.column_constraint_vec) = (yyvsp[0].column_constraint_vec); } -#line 3711 "bison_parser.cpp" + case 73: /* opt_time_precision: %empty */ +#line 565 "bison_parser.y" + { (yyval.ival) = 0; } +#line 3689 "bison_parser.cpp" break; - case 77: /* opt_column_constraints: %empty */ + case 74: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ #line 567 "bison_parser.y" - { (yyval.column_constraint_vec) = new std::vector(); } -#line 3717 "bison_parser.cpp" + { (yyval.ival_pair) = new std::pair{(yyvsp[-3].ival), (yyvsp[-1].ival)}; } +#line 3695 "bison_parser.cpp" + break; + + case 75: /* opt_decimal_specification: '(' INTVAL ')' */ +#line 568 "bison_parser.y" + { (yyval.ival_pair) = new std::pair{(yyvsp[-1].ival), 0}; } +#line 3701 "bison_parser.cpp" break; - case 78: /* column_constraint_list: column_constraint */ + case 76: /* opt_decimal_specification: %empty */ #line 569 "bison_parser.y" + { (yyval.ival_pair) = new std::pair{0, 0}; } +#line 3707 "bison_parser.cpp" + break; + + case 77: /* opt_column_constraints: column_constraint_list */ +#line 571 "bison_parser.y" + { (yyval.column_constraint_vec) = (yyvsp[0].column_constraint_vec); } +#line 3713 "bison_parser.cpp" + break; + + case 78: /* opt_column_constraints: %empty */ +#line 572 "bison_parser.y" + { (yyval.column_constraint_vec) = new std::vector(); } +#line 3719 "bison_parser.cpp" + break; + + case 79: /* column_constraint_list: column_constraint */ +#line 574 "bison_parser.y" { (yyval.column_constraint_vec) = new std::vector(); (yyval.column_constraint_vec)->push_back((yyvsp[0].column_constraint_t)); } -#line 3726 "bison_parser.cpp" +#line 3728 "bison_parser.cpp" break; - case 79: /* column_constraint_list: column_constraint_list column_constraint */ -#line 573 "bison_parser.y" + case 80: /* column_constraint_list: column_constraint_list column_constraint */ +#line 578 "bison_parser.y" { (yyvsp[-1].column_constraint_vec)->push_back((yyvsp[0].column_constraint_t)); (yyval.column_constraint_vec) = (yyvsp[-1].column_constraint_vec); } -#line 3735 "bison_parser.cpp" +#line 3737 "bison_parser.cpp" break; - case 80: /* column_constraint: PRIMARY KEY */ -#line 578 "bison_parser.y" + case 81: /* column_constraint: PRIMARY KEY */ +#line 583 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::PrimaryKey; } -#line 3741 "bison_parser.cpp" +#line 3743 "bison_parser.cpp" break; - case 81: /* column_constraint: UNIQUE */ -#line 579 "bison_parser.y" + case 82: /* column_constraint: UNIQUE */ +#line 584 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Unique; } -#line 3747 "bison_parser.cpp" +#line 3749 "bison_parser.cpp" break; - case 82: /* column_constraint: NULL */ -#line 580 "bison_parser.y" + case 83: /* column_constraint: NULL */ +#line 585 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Null; } -#line 3753 "bison_parser.cpp" +#line 3755 "bison_parser.cpp" break; - case 83: /* column_constraint: NOT NULL */ -#line 581 "bison_parser.y" + case 84: /* column_constraint: NOT NULL */ +#line 586 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::NotNull; } -#line 3759 "bison_parser.cpp" +#line 3761 "bison_parser.cpp" break; - case 84: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ -#line 583 "bison_parser.y" + case 85: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ +#line 588 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::PrimaryKey, (yyvsp[-1].str_vec)); } -#line 3765 "bison_parser.cpp" +#line 3767 "bison_parser.cpp" break; - case 85: /* table_constraint: UNIQUE '(' ident_commalist ')' */ -#line 584 "bison_parser.y" + case 86: /* table_constraint: UNIQUE '(' ident_commalist ')' */ +#line 589 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::Unique, (yyvsp[-1].str_vec)); } -#line 3771 "bison_parser.cpp" +#line 3773 "bison_parser.cpp" break; - case 86: /* drop_statement: DROP TABLE opt_exists table_name */ -#line 592 "bison_parser.y" + case 87: /* drop_statement: DROP TABLE opt_exists table_name */ +#line 597 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropTable); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 3782 "bison_parser.cpp" +#line 3784 "bison_parser.cpp" break; - case 87: /* drop_statement: DROP VIEW opt_exists table_name */ -#line 598 "bison_parser.y" + case 88: /* drop_statement: DROP VIEW opt_exists table_name */ +#line 603 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropView); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 3793 "bison_parser.cpp" +#line 3795 "bison_parser.cpp" break; - case 88: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ -#line 604 "bison_parser.y" + case 89: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ +#line 609 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 3803 "bison_parser.cpp" +#line 3805 "bison_parser.cpp" break; - case 89: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ -#line 610 "bison_parser.y" + case 90: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ +#line 615 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropIndex); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->indexName = (yyvsp[0].sval); } -#line 3813 "bison_parser.cpp" +#line 3815 "bison_parser.cpp" break; - case 90: /* opt_exists: IF EXISTS */ -#line 616 "bison_parser.y" + case 91: /* opt_exists: IF EXISTS */ +#line 621 "bison_parser.y" { (yyval.bval) = true; } -#line 3819 "bison_parser.cpp" +#line 3821 "bison_parser.cpp" break; - case 91: /* opt_exists: %empty */ -#line 617 "bison_parser.y" + case 92: /* opt_exists: %empty */ +#line 622 "bison_parser.y" { (yyval.bval) = false; } -#line 3825 "bison_parser.cpp" +#line 3827 "bison_parser.cpp" break; - case 92: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ -#line 624 "bison_parser.y" + case 93: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ +#line 629 "bison_parser.y" { (yyval.alter_stmt) = new AlterStatement((yyvsp[-1].table_name).name, (yyvsp[0].alter_action_t)); (yyval.alter_stmt)->ifTableExists = (yyvsp[-2].bval); (yyval.alter_stmt)->schema = (yyvsp[-1].table_name).schema; } -#line 3835 "bison_parser.cpp" +#line 3837 "bison_parser.cpp" break; - case 93: /* alter_action: drop_action */ -#line 630 "bison_parser.y" + case 94: /* alter_action: drop_action */ +#line 635 "bison_parser.y" { (yyval.alter_action_t) = (yyvsp[0].drop_action_t); } -#line 3841 "bison_parser.cpp" +#line 3843 "bison_parser.cpp" break; - case 94: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ -#line 632 "bison_parser.y" + case 95: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ +#line 637 "bison_parser.y" { (yyval.drop_action_t) = new DropColumnAction((yyvsp[0].sval)); (yyval.drop_action_t)->ifExists = (yyvsp[-1].bval); } -#line 3850 "bison_parser.cpp" +#line 3852 "bison_parser.cpp" break; - case 95: /* delete_statement: DELETE FROM table_name opt_where */ -#line 642 "bison_parser.y" + case 96: /* delete_statement: DELETE FROM table_name opt_where */ +#line 647 "bison_parser.y" { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[-1].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[-1].table_name).name; (yyval.delete_stmt)->expr = (yyvsp[0].expr); } -#line 3861 "bison_parser.cpp" +#line 3863 "bison_parser.cpp" break; - case 96: /* truncate_statement: TRUNCATE table_name */ -#line 649 "bison_parser.y" + case 97: /* truncate_statement: TRUNCATE table_name */ +#line 654 "bison_parser.y" { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 3871 "bison_parser.cpp" +#line 3873 "bison_parser.cpp" break; - case 97: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' literal_list ')' */ -#line 660 "bison_parser.y" + case 98: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' literal_list ')' */ +#line 665 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -3879,11 +3881,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 3883 "bison_parser.cpp" +#line 3885 "bison_parser.cpp" break; - case 98: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ -#line 667 "bison_parser.y" + case 99: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ +#line 672 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -3891,80 +3893,80 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 3895 "bison_parser.cpp" +#line 3897 "bison_parser.cpp" break; - case 99: /* opt_column_list: '(' ident_commalist ')' */ -#line 675 "bison_parser.y" + case 100: /* opt_column_list: '(' ident_commalist ')' */ +#line 680 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 3901 "bison_parser.cpp" +#line 3903 "bison_parser.cpp" break; - case 100: /* opt_column_list: %empty */ -#line 676 "bison_parser.y" + case 101: /* opt_column_list: %empty */ +#line 681 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 3907 "bison_parser.cpp" +#line 3909 "bison_parser.cpp" break; - case 101: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ -#line 683 "bison_parser.y" + case 102: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ +#line 688 "bison_parser.y" { (yyval.update_stmt) = new UpdateStatement(); (yyval.update_stmt)->table = (yyvsp[-3].table); (yyval.update_stmt)->updates = (yyvsp[-1].update_vec); (yyval.update_stmt)->where = (yyvsp[0].expr); } -#line 3918 "bison_parser.cpp" +#line 3920 "bison_parser.cpp" break; - case 102: /* update_clause_commalist: update_clause */ -#line 690 "bison_parser.y" + case 103: /* update_clause_commalist: update_clause */ +#line 695 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 3927 "bison_parser.cpp" +#line 3929 "bison_parser.cpp" break; - case 103: /* update_clause_commalist: update_clause_commalist ',' update_clause */ -#line 694 "bison_parser.y" + case 104: /* update_clause_commalist: update_clause_commalist ',' update_clause */ +#line 699 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 3936 "bison_parser.cpp" +#line 3938 "bison_parser.cpp" break; - case 104: /* update_clause: IDENTIFIER '=' expr */ -#line 699 "bison_parser.y" + case 105: /* update_clause: IDENTIFIER '=' expr */ +#line 704 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 3946 "bison_parser.cpp" +#line 3948 "bison_parser.cpp" break; - case 105: /* select_statement: opt_with_clause select_with_paren */ -#line 709 "bison_parser.y" + case 106: /* select_statement: opt_with_clause select_with_paren */ +#line 714 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 3955 "bison_parser.cpp" +#line 3957 "bison_parser.cpp" break; - case 106: /* select_statement: opt_with_clause select_no_paren */ -#line 713 "bison_parser.y" + case 107: /* select_statement: opt_with_clause select_no_paren */ +#line 718 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 3964 "bison_parser.cpp" +#line 3966 "bison_parser.cpp" break; - case 107: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ -#line 717 "bison_parser.y" + case 108: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ +#line 722 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -3976,17 +3978,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 3980 "bison_parser.cpp" +#line 3982 "bison_parser.cpp" break; - case 110: /* select_within_set_operation_no_parentheses: select_clause */ -#line 731 "bison_parser.y" + case 111: /* select_within_set_operation_no_parentheses: select_clause */ +#line 736 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 3986 "bison_parser.cpp" +#line 3988 "bison_parser.cpp" break; - case 111: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ -#line 732 "bison_parser.y" + case 112: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ +#line 737 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -3995,23 +3997,23 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->push_back((yyvsp[-1].set_operator_t)); (yyval.select_stmt)->setOperations->back()->nestedSelectStatement = (yyvsp[0].select_stmt); } -#line 3999 "bison_parser.cpp" +#line 4001 "bison_parser.cpp" break; - case 112: /* select_with_paren: '(' select_no_paren ')' */ -#line 741 "bison_parser.y" + case 113: /* select_with_paren: '(' select_no_paren ')' */ +#line 746 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4005 "bison_parser.cpp" +#line 4007 "bison_parser.cpp" break; - case 113: /* select_with_paren: '(' select_with_paren ')' */ -#line 742 "bison_parser.y" + case 114: /* select_with_paren: '(' select_with_paren ')' */ +#line 747 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4011 "bison_parser.cpp" +#line 4013 "bison_parser.cpp" break; - case 114: /* select_no_paren: select_clause opt_order opt_limit */ -#line 744 "bison_parser.y" + case 115: /* select_no_paren: select_clause opt_order opt_limit */ +#line 749 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); (yyval.select_stmt)->order = (yyvsp[-1].order_vec); @@ -4022,11 +4024,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 4026 "bison_parser.cpp" +#line 4028 "bison_parser.cpp" break; - case 115: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit */ -#line 754 "bison_parser.y" + case 116: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit */ +#line 759 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4037,59 +4039,59 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultOrder = (yyvsp[-1].order_vec); (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); } -#line 4041 "bison_parser.cpp" +#line 4043 "bison_parser.cpp" break; - case 116: /* set_operator: set_type opt_all */ -#line 765 "bison_parser.y" + case 117: /* set_operator: set_type opt_all */ +#line 770 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 4050 "bison_parser.cpp" +#line 4052 "bison_parser.cpp" break; - case 117: /* set_type: UNION */ -#line 770 "bison_parser.y" + case 118: /* set_type: UNION */ +#line 775 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 4059 "bison_parser.cpp" +#line 4061 "bison_parser.cpp" break; - case 118: /* set_type: INTERSECT */ -#line 774 "bison_parser.y" + case 119: /* set_type: INTERSECT */ +#line 779 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 4068 "bison_parser.cpp" +#line 4070 "bison_parser.cpp" break; - case 119: /* set_type: EXCEPT */ -#line 778 "bison_parser.y" + case 120: /* set_type: EXCEPT */ +#line 783 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 4077 "bison_parser.cpp" +#line 4079 "bison_parser.cpp" break; - case 120: /* opt_all: ALL */ -#line 783 "bison_parser.y" + case 121: /* opt_all: ALL */ +#line 788 "bison_parser.y" { (yyval.bval) = true; } -#line 4083 "bison_parser.cpp" +#line 4085 "bison_parser.cpp" break; - case 121: /* opt_all: %empty */ -#line 784 "bison_parser.y" + case 122: /* opt_all: %empty */ +#line 789 "bison_parser.y" { (yyval.bval) = false; } -#line 4089 "bison_parser.cpp" +#line 4091 "bison_parser.cpp" break; - case 122: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ -#line 786 "bison_parser.y" + case 123: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ +#line 791 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -4099,231 +4101,231 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 4103 "bison_parser.cpp" +#line 4105 "bison_parser.cpp" break; - case 123: /* opt_distinct: DISTINCT */ -#line 796 "bison_parser.y" + case 124: /* opt_distinct: DISTINCT */ +#line 801 "bison_parser.y" { (yyval.bval) = true; } -#line 4109 "bison_parser.cpp" +#line 4111 "bison_parser.cpp" break; - case 124: /* opt_distinct: %empty */ -#line 797 "bison_parser.y" + case 125: /* opt_distinct: %empty */ +#line 802 "bison_parser.y" { (yyval.bval) = false; } -#line 4115 "bison_parser.cpp" +#line 4117 "bison_parser.cpp" break; - case 126: /* opt_from_clause: from_clause */ -#line 801 "bison_parser.y" + case 127: /* opt_from_clause: from_clause */ +#line 806 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4121 "bison_parser.cpp" +#line 4123 "bison_parser.cpp" break; - case 127: /* opt_from_clause: %empty */ -#line 802 "bison_parser.y" + case 128: /* opt_from_clause: %empty */ +#line 807 "bison_parser.y" { (yyval.table) = nullptr; } -#line 4127 "bison_parser.cpp" +#line 4129 "bison_parser.cpp" break; - case 128: /* from_clause: FROM table_ref */ -#line 804 "bison_parser.y" + case 129: /* from_clause: FROM table_ref */ +#line 809 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4133 "bison_parser.cpp" +#line 4135 "bison_parser.cpp" break; - case 129: /* opt_where: WHERE expr */ -#line 806 "bison_parser.y" + case 130: /* opt_where: WHERE expr */ +#line 811 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4139 "bison_parser.cpp" +#line 4141 "bison_parser.cpp" break; - case 130: /* opt_where: %empty */ -#line 807 "bison_parser.y" + case 131: /* opt_where: %empty */ +#line 812 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4145 "bison_parser.cpp" +#line 4147 "bison_parser.cpp" break; - case 131: /* opt_group: GROUP BY expr_list opt_having */ -#line 809 "bison_parser.y" + case 132: /* opt_group: GROUP BY expr_list opt_having */ +#line 814 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 4155 "bison_parser.cpp" +#line 4157 "bison_parser.cpp" break; - case 132: /* opt_group: %empty */ -#line 814 "bison_parser.y" + case 133: /* opt_group: %empty */ +#line 819 "bison_parser.y" { (yyval.group_t) = nullptr; } -#line 4161 "bison_parser.cpp" +#line 4163 "bison_parser.cpp" break; - case 133: /* opt_having: HAVING expr */ -#line 816 "bison_parser.y" + case 134: /* opt_having: HAVING expr */ +#line 821 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4167 "bison_parser.cpp" +#line 4169 "bison_parser.cpp" break; - case 134: /* opt_having: %empty */ -#line 817 "bison_parser.y" + case 135: /* opt_having: %empty */ +#line 822 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4173 "bison_parser.cpp" +#line 4175 "bison_parser.cpp" break; - case 135: /* opt_order: ORDER BY order_list */ -#line 819 "bison_parser.y" + case 136: /* opt_order: ORDER BY order_list */ +#line 824 "bison_parser.y" { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 4179 "bison_parser.cpp" +#line 4181 "bison_parser.cpp" break; - case 136: /* opt_order: %empty */ -#line 820 "bison_parser.y" + case 137: /* opt_order: %empty */ +#line 825 "bison_parser.y" { (yyval.order_vec) = nullptr; } -#line 4185 "bison_parser.cpp" +#line 4187 "bison_parser.cpp" break; - case 137: /* order_list: order_desc */ -#line 822 "bison_parser.y" + case 138: /* order_list: order_desc */ +#line 827 "bison_parser.y" { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 4194 "bison_parser.cpp" +#line 4196 "bison_parser.cpp" break; - case 138: /* order_list: order_list ',' order_desc */ -#line 826 "bison_parser.y" + case 139: /* order_list: order_list ',' order_desc */ +#line 831 "bison_parser.y" { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 4203 "bison_parser.cpp" +#line 4205 "bison_parser.cpp" break; - case 139: /* order_desc: expr opt_order_type */ -#line 831 "bison_parser.y" + case 140: /* order_desc: expr opt_order_type */ +#line 836 "bison_parser.y" { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 4209 "bison_parser.cpp" +#line 4211 "bison_parser.cpp" break; - case 140: /* opt_order_type: ASC */ -#line 833 "bison_parser.y" + case 141: /* opt_order_type: ASC */ +#line 838 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4215 "bison_parser.cpp" +#line 4217 "bison_parser.cpp" break; - case 141: /* opt_order_type: DESC */ -#line 834 "bison_parser.y" + case 142: /* opt_order_type: DESC */ +#line 839 "bison_parser.y" { (yyval.order_type) = kOrderDesc; } -#line 4221 "bison_parser.cpp" +#line 4223 "bison_parser.cpp" break; - case 142: /* opt_order_type: %empty */ -#line 835 "bison_parser.y" + case 143: /* opt_order_type: %empty */ +#line 840 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4227 "bison_parser.cpp" +#line 4229 "bison_parser.cpp" break; - case 143: /* opt_top: TOP int_literal */ -#line 839 "bison_parser.y" + case 144: /* opt_top: TOP int_literal */ +#line 844 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4233 "bison_parser.cpp" +#line 4235 "bison_parser.cpp" break; - case 144: /* opt_top: %empty */ -#line 840 "bison_parser.y" + case 145: /* opt_top: %empty */ +#line 845 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4239 "bison_parser.cpp" +#line 4241 "bison_parser.cpp" break; - case 145: /* opt_limit: LIMIT expr */ -#line 842 "bison_parser.y" + case 146: /* opt_limit: LIMIT expr */ +#line 847 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4245 "bison_parser.cpp" +#line 4247 "bison_parser.cpp" break; - case 146: /* opt_limit: OFFSET expr */ -#line 843 "bison_parser.y" + case 147: /* opt_limit: OFFSET expr */ +#line 848 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4251 "bison_parser.cpp" +#line 4253 "bison_parser.cpp" break; - case 147: /* opt_limit: LIMIT expr OFFSET expr */ -#line 844 "bison_parser.y" + case 148: /* opt_limit: LIMIT expr OFFSET expr */ +#line 849 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4257 "bison_parser.cpp" +#line 4259 "bison_parser.cpp" break; - case 148: /* opt_limit: LIMIT ALL */ -#line 845 "bison_parser.y" + case 149: /* opt_limit: LIMIT ALL */ +#line 850 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 4263 "bison_parser.cpp" +#line 4265 "bison_parser.cpp" break; - case 149: /* opt_limit: LIMIT ALL OFFSET expr */ -#line 846 "bison_parser.y" + case 150: /* opt_limit: LIMIT ALL OFFSET expr */ +#line 851 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4269 "bison_parser.cpp" +#line 4271 "bison_parser.cpp" break; - case 150: /* opt_limit: %empty */ -#line 847 "bison_parser.y" + case 151: /* opt_limit: %empty */ +#line 852 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4275 "bison_parser.cpp" +#line 4277 "bison_parser.cpp" break; - case 151: /* expr_list: expr_alias */ -#line 852 "bison_parser.y" + case 152: /* expr_list: expr_alias */ +#line 857 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4284 "bison_parser.cpp" +#line 4286 "bison_parser.cpp" break; - case 152: /* expr_list: expr_list ',' expr_alias */ -#line 856 "bison_parser.y" + case 153: /* expr_list: expr_list ',' expr_alias */ +#line 861 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4293 "bison_parser.cpp" +#line 4295 "bison_parser.cpp" break; - case 153: /* opt_literal_list: literal_list */ -#line 861 "bison_parser.y" + case 154: /* opt_literal_list: literal_list */ +#line 866 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4299 "bison_parser.cpp" +#line 4301 "bison_parser.cpp" break; - case 154: /* opt_literal_list: %empty */ -#line 862 "bison_parser.y" + case 155: /* opt_literal_list: %empty */ +#line 867 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4305 "bison_parser.cpp" +#line 4307 "bison_parser.cpp" break; - case 155: /* literal_list: literal */ -#line 864 "bison_parser.y" + case 156: /* literal_list: literal */ +#line 869 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4314 "bison_parser.cpp" +#line 4316 "bison_parser.cpp" break; - case 156: /* literal_list: literal_list ',' literal */ -#line 868 "bison_parser.y" + case 157: /* literal_list: literal_list ',' literal */ +#line 873 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4323 "bison_parser.cpp" +#line 4325 "bison_parser.cpp" break; - case 157: /* expr_alias: expr opt_alias */ -#line 873 "bison_parser.y" + case 158: /* expr_alias: expr opt_alias */ +#line 878 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -4331,415 +4333,415 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].alias_t); } } -#line 4335 "bison_parser.cpp" +#line 4337 "bison_parser.cpp" break; - case 163: /* operand: '(' expr ')' */ -#line 883 "bison_parser.y" + case 164: /* operand: '(' expr ')' */ +#line 888 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4341 "bison_parser.cpp" +#line 4343 "bison_parser.cpp" break; - case 173: /* operand: '(' select_no_paren ')' */ -#line 885 "bison_parser.y" + case 174: /* operand: '(' select_no_paren ')' */ +#line 890 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4349 "bison_parser.cpp" +#line 4351 "bison_parser.cpp" break; - case 176: /* unary_expr: '-' operand */ -#line 891 "bison_parser.y" + case 177: /* unary_expr: '-' operand */ +#line 896 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4355 "bison_parser.cpp" +#line 4357 "bison_parser.cpp" break; - case 177: /* unary_expr: NOT operand */ -#line 892 "bison_parser.y" + case 178: /* unary_expr: NOT operand */ +#line 897 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4361 "bison_parser.cpp" +#line 4363 "bison_parser.cpp" break; - case 178: /* unary_expr: operand ISNULL */ -#line 893 "bison_parser.y" + case 179: /* unary_expr: operand ISNULL */ +#line 898 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4367 "bison_parser.cpp" +#line 4369 "bison_parser.cpp" break; - case 179: /* unary_expr: operand IS NULL */ -#line 894 "bison_parser.y" + case 180: /* unary_expr: operand IS NULL */ +#line 899 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4373 "bison_parser.cpp" +#line 4375 "bison_parser.cpp" break; - case 180: /* unary_expr: operand IS NOT NULL */ -#line 895 "bison_parser.y" + case 181: /* unary_expr: operand IS NOT NULL */ +#line 900 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4379 "bison_parser.cpp" +#line 4381 "bison_parser.cpp" break; - case 182: /* binary_expr: operand '-' operand */ -#line 897 "bison_parser.y" + case 183: /* binary_expr: operand '-' operand */ +#line 902 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4385 "bison_parser.cpp" +#line 4387 "bison_parser.cpp" break; - case 183: /* binary_expr: operand '+' operand */ -#line 898 "bison_parser.y" + case 184: /* binary_expr: operand '+' operand */ +#line 903 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4391 "bison_parser.cpp" +#line 4393 "bison_parser.cpp" break; - case 184: /* binary_expr: operand '/' operand */ -#line 899 "bison_parser.y" + case 185: /* binary_expr: operand '/' operand */ +#line 904 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4397 "bison_parser.cpp" +#line 4399 "bison_parser.cpp" break; - case 185: /* binary_expr: operand '*' operand */ -#line 900 "bison_parser.y" + case 186: /* binary_expr: operand '*' operand */ +#line 905 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4403 "bison_parser.cpp" +#line 4405 "bison_parser.cpp" break; - case 186: /* binary_expr: operand '%' operand */ -#line 901 "bison_parser.y" + case 187: /* binary_expr: operand '%' operand */ +#line 906 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4409 "bison_parser.cpp" +#line 4411 "bison_parser.cpp" break; - case 187: /* binary_expr: operand '^' operand */ -#line 902 "bison_parser.y" + case 188: /* binary_expr: operand '^' operand */ +#line 907 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4415 "bison_parser.cpp" +#line 4417 "bison_parser.cpp" break; - case 188: /* binary_expr: operand LIKE operand */ -#line 903 "bison_parser.y" + case 189: /* binary_expr: operand LIKE operand */ +#line 908 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4421 "bison_parser.cpp" +#line 4423 "bison_parser.cpp" break; - case 189: /* binary_expr: operand NOT LIKE operand */ -#line 904 "bison_parser.y" + case 190: /* binary_expr: operand NOT LIKE operand */ +#line 909 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4427 "bison_parser.cpp" +#line 4429 "bison_parser.cpp" break; - case 190: /* binary_expr: operand ILIKE operand */ -#line 905 "bison_parser.y" + case 191: /* binary_expr: operand ILIKE operand */ +#line 910 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4433 "bison_parser.cpp" +#line 4435 "bison_parser.cpp" break; - case 191: /* binary_expr: operand CONCAT operand */ -#line 906 "bison_parser.y" + case 192: /* binary_expr: operand CONCAT operand */ +#line 911 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4439 "bison_parser.cpp" +#line 4441 "bison_parser.cpp" break; - case 192: /* logic_expr: expr AND expr */ -#line 908 "bison_parser.y" + case 193: /* logic_expr: expr AND expr */ +#line 913 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4445 "bison_parser.cpp" +#line 4447 "bison_parser.cpp" break; - case 193: /* logic_expr: expr OR expr */ -#line 909 "bison_parser.y" + case 194: /* logic_expr: expr OR expr */ +#line 914 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4451 "bison_parser.cpp" +#line 4453 "bison_parser.cpp" break; - case 194: /* in_expr: operand IN '(' expr_list ')' */ -#line 911 "bison_parser.y" + case 195: /* in_expr: operand IN '(' expr_list ')' */ +#line 916 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4457 "bison_parser.cpp" +#line 4459 "bison_parser.cpp" break; - case 195: /* in_expr: operand NOT IN '(' expr_list ')' */ -#line 912 "bison_parser.y" + case 196: /* in_expr: operand NOT IN '(' expr_list ')' */ +#line 917 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4463 "bison_parser.cpp" +#line 4465 "bison_parser.cpp" break; - case 196: /* in_expr: operand IN '(' select_no_paren ')' */ -#line 913 "bison_parser.y" + case 197: /* in_expr: operand IN '(' select_no_paren ')' */ +#line 918 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4469 "bison_parser.cpp" +#line 4471 "bison_parser.cpp" break; - case 197: /* in_expr: operand NOT IN '(' select_no_paren ')' */ -#line 914 "bison_parser.y" + case 198: /* in_expr: operand NOT IN '(' select_no_paren ')' */ +#line 919 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4475 "bison_parser.cpp" +#line 4477 "bison_parser.cpp" break; - case 198: /* case_expr: CASE expr case_list END */ -#line 918 "bison_parser.y" + case 199: /* case_expr: CASE expr case_list END */ +#line 923 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4481 "bison_parser.cpp" +#line 4483 "bison_parser.cpp" break; - case 199: /* case_expr: CASE expr case_list ELSE expr END */ -#line 919 "bison_parser.y" + case 200: /* case_expr: CASE expr case_list ELSE expr END */ +#line 924 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4487 "bison_parser.cpp" +#line 4489 "bison_parser.cpp" break; - case 200: /* case_expr: CASE case_list END */ -#line 920 "bison_parser.y" + case 201: /* case_expr: CASE case_list END */ +#line 925 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4493 "bison_parser.cpp" +#line 4495 "bison_parser.cpp" break; - case 201: /* case_expr: CASE case_list ELSE expr END */ -#line 921 "bison_parser.y" + case 202: /* case_expr: CASE case_list ELSE expr END */ +#line 926 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4499 "bison_parser.cpp" +#line 4501 "bison_parser.cpp" break; - case 202: /* case_list: WHEN expr THEN expr */ -#line 923 "bison_parser.y" + case 203: /* case_list: WHEN expr THEN expr */ +#line 928 "bison_parser.y" { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4505 "bison_parser.cpp" +#line 4507 "bison_parser.cpp" break; - case 203: /* case_list: case_list WHEN expr THEN expr */ -#line 924 "bison_parser.y" + case 204: /* case_list: case_list WHEN expr THEN expr */ +#line 929 "bison_parser.y" { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4511 "bison_parser.cpp" +#line 4513 "bison_parser.cpp" break; - case 204: /* exists_expr: EXISTS '(' select_no_paren ')' */ -#line 926 "bison_parser.y" + case 205: /* exists_expr: EXISTS '(' select_no_paren ')' */ +#line 931 "bison_parser.y" { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 4517 "bison_parser.cpp" +#line 4519 "bison_parser.cpp" break; - case 205: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ -#line 927 "bison_parser.y" + case 206: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ +#line 932 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 4523 "bison_parser.cpp" +#line 4525 "bison_parser.cpp" break; - case 206: /* comp_expr: operand '=' operand */ -#line 929 "bison_parser.y" + case 207: /* comp_expr: operand '=' operand */ +#line 934 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4529 "bison_parser.cpp" +#line 4531 "bison_parser.cpp" break; - case 207: /* comp_expr: operand EQUALS operand */ -#line 930 "bison_parser.y" + case 208: /* comp_expr: operand EQUALS operand */ +#line 935 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4535 "bison_parser.cpp" +#line 4537 "bison_parser.cpp" break; - case 208: /* comp_expr: operand NOTEQUALS operand */ -#line 931 "bison_parser.y" + case 209: /* comp_expr: operand NOTEQUALS operand */ +#line 936 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 4541 "bison_parser.cpp" +#line 4543 "bison_parser.cpp" break; - case 209: /* comp_expr: operand '<' operand */ -#line 932 "bison_parser.y" + case 210: /* comp_expr: operand '<' operand */ +#line 937 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 4547 "bison_parser.cpp" +#line 4549 "bison_parser.cpp" break; - case 210: /* comp_expr: operand '>' operand */ -#line 933 "bison_parser.y" + case 211: /* comp_expr: operand '>' operand */ +#line 938 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 4553 "bison_parser.cpp" +#line 4555 "bison_parser.cpp" break; - case 211: /* comp_expr: operand LESSEQ operand */ -#line 934 "bison_parser.y" + case 212: /* comp_expr: operand LESSEQ operand */ +#line 939 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 4559 "bison_parser.cpp" +#line 4561 "bison_parser.cpp" break; - case 212: /* comp_expr: operand GREATEREQ operand */ -#line 935 "bison_parser.y" + case 213: /* comp_expr: operand GREATEREQ operand */ +#line 940 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 4565 "bison_parser.cpp" +#line 4567 "bison_parser.cpp" break; - case 213: /* function_expr: IDENTIFIER '(' ')' */ -#line 937 "bison_parser.y" + case 214: /* function_expr: IDENTIFIER '(' ')' */ +#line 942 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } -#line 4571 "bison_parser.cpp" +#line 4573 "bison_parser.cpp" break; - case 214: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' */ -#line 938 "bison_parser.y" + case 215: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' */ +#line 943 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 4577 "bison_parser.cpp" +#line 4579 "bison_parser.cpp" break; - case 215: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 940 "bison_parser.y" + case 216: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ +#line 945 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 4583 "bison_parser.cpp" +#line 4585 "bison_parser.cpp" break; - case 216: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 942 "bison_parser.y" + case 217: /* cast_expr: CAST '(' expr AS column_type ')' */ +#line 947 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4589 "bison_parser.cpp" +#line 4591 "bison_parser.cpp" break; - case 217: /* datetime_field: SECOND */ -#line 944 "bison_parser.y" + case 218: /* datetime_field: SECOND */ +#line 949 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4595 "bison_parser.cpp" +#line 4597 "bison_parser.cpp" break; - case 218: /* datetime_field: MINUTE */ -#line 945 "bison_parser.y" + case 219: /* datetime_field: MINUTE */ +#line 950 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4601 "bison_parser.cpp" +#line 4603 "bison_parser.cpp" break; - case 219: /* datetime_field: HOUR */ -#line 946 "bison_parser.y" + case 220: /* datetime_field: HOUR */ +#line 951 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4607 "bison_parser.cpp" +#line 4609 "bison_parser.cpp" break; - case 220: /* datetime_field: DAY */ -#line 947 "bison_parser.y" + case 221: /* datetime_field: DAY */ +#line 952 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4613 "bison_parser.cpp" +#line 4615 "bison_parser.cpp" break; - case 221: /* datetime_field: MONTH */ -#line 948 "bison_parser.y" + case 222: /* datetime_field: MONTH */ +#line 953 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4619 "bison_parser.cpp" +#line 4621 "bison_parser.cpp" break; - case 222: /* datetime_field: YEAR */ -#line 949 "bison_parser.y" + case 223: /* datetime_field: YEAR */ +#line 954 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4625 "bison_parser.cpp" +#line 4627 "bison_parser.cpp" break; - case 223: /* datetime_field_plural: SECONDS */ -#line 951 "bison_parser.y" + case 224: /* datetime_field_plural: SECONDS */ +#line 956 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4631 "bison_parser.cpp" +#line 4633 "bison_parser.cpp" break; - case 224: /* datetime_field_plural: MINUTES */ -#line 952 "bison_parser.y" + case 225: /* datetime_field_plural: MINUTES */ +#line 957 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4637 "bison_parser.cpp" +#line 4639 "bison_parser.cpp" break; - case 225: /* datetime_field_plural: HOURS */ -#line 953 "bison_parser.y" + case 226: /* datetime_field_plural: HOURS */ +#line 958 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4643 "bison_parser.cpp" +#line 4645 "bison_parser.cpp" break; - case 226: /* datetime_field_plural: DAYS */ -#line 954 "bison_parser.y" + case 227: /* datetime_field_plural: DAYS */ +#line 959 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4649 "bison_parser.cpp" +#line 4651 "bison_parser.cpp" break; - case 227: /* datetime_field_plural: MONTHS */ -#line 955 "bison_parser.y" + case 228: /* datetime_field_plural: MONTHS */ +#line 960 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4655 "bison_parser.cpp" +#line 4657 "bison_parser.cpp" break; - case 228: /* datetime_field_plural: YEARS */ -#line 956 "bison_parser.y" + case 229: /* datetime_field_plural: YEARS */ +#line 961 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4661 "bison_parser.cpp" +#line 4663 "bison_parser.cpp" break; - case 231: /* array_expr: ARRAY '[' expr_list ']' */ -#line 960 "bison_parser.y" + case 232: /* array_expr: ARRAY '[' expr_list ']' */ +#line 965 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 4667 "bison_parser.cpp" +#line 4669 "bison_parser.cpp" break; - case 232: /* array_index: operand '[' int_literal ']' */ -#line 962 "bison_parser.y" + case 233: /* array_index: operand '[' int_literal ']' */ +#line 967 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 4673 "bison_parser.cpp" +#line 4675 "bison_parser.cpp" break; - case 233: /* between_expr: operand BETWEEN operand AND operand */ -#line 964 "bison_parser.y" + case 234: /* between_expr: operand BETWEEN operand AND operand */ +#line 969 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4679 "bison_parser.cpp" +#line 4681 "bison_parser.cpp" break; - case 234: /* column_name: IDENTIFIER */ -#line 966 "bison_parser.y" + case 235: /* column_name: IDENTIFIER */ +#line 971 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 4685 "bison_parser.cpp" +#line 4687 "bison_parser.cpp" break; - case 235: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 967 "bison_parser.y" + case 236: /* column_name: IDENTIFIER '.' IDENTIFIER */ +#line 972 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 4691 "bison_parser.cpp" +#line 4693 "bison_parser.cpp" break; - case 236: /* column_name: '*' */ -#line 968 "bison_parser.y" + case 237: /* column_name: '*' */ +#line 973 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 4697 "bison_parser.cpp" +#line 4699 "bison_parser.cpp" break; - case 237: /* column_name: IDENTIFIER '.' '*' */ -#line 969 "bison_parser.y" + case 238: /* column_name: IDENTIFIER '.' '*' */ +#line 974 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 4703 "bison_parser.cpp" +#line 4705 "bison_parser.cpp" break; - case 245: /* string_literal: STRING */ -#line 973 "bison_parser.y" + case 246: /* string_literal: STRING */ +#line 978 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 4709 "bison_parser.cpp" +#line 4711 "bison_parser.cpp" break; - case 246: /* bool_literal: TRUE */ -#line 975 "bison_parser.y" + case 247: /* bool_literal: TRUE */ +#line 980 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 4715 "bison_parser.cpp" +#line 4717 "bison_parser.cpp" break; - case 247: /* bool_literal: FALSE */ -#line 976 "bison_parser.y" + case 248: /* bool_literal: FALSE */ +#line 981 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 4721 "bison_parser.cpp" +#line 4723 "bison_parser.cpp" break; - case 248: /* num_literal: FLOATVAL */ -#line 978 "bison_parser.y" + case 249: /* num_literal: FLOATVAL */ +#line 983 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 4727 "bison_parser.cpp" +#line 4729 "bison_parser.cpp" break; - case 250: /* int_literal: INTVAL */ -#line 981 "bison_parser.y" + case 251: /* int_literal: INTVAL */ +#line 986 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 4733 "bison_parser.cpp" +#line 4735 "bison_parser.cpp" break; - case 251: /* null_literal: NULL */ -#line 983 "bison_parser.y" + case 252: /* null_literal: NULL */ +#line 988 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 4739 "bison_parser.cpp" +#line 4741 "bison_parser.cpp" break; - case 252: /* date_literal: DATE STRING */ -#line 985 "bison_parser.y" + case 253: /* date_literal: DATE STRING */ +#line 990 "bison_parser.y" { int day{0}, month{0}, year{0}, chars_parsed{0}; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character @@ -4750,20 +4752,20 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeDateLiteral((yyvsp[0].sval)); } -#line 4754 "bison_parser.cpp" +#line 4756 "bison_parser.cpp" break; - case 253: /* interval_literal: int_literal duration_field */ -#line 996 "bison_parser.y" + case 254: /* interval_literal: int_literal duration_field */ +#line 1001 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].expr)->ival, (yyvsp[0].datetime_field)); delete (yyvsp[-1].expr); } -#line 4763 "bison_parser.cpp" +#line 4765 "bison_parser.cpp" break; - case 254: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1000 "bison_parser.y" + case 255: /* interval_literal: INTERVAL STRING datetime_field */ +#line 1005 "bison_parser.y" { int duration{0}, chars_parsed{0}; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character @@ -4775,11 +4777,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].sval)); (yyval.expr) = Expr::makeIntervalLiteral(duration, (yyvsp[0].datetime_field)); } -#line 4779 "bison_parser.cpp" +#line 4781 "bison_parser.cpp" break; - case 255: /* interval_literal: INTERVAL STRING */ -#line 1011 "bison_parser.y" + case 256: /* interval_literal: INTERVAL STRING */ +#line 1016 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -4811,61 +4813,61 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeIntervalLiteral(duration, unit); } -#line 4815 "bison_parser.cpp" +#line 4817 "bison_parser.cpp" break; - case 256: /* param_expr: '?' */ -#line 1043 "bison_parser.y" + case 257: /* param_expr: '?' */ +#line 1048 "bison_parser.y" { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); yyloc.param_list.push_back((yyval.expr)); } -#line 4825 "bison_parser.cpp" +#line 4827 "bison_parser.cpp" break; - case 258: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1052 "bison_parser.y" + case 259: /* table_ref: table_ref_commalist ',' table_ref_atomic */ +#line 1057 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); auto tbl = new TableRef(kTableCrossProduct); tbl->list = (yyvsp[-2].table_vec); (yyval.table) = tbl; } -#line 4836 "bison_parser.cpp" +#line 4838 "bison_parser.cpp" break; - case 262: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1061 "bison_parser.y" + case 263: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ +#line 1066 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 4847 "bison_parser.cpp" +#line 4849 "bison_parser.cpp" break; - case 263: /* table_ref_commalist: table_ref_atomic */ -#line 1068 "bison_parser.y" + case 264: /* table_ref_commalist: table_ref_atomic */ +#line 1073 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 4856 "bison_parser.cpp" +#line 4858 "bison_parser.cpp" break; - case 264: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1072 "bison_parser.y" + case 265: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ +#line 1077 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 4865 "bison_parser.cpp" +#line 4867 "bison_parser.cpp" break; - case 265: /* table_ref_name: table_name opt_table_alias */ -#line 1077 "bison_parser.y" + case 266: /* table_ref_name: table_name opt_table_alias */ +#line 1082 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -4873,121 +4875,121 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 4877 "bison_parser.cpp" +#line 4879 "bison_parser.cpp" break; - case 266: /* table_ref_name_no_alias: table_name */ -#line 1085 "bison_parser.y" + case 267: /* table_ref_name_no_alias: table_name */ +#line 1090 "bison_parser.y" { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; (yyval.table)->name = (yyvsp[0].table_name).name; } -#line 4887 "bison_parser.cpp" +#line 4889 "bison_parser.cpp" break; - case 267: /* table_name: IDENTIFIER */ -#line 1091 "bison_parser.y" + case 268: /* table_name: IDENTIFIER */ +#line 1096 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval); } -#line 4896 "bison_parser.cpp" +#line 4898 "bison_parser.cpp" break; - case 268: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1095 "bison_parser.y" + case 269: /* table_name: IDENTIFIER '.' IDENTIFIER */ +#line 1100 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 4905 "bison_parser.cpp" +#line 4907 "bison_parser.cpp" break; - case 269: /* opt_index_name: IDENTIFIER */ -#line 1100 "bison_parser.y" + case 270: /* opt_index_name: IDENTIFIER */ +#line 1105 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 4911 "bison_parser.cpp" +#line 4913 "bison_parser.cpp" break; - case 270: /* opt_index_name: %empty */ -#line 1101 "bison_parser.y" + case 271: /* opt_index_name: %empty */ +#line 1106 "bison_parser.y" { (yyval.sval) = nullptr; } -#line 4917 "bison_parser.cpp" +#line 4919 "bison_parser.cpp" break; - case 272: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1103 "bison_parser.y" + case 273: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ +#line 1108 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 4923 "bison_parser.cpp" +#line 4925 "bison_parser.cpp" break; - case 274: /* opt_table_alias: %empty */ -#line 1105 "bison_parser.y" + case 275: /* opt_table_alias: %empty */ +#line 1110 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 4929 "bison_parser.cpp" +#line 4931 "bison_parser.cpp" break; - case 275: /* alias: AS IDENTIFIER */ -#line 1107 "bison_parser.y" + case 276: /* alias: AS IDENTIFIER */ +#line 1112 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 4935 "bison_parser.cpp" +#line 4937 "bison_parser.cpp" break; - case 276: /* alias: IDENTIFIER */ -#line 1108 "bison_parser.y" + case 277: /* alias: IDENTIFIER */ +#line 1113 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 4941 "bison_parser.cpp" +#line 4943 "bison_parser.cpp" break; - case 278: /* opt_alias: %empty */ -#line 1110 "bison_parser.y" + case 279: /* opt_alias: %empty */ +#line 1115 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 4947 "bison_parser.cpp" +#line 4949 "bison_parser.cpp" break; - case 280: /* opt_with_clause: %empty */ -#line 1116 "bison_parser.y" + case 281: /* opt_with_clause: %empty */ +#line 1121 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 4953 "bison_parser.cpp" +#line 4955 "bison_parser.cpp" break; - case 281: /* with_clause: WITH with_description_list */ -#line 1118 "bison_parser.y" + case 282: /* with_clause: WITH with_description_list */ +#line 1123 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 4959 "bison_parser.cpp" +#line 4961 "bison_parser.cpp" break; - case 282: /* with_description_list: with_description */ -#line 1120 "bison_parser.y" + case 283: /* with_description_list: with_description */ +#line 1125 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 4968 "bison_parser.cpp" +#line 4970 "bison_parser.cpp" break; - case 283: /* with_description_list: with_description_list ',' with_description */ -#line 1124 "bison_parser.y" + case 284: /* with_description_list: with_description_list ',' with_description */ +#line 1129 "bison_parser.y" { (yyvsp[-2].with_description_vec)->push_back((yyvsp[0].with_description_t)); (yyval.with_description_vec) = (yyvsp[-2].with_description_vec); } -#line 4977 "bison_parser.cpp" +#line 4979 "bison_parser.cpp" break; - case 284: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1129 "bison_parser.y" + case 285: /* with_description: IDENTIFIER AS select_with_paren */ +#line 1134 "bison_parser.y" { (yyval.with_description_t) = new WithDescription(); (yyval.with_description_t)->alias = (yyvsp[-2].sval); (yyval.with_description_t)->select = (yyvsp[0].select_stmt); } -#line 4987 "bison_parser.cpp" +#line 4989 "bison_parser.cpp" break; - case 285: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1139 "bison_parser.y" + case 286: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ +#line 1144 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -4995,11 +4997,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 4999 "bison_parser.cpp" +#line 5001 "bison_parser.cpp" break; - case 286: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1146 "bison_parser.y" + case 287: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ +#line 1151 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5008,11 +5010,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 5012 "bison_parser.cpp" +#line 5014 "bison_parser.cpp" break; - case 287: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' column_name ')' */ -#line 1154 "bison_parser.y" + case 288: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' column_name ')' */ +#line 1159 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5028,89 +5030,89 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 5032 "bison_parser.cpp" +#line 5034 "bison_parser.cpp" break; - case 288: /* opt_join_type: INNER */ -#line 1170 "bison_parser.y" + case 289: /* opt_join_type: INNER */ +#line 1175 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5038 "bison_parser.cpp" +#line 5040 "bison_parser.cpp" break; - case 289: /* opt_join_type: LEFT OUTER */ -#line 1171 "bison_parser.y" + case 290: /* opt_join_type: LEFT OUTER */ +#line 1176 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5044 "bison_parser.cpp" +#line 5046 "bison_parser.cpp" break; - case 290: /* opt_join_type: LEFT */ -#line 1172 "bison_parser.y" + case 291: /* opt_join_type: LEFT */ +#line 1177 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5050 "bison_parser.cpp" +#line 5052 "bison_parser.cpp" break; - case 291: /* opt_join_type: RIGHT OUTER */ -#line 1173 "bison_parser.y" + case 292: /* opt_join_type: RIGHT OUTER */ +#line 1178 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5056 "bison_parser.cpp" +#line 5058 "bison_parser.cpp" break; - case 292: /* opt_join_type: RIGHT */ -#line 1174 "bison_parser.y" + case 293: /* opt_join_type: RIGHT */ +#line 1179 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5062 "bison_parser.cpp" +#line 5064 "bison_parser.cpp" break; - case 293: /* opt_join_type: FULL OUTER */ -#line 1175 "bison_parser.y" + case 294: /* opt_join_type: FULL OUTER */ +#line 1180 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5068 "bison_parser.cpp" +#line 5070 "bison_parser.cpp" break; - case 294: /* opt_join_type: OUTER */ -#line 1176 "bison_parser.y" + case 295: /* opt_join_type: OUTER */ +#line 1181 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5074 "bison_parser.cpp" +#line 5076 "bison_parser.cpp" break; - case 295: /* opt_join_type: FULL */ -#line 1177 "bison_parser.y" + case 296: /* opt_join_type: FULL */ +#line 1182 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5080 "bison_parser.cpp" +#line 5082 "bison_parser.cpp" break; - case 296: /* opt_join_type: CROSS */ -#line 1178 "bison_parser.y" + case 297: /* opt_join_type: CROSS */ +#line 1183 "bison_parser.y" { (yyval.join_type) = kJoinCross; } -#line 5086 "bison_parser.cpp" +#line 5088 "bison_parser.cpp" break; - case 297: /* opt_join_type: %empty */ -#line 1179 "bison_parser.y" + case 298: /* opt_join_type: %empty */ +#line 1184 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5092 "bison_parser.cpp" +#line 5094 "bison_parser.cpp" break; - case 301: /* ident_commalist: IDENTIFIER */ -#line 1190 "bison_parser.y" + case 302: /* ident_commalist: IDENTIFIER */ +#line 1195 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 5101 "bison_parser.cpp" +#line 5103 "bison_parser.cpp" break; - case 302: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1194 "bison_parser.y" + case 303: /* ident_commalist: ident_commalist ',' IDENTIFIER */ +#line 1199 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 5110 "bison_parser.cpp" +#line 5112 "bison_parser.cpp" break; -#line 5114 "bison_parser.cpp" +#line 5116 "bison_parser.cpp" default: break; } @@ -5187,7 +5189,7 @@ YYLTYPE yylloc = yyloc_default; } yyerror (&yylloc, result, scanner, yymsgp); if (yysyntax_error_status == YYENOMEM) - goto yyexhaustedlab; + YYNOMEM; } } @@ -5224,6 +5226,7 @@ YYLTYPE yylloc = yyloc_default; label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; + ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -5287,7 +5290,7 @@ YYLTYPE yylloc = yyloc_default; `-------------------------------------*/ yyacceptlab: yyresult = 0; - goto yyreturn; + goto yyreturnlab; /*-----------------------------------. @@ -5295,24 +5298,22 @@ YYLTYPE yylloc = yyloc_default; `-----------------------------------*/ yyabortlab: yyresult = 1; - goto yyreturn; + goto yyreturnlab; -#if 1 -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ yyexhaustedlab: yyerror (&yylloc, result, scanner, YY_("memory exhausted")); yyresult = 2; - goto yyreturn; -#endif + goto yyreturnlab; -/*-------------------------------------------------------. -| yyreturn -- parsing is finished, clean up and return. | -`-------------------------------------------------------*/ -yyreturn: +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: if (yychar != SQL_HSQL_EMPTY) { /* Make sure we have latest lookahead translation. See comments at @@ -5340,11 +5341,11 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1200 "bison_parser.y" +#line 1205 "bison_parser.y" - // clang-format on - /********************************* +// clang-format on +/********************************* ** Section 4: Additional C code *********************************/ - /* empty */ +/* empty */ diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index 31ea8bd5..e0703d38 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.7.5. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison interface for Yacc-like parsers in C @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -36,27 +36,27 @@ private implementation details that can be changed or removed. */ #ifndef YY_HSQL_BISON_PARSER_H_INCLUDED -# define YY_HSQL_BISON_PARSER_H_INCLUDED +#define YY_HSQL_BISON_PARSER_H_INCLUDED /* Debug traces. */ #ifndef HSQL_DEBUG -# if defined YYDEBUG +#if defined YYDEBUG #if YYDEBUG -# define HSQL_DEBUG 1 -# else -# define HSQL_DEBUG 0 -# endif -# else /* ! defined YYDEBUG */ -# define HSQL_DEBUG 0 -# endif /* ! defined YYDEBUG */ -#endif /* ! defined HSQL_DEBUG */ +#define HSQL_DEBUG 1 +#else +#define HSQL_DEBUG 0 +#endif +#else /* ! defined YYDEBUG */ +#define HSQL_DEBUG 0 +#endif /* ! defined YYDEBUG */ +#endif /* ! defined HSQL_DEBUG */ #if HSQL_DEBUG extern int hsql_debug; #endif /* "%code requires" blocks. */ #line 38 "bison_parser.y" - // clang-format on - // %code requires block +// clang-format on +// %code requires block #include "../SQLParserResult.h" #include "../sql/statements.h" @@ -81,181 +81,180 @@ extern int hsql_debug; /* Token kinds. */ #ifndef HSQL_TOKENTYPE -# define HSQL_TOKENTYPE - enum hsql_tokentype - { - SQL_HSQL_EMPTY = -2, - SQL_YYEOF = 0, /* "end of file" */ - SQL_HSQL_error = 256, /* error */ - SQL_HSQL_UNDEF = 257, /* "invalid token" */ - SQL_IDENTIFIER = 258, /* IDENTIFIER */ - SQL_STRING = 259, /* STRING */ - SQL_FLOATVAL = 260, /* FLOATVAL */ - SQL_INTVAL = 261, /* INTVAL */ - SQL_DEALLOCATE = 262, /* DEALLOCATE */ - SQL_PARAMETERS = 263, /* PARAMETERS */ - SQL_INTERSECT = 264, /* INTERSECT */ - SQL_TEMPORARY = 265, /* TEMPORARY */ - SQL_TIMESTAMP = 266, /* TIMESTAMP */ - SQL_DISTINCT = 267, /* DISTINCT */ - SQL_NVARCHAR = 268, /* NVARCHAR */ - SQL_RESTRICT = 269, /* RESTRICT */ - SQL_TRUNCATE = 270, /* TRUNCATE */ - SQL_ANALYZE = 271, /* ANALYZE */ - SQL_BETWEEN = 272, /* BETWEEN */ - SQL_CASCADE = 273, /* CASCADE */ - SQL_COLUMNS = 274, /* COLUMNS */ - SQL_CONTROL = 275, /* CONTROL */ - SQL_DEFAULT = 276, /* DEFAULT */ - SQL_EXECUTE = 277, /* EXECUTE */ - SQL_EXPLAIN = 278, /* EXPLAIN */ - SQL_INTEGER = 279, /* INTEGER */ - SQL_NATURAL = 280, /* NATURAL */ - SQL_PREPARE = 281, /* PREPARE */ - SQL_PRIMARY = 282, /* PRIMARY */ - SQL_SCHEMAS = 283, /* SCHEMAS */ - SQL_CHARACTER = 284, /* CHARACTER */ - SQL_VARYING = 285, /* VARYING */ - SQL_REAL = 286, /* REAL */ - SQL_DECIMAL = 287, /* DECIMAL */ - SQL_SPATIAL = 288, /* SPATIAL */ - SQL_VARCHAR = 289, /* VARCHAR */ - SQL_VIRTUAL = 290, /* VIRTUAL */ - SQL_DESCRIBE = 291, /* DESCRIBE */ - SQL_BEFORE = 292, /* BEFORE */ - SQL_COLUMN = 293, /* COLUMN */ - SQL_CREATE = 294, /* CREATE */ - SQL_DELETE = 295, /* DELETE */ - SQL_DIRECT = 296, /* DIRECT */ - SQL_DOUBLE = 297, /* DOUBLE */ - SQL_ESCAPE = 298, /* ESCAPE */ - SQL_EXCEPT = 299, /* EXCEPT */ - SQL_EXISTS = 300, /* EXISTS */ - SQL_EXTRACT = 301, /* EXTRACT */ - SQL_CAST = 302, /* CAST */ - SQL_FORMAT = 303, /* FORMAT */ - SQL_GLOBAL = 304, /* GLOBAL */ - SQL_HAVING = 305, /* HAVING */ - SQL_IMPORT = 306, /* IMPORT */ - SQL_INSERT = 307, /* INSERT */ - SQL_ISNULL = 308, /* ISNULL */ - SQL_OFFSET = 309, /* OFFSET */ - SQL_RENAME = 310, /* RENAME */ - SQL_SCHEMA = 311, /* SCHEMA */ - SQL_SELECT = 312, /* SELECT */ - SQL_SORTED = 313, /* SORTED */ - SQL_TABLES = 314, /* TABLES */ - SQL_UNIQUE = 315, /* UNIQUE */ - SQL_UNLOAD = 316, /* UNLOAD */ - SQL_UPDATE = 317, /* UPDATE */ - SQL_VALUES = 318, /* VALUES */ - SQL_AFTER = 319, /* AFTER */ - SQL_ALTER = 320, /* ALTER */ - SQL_CROSS = 321, /* CROSS */ - SQL_DELTA = 322, /* DELTA */ - SQL_FLOAT = 323, /* FLOAT */ - SQL_GROUP = 324, /* GROUP */ - SQL_INDEX = 325, /* INDEX */ - SQL_INNER = 326, /* INNER */ - SQL_LIMIT = 327, /* LIMIT */ - SQL_LOCAL = 328, /* LOCAL */ - SQL_MERGE = 329, /* MERGE */ - SQL_MINUS = 330, /* MINUS */ - SQL_ORDER = 331, /* ORDER */ - SQL_OUTER = 332, /* OUTER */ - SQL_RIGHT = 333, /* RIGHT */ - SQL_TABLE = 334, /* TABLE */ - SQL_UNION = 335, /* UNION */ - SQL_USING = 336, /* USING */ - SQL_WHERE = 337, /* WHERE */ - SQL_CALL = 338, /* CALL */ - SQL_CASE = 339, /* CASE */ - SQL_CHAR = 340, /* CHAR */ - SQL_COPY = 341, /* COPY */ - SQL_DATE = 342, /* DATE */ - SQL_DATETIME = 343, /* DATETIME */ - SQL_DESC = 344, /* DESC */ - SQL_DROP = 345, /* DROP */ - SQL_ELSE = 346, /* ELSE */ - SQL_FILE = 347, /* FILE */ - SQL_FROM = 348, /* FROM */ - SQL_FULL = 349, /* FULL */ - SQL_HASH = 350, /* HASH */ - SQL_HINT = 351, /* HINT */ - SQL_INTO = 352, /* INTO */ - SQL_JOIN = 353, /* JOIN */ - SQL_LEFT = 354, /* LEFT */ - SQL_LIKE = 355, /* LIKE */ - SQL_LOAD = 356, /* LOAD */ - SQL_LONG = 357, /* LONG */ - SQL_NULL = 358, /* NULL */ - SQL_PLAN = 359, /* PLAN */ - SQL_SHOW = 360, /* SHOW */ - SQL_TEXT = 361, /* TEXT */ - SQL_THEN = 362, /* THEN */ - SQL_TIME = 363, /* TIME */ - SQL_VIEW = 364, /* VIEW */ - SQL_WHEN = 365, /* WHEN */ - SQL_WITH = 366, /* WITH */ - SQL_ADD = 367, /* ADD */ - SQL_ALL = 368, /* ALL */ - SQL_AND = 369, /* AND */ - SQL_ASC = 370, /* ASC */ - SQL_END = 371, /* END */ - SQL_FOR = 372, /* FOR */ - SQL_INT = 373, /* INT */ - SQL_KEY = 374, /* KEY */ - SQL_NOT = 375, /* NOT */ - SQL_OFF = 376, /* OFF */ - SQL_SET = 377, /* SET */ - SQL_TOP = 378, /* TOP */ - SQL_AS = 379, /* AS */ - SQL_BY = 380, /* BY */ - SQL_IF = 381, /* IF */ - SQL_IN = 382, /* IN */ - SQL_IS = 383, /* IS */ - SQL_OF = 384, /* OF */ - SQL_ON = 385, /* ON */ - SQL_OR = 386, /* OR */ - SQL_TO = 387, /* TO */ - SQL_ARRAY = 388, /* ARRAY */ - SQL_CONCAT = 389, /* CONCAT */ - SQL_ILIKE = 390, /* ILIKE */ - SQL_SECOND = 391, /* SECOND */ - SQL_MINUTE = 392, /* MINUTE */ - SQL_HOUR = 393, /* HOUR */ - SQL_DAY = 394, /* DAY */ - SQL_MONTH = 395, /* MONTH */ - SQL_YEAR = 396, /* YEAR */ - SQL_SECONDS = 397, /* SECONDS */ - SQL_MINUTES = 398, /* MINUTES */ - SQL_HOURS = 399, /* HOURS */ - SQL_DAYS = 400, /* DAYS */ - SQL_MONTHS = 401, /* MONTHS */ - SQL_YEARS = 402, /* YEARS */ - SQL_INTERVAL = 403, /* INTERVAL */ - SQL_TRUE = 404, /* TRUE */ - SQL_FALSE = 405, /* FALSE */ - SQL_TRANSACTION = 406, /* TRANSACTION */ - SQL_BEGIN = 407, /* BEGIN */ - SQL_COMMIT = 408, /* COMMIT */ - SQL_ROLLBACK = 409, /* ROLLBACK */ - SQL_EQUALS = 410, /* EQUALS */ - SQL_NOTEQUALS = 411, /* NOTEQUALS */ - SQL_LESS = 412, /* LESS */ - SQL_GREATER = 413, /* GREATER */ - SQL_LESSEQ = 414, /* LESSEQ */ - SQL_GREATEREQ = 415, /* GREATEREQ */ - SQL_NOTNULL = 416, /* NOTNULL */ - SQL_UMINUS = 417 /* UMINUS */ - }; - typedef enum hsql_tokentype hsql_token_kind_t; +#define HSQL_TOKENTYPE +enum hsql_tokentype { + SQL_HSQL_EMPTY = -2, + SQL_YYEOF = 0, /* "end of file" */ + SQL_HSQL_error = 256, /* error */ + SQL_HSQL_UNDEF = 257, /* "invalid token" */ + SQL_IDENTIFIER = 258, /* IDENTIFIER */ + SQL_STRING = 259, /* STRING */ + SQL_FLOATVAL = 260, /* FLOATVAL */ + SQL_INTVAL = 261, /* INTVAL */ + SQL_DEALLOCATE = 262, /* DEALLOCATE */ + SQL_PARAMETERS = 263, /* PARAMETERS */ + SQL_INTERSECT = 264, /* INTERSECT */ + SQL_TEMPORARY = 265, /* TEMPORARY */ + SQL_TIMESTAMP = 266, /* TIMESTAMP */ + SQL_DISTINCT = 267, /* DISTINCT */ + SQL_NVARCHAR = 268, /* NVARCHAR */ + SQL_RESTRICT = 269, /* RESTRICT */ + SQL_TRUNCATE = 270, /* TRUNCATE */ + SQL_ANALYZE = 271, /* ANALYZE */ + SQL_BETWEEN = 272, /* BETWEEN */ + SQL_CASCADE = 273, /* CASCADE */ + SQL_COLUMNS = 274, /* COLUMNS */ + SQL_CONTROL = 275, /* CONTROL */ + SQL_DEFAULT = 276, /* DEFAULT */ + SQL_EXECUTE = 277, /* EXECUTE */ + SQL_EXPLAIN = 278, /* EXPLAIN */ + SQL_INTEGER = 279, /* INTEGER */ + SQL_NATURAL = 280, /* NATURAL */ + SQL_PREPARE = 281, /* PREPARE */ + SQL_PRIMARY = 282, /* PRIMARY */ + SQL_SCHEMAS = 283, /* SCHEMAS */ + SQL_CHARACTER = 284, /* CHARACTER */ + SQL_VARYING = 285, /* VARYING */ + SQL_REAL = 286, /* REAL */ + SQL_DECIMAL = 287, /* DECIMAL */ + SQL_SMALLINT = 288, /* SMALLINT */ + SQL_SPATIAL = 289, /* SPATIAL */ + SQL_VARCHAR = 290, /* VARCHAR */ + SQL_VIRTUAL = 291, /* VIRTUAL */ + SQL_DESCRIBE = 292, /* DESCRIBE */ + SQL_BEFORE = 293, /* BEFORE */ + SQL_COLUMN = 294, /* COLUMN */ + SQL_CREATE = 295, /* CREATE */ + SQL_DELETE = 296, /* DELETE */ + SQL_DIRECT = 297, /* DIRECT */ + SQL_DOUBLE = 298, /* DOUBLE */ + SQL_ESCAPE = 299, /* ESCAPE */ + SQL_EXCEPT = 300, /* EXCEPT */ + SQL_EXISTS = 301, /* EXISTS */ + SQL_EXTRACT = 302, /* EXTRACT */ + SQL_CAST = 303, /* CAST */ + SQL_FORMAT = 304, /* FORMAT */ + SQL_GLOBAL = 305, /* GLOBAL */ + SQL_HAVING = 306, /* HAVING */ + SQL_IMPORT = 307, /* IMPORT */ + SQL_INSERT = 308, /* INSERT */ + SQL_ISNULL = 309, /* ISNULL */ + SQL_OFFSET = 310, /* OFFSET */ + SQL_RENAME = 311, /* RENAME */ + SQL_SCHEMA = 312, /* SCHEMA */ + SQL_SELECT = 313, /* SELECT */ + SQL_SORTED = 314, /* SORTED */ + SQL_TABLES = 315, /* TABLES */ + SQL_UNIQUE = 316, /* UNIQUE */ + SQL_UNLOAD = 317, /* UNLOAD */ + SQL_UPDATE = 318, /* UPDATE */ + SQL_VALUES = 319, /* VALUES */ + SQL_AFTER = 320, /* AFTER */ + SQL_ALTER = 321, /* ALTER */ + SQL_CROSS = 322, /* CROSS */ + SQL_DELTA = 323, /* DELTA */ + SQL_FLOAT = 324, /* FLOAT */ + SQL_GROUP = 325, /* GROUP */ + SQL_INDEX = 326, /* INDEX */ + SQL_INNER = 327, /* INNER */ + SQL_LIMIT = 328, /* LIMIT */ + SQL_LOCAL = 329, /* LOCAL */ + SQL_MERGE = 330, /* MERGE */ + SQL_MINUS = 331, /* MINUS */ + SQL_ORDER = 332, /* ORDER */ + SQL_OUTER = 333, /* OUTER */ + SQL_RIGHT = 334, /* RIGHT */ + SQL_TABLE = 335, /* TABLE */ + SQL_UNION = 336, /* UNION */ + SQL_USING = 337, /* USING */ + SQL_WHERE = 338, /* WHERE */ + SQL_CALL = 339, /* CALL */ + SQL_CASE = 340, /* CASE */ + SQL_CHAR = 341, /* CHAR */ + SQL_COPY = 342, /* COPY */ + SQL_DATE = 343, /* DATE */ + SQL_DATETIME = 344, /* DATETIME */ + SQL_DESC = 345, /* DESC */ + SQL_DROP = 346, /* DROP */ + SQL_ELSE = 347, /* ELSE */ + SQL_FILE = 348, /* FILE */ + SQL_FROM = 349, /* FROM */ + SQL_FULL = 350, /* FULL */ + SQL_HASH = 351, /* HASH */ + SQL_HINT = 352, /* HINT */ + SQL_INTO = 353, /* INTO */ + SQL_JOIN = 354, /* JOIN */ + SQL_LEFT = 355, /* LEFT */ + SQL_LIKE = 356, /* LIKE */ + SQL_LOAD = 357, /* LOAD */ + SQL_LONG = 358, /* LONG */ + SQL_NULL = 359, /* NULL */ + SQL_PLAN = 360, /* PLAN */ + SQL_SHOW = 361, /* SHOW */ + SQL_TEXT = 362, /* TEXT */ + SQL_THEN = 363, /* THEN */ + SQL_TIME = 364, /* TIME */ + SQL_VIEW = 365, /* VIEW */ + SQL_WHEN = 366, /* WHEN */ + SQL_WITH = 367, /* WITH */ + SQL_ADD = 368, /* ADD */ + SQL_ALL = 369, /* ALL */ + SQL_AND = 370, /* AND */ + SQL_ASC = 371, /* ASC */ + SQL_END = 372, /* END */ + SQL_FOR = 373, /* FOR */ + SQL_INT = 374, /* INT */ + SQL_KEY = 375, /* KEY */ + SQL_NOT = 376, /* NOT */ + SQL_OFF = 377, /* OFF */ + SQL_SET = 378, /* SET */ + SQL_TOP = 379, /* TOP */ + SQL_AS = 380, /* AS */ + SQL_BY = 381, /* BY */ + SQL_IF = 382, /* IF */ + SQL_IN = 383, /* IN */ + SQL_IS = 384, /* IS */ + SQL_OF = 385, /* OF */ + SQL_ON = 386, /* ON */ + SQL_OR = 387, /* OR */ + SQL_TO = 388, /* TO */ + SQL_ARRAY = 389, /* ARRAY */ + SQL_CONCAT = 390, /* CONCAT */ + SQL_ILIKE = 391, /* ILIKE */ + SQL_SECOND = 392, /* SECOND */ + SQL_MINUTE = 393, /* MINUTE */ + SQL_HOUR = 394, /* HOUR */ + SQL_DAY = 395, /* DAY */ + SQL_MONTH = 396, /* MONTH */ + SQL_YEAR = 397, /* YEAR */ + SQL_SECONDS = 398, /* SECONDS */ + SQL_MINUTES = 399, /* MINUTES */ + SQL_HOURS = 400, /* HOURS */ + SQL_DAYS = 401, /* DAYS */ + SQL_MONTHS = 402, /* MONTHS */ + SQL_YEARS = 403, /* YEARS */ + SQL_INTERVAL = 404, /* INTERVAL */ + SQL_TRUE = 405, /* TRUE */ + SQL_FALSE = 406, /* FALSE */ + SQL_TRANSACTION = 407, /* TRANSACTION */ + SQL_BEGIN = 408, /* BEGIN */ + SQL_COMMIT = 409, /* COMMIT */ + SQL_ROLLBACK = 410, /* ROLLBACK */ + SQL_EQUALS = 411, /* EQUALS */ + SQL_NOTEQUALS = 412, /* NOTEQUALS */ + SQL_LESS = 413, /* LESS */ + SQL_GREATER = 414, /* GREATER */ + SQL_LESSEQ = 415, /* LESSEQ */ + SQL_GREATEREQ = 416, /* GREATEREQ */ + SQL_NOTNULL = 417, /* NOTNULL */ + SQL_UMINUS = 418 /* UMINUS */ +}; +typedef enum hsql_tokentype hsql_token_kind_t; #endif /* Value type. */ -#if ! defined HSQL_STYPE && ! defined HSQL_STYPE_IS_DECLARED -union HSQL_STYPE -{ +#if !defined HSQL_STYPE && !defined HSQL_STYPE_IS_DECLARED +union HSQL_STYPE { #line 98 "bison_parser.y" // clang-format on @@ -284,7 +283,6 @@ union HSQL_STYPE hsql::Alias* alias_t; hsql::AlterAction* alter_action_t; hsql::ColumnDefinition* column_t; - hsql::ColumnSpecification column_specification_t; hsql::ColumnType column_type_t; hsql::ConstraintType column_constraint_t; hsql::DatetimeField datetime_field; @@ -314,30 +312,28 @@ union HSQL_STYPE std::vector* update_vec; std::vector* with_description_vec; -#line 318 "bison_parser.h" + std::pair* ival_pair; +#line 320 "bison_parser.h" }; typedef union HSQL_STYPE HSQL_STYPE; -# define HSQL_STYPE_IS_TRIVIAL 1 -# define HSQL_STYPE_IS_DECLARED 1 +#define HSQL_STYPE_IS_TRIVIAL 1 +#define HSQL_STYPE_IS_DECLARED 1 #endif /* Location type. */ -#if ! defined HSQL_LTYPE && ! defined HSQL_LTYPE_IS_DECLARED +#if !defined HSQL_LTYPE && !defined HSQL_LTYPE_IS_DECLARED typedef struct HSQL_LTYPE HSQL_LTYPE; -struct HSQL_LTYPE -{ +struct HSQL_LTYPE { int first_line; int first_column; int last_line; int last_column; }; -# define HSQL_LTYPE_IS_DECLARED 1 -# define HSQL_LTYPE_IS_TRIVIAL 1 +#define HSQL_LTYPE_IS_DECLARED 1 +#define HSQL_LTYPE_IS_TRIVIAL 1 #endif - - -int hsql_parse (hsql::SQLParserResult* result, yyscan_t scanner); +int hsql_parse(hsql::SQLParserResult* result, yyscan_t scanner); #endif /* !YY_HSQL_BISON_PARSER_H_INCLUDED */ diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 0527c0da..a64ade3f 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -122,7 +122,6 @@ hsql::Alias* alias_t; hsql::AlterAction* alter_action_t; hsql::ColumnDefinition* column_t; - hsql::ColumnSpecification column_specification_t; hsql::ColumnType column_type_t; hsql::ConstraintType column_constraint_t; hsql::DatetimeField datetime_field; @@ -151,13 +150,15 @@ std::vector* table_vec; std::vector* update_vec; std::vector* with_description_vec; + + std::pair* ival_pair; } /********************************* ** Destructor symbols *********************************/ // clang-format off - %destructor { } + %destructor { } %destructor { free( ($$.name) ); free( ($$.schema) ); } %destructor { free( ($$) ); } %destructor { @@ -182,7 +183,7 @@ %token DEALLOCATE PARAMETERS INTERSECT TEMPORARY TIMESTAMP %token DISTINCT NVARCHAR RESTRICT TRUNCATE ANALYZE BETWEEN %token CASCADE COLUMNS CONTROL DEFAULT EXECUTE EXPLAIN - %token INTEGER NATURAL PREPARE PRIMARY SCHEMAS CHARACTER VARYING REAL DECIMAL + %token INTEGER NATURAL PREPARE PRIMARY SCHEMAS CHARACTER VARYING REAL DECIMAL SMALLINT %token SPATIAL VARCHAR VIRTUAL DESCRIBE BEFORE COLUMN CREATE DELETE DIRECT %token DOUBLE ESCAPE EXCEPT EXISTS EXTRACT CAST FORMAT GLOBAL HAVING IMPORT %token INSERT ISNULL OFFSET RENAME SCHEMA SELECT SORTED @@ -220,8 +221,8 @@ %type opt_index_name %type file_path prepare_target_query %type opt_not_exists opt_exists opt_distinct opt_all - %type opt_decimal_specification - %type opt_time_specification + %type opt_decimal_specification + %type opt_time_precision %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 @@ -542,26 +543,30 @@ column_def : IDENTIFIER column_type opt_column_constraints { }; column_type : INT { $$ = ColumnType{DataType::INT}; } +| CHAR '(' INTVAL ')' { $$ = ColumnType{DataType::CHAR, $3}; } +| CHARACTER VARYING '(' INTVAL ')' { $$ = ColumnType{DataType::VARCHAR, $4}; } +| DATE { $$ = ColumnType{DataType::DATE}; }; +| DATETIME { $$ = ColumnType{DataType::DATETIME}; } +| DECIMAL opt_decimal_specification { + $$ = ColumnType{DataType::DECIMAL, 0, $2->first, $2->second}; + delete $2; +} +| DOUBLE { $$ = ColumnType{DataType::DOUBLE}; } +| FLOAT { $$ = ColumnType{DataType::FLOAT}; } | INTEGER { $$ = ColumnType{DataType::INT}; } | LONG { $$ = ColumnType{DataType::LONG}; } -| FLOAT { $$ = ColumnType{DataType::FLOAT}; } -| DECIMAL opt_decimal_specification { $$ = ColumnType{DataType::DECIMAL, 0, $2}; } -| DOUBLE { $$ = ColumnType{DataType::DOUBLE}; } | REAL { $$ = ColumnType{DataType::REAL}; } -| VARCHAR '(' INTVAL ')' { $$ = ColumnType{DataType::VARCHAR, $3}; } -| CHARACTER VARYING '(' INTVAL ')' { $$ = ColumnType{DataType::VARCHAR, $4}; } -| CHAR '(' INTVAL ')' { $$ = ColumnType{DataType::CHAR, $3}; } +| SMALLINT { $$ = ColumnType{DataType::SMALLINT}; } | TEXT { $$ = ColumnType{DataType::TEXT}; } -| TIME opt_time_specification { $$ = ColumnType{DataType::TIME, 0, $2}; } -| DATETIME { $$ = ColumnType{DataType::DATETIME}; } -| DATE { $$ = ColumnType{DataType::DATE}; }; +| TIME opt_time_precision { $$ = ColumnType{DataType::TIME, 0, $2}; } +| VARCHAR '(' INTVAL ')' { $$ = ColumnType{DataType::VARCHAR, $3}; } -opt_time_specification : '(' INTVAL ')' { $$ = ColumnSpecification{$2}; } -| /* empty */ { $$ = ColumnSpecification{}; }; +opt_time_precision : '(' INTVAL ')' { $$ = $2; } +| /* empty */ { $$ = 0; }; -opt_decimal_specification : '(' INTVAL ',' INTVAL ')' { $$ = ColumnSpecification{$2, $4}; } -| '(' INTVAL ')' { $$ = ColumnSpecification{$2}; } -| /* empty */ { $$ = ColumnSpecification{}; }; +opt_decimal_specification : '(' INTVAL ',' INTVAL ')' { $$ = new std::pair{$2, $4}; } +| '(' INTVAL ')' { $$ = new std::pair{$2, 0}; } +| /* empty */ { $$ = new std::pair{0, 0}; }; opt_column_constraints : column_constraint_list { $$ = $1; } | /* empty */ { $$ = new std::vector(); }; diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index ec3b86ac..f8983223 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,76 +573,77 @@ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1170] = { - 0, 0, 0, 168, 168, 2, 2, 172, 170, 4, 4, 170, 170, 159, 166, 159, 159, 163, 159, 159, 159, 165, 165, - 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 159, - 168, 169, 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, 154, 0, 1, 0, 161, - 160, 163, 156, 155, 153, 157, 165, 165, 165, - - 165, 165, 165, 125, 165, 126, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, - 165, 165, 165, 165, 165, 165, 165, 127, 165, 165, 128, 129, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, - 165, 130, 131, 132, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 133, 165, 165, - 165, 165, 165, 165, 165, 165, 165, 158, 168, 167, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 164, 0, 160, 113, 165, 114, 165, 165, 115, 165, 116, 165, 165, 165, 165, 165, 165, 165, 165, 165, - 165, 165, 165, 165, 137, 165, 165, 165, - - 165, 165, 165, 165, 165, 165, 165, 117, 165, 165, 165, 165, 165, 165, 165, 165, 165, 118, 165, 165, 165, 165, 165, - 165, 165, 165, 165, 165, 165, 165, 165, 119, 165, 165, 120, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 121, - 165, 165, 122, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 123, 165, 165, 165, 165, 165, - 165, 165, 165, 124, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - - 0, 165, 165, 165, 165, 165, 165, 165, 83, 165, 84, 46, 85, 165, 165, 165, 86, 165, 165, 87, 143, 165, 165, - 165, 165, 165, 89, 165, 165, 165, 90, 91, 165, 165, 165, 165, 165, 165, 165, 92, 165, 165, 93, 94, 165, 165, - 95, 165, 96, 136, 165, 165, 165, 165, 165, 165, 97, 165, 98, 99, 100, 165, 102, 165, 103, 165, 165, 165, 165, - 104, 165, 165, 165, 165, 165, 105, 165, 165, 34, 165, 165, 165, 165, 165, 165, 165, 106, 165, 165, 165, 165, 107, - 108, 32, 165, 146, 165, 165, 165, 165, - - 165, 165, 165, 165, 165, 110, 165, 111, 165, 112, 139, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, - 63, 64, 165, 65, 165, 149, 165, 165, 165, 165, 165, 165, 165, 66, 165, 165, 165, 165, 165, 67, 165, 165, 165, - 165, 165, 165, 165, 165, 165, 165, 147, 68, 165, 165, 69, 165, 142, 101, 165, 70, 71, 165, 165, 165, 165, 72, - 73, 74, 75, 165, 138, 165, 165, 165, 76, 77, 165, 165, 165, 165, 165, 78, 165, 165, 165, 165, 165, 165, 79, - 165, 165, 165, 165, 80, 165, 165, 165, - - 81, 165, 165, 165, 165, 82, 145, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 0, 165, 36, 165, 165, 165, 37, 151, - - 165, 38, 165, 165, 165, 165, 39, 165, 40, 165, 41, 42, 43, 165, 44, 165, 165, 47, 48, 49, 50, 51, 165, - 165, 165, 52, 135, 144, 165, 165, 53, 165, 165, 165, 54, 165, 165, 55, 134, 56, 57, 165, 58, 165, 165, 165, - 165, 59, 60, 61, 62, 165, 165, 165, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 15, 16, 17, 165, 18, 19, - 165, 165, 33, 20, 165, 165, 21, 22, 45, 23, 165, 165, 141, 24, 165, 165, 25, 26, 165, 165, 27, 140, 28, - 165, 165, 165, 165, 29, 31, 35, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 165, - 88, 165, 10, 11, 165, 152, 12, 165, - - 13, 150, 165, 165, 165, 14, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, - 30, 165, 7, 165, 8, 9, 165, 2, 2, 2, 2, 2, 2, 2, 2, 0, 5, 6, 165, 2, 2, 2, 2, - 0, 148, 2, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 162, 2, 0}; +static const flex_int16_t yy_accept[1184] = { + 0, 0, 0, 168, 168, 2, 2, 172, 170, 4, 4, 170, 170, 159, 166, 159, 159, 163, 159, 159, 159, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 159, 168, 169, 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, 154, 0, 1, 0, 161, 160, 163, 156, 155, 153, 157, 165, 165, 165, + + 165, 165, 165, 125, 165, 126, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 127, 165, 165, 128, 129, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 130, 131, 132, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 133, 165, 165, 165, 165, 165, 165, 165, 165, 165, 158, 168, 167, 2, 2, 2, 2, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 164, 0, 160, 113, 165, 114, 165, 165, 115, 165, + 116, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 137, 165, + + 165, 165, 165, 165, 165, 165, 165, 165, 165, 117, 165, 165, 165, 165, 165, 165, 165, 165, 165, 118, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 119, 165, 165, 120, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 121, 165, 165, 122, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 123, 165, 165, 165, 165, 165, 165, 165, 165, 165, 124, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 0, 165, 165, 165, 165, 165, 165, 165, 84, 165, 85, 47, 86, 165, 165, 165, 87, + 165, 165, 88, 143, 165, 165, 165, 165, 165, 90, 165, 165, 165, 91, 92, 165, 165, 165, 165, 165, 165, + 165, 93, 165, 165, 94, 95, 165, 165, 96, 165, 97, 136, 165, 165, 165, 165, 165, 165, 98, 165, 99, + 100, 101, 165, 103, 165, 104, 165, 165, 165, 165, 105, 165, 165, 165, 165, 165, 106, 165, 165, 34, 165, + 165, 165, 165, 165, 165, 165, 107, 165, 165, 165, 165, 165, 108, 109, 32, 165, + + 146, 165, 165, 165, 165, 165, 165, 165, 165, 165, 110, 165, 111, 165, 112, 139, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 0, 64, 65, 165, 66, 165, 149, 165, 165, 165, 165, 165, 165, 165, + 67, 165, 165, 165, 165, 165, 68, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 147, 69, 165, 165, + 70, 165, 142, 102, 165, 71, 72, 165, 165, 165, 165, 73, 74, 75, 76, 165, 138, 165, 165, 165, 77, + 78, 165, 165, 165, 165, 165, 79, 165, 165, 165, 165, 165, 165, 165, 80, 165, + + 165, 165, 165, 81, 165, 165, 165, 82, 165, 165, 165, 165, 83, 145, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 0, 165, 37, 165, 165, 165, 38, 151, 165, 39, 165, 165, 165, 165, 40, 165, 41, 165, 42, 43, 44, + 165, 45, 165, 165, 48, 49, 50, 51, 52, 165, 165, 165, 53, 135, 144, 165, 165, 54, 165, 165, 165, + 55, 165, 165, 56, 134, 57, 165, 58, 165, 59, 165, 165, 165, 165, 60, 61, 62, 63, 165, 165, 165, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 0, 15, 16, 17, 165, 18, 19, 165, 165, 33, 20, 165, 165, 21, 22, 46, + 23, 165, 165, 141, 24, 165, 165, 25, 26, 165, 165, 27, 140, 165, 28, 165, 165, 165, 165, 29, 31, + 36, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 0, 165, 89, 165, 10, 11, 165, 152, 12, 165, 13, 150, 35, 165, 165, 165, 14, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 30, 165, 7, 165, 8, + 9, 165, 2, 2, 2, 2, 2, 2, 2, 2, 0, 5, 6, 165, 2, 2, 2, 2, 0, 148, 2, + 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 162, 2, 0}; static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -662,173 +663,175 @@ static const YY_CHAR yy_meta[77] = {0, 1, 1, 2, 1, 3, 1, 4, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1}; -static const flex_int16_t yy_base[1177] = { - 0, 0, 0, 720, 709, 76, 0, 688, 4686, 151, 153, 647, 0, 4686, 4686, 149, 148, 160, 159, - 643, 625, 156, 156, 164, 162, 172, 223, 198, 211, 215, 151, 168, 210, 255, 257, 263, 262, 0, - 277, 307, 350, 284, 221, 258, 171, 564, 0, 609, 0, 295, 308, 586, 576, 0, 0, 331, 408, - 419, 321, 542, 512, 438, 514, 568, 620, 668, 720, 328, 426, 768, 329, 311, 434, 500, 820, 868, - 505, 421, 513, 918, 970, 515, 570, 455, 423, 450, 351, 4686, 520, 4686, 512, 1035, 1045, 1056, 4686, - 4686, 4686, 4686, 0, 174, 282, - - 336, 520, 296, 315, 557, 0, 345, 334, 568, 511, 327, 611, 570, 345, 419, 421, 441, 444, 631, - 469, 515, 520, 542, 555, 560, 559, 563, 609, 578, 605, 0, 618, 616, 665, 619, 628, 618, 643, - 664, 685, 650, 657, 667, 663, 669, 678, 690, 691, 0, 697, 683, 704, 722, 722, 750, 726, 722, - 728, 764, 724, 725, 743, 773, 764, 774, 770, 769, 796, 777, 788, 786, 787, 818, 822, 808, 828, - 4686, 0, 4686, 0, 389, 0, 512, 0, 499, 1066, 1076, 1087, 0, 0, 0, 0, 826, 835, 856, - 859, 913, 887, 872, 922, - - 905, 961, 962, 1080, 957, 1081, 1133, 1085, 1119, 1083, 1097, 1122, 1143, 1193, 1145, 1175, 1178, 959, 1196, - 1187, 1217, 1219, 1228, 1232, 1183, 1137, 1247, 1238, 1296, 1253, 1257, 1270, 1281, 1306, 1331, 1335, 1298, 1350, - 1346, 1349, 1365, 1383, 1380, 1374, 1405, 1402, 1413, 1415, 1414, 1450, 1454, 1448, 1469, 1478, 1480, 1502, 1508, - 1513, 1524, 1389, 1518, 1519, 1552, 1554, 1563, 1573, 1596, 1567, 1467, 1591, 1602, 0, 4686, 498, 1667, 0, - 825, 0, 833, 831, 0, 852, 0, 880, 916, 908, 937, 1619, 963, 962, 979, 1067, 1066, 1154, 1140, - 1159, 1159, 1178, 1232, 1264, - - 1315, 1288, 1292, 1278, 1339, 1333, 1360, 0, 1372, 1420, 1426, 1425, 1450, 1452, 1465, 1509, 1527, 1570, 1578, - 1590, 1611, 1596, 1612, 1617, 1622, 1627, 1635, 1635, 1647, 1660, 1662, 1663, 1649, 1657, 0, 1654, 1670, 1667, - 1676, 1680, 1675, 1676, 1663, 1665, 1665, 0, 1675, 1670, 1670, 1685, 1686, 1692, 1682, 1683, 1687, 1692, 1705, - 1699, 1713, 1710, 1719, 1710, 1723, 0, 1706, 1710, 1712, 1722, 1719, 1716, 1723, 1733, 0, 1725, 1736, 1725, - 1728, 1743, 1731, 1726, 1750, 1731, 1738, 1764, 1752, 1755, 0, 495, 1800, 1774, 1778, 1779, 1793, 1796, 1802, - 1811, 1808, 1817, 1832, 1833, - - 1841, 1847, 1856, 1850, 1865, 1871, 1881, 1899, 1890, 1882, 1907, 1916, 1920, 1915, 1941, 1932, 1933, 1949, 1958, - 1966, 1945, 1970, 1975, 1974, 1989, 2006, 2003, 2011, 2015, 2007, 2032, 2040, 2041, 2057, 2046, 2065, 2069, 2074, - 2080, 2090, 2109, 2113, 2098, 2111, 2114, 2139, 2128, 2126, 2143, 2152, 2154, 2164, 2178, 2169, 2180, 2183, 2197, - 2206, 2202, 2188, 2231, 2219, 2214, 2223, 2236, 2264, 2262, 2268, 2272, 2247, 2273, 2290, 2301, 2316, 2302, 2314, - 2313, 2318, 2326, 2327, 2352, 2355, 2357, 2366, 2376, 2370, 2378, 2391, 2401, 2414, 2409, 2420, 2422, 2439, 2452, - 2444, 2460, 2465, 2470, 2468, - - 491, 1799, 1802, 1799, 1837, 1874, 1964, 1981, 0, 2016, 0, 0, 2022, 2036, 2093, 2107, 0, 2178, 2262, - 2270, 0, 2301, 2348, 2364, 2373, 2410, 2417, 2478, 2479, 2477, 0, 0, 2482, 2483, 2480, 2483, 2508, 2510, - 2509, 0, 2498, 2518, 0, 0, 2520, 2507, 0, 2510, 0, 2508, 2524, 2513, 2508, 2515, 2516, 2535, 0, - 2523, 0, 0, 0, 2517, 0, 2527, 0, 2535, 2524, 2539, 2531, 0, 2549, 2550, 2539, 2545, 2552, 0, - 2567, 2571, 0, 2560, 2557, 2557, 2576, 2568, 2569, 2582, 0, 2581, 2578, 2583, 2574, 0, 0, 2572, 2574, - 0, 2591, 2582, 2576, 2597, - - 2581, 2596, 2601, 2599, 2600, 0, 2590, 0, 2612, 0, 2600, 474, 2617, 2622, 2626, 2627, 2632, 2651, 2636, - 2638, 2670, 2648, 2661, 2680, 2684, 2682, 2701, 2696, 2705, 2710, 2718, 2715, 2739, 2736, 2734, 2749, 2772, 2767, - 2784, 2770, 2778, 2788, 2793, 2810, 2816, 2802, 2824, 2832, 2838, 2806, 2842, 2860, 2850, 2847, 2856, 2868, 2881, - 2878, 2884, 2886, 2896, 2909, 2914, 2926, 2922, 2938, 2950, 2912, 2940, 2944, 2948, 2966, 2981, 2980, 2982, 2983, - 2984, 3005, 3014, 3022, 3006, 3038, 3037, 3054, 3055, 3051, 3050, 3060, 3076, 3073, 3104, 3105, 3106, 3114, 3108, - 3110, 3129, 3140, 3142, 3159, - - 3144, 3158, 3150, 3172, 3174, 3182, 3173, 3183, 3198, 3211, 3216, 3213, 3222, 3217, 3232, 3246, 3241, 3256, 3247, - 3265, 3270, 3275, 442, 0, 0, 2619, 0, 2650, 0, 2699, 2873, 2892, 2921, 2973, 2984, 3012, 0, 3014, - 3078, 3094, 3102, 3226, 0, 3253, 3256, 3269, 3280, 3281, 3267, 3271, 3273, 3287, 3298, 0, 0, 3285, 3294, - 0, 3302, 0, 0, 3291, 0, 0, 3295, 3311, 3307, 3308, 0, 0, 0, 0, 3319, 3306, 3329, 3323, - 3314, 0, 0, 3330, 3319, 3321, 3335, 3332, 0, 3343, 3344, 3342, 3328, 3345, 3349, 3335, 3337, 3339, 3359, - 3362, 0, 3360, 3365, 3365, - - 0, 3355, 3377, 3365, 3379, 0, 0, 441, 3378, 3379, 3383, 3388, 3389, 3393, 3394, 3412, 3397, 3428, 3427, - 3423, 3429, 3445, 3453, 3451, 3462, 3479, 3463, 3467, 3477, 3496, 3512, 3495, 3507, 3520, 3529, 3531, 3533, 3530, - 3541, 3546, 3569, 3563, 3565, 3579, 3574, 3575, 3598, 3587, 3600, 3604, 3603, 3615, 3637, 3628, 3633, 3638, 3641, - 3643, 3652, 3677, 3678, 3667, 3649, 3683, 3686, 3702, 3707, 3691, 3712, 3701, 3735, 3740, 3745, 3726, 3757, 3770, - 3761, 3776, 3779, 3778, 3795, 3780, 3809, 3811, 3812, 3813, 3814, 3824, 3843, 3849, 3830, 3846, 435, 3380, 0, - 3410, 3466, 3476, 3511, 0, - - 3575, 0, 3684, 3725, 3730, 3820, 0, 3851, 0, 3855, 0, 0, 0, 3854, 0, 3855, 3850, 0, 0, - 0, 0, 0, 3854, 3868, 3878, 0, 3864, 0, 3875, 3887, 0, 3869, 3885, 3866, 0, 3889, 3890, 3875, - 3883, 0, 0, 3891, 0, 3903, 3904, 3904, 3888, 0, 0, 0, 0, 3891, 3904, 3900, 434, 3908, 3917, - 3923, 3918, 3921, 3940, 3919, 3942, 3951, 3953, 3974, 3975, 3977, 3983, 3993, 3985, 4008, 3991, 3996, 4007, 4025, - 4026, 4039, 4029, 4031, 4037, 4041, 4042, 4047, 4050, 4060, 4083, 4065, 4081, 4082, 4091, 4100, 4099, 4116, 4113, - 4114, 4115, 4139, 4150, 4151, - - 4153, 4149, 4152, 4181, 4182, 4187, 4193, 4205, 4191, 4204, 4217, 4219, 4221, 4222, 4243, 4247, 429, 0, 0, - 0, 3920, 0, 0, 3952, 3961, 0, 0, 4105, 4102, 0, 0, 0, 0, 4159, 4161, 0, 0, 4172, - 4223, 0, 0, 4211, 4249, 0, 0, 0, 4243, 4249, 4243, 4259, 0, 0, 0, 404, 4260, 4271, 4273, - 4275, 4276, 4277, 4279, 4292, 4289, 4301, 4305, 4314, 4310, 4311, 4313, 4327, 4344, 4343, 4335, 4345, 4346, 4367, - 4368, 4376, 4384, 4400, 4378, 4381, 4389, 4397, 4421, 4419, 4418, 4422, 4430, 4432, 402, 4340, 0, 4360, 0, - 0, 4370, 0, 0, 4400, - - 0, 0, 4415, 4432, 4447, 0, 401, 4454, 4453, 4471, 4455, 4463, 4472, 4476, 4484, 4495, 4485, 4489, 4497, - 4526, 4521, 4507, 397, 0, 4493, 0, 4492, 0, 0, 4518, 396, 4529, 4530, 4538, 4547, 4539, 4543, 4562, - 383, 0, 0, 4542, 382, 4560, 4571, 4575, 376, 0, 342, 4581, 333, 331, 303, 291, 278, 255, 250, - 245, 243, 240, 235, 221, 226, 197, 187, 173, 4686, 0, 4686, 4655, 4660, 181, 4665, 4670, 4675, 4680}; - -static const flex_int16_t yy_def[1177] = { - 0, 1169, 1, 1170, 1170, 1169, 5, 1169, 1169, 1169, 1169, 1169, 1171, 1169, 1169, 1169, 1169, 1169, 1169, - 1169, 1169, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1169, 1173, 1169, 1174, 1174, 1169, 1174, 1175, 1174, 1174, 1174, 1174, - 1174, 1174, 1174, 1174, 1176, 1176, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 1174, 1169, 1169, 1171, 1169, 1169, 1169, 1169, 1169, 1169, - 1169, 1169, 1169, 1172, 1172, 1172, - - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1169, 1173, 1169, 1174, 1174, 1174, 1175, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 62, 62, 62, - 62, 62, 62, 62, 62, - - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1174, 1169, 1169, 1169, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, - - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1174, 1174, 1174, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, - - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, - - 1169, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, - - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1174, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, - - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 1169, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, - - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1174, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1169, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, - - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1174, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, - - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1169, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1174, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1169, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, - - 1172, 1172, 1172, 1172, 1172, 1172, 1174, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 1169, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1174, 62, 62, 62, 62, 62, 62, 62, - 1169, 1172, 1172, 1172, 1174, 62, 62, 62, 1169, 1172, 1174, 62, 1169, 1174, 1169, 1174, 1169, 1174, 1169, - 1174, 1169, 1174, 1169, 1174, 1169, 1174, 1169, 1174, 1169, 1174, 0, 1169, 1169, 1169, 1169, 1169, 1169, 1169}; - -static const flex_int16_t yy_nxt[4763] = { +static const flex_int16_t yy_base[1191] = { + 0, 0, 0, 574, 566, 76, 0, 568, 4751, 151, 153, 535, 0, 4751, 4751, 149, 148, 160, + 159, 532, 531, 156, 156, 164, 162, 172, 223, 198, 211, 215, 151, 168, 210, 255, 257, 263, + 262, 0, 277, 317, 360, 296, 221, 258, 171, 461, 0, 529, 0, 295, 308, 500, 515, 0, + 0, 317, 418, 429, 317, 496, 492, 448, 524, 578, 630, 678, 730, 338, 436, 778, 330, 319, + 349, 444, 830, 878, 500, 321, 511, 928, 980, 556, 512, 533, 431, 436, 347, 4751, 492, 4751, + 484, 1045, 1055, 1066, 4751, 4751, 4751, 4751, 0, 174, 253, + + 438, 469, 284, 318, 567, 0, 538, 339, 578, 361, 591, 621, 607, 417, 429, 436, 453, 489, + 641, 515, 521, 520, 537, 556, 568, 590, 594, 659, 601, 608, 0, 628, 625, 675, 633, 650, + 644, 674, 674, 697, 673, 679, 685, 681, 689, 701, 722, 726, 0, 729, 714, 719, 740, 738, + 766, 737, 734, 741, 776, 739, 776, 768, 786, 787, 785, 788, 782, 783, 800, 793, 796, 824, + 822, 832, 833, 819, 840, 4751, 0, 4751, 0, 399, 0, 460, 0, 452, 1076, 1086, 1097, 0, + 0, 0, 0, 838, 849, 866, 882, 923, 890, 934, + + 967, 868, 971, 1094, 1142, 952, 977, 1194, 1091, 1092, 1093, 1096, 1107, 1146, 1244, 1152, 1184, 1196, + 1185, 1200, 1229, 1230, 1252, 1270, 1265, 1278, 880, 1296, 1136, 1345, 1293, 1304, 1128, 1306, 1322, 1341, + 1226, 1347, 1370, 1268, 1358, 1375, 1384, 1398, 1234, 1413, 1401, 1410, 1424, 1415, 1456, 1434, 1466, 1455, + 1489, 1464, 1498, 1495, 1510, 1520, 1519, 1528, 1541, 1532, 1562, 1573, 1564, 1583, 1595, 1586, 1574, 1597, + 1596, 0, 4751, 450, 1662, 0, 837, 0, 844, 877, 0, 924, 0, 923, 970, 968, 981, 1640, + 1082, 1081, 1090, 1084, 1082, 1164, 1147, 1170, 1168, 1217, + + 1305, 1323, 1641, 1364, 1376, 1399, 1435, 1442, 1472, 0, 1482, 1507, 1526, 1512, 1522, 1558, 1617, 1632, + 1638, 1628, 1629, 1650, 1663, 1646, 1663, 1665, 1655, 1658, 1666, 1663, 1674, 1675, 1676, 1678, 1661, 1670, + 0, 1665, 1681, 1681, 1687, 1694, 1689, 1690, 1678, 1680, 1693, 0, 1703, 1698, 1700, 1716, 1720, 1727, + 1715, 1714, 1718, 1720, 1732, 1714, 1727, 1724, 1732, 1723, 1734, 0, 1717, 1732, 1725, 1727, 1737, 1734, + 1731, 1739, 1749, 0, 1754, 1765, 1758, 1754, 1781, 1769, 1763, 1782, 1763, 1767, 1774, 1781, 1772, 0, + 449, 1832, 1813, 1825, 1826, 1827, 1828, 1830, 1836, 1831, + + 1861, 1864, 1849, 1879, 1882, 1890, 1885, 1914, 1900, 1916, 1925, 1919, 1931, 1950, 1955, 1953, 1983, 1954, + 1967, 1968, 1993, 2007, 1998, 1985, 1999, 2021, 2022, 2039, 2033, 2043, 2038, 2061, 2052, 2071, 2076, 2087, + 2093, 2092, 2101, 2106, 2125, 2115, 2138, 2141, 2149, 2143, 2146, 2155, 2167, 2164, 2183, 2179, 2197, 2181, + 2205, 2221, 2222, 2231, 2235, 2234, 2256, 2243, 2246, 2265, 2267, 2275, 2284, 2288, 2300, 2297, 2310, 2305, + 2319, 2338, 2336, 2342, 2360, 2350, 2354, 2355, 2359, 2390, 2392, 2373, 2396, 2398, 2413, 2414, 2422, 2427, + 2428, 2444, 2450, 2472, 2463, 2485, 2467, 2501, 2468, 2498, + + 2507, 2520, 2535, 2526, 438, 1825, 1826, 1823, 1924, 1946, 2019, 2029, 0, 2087, 0, 0, 2101, 2096, + 2101, 2158, 0, 2174, 2186, 2198, 0, 2267, 2283, 2325, 2334, 2407, 2396, 2454, 2458, 2489, 0, 0, + 2493, 2513, 2514, 2521, 2541, 2545, 2542, 0, 2535, 2556, 0, 0, 2562, 2548, 0, 2552, 0, 2556, + 2571, 2559, 2555, 2562, 2563, 2576, 0, 2573, 0, 0, 0, 2566, 0, 2576, 0, 2584, 2576, 2584, + 2579, 0, 2595, 2594, 2582, 2583, 2592, 0, 2608, 2610, 0, 2601, 2599, 2598, 2618, 2616, 2616, 2628, + 0, 2621, 2629, 2626, 2632, 2624, 0, 0, 2621, 2623, + + 0, 2640, 2632, 2627, 2648, 2630, 2644, 2647, 2645, 2645, 0, 2634, 0, 2654, 0, 2644, 413, 2666, + 2667, 2663, 2669, 2678, 2688, 2682, 2684, 2699, 2700, 2701, 2734, 2732, 2733, 2723, 2738, 2751, 2742, 2772, + 2755, 2777, 2768, 2774, 2805, 2810, 2796, 2828, 2818, 2834, 2831, 2839, 2856, 2860, 2869, 2864, 2850, 2899, + 2882, 2888, 2890, 2904, 2893, 2901, 2918, 2923, 2933, 2947, 2939, 2944, 2942, 2955, 2957, 2979, 2987, 2988, + 2978, 3009, 2993, 3010, 3011, 3024, 3021, 3042, 3032, 3033, 3050, 3075, 3054, 3063, 3084, 3073, 3086, 3103, + 3107, 3098, 3112, 3121, 3129, 3138, 3140, 3137, 3166, 3161, + + 3162, 3172, 3174, 3195, 3183, 3200, 3191, 3206, 3205, 3214, 3235, 3236, 3217, 3248, 3245, 3251, 3270, 3259, + 3285, 3269, 3288, 3280, 3299, 3304, 3302, 3303, 3313, 3325, 409, 0, 0, 2691, 0, 2717, 0, 2773, + 2787, 2810, 2916, 2921, 2944, 2996, 0, 3014, 3051, 3091, 3117, 3128, 0, 3208, 3294, 3301, 3321, 3328, + 3319, 3323, 3327, 3338, 3345, 0, 0, 3329, 3346, 0, 3352, 0, 0, 3341, 0, 0, 3342, 3358, + 3345, 3356, 0, 0, 0, 0, 3364, 3353, 3377, 3371, 3360, 0, 0, 3376, 3364, 3365, 3379, 3378, + 0, 3391, 3392, 3393, 3378, 3391, 3397, 3401, 3384, 3386, + + 3392, 3412, 3414, 0, 3411, 3413, 3413, 0, 3402, 3421, 3409, 3425, 0, 0, 408, 3427, 3429, 3430, + 3432, 3433, 3441, 3442, 3464, 3467, 3446, 3481, 3475, 3483, 3486, 3500, 3497, 3509, 3518, 3499, 3515, 3537, + 3539, 3540, 3543, 3551, 3573, 3574, 3555, 3579, 3597, 3585, 3591, 3608, 3607, 3609, 3631, 3619, 3625, 3642, + 3643, 3647, 3653, 3659, 3671, 3676, 3677, 3681, 3682, 3687, 3693, 3705, 3721, 3727, 3711, 3716, 3722, 3735, + 3751, 3759, 3750, 3756, 3761, 3784, 3789, 3793, 3775, 3801, 3815, 3827, 3810, 3825, 3829, 3843, 3859, 3826, + 3858, 3861, 3864, 3869, 3880, 3897, 3883, 3902, 3912, 3913, + + 403, 3431, 0, 3462, 3521, 3535, 3539, 0, 3596, 0, 3605, 3639, 3641, 3650, 0, 3742, 0, 3769, + 0, 0, 0, 3773, 0, 3859, 3862, 0, 0, 0, 0, 0, 3886, 3901, 3913, 0, 3900, 0, + 3908, 3922, 0, 3908, 3931, 3914, 0, 3937, 3939, 3924, 3929, 0, 3937, 0, 3940, 0, 3952, 3955, + 3954, 3938, 0, 0, 0, 0, 3941, 3953, 3949, 402, 3957, 3966, 3967, 3968, 3985, 3996, 3971, 3999, + 3997, 4001, 4022, 4031, 4025, 4030, 4056, 4034, 4062, 4039, 4064, 4068, 4070, 4073, 4085, 4098, 4079, 4096, + 4102, 4104, 4107, 4128, 4110, 4139, 4133, 4136, 4138, 4164, + + 4173, 4147, 4161, 4152, 4170, 4182, 4206, 4207, 4201, 4210, 4192, 4216, 4218, 4240, 4235, 4250, 4268, 4258, + 4266, 4249, 4272, 4280, 4284, 4289, 4301, 4317, 404, 0, 0, 0, 3963, 0, 0, 4002, 4012, 0, + 0, 4074, 4077, 0, 0, 0, 0, 4189, 4188, 0, 0, 4231, 4279, 0, 0, 4283, 4306, 0, + 0, 4299, 0, 4305, 4312, 4307, 4323, 0, 0, 0, 399, 4326, 4332, 4334, 4335, 4338, 4340, 4343, + 4372, 4356, 4357, 4366, 4374, 4371, 4380, 4388, 4397, 4411, 4405, 4402, 4406, 4410, 4414, 4420, 4428, 4445, + 4456, 4443, 4446, 4454, 4451, 4464, 4480, 4479, 4482, 4485, + + 4497, 4508, 399, 4329, 0, 4444, 0, 0, 4453, 0, 0, 4497, 0, 0, 0, 4493, 4503, 4512, + 0, 398, 4518, 4519, 4533, 4522, 4530, 4536, 4534, 4547, 4559, 4562, 4564, 4568, 4570, 4576, 4598, 4573, + 393, 0, 4525, 0, 4571, 0, 0, 4582, 350, 4601, 4604, 4607, 4616, 4613, 4622, 4646, 344, 0, + 0, 4596, 342, 4635, 4638, 4641, 338, 0, 335, 4644, 330, 325, 306, 303, 288, 255, 250, 245, + 243, 240, 235, 221, 226, 197, 187, 173, 4751, 0, 4751, 4720, 4725, 181, 4730, 4735, 4740, 4745}; + +static const flex_int16_t yy_def[1191] = { + 0, 1183, 1, 1184, 1184, 1183, 5, 1183, 1183, 1183, 1183, 1183, 1185, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1183, 1187, 1183, 1188, 1188, 1183, 1188, 1189, 1188, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1190, 1190, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1188, 1183, 1183, 1185, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1186, 1186, 1186, + + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1183, 1187, 1183, 1188, 1188, 1188, 1189, 1188, 1188, 1188, 1188, 1188, 1188, + 1188, 1188, 1188, 62, 62, 62, 62, 62, 62, 62, + + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 1188, 1183, 1183, 1183, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1188, + 1188, 1188, 62, 62, 62, 62, 62, 62, 62, 62, + + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + + 62, 62, 62, 62, 1183, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1188, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1183, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1188, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + + 1183, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1188, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 1183, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1188, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + + 62, 62, 1183, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1188, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 1183, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1188, 62, 62, 62, 62, 62, 62, 62, 1183, 1186, + 1186, 1186, 1188, 62, 62, 62, 1183, 1186, 1188, 62, 1183, 1188, 1183, 1188, 1183, 1188, 1183, 1188, + 1183, 1188, 1183, 1188, 1183, 1188, 1183, 1188, 1183, 1188, 0, 1183, 1183, 1183, 1183, 1183, 1183, 1183}; + +static const flex_int16_t yy_nxt[4828] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 37, 44, 37, 8, 21, @@ -841,329 +844,334 @@ static const flex_int16_t yy_nxt[4763] = { 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 77, 84, 77, 85, 86, 86, 86, 86, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 90, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, 95, 99, 105, 100, 111, - 98, 107, 136, 112, 101, 1168, 102, 113, 108, 137, 103, 104, 176, 114, 276, - - 109, 115, 106, 110, 1167, 116, 1166, 117, 99, 105, 100, 111, 118, 107, 136, 112, 101, - 119, 102, 113, 108, 137, 103, 104, 176, 114, 276, 109, 115, 106, 110, 126, 116, 128, - 117, 1165, 138, 127, 1164, 118, 139, 129, 131, 172, 119, 120, 140, 130, 132, 133, 134, - 173, 1163, 121, 1162, 135, 122, 1161, 126, 123, 128, 1160, 124, 138, 127, 125, 1159, 139, - 129, 131, 172, 1158, 120, 140, 130, 132, 133, 134, 173, 144, 121, 141, 135, 122, 152, - 142, 123, 174, 175, 124, 148, 143, 125, 145, 1157, 153, 181, 86, 149, 146, - - 147, 154, 150, 155, 1156, 151, 144, 156, 141, 86, 86, 152, 142, 157, 174, 175, 1155, - 148, 143, 169, 145, 170, 153, 277, 171, 149, 146, 147, 154, 150, 155, 158, 151, 159, - 156, 282, 160, 232, 184, 283, 157, 189, 190, 161, 162, 1154, 169, 1153, 170, 185, 277, - 171, 86, 86, 193, 193, 289, 193, 158, 1152, 159, 221, 282, 160, 232, 231, 283, 222, - 296, 278, 161, 162, 163, 297, 193, 193, 164, 279, 287, 165, 166, 193, 193, 289, 193, - 288, 167, 305, 221, 168, 181, 86, 231, 1151, 222, 296, 278, 1149, 1147, 163, - - 297, 193, 193, 164, 279, 287, 165, 166, 1143, 1139, 1131, 1123, 288, 167, 305, 1107, 168, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 180, 180, 1091, 180, 180, 180, 180, 180, 180, 193, 223, 271, 1054, - 1017, 193, 955, 893, 306, 224, 180, 180, 180, 233, 307, 225, 194, 234, 195, 308, 193, - 309, 193, 235, 196, 193, 197, 193, 223, 271, 198, 199, 193, 193, 193, 306, 224, 269, - 270, 808, 233, 307, 225, 194, 234, 195, 308, 193, 309, 193, 235, 196, 193, - - 197, 193, 315, 723, 198, 199, 612, 193, 193, 501, 388, 269, 270, 180, 180, 180, 387, - 180, 180, 180, 180, 180, 180, 274, 273, 272, 236, 247, 193, 315, 237, 193, 192, 180, - 180, 180, 238, 294, 248, 250, 200, 193, 280, 251, 249, 281, 193, 295, 316, 252, 264, - 193, 265, 236, 247, 266, 317, 237, 193, 193, 201, 193, 191, 238, 294, 248, 250, 200, - 193, 280, 251, 249, 281, 193, 295, 316, 252, 264, 193, 265, 180, 318, 266, 317, 284, - 285, 193, 201, 193, 180, 202, 319, 267, 320, 193, 321, 193, 203, 286, 322, - - 268, 290, 291, 292, 204, 293, 182, 205, 318, 303, 304, 284, 285, 325, 193, 179, 193, - 202, 319, 267, 320, 193, 321, 193, 203, 286, 322, 268, 290, 291, 292, 204, 293, 298, - 205, 299, 303, 304, 300, 177, 325, 193, 206, 193, 301, 97, 207, 326, 327, 323, 208, - 302, 324, 328, 333, 310, 209, 311, 334, 210, 298, 312, 299, 96, 335, 300, 193, 87, - 313, 206, 336, 301, 314, 207, 326, 327, 323, 208, 302, 324, 328, 333, 310, 209, 311, - 334, 210, 1169, 312, 342, 329, 335, 343, 193, 193, 313, 337, 336, 338, 314, - - 330, 211, 344, 212, 345, 331, 332, 339, 213, 340, 346, 347, 348, 214, 193, 47, 342, - 329, 349, 343, 341, 193, 350, 337, 351, 338, 47, 330, 211, 344, 212, 345, 331, 332, - 339, 213, 340, 346, 347, 348, 214, 193, 215, 352, 353, 349, 193, 341, 354, 350, 216, - 351, 355, 217, 359, 360, 218, 361, 1169, 219, 365, 1169, 220, 1169, 366, 367, 193, 1169, - 1169, 215, 352, 353, 356, 193, 1169, 354, 1169, 216, 1169, 355, 217, 359, 360, 218, 361, - 357, 219, 365, 362, 220, 358, 366, 367, 193, 193, 226, 368, 363, 369, 356, - - 371, 227, 228, 229, 372, 364, 373, 376, 230, 370, 377, 1169, 357, 378, 193, 362, 379, - 358, 374, 1169, 380, 193, 226, 368, 363, 369, 381, 371, 227, 228, 229, 372, 364, 373, - 376, 230, 370, 377, 375, 1169, 378, 193, 239, 379, 382, 374, 193, 380, 384, 385, 386, - 502, 193, 381, 1169, 1169, 240, 383, 1169, 503, 390, 193, 241, 242, 504, 375, 193, 1169, - 1169, 239, 1169, 382, 193, 193, 505, 384, 385, 386, 502, 193, 1169, 193, 193, 240, 383, - 193, 503, 390, 193, 241, 242, 504, 392, 193, 193, 243, 397, 391, 193, 193, - - 393, 505, 193, 244, 1169, 193, 1169, 245, 193, 193, 246, 1169, 193, 193, 193, 1169, 506, - 1169, 193, 392, 1169, 193, 243, 397, 391, 193, 396, 393, 1169, 193, 244, 193, 193, 193, - 245, 394, 1169, 246, 395, 193, 193, 193, 253, 506, 254, 193, 507, 255, 193, 398, 399, - 193, 508, 396, 256, 257, 1169, 1169, 193, 193, 193, 1169, 394, 400, 193, 395, 193, 1169, - 193, 253, 509, 254, 1169, 507, 255, 193, 398, 399, 193, 508, 1169, 256, 257, 408, 403, - 193, 193, 193, 193, 1169, 400, 193, 258, 409, 401, 193, 259, 509, 432, 260, - - 261, 402, 513, 193, 514, 193, 262, 193, 193, 263, 408, 403, 193, 515, 193, 193, 193, - 1169, 1169, 258, 409, 401, 1169, 259, 1169, 432, 260, 261, 402, 513, 193, 514, 193, 262, - 193, 193, 263, 1169, 1169, 1169, 515, 1169, 1169, 193, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 92, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 187, 188, 188, 188, 188, - - 188, 188, 188, 188, 188, 188, 193, 193, 516, 193, 1169, 193, 517, 404, 405, 406, 1169, - 407, 1169, 420, 1169, 1169, 410, 193, 417, 418, 193, 411, 1169, 193, 1169, 193, 1169, 193, - 193, 516, 193, 421, 193, 517, 404, 405, 406, 193, 407, 193, 420, 422, 193, 410, 193, - 417, 418, 193, 411, 412, 193, 413, 193, 193, 414, 419, 1169, 193, 421, 193, 415, 423, - 193, 193, 193, 193, 193, 416, 422, 193, 518, 1169, 429, 193, 519, 1169, 412, 193, 413, - 520, 193, 414, 419, 193, 193, 193, 193, 415, 423, 193, 193, 1169, 193, 521, - - 416, 193, 1169, 518, 193, 429, 193, 519, 430, 193, 193, 522, 520, 193, 431, 1169, 193, - 424, 193, 425, 434, 193, 193, 426, 193, 440, 521, 1169, 193, 193, 427, 193, 433, 193, - 428, 430, 193, 1169, 522, 193, 193, 431, 193, 193, 424, 193, 425, 434, 193, 193, 426, - 193, 440, 435, 193, 436, 193, 427, 193, 433, 193, 428, 523, 193, 193, 193, 193, 439, - 437, 193, 193, 438, 193, 193, 193, 442, 1169, 441, 193, 193, 435, 193, 436, 193, 193, - 193, 524, 448, 447, 523, 193, 193, 193, 193, 439, 437, 193, 1169, 438, 193, - - 193, 193, 442, 193, 441, 193, 193, 193, 450, 1169, 193, 193, 527, 524, 448, 447, 449, - 1169, 528, 529, 193, 443, 193, 193, 193, 1169, 193, 193, 1169, 1169, 193, 444, 193, 457, - 193, 450, 445, 446, 451, 527, 452, 525, 193, 449, 193, 528, 529, 1169, 443, 193, 1169, - 193, 193, 453, 193, 454, 526, 193, 444, 193, 457, 193, 530, 445, 446, 451, 455, 452, - 525, 193, 531, 193, 193, 1169, 456, 193, 193, 193, 1169, 193, 453, 193, 454, 526, 193, - 458, 532, 459, 193, 530, 460, 193, 193, 455, 533, 193, 193, 531, 461, 193, - - 193, 456, 193, 193, 193, 462, 193, 463, 193, 193, 1169, 193, 458, 532, 459, 485, 1169, - 460, 193, 193, 193, 533, 193, 193, 1169, 461, 193, 193, 193, 193, 464, 193, 462, 193, - 463, 193, 193, 467, 193, 193, 468, 193, 485, 465, 469, 1169, 534, 193, 193, 1169, 535, - 193, 466, 193, 1169, 193, 193, 464, 193, 193, 193, 193, 193, 1169, 467, 536, 193, 468, - 193, 1169, 465, 469, 470, 534, 193, 193, 193, 535, 193, 466, 193, 474, 473, 537, 1169, - 471, 193, 193, 193, 1169, 472, 538, 536, 498, 193, 193, 193, 1169, 475, 470, - - 193, 193, 476, 193, 193, 539, 193, 193, 474, 473, 537, 477, 471, 193, 1169, 193, 479, - 472, 538, 478, 498, 193, 193, 193, 193, 475, 193, 193, 193, 476, 481, 193, 539, 193, - 193, 540, 482, 1169, 477, 193, 193, 480, 193, 479, 193, 193, 478, 1169, 193, 541, 193, - 193, 486, 193, 193, 193, 487, 481, 483, 193, 1169, 193, 540, 482, 193, 193, 193, 1169, - 480, 484, 193, 193, 193, 1169, 488, 193, 541, 193, 193, 486, 193, 193, 1169, 487, 490, - 483, 193, 491, 492, 193, 1169, 193, 193, 496, 489, 1169, 484, 193, 193, 193, - - 193, 488, 1169, 493, 542, 193, 497, 193, 1169, 193, 1169, 490, 543, 193, 491, 492, 193, - 193, 1169, 193, 496, 489, 193, 544, 500, 193, 193, 193, 193, 494, 493, 542, 499, 497, - 545, 495, 193, 193, 546, 543, 193, 547, 193, 510, 193, 511, 193, 548, 193, 193, 544, - 500, 1169, 1169, 1169, 193, 494, 1169, 1169, 499, 512, 545, 495, 549, 193, 546, 550, 551, - 547, 193, 510, 552, 511, 553, 548, 193, 275, 275, 275, 275, 275, 275, 275, 275, 275, - 275, 554, 512, 555, 556, 549, 558, 559, 550, 551, 560, 561, 562, 552, 557, - - 553, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 554, 575, 555, 556, - 576, 558, 559, 577, 578, 560, 561, 562, 579, 557, 580, 563, 564, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 581, 575, 582, 583, 576, 584, 585, 577, 578, 586, 587, - 588, 579, 589, 580, 590, 591, 592, 593, 594, 595, 598, 596, 599, 600, 601, 602, 581, - 603, 582, 583, 597, 584, 585, 604, 606, 586, 587, 588, 607, 589, 610, 590, 591, 592, - 593, 594, 595, 598, 596, 599, 600, 601, 602, 611, 603, 605, 1169, 597, 608, - - 193, 604, 606, 609, 613, 193, 607, 1169, 610, 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 614, 193, 611, 193, 605, 193, 193, 608, 193, 193, 615, 609, 613, 193, 616, - 193, 1169, 1169, 193, 724, 193, 1169, 725, 193, 193, 1169, 726, 614, 193, 193, 193, 1169, - 193, 193, 617, 193, 193, 615, 193, 193, 193, 616, 193, 618, 193, 193, 724, 193, 193, - 725, 193, 193, 621, 726, 622, 620, 193, 193, 619, 193, 193, 617, 193, 193, 727, 193, - 193, 193, 193, 623, 618, 193, 193, 625, 193, 193, 624, 193, 193, 621, 626, - - 622, 620, 193, 193, 619, 193, 193, 193, 631, 193, 727, 193, 627, 728, 193, 623, 193, - 193, 193, 625, 193, 629, 624, 193, 193, 193, 626, 628, 193, 193, 630, 1169, 1169, 193, - 193, 631, 193, 635, 193, 627, 728, 193, 193, 193, 193, 193, 193, 632, 629, 633, 634, - 1169, 193, 193, 628, 193, 638, 630, 193, 639, 193, 193, 193, 193, 635, 1169, 193, 636, - 193, 193, 1169, 643, 193, 193, 632, 193, 633, 634, 193, 193, 193, 641, 637, 638, 193, - 193, 639, 193, 193, 193, 640, 193, 193, 193, 636, 193, 193, 644, 643, 729, - - 645, 193, 193, 642, 193, 193, 193, 730, 641, 637, 1169, 193, 193, 646, 193, 193, 193, - 640, 193, 193, 193, 193, 193, 193, 644, 1169, 729, 645, 193, 193, 642, 193, 193, 651, - 730, 193, 648, 193, 731, 193, 646, 193, 193, 193, 732, 1169, 647, 193, 193, 193, 649, - 1169, 193, 193, 652, 650, 193, 193, 193, 193, 651, 193, 193, 648, 193, 731, 193, 193, - 193, 656, 733, 732, 193, 647, 653, 654, 193, 649, 193, 193, 193, 652, 650, 193, 193, - 193, 193, 193, 193, 1169, 655, 193, 193, 193, 193, 193, 656, 733, 658, 193, - - 193, 653, 654, 193, 659, 193, 193, 657, 1169, 1169, 193, 193, 1169, 193, 193, 193, 193, - 655, 193, 193, 193, 660, 193, 734, 664, 658, 193, 193, 1169, 661, 193, 659, 1169, 193, - 657, 193, 193, 665, 193, 193, 666, 662, 193, 193, 193, 1169, 735, 193, 660, 663, 734, - 664, 193, 193, 193, 193, 661, 193, 1169, 193, 193, 670, 193, 193, 665, 667, 193, 666, - 662, 193, 669, 193, 193, 735, 193, 668, 663, 1169, 193, 193, 672, 193, 193, 1169, 193, - 193, 193, 193, 670, 193, 193, 675, 667, 671, 673, 193, 193, 669, 193, 193, - - 193, 193, 668, 674, 193, 193, 193, 672, 676, 193, 193, 677, 193, 1169, 193, 193, 193, - 193, 675, 736, 671, 673, 193, 193, 193, 193, 193, 193, 193, 193, 674, 193, 193, 193, - 193, 676, 193, 193, 677, 678, 193, 193, 193, 193, 680, 193, 736, 679, 193, 684, 193, - 193, 193, 193, 683, 193, 193, 193, 682, 193, 193, 193, 685, 1169, 681, 193, 678, 193, - 1169, 193, 193, 680, 193, 193, 679, 193, 684, 193, 1169, 193, 690, 683, 193, 1169, 193, - 682, 686, 193, 193, 685, 193, 681, 193, 193, 193, 691, 193, 687, 193, 193, - - 193, 1169, 737, 1169, 193, 688, 689, 690, 193, 193, 193, 738, 1169, 686, 193, 193, 193, - 193, 193, 193, 193, 193, 691, 1169, 687, 193, 193, 193, 695, 737, 693, 692, 688, 689, - 739, 193, 193, 193, 738, 697, 193, 193, 193, 193, 193, 193, 193, 193, 193, 694, 696, - 1169, 193, 193, 193, 695, 1169, 693, 692, 193, 193, 739, 193, 193, 193, 1169, 697, 193, - 699, 193, 698, 193, 193, 193, 193, 193, 694, 696, 193, 193, 193, 193, 740, 193, 1169, - 1169, 193, 193, 701, 193, 1169, 193, 193, 700, 702, 699, 705, 698, 193, 193, - - 193, 193, 193, 193, 193, 193, 741, 703, 193, 740, 193, 704, 193, 1169, 742, 701, 193, - 193, 1169, 193, 700, 702, 193, 705, 193, 193, 706, 707, 193, 193, 193, 193, 743, 741, - 703, 193, 708, 193, 704, 193, 193, 742, 712, 193, 193, 711, 193, 193, 193, 193, 709, - 193, 710, 706, 707, 193, 744, 713, 1169, 743, 193, 1169, 193, 708, 193, 193, 193, 193, - 193, 712, 193, 1169, 711, 193, 193, 193, 715, 709, 193, 710, 1169, 714, 193, 744, 713, - 193, 193, 193, 717, 1169, 193, 193, 193, 193, 193, 193, 193, 193, 716, 721, - - 719, 718, 745, 715, 720, 193, 193, 722, 714, 746, 747, 193, 193, 193, 193, 717, 193, - 193, 193, 748, 749, 193, 750, 193, 751, 716, 721, 719, 718, 745, 752, 720, 753, 193, - 722, 754, 746, 747, 193, 755, 756, 193, 757, 193, 758, 759, 748, 749, 760, 750, 761, - 751, 762, 763, 764, 765, 768, 752, 769, 753, 770, 771, 754, 766, 772, 773, 755, 756, - 774, 757, 775, 758, 759, 776, 767, 760, 777, 761, 778, 762, 763, 764, 765, 768, 779, - 769, 780, 770, 771, 781, 766, 772, 773, 782, 783, 774, 784, 775, 785, 786, - - 776, 767, 787, 777, 788, 778, 789, 790, 791, 792, 793, 779, 794, 780, 795, 796, 781, - 797, 798, 799, 782, 783, 800, 784, 801, 785, 786, 802, 803, 787, 804, 788, 805, 789, - 790, 791, 792, 793, 806, 794, 807, 795, 796, 193, 797, 798, 799, 1169, 193, 800, 1169, - 801, 193, 193, 802, 803, 809, 804, 193, 805, 1169, 810, 815, 193, 193, 806, 894, 807, - 193, 1169, 193, 813, 811, 812, 193, 193, 895, 193, 193, 193, 193, 1169, 193, 809, 193, - 193, 814, 193, 810, 815, 193, 193, 816, 894, 193, 193, 193, 193, 813, 811, - - 812, 193, 817, 895, 193, 193, 193, 193, 193, 193, 193, 193, 819, 814, 193, 1169, 193, - 1169, 818, 816, 1169, 193, 193, 193, 193, 896, 193, 193, 193, 817, 193, 193, 1169, 193, - 193, 193, 193, 193, 1169, 819, 820, 193, 193, 193, 193, 818, 821, 193, 1169, 193, 822, - 193, 896, 193, 193, 193, 193, 193, 193, 823, 193, 193, 193, 193, 193, 193, 1169, 820, - 193, 193, 825, 193, 824, 821, 193, 193, 826, 822, 193, 1169, 193, 1169, 193, 193, 1169, - 193, 823, 193, 193, 193, 827, 193, 193, 193, 828, 193, 193, 825, 193, 824, - - 831, 1169, 193, 826, 193, 1169, 829, 193, 830, 193, 193, 832, 193, 193, 193, 1169, 193, - 827, 193, 193, 193, 828, 193, 193, 193, 193, 1169, 831, 193, 1169, 193, 193, 839, 829, - 193, 830, 193, 193, 832, 193, 193, 193, 193, 193, 835, 193, 193, 833, 193, 1169, 193, - 193, 193, 834, 837, 193, 193, 193, 193, 839, 838, 193, 193, 193, 193, 836, 193, 1169, - 193, 193, 193, 835, 841, 193, 833, 193, 193, 193, 193, 193, 834, 837, 193, 193, 193, - 193, 193, 838, 193, 193, 842, 193, 836, 193, 193, 193, 193, 193, 897, 841, - - 193, 840, 193, 193, 193, 193, 193, 193, 1169, 193, 193, 193, 193, 193, 193, 193, 898, - 842, 843, 844, 193, 193, 193, 193, 193, 897, 1169, 193, 840, 193, 193, 193, 193, 193, - 193, 846, 845, 193, 193, 193, 193, 193, 193, 898, 1169, 843, 844, 1169, 193, 193, 1169, - 193, 193, 847, 193, 193, 899, 193, 193, 193, 193, 849, 846, 845, 193, 193, 193, 193, - 193, 193, 193, 848, 193, 853, 193, 193, 193, 850, 851, 193, 847, 1169, 193, 899, 193, - 193, 193, 193, 849, 852, 193, 193, 193, 193, 193, 193, 193, 193, 848, 193, - - 853, 193, 1169, 193, 850, 851, 193, 193, 193, 193, 856, 193, 193, 193, 900, 855, 852, - 193, 1169, 193, 901, 193, 854, 193, 1169, 1169, 193, 193, 193, 193, 193, 193, 193, 193, - 193, 193, 193, 856, 902, 193, 193, 900, 855, 859, 903, 857, 858, 901, 193, 854, 1169, - 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 860, 861, 862, 193, 902, 1169, 193, - 193, 1169, 859, 903, 857, 858, 1169, 193, 193, 193, 193, 193, 193, 193, 866, 193, 193, - 865, 193, 193, 860, 861, 862, 193, 1169, 863, 864, 193, 193, 193, 867, 193, - - 193, 193, 193, 193, 193, 1169, 193, 193, 193, 866, 193, 193, 865, 193, 904, 1169, 905, - 1169, 1169, 193, 863, 864, 193, 193, 193, 867, 193, 193, 193, 193, 193, 193, 193, 193, - 193, 906, 193, 871, 868, 1169, 193, 904, 872, 905, 869, 873, 193, 870, 1169, 193, 193, - 193, 193, 874, 193, 193, 193, 193, 193, 193, 193, 193, 906, 193, 871, 868, 193, 193, - 875, 872, 877, 869, 873, 1169, 870, 193, 193, 193, 193, 193, 874, 193, 193, 193, 193, - 193, 193, 193, 193, 876, 193, 1169, 1169, 193, 878, 875, 193, 877, 193, 193, - - 193, 1169, 193, 193, 193, 193, 1169, 881, 193, 193, 1169, 193, 193, 193, 879, 193, 876, - 193, 193, 193, 193, 878, 880, 193, 193, 193, 193, 193, 193, 193, 1169, 193, 193, 882, - 881, 193, 193, 193, 884, 193, 1169, 879, 193, 887, 193, 193, 193, 193, 193, 880, 886, - 193, 907, 883, 885, 193, 193, 193, 193, 193, 882, 888, 193, 193, 193, 884, 193, 193, - 193, 193, 887, 193, 193, 193, 1169, 193, 889, 886, 193, 907, 883, 885, 193, 908, 193, - 193, 193, 193, 888, 193, 193, 891, 193, 193, 193, 193, 193, 909, 890, 193, - - 193, 193, 193, 889, 910, 193, 911, 912, 913, 193, 908, 193, 914, 915, 193, 892, 193, - 916, 891, 193, 193, 193, 917, 193, 909, 890, 918, 919, 193, 193, 920, 910, 921, 911, - 912, 913, 922, 923, 193, 914, 915, 926, 892, 193, 916, 927, 928, 924, 193, 917, 925, - 929, 930, 918, 919, 931, 932, 920, 933, 921, 934, 935, 936, 922, 923, 937, 938, 939, - 926, 940, 941, 942, 927, 928, 924, 943, 944, 925, 929, 930, 945, 946, 931, 932, 947, - 933, 948, 934, 935, 936, 949, 950, 937, 938, 939, 951, 940, 941, 942, 952, - - 953, 954, 943, 944, 193, 193, 1018, 945, 946, 193, 1169, 947, 1169, 948, 193, 957, 1169, - 949, 950, 193, 958, 960, 951, 193, 193, 193, 952, 953, 954, 193, 956, 193, 193, 1018, - 193, 193, 193, 959, 193, 193, 193, 193, 957, 193, 1169, 1019, 193, 958, 960, 193, 193, - 193, 193, 193, 193, 964, 193, 956, 193, 963, 1169, 193, 193, 961, 959, 193, 193, 193, - 962, 193, 193, 193, 1019, 193, 193, 193, 193, 193, 1169, 193, 193, 193, 964, 965, 967, - 193, 963, 966, 193, 969, 961, 193, 1020, 193, 1169, 962, 193, 193, 193, 193, - - 193, 193, 193, 193, 193, 193, 193, 970, 193, 193, 965, 967, 968, 193, 966, 193, 969, - 1021, 193, 1020, 193, 973, 193, 193, 193, 193, 193, 1169, 1169, 1169, 193, 1169, 193, 974, - 970, 193, 193, 971, 193, 968, 193, 193, 193, 1169, 1021, 1169, 193, 972, 973, 193, 193, - 1022, 193, 193, 979, 193, 193, 193, 193, 193, 974, 975, 1169, 978, 971, 193, 193, 193, - 193, 193, 976, 977, 193, 193, 972, 193, 193, 193, 1022, 193, 193, 979, 193, 193, 193, - 193, 193, 193, 975, 193, 978, 193, 193, 193, 193, 193, 981, 976, 977, 193, - - 193, 193, 193, 193, 193, 193, 193, 982, 1023, 193, 980, 193, 1169, 193, 193, 193, 193, - 1169, 193, 193, 193, 193, 193, 981, 193, 193, 193, 193, 193, 985, 193, 1169, 193, 193, - 982, 1023, 193, 980, 193, 983, 193, 193, 193, 1169, 193, 984, 193, 193, 193, 193, 193, - 193, 193, 193, 193, 986, 985, 193, 987, 193, 193, 193, 1169, 193, 193, 1169, 983, 193, - 193, 989, 988, 193, 984, 193, 193, 193, 193, 193, 193, 193, 1169, 193, 986, 193, 193, - 987, 193, 193, 193, 193, 193, 193, 990, 193, 193, 193, 989, 988, 193, 991, - - 1169, 193, 193, 193, 193, 193, 193, 992, 993, 193, 193, 193, 994, 193, 193, 1169, 193, - 997, 1024, 990, 193, 1169, 193, 193, 193, 193, 991, 193, 193, 193, 193, 193, 193, 193, - 992, 993, 193, 193, 193, 994, 193, 995, 998, 1169, 997, 1024, 996, 193, 193, 1025, 193, - 193, 193, 193, 193, 193, 193, 999, 193, 193, 193, 193, 1000, 1026, 193, 193, 193, 1002, - 995, 998, 1001, 193, 193, 996, 193, 193, 1025, 1169, 1169, 193, 193, 193, 1003, 193, 999, - 193, 193, 193, 193, 1000, 1026, 193, 1004, 193, 1002, 1169, 193, 1001, 193, 193, - - 1008, 1005, 193, 193, 193, 193, 193, 193, 193, 1003, 193, 1169, 1169, 193, 193, 1006, 193, - 1009, 193, 1004, 1007, 193, 193, 193, 193, 193, 193, 1008, 1005, 193, 193, 193, 193, 193, - 193, 1010, 1011, 193, 1012, 193, 193, 193, 1006, 193, 1009, 1169, 1014, 1007, 193, 193, 193, - 193, 193, 193, 1013, 193, 193, 193, 193, 193, 193, 1027, 1010, 1011, 193, 1012, 193, 193, - 193, 193, 193, 1016, 193, 1014, 1028, 193, 193, 193, 1015, 1029, 1030, 1013, 193, 193, 193, - 193, 193, 193, 1027, 193, 1031, 1032, 193, 1033, 1034, 193, 193, 193, 1016, 193, - - 1035, 1028, 193, 193, 1036, 1015, 1029, 1030, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 193, - 1031, 1032, 193, 1033, 1034, 193, 1045, 1046, 1047, 1048, 1035, 1049, 1050, 1051, 1036, 1052, 1053, - 1055, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 193, 1057, 193, 1092, 193, 1169, 193, 1045, - 1046, 1047, 1048, 193, 1049, 1050, 1051, 1056, 1052, 1053, 1055, 1058, 193, 193, 193, 193, 193, - 193, 193, 193, 1057, 193, 1092, 193, 1060, 193, 193, 1093, 193, 1059, 193, 1169, 1094, 1169, - 1056, 193, 1061, 193, 1058, 193, 193, 193, 193, 193, 193, 193, 193, 1062, 193, - - 193, 193, 1060, 193, 193, 1093, 193, 1059, 1063, 193, 1094, 193, 1169, 193, 1061, 193, 1065, - 193, 1064, 193, 193, 193, 193, 193, 193, 1062, 193, 193, 193, 193, 193, 193, 1066, 193, - 193, 1063, 193, 193, 193, 193, 1169, 1169, 193, 1065, 193, 1064, 193, 193, 193, 193, 193, - 1067, 193, 193, 193, 193, 193, 193, 193, 1066, 193, 193, 1169, 193, 193, 193, 193, 193, - 193, 193, 1069, 193, 193, 193, 1068, 193, 193, 193, 1067, 193, 193, 193, 193, 193, 193, - 193, 1071, 193, 193, 1070, 193, 193, 193, 193, 193, 193, 193, 1069, 193, 193, - - 193, 1068, 193, 193, 193, 1072, 193, 193, 193, 193, 193, 193, 193, 1071, 193, 193, 1070, - 193, 193, 1169, 193, 1073, 1075, 193, 1074, 193, 193, 193, 193, 193, 1169, 1095, 1072, 193, - 193, 193, 193, 193, 193, 1077, 193, 193, 193, 1096, 193, 193, 193, 1169, 1073, 1075, 1169, - 1074, 193, 193, 193, 193, 193, 1076, 1095, 193, 1078, 193, 193, 1079, 193, 193, 1077, 193, - 193, 193, 1096, 1169, 193, 193, 1080, 193, 193, 193, 193, 193, 1169, 1169, 1169, 1097, 1076, - 193, 193, 1078, 193, 193, 1079, 1081, 193, 1082, 1098, 193, 193, 193, 193, 193, - - 1169, 1080, 193, 193, 193, 193, 193, 193, 193, 1084, 1097, 1099, 193, 193, 1083, 1085, 1169, - 193, 1081, 193, 1082, 1098, 193, 193, 193, 193, 193, 193, 193, 1086, 193, 193, 1087, 193, - 193, 193, 1084, 193, 1099, 193, 193, 1083, 1085, 193, 193, 193, 193, 193, 193, 1100, 193, - 193, 1101, 1169, 193, 193, 1086, 193, 193, 1087, 193, 1088, 1169, 193, 193, 193, 193, 193, - 193, 193, 193, 1089, 193, 193, 193, 193, 1100, 193, 193, 1101, 1090, 1102, 1103, 1104, 1105, - 1106, 193, 1169, 1088, 193, 193, 1169, 193, 193, 193, 193, 193, 193, 1089, 193, - - 193, 1108, 193, 193, 1169, 1109, 193, 1090, 1102, 1103, 1104, 1105, 1106, 193, 1110, 193, 193, - 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 1108, 193, 193, 1111, 1109, 193, - 1169, 193, 193, 193, 193, 193, 193, 1110, 193, 1169, 193, 193, 193, 193, 193, 193, 193, - 193, 193, 193, 193, 1112, 193, 193, 1111, 193, 193, 193, 193, 193, 193, 193, 193, 193, - 1113, 193, 193, 193, 193, 193, 193, 1169, 1114, 1169, 193, 1124, 193, 193, 1112, 193, 193, - 1115, 193, 193, 193, 193, 193, 193, 193, 1116, 193, 1113, 193, 193, 193, 193, - - 193, 1125, 193, 1114, 193, 1169, 1124, 193, 193, 1169, 193, 1126, 1115, 193, 193, 193, 193, - 193, 193, 193, 1116, 193, 193, 193, 193, 1117, 193, 193, 1125, 193, 193, 193, 1118, 1169, - 193, 193, 1119, 193, 1126, 1127, 193, 193, 193, 193, 1122, 193, 193, 193, 193, 193, 193, - 193, 1117, 193, 193, 1120, 193, 193, 193, 1118, 1121, 1128, 193, 1119, 193, 193, 1127, 193, - 193, 1129, 193, 1122, 193, 193, 193, 193, 193, 1130, 193, 193, 193, 193, 1120, 193, 1169, - 193, 1169, 1121, 1128, 193, 1169, 193, 193, 1132, 193, 193, 1129, 193, 193, 193, - - 193, 193, 193, 193, 1130, 193, 193, 193, 193, 193, 193, 193, 1133, 1134, 1169, 193, 193, - 193, 193, 1140, 1132, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 1141, 193, - 1135, 193, 193, 193, 193, 1133, 1134, 193, 193, 1136, 193, 193, 1140, 193, 193, 193, 193, - 1138, 193, 193, 1142, 193, 1144, 193, 193, 1141, 193, 1135, 193, 1137, 193, 193, 1169, 193, - 193, 193, 1136, 1169, 193, 193, 193, 193, 193, 1148, 1138, 193, 193, 1142, 193, 1144, 193, - 193, 193, 1145, 193, 193, 1137, 193, 193, 193, 193, 1169, 193, 193, 1146, 193, - - 193, 193, 193, 193, 1148, 1169, 193, 193, 193, 1169, 1150, 193, 193, 193, 1145, 193, 193, - 193, 1169, 1169, 193, 193, 1169, 1169, 193, 1146, 1169, 193, 193, 1169, 1169, 1169, 1169, 193, - 193, 193, 1169, 1150, 1169, 1169, 1169, 1169, 1169, 1169, 193, 1169, 1169, 1169, 193, 1169, 1169, - 1169, 1169, 1169, 193, 46, 46, 46, 46, 46, 88, 1169, 1169, 88, 88, 178, 178, 178, - 1169, 178, 180, 1169, 180, 180, 180, 183, 1169, 183, 183, 183, 193, 1169, 193, 193, 193, - 7, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, - - 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, - 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, - 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, - 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169}; - -static const flex_int16_t yy_chk[4763] = { + 98, 107, 136, 112, 101, 1182, 102, 113, 108, 137, 103, 104, 177, 114, 278, + + 109, 115, 106, 110, 1181, 116, 1180, 117, 99, 105, 100, 111, 118, 107, 136, 112, 101, + 119, 102, 113, 108, 137, 103, 104, 177, 114, 278, 109, 115, 106, 110, 126, 116, 128, + 117, 1179, 138, 127, 1178, 118, 139, 129, 131, 173, 119, 120, 140, 130, 132, 133, 134, + 174, 1177, 121, 1176, 135, 122, 1175, 126, 123, 128, 1174, 124, 138, 127, 125, 1173, 139, + 129, 131, 173, 1172, 120, 140, 130, 132, 133, 134, 174, 144, 121, 141, 135, 122, 152, + 142, 123, 175, 176, 124, 148, 143, 125, 145, 279, 153, 182, 86, 149, 146, + + 147, 154, 150, 155, 1171, 151, 144, 156, 141, 86, 86, 152, 142, 157, 175, 176, 1170, + 148, 143, 1169, 145, 279, 153, 284, 185, 149, 146, 147, 154, 150, 155, 170, 151, 171, + 156, 186, 172, 190, 191, 1168, 157, 158, 285, 159, 1167, 233, 160, 194, 86, 86, 284, + 161, 1166, 162, 163, 1165, 194, 1163, 170, 1161, 171, 291, 1157, 172, 194, 194, 232, 194, + 158, 285, 159, 222, 233, 160, 194, 234, 194, 223, 161, 235, 162, 163, 164, 194, 194, + 236, 165, 296, 291, 166, 167, 194, 194, 232, 194, 194, 168, 297, 222, 169, + + 182, 86, 234, 194, 223, 1153, 235, 1145, 1137, 164, 1120, 194, 236, 165, 296, 1103, 166, + 167, 1065, 1027, 964, 901, 194, 168, 297, 815, 169, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 181, 181, 729, + 181, 181, 181, 181, 181, 181, 273, 224, 307, 617, 505, 194, 391, 390, 308, 225, 181, + 181, 181, 237, 280, 226, 195, 238, 196, 309, 194, 310, 281, 239, 197, 194, 198, 273, + 224, 307, 199, 200, 194, 194, 282, 308, 225, 283, 276, 275, 237, 280, 226, + + 195, 238, 196, 309, 194, 310, 281, 239, 197, 194, 198, 274, 193, 311, 199, 200, 192, + 194, 282, 181, 183, 283, 248, 181, 181, 181, 194, 181, 181, 181, 181, 181, 181, 249, + 269, 180, 178, 251, 194, 250, 311, 252, 270, 181, 181, 181, 194, 253, 317, 248, 201, + 97, 96, 194, 318, 87, 319, 194, 194, 194, 249, 269, 271, 272, 251, 194, 250, 1183, + 252, 270, 202, 289, 47, 194, 253, 317, 320, 201, 290, 194, 47, 318, 194, 319, 194, + 194, 194, 1183, 1183, 271, 272, 266, 321, 267, 286, 287, 268, 202, 289, 181, + + 203, 322, 194, 320, 194, 290, 194, 204, 288, 194, 1183, 292, 293, 294, 205, 295, 1183, + 206, 266, 321, 267, 286, 287, 268, 194, 1183, 323, 203, 322, 194, 324, 194, 298, 1183, + 204, 288, 327, 299, 292, 293, 294, 205, 295, 300, 206, 301, 305, 306, 302, 1183, 328, + 194, 207, 323, 303, 1183, 208, 324, 329, 298, 209, 304, 330, 327, 299, 312, 210, 313, + 335, 211, 300, 314, 301, 305, 306, 302, 194, 328, 315, 207, 336, 303, 316, 208, 1183, + 329, 1183, 209, 304, 330, 337, 1183, 312, 210, 313, 335, 211, 1183, 314, 325, + + 331, 338, 326, 194, 194, 315, 339, 336, 340, 316, 332, 212, 344, 213, 345, 333, 334, + 337, 214, 341, 346, 342, 347, 215, 194, 1183, 325, 331, 338, 326, 348, 194, 343, 339, + 349, 340, 1183, 332, 212, 344, 213, 345, 333, 334, 350, 214, 341, 346, 342, 347, 215, + 194, 216, 351, 352, 353, 194, 348, 354, 343, 217, 349, 355, 218, 356, 361, 219, 362, + 357, 220, 363, 350, 221, 1183, 1183, 367, 194, 1183, 1183, 216, 351, 352, 353, 194, 1183, + 354, 1183, 217, 358, 355, 218, 356, 361, 219, 362, 357, 220, 363, 368, 221, + + 364, 359, 367, 194, 194, 227, 360, 369, 370, 365, 371, 228, 229, 230, 374, 358, 375, + 366, 231, 372, 376, 381, 377, 379, 194, 368, 380, 364, 359, 1183, 373, 194, 227, 360, + 369, 370, 365, 371, 228, 229, 230, 374, 378, 375, 366, 231, 372, 376, 381, 377, 379, + 194, 240, 380, 382, 383, 194, 373, 385, 387, 388, 384, 389, 506, 194, 1183, 241, 1183, + 1183, 378, 507, 386, 242, 243, 393, 194, 194, 1183, 1183, 240, 1183, 382, 383, 194, 194, + 385, 387, 388, 384, 389, 506, 194, 194, 241, 194, 194, 1183, 507, 386, 242, + + 243, 393, 194, 194, 194, 244, 194, 394, 194, 1183, 508, 194, 194, 245, 194, 395, 194, + 246, 1183, 194, 247, 194, 194, 396, 194, 1183, 194, 1183, 194, 399, 1183, 194, 244, 194, + 394, 194, 194, 508, 1183, 194, 245, 194, 395, 194, 246, 397, 509, 247, 398, 194, 396, + 194, 254, 194, 255, 194, 399, 256, 400, 510, 194, 1183, 257, 194, 258, 259, 1183, 1183, + 1183, 194, 1183, 1183, 397, 509, 194, 398, 194, 1183, 411, 254, 194, 255, 1183, 1183, 256, + 400, 510, 194, 412, 257, 1183, 258, 259, 194, 401, 402, 194, 194, 194, 1183, + + 511, 194, 260, 194, 404, 411, 261, 194, 403, 262, 263, 405, 512, 194, 513, 412, 264, + 194, 413, 265, 194, 401, 402, 414, 194, 194, 194, 511, 1183, 260, 194, 404, 1183, 261, + 1183, 403, 262, 263, 405, 512, 194, 513, 1183, 264, 194, 413, 265, 1183, 1183, 1183, 414, + 1183, 1183, 194, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 392, 392, 392, 392, 392, + + 392, 392, 392, 392, 392, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 406, + 194, 194, 194, 194, 517, 194, 518, 519, 520, 1183, 1183, 521, 423, 420, 421, 425, 194, + 422, 1183, 424, 194, 194, 194, 194, 1183, 194, 406, 194, 194, 194, 194, 517, 194, 518, + 519, 520, 194, 194, 521, 423, 420, 421, 425, 194, 422, 194, 424, 194, 194, 194, 194, + 194, 194, 426, 1183, 194, 445, 452, 407, 408, 409, 194, 410, 194, 194, 194, 1183, 1183, + 432, 522, 523, 194, 194, 1183, 1183, 194, 1183, 1183, 194, 524, 426, 194, 194, + + 445, 452, 407, 408, 409, 194, 410, 1183, 525, 194, 194, 194, 432, 522, 523, 194, 415, + 433, 416, 194, 194, 417, 194, 524, 435, 194, 194, 418, 1183, 1183, 194, 194, 434, 1183, + 419, 525, 436, 194, 194, 1183, 194, 1183, 194, 415, 433, 416, 194, 194, 417, 194, 526, + 435, 194, 194, 418, 194, 194, 194, 194, 434, 194, 419, 437, 436, 1183, 459, 438, 194, + 427, 194, 428, 1183, 194, 194, 429, 194, 194, 526, 194, 194, 194, 430, 194, 194, 1183, + 431, 1183, 194, 439, 437, 194, 194, 459, 438, 194, 427, 194, 428, 194, 194, + + 442, 429, 194, 194, 194, 194, 1183, 194, 430, 462, 440, 194, 431, 441, 194, 439, 194, + 194, 194, 194, 443, 194, 194, 194, 194, 194, 444, 442, 450, 1183, 194, 194, 194, 453, + 451, 527, 462, 440, 194, 194, 441, 194, 194, 194, 1183, 528, 194, 443, 194, 194, 194, + 194, 194, 444, 454, 450, 455, 194, 1183, 194, 453, 451, 527, 456, 1183, 457, 194, 194, + 194, 194, 446, 194, 528, 194, 1183, 194, 458, 194, 1183, 194, 447, 454, 460, 455, 194, + 448, 449, 194, 531, 1183, 456, 194, 457, 194, 194, 194, 194, 446, 194, 463, + + 194, 194, 532, 458, 194, 461, 465, 447, 464, 460, 194, 194, 448, 449, 194, 531, 194, + 1183, 194, 1183, 194, 194, 1183, 194, 194, 466, 463, 194, 194, 532, 194, 194, 461, 465, + 1183, 464, 194, 194, 467, 194, 533, 471, 468, 194, 194, 472, 470, 194, 194, 469, 194, + 194, 466, 1183, 194, 1183, 194, 194, 534, 194, 194, 194, 476, 194, 1183, 467, 194, 533, + 471, 468, 194, 194, 472, 470, 194, 1183, 469, 194, 473, 535, 194, 194, 194, 194, 478, + 534, 194, 194, 194, 476, 194, 474, 194, 1183, 1183, 1183, 475, 194, 536, 477, + + 482, 194, 194, 1183, 537, 473, 535, 194, 194, 194, 194, 478, 194, 479, 1183, 194, 1183, + 194, 474, 194, 483, 194, 480, 475, 194, 536, 477, 482, 194, 194, 481, 537, 485, 538, + 484, 194, 194, 194, 1183, 194, 479, 194, 194, 486, 194, 194, 194, 483, 194, 480, 539, + 194, 540, 487, 489, 541, 194, 481, 194, 485, 538, 484, 194, 194, 488, 194, 194, 194, + 194, 491, 486, 194, 194, 194, 194, 490, 1183, 539, 194, 540, 487, 489, 541, 194, 492, + 194, 1183, 194, 194, 496, 194, 488, 194, 194, 194, 1183, 491, 542, 1183, 194, + + 502, 194, 490, 494, 493, 194, 495, 1183, 194, 194, 194, 492, 500, 497, 194, 194, 496, + 194, 504, 194, 194, 194, 194, 194, 542, 501, 194, 502, 498, 194, 494, 493, 194, 495, + 499, 194, 194, 194, 503, 500, 497, 194, 194, 194, 1183, 504, 194, 194, 194, 194, 194, + 1183, 501, 1183, 1183, 498, 194, 543, 544, 194, 545, 499, 546, 547, 514, 503, 515, 529, + 194, 194, 194, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 516, 530, 548, 543, + 544, 549, 545, 550, 546, 547, 514, 551, 515, 529, 552, 553, 554, 555, 556, + + 557, 558, 559, 562, 560, 563, 564, 565, 516, 530, 548, 566, 567, 549, 561, 550, 568, + 569, 570, 551, 571, 572, 552, 553, 554, 555, 556, 557, 558, 559, 562, 560, 563, 564, + 565, 573, 574, 575, 566, 567, 576, 561, 577, 568, 569, 570, 578, 571, 572, 579, 580, + 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 573, 574, 575, 592, 593, 576, + 594, 577, 595, 596, 597, 578, 598, 599, 579, 580, 581, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 600, 605, 601, 592, 593, 603, 594, 604, 595, 596, 597, + + 602, 598, 599, 606, 607, 608, 609, 611, 612, 613, 615, 616, 1183, 614, 1183, 1183, 600, + 605, 601, 1183, 1183, 603, 1183, 604, 1183, 1183, 1183, 602, 610, 1183, 606, 607, 608, 609, + 611, 612, 613, 615, 616, 194, 614, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 618, 194, 619, 194, 610, 194, 194, 621, 194, 1183, 620, 194, 1183, 730, 731, 194, 1183, + 1183, 732, 1183, 194, 194, 194, 194, 194, 194, 194, 618, 194, 619, 194, 194, 194, 194, + 621, 194, 194, 620, 194, 194, 730, 731, 624, 623, 194, 732, 622, 194, 194, + + 194, 194, 194, 194, 194, 194, 626, 194, 627, 194, 194, 194, 625, 1183, 194, 1183, 194, + 194, 1183, 1183, 624, 623, 194, 628, 622, 194, 194, 630, 194, 629, 1183, 194, 194, 626, + 194, 627, 194, 194, 194, 625, 194, 632, 194, 194, 1183, 194, 194, 634, 631, 1183, 628, + 194, 194, 194, 630, 194, 629, 636, 194, 635, 194, 1183, 633, 194, 1183, 194, 1183, 194, + 632, 194, 733, 194, 194, 194, 634, 631, 194, 194, 194, 194, 641, 194, 1183, 639, 636, + 734, 635, 194, 638, 633, 637, 643, 194, 194, 644, 642, 194, 733, 194, 194, + + 194, 194, 1183, 194, 194, 640, 194, 641, 194, 194, 639, 648, 734, 194, 194, 638, 1183, + 637, 643, 194, 194, 644, 642, 194, 194, 194, 194, 194, 194, 194, 646, 194, 640, 194, + 645, 647, 194, 1183, 648, 194, 194, 194, 1183, 649, 194, 194, 194, 194, 650, 1183, 1183, + 194, 194, 194, 735, 736, 194, 646, 194, 194, 194, 645, 647, 651, 194, 194, 194, 194, + 194, 194, 649, 194, 194, 652, 194, 650, 653, 654, 656, 194, 194, 735, 736, 1183, 194, + 194, 194, 194, 1183, 194, 651, 194, 194, 657, 194, 194, 194, 194, 194, 1183, + + 652, 655, 194, 653, 654, 656, 194, 194, 1183, 737, 658, 194, 194, 194, 194, 661, 194, + 194, 194, 194, 657, 659, 194, 738, 194, 194, 660, 194, 655, 194, 739, 740, 194, 194, + 194, 663, 737, 658, 194, 194, 194, 194, 661, 662, 194, 194, 194, 194, 659, 194, 738, + 194, 194, 660, 194, 664, 665, 739, 740, 194, 194, 194, 663, 1183, 194, 194, 194, 194, + 194, 669, 662, 194, 670, 667, 194, 194, 1183, 666, 194, 194, 1183, 671, 664, 665, 194, + 668, 1183, 194, 194, 194, 194, 194, 194, 672, 194, 194, 669, 741, 194, 670, + + 667, 194, 194, 673, 666, 194, 674, 677, 671, 194, 194, 194, 668, 194, 194, 742, 194, + 194, 675, 194, 672, 1183, 194, 194, 741, 194, 743, 194, 194, 194, 673, 194, 194, 674, + 677, 678, 194, 194, 676, 744, 194, 1183, 742, 194, 680, 675, 679, 194, 194, 1183, 194, + 194, 194, 743, 194, 1183, 194, 194, 194, 681, 194, 194, 678, 682, 1183, 676, 744, 194, + 194, 194, 194, 680, 194, 679, 194, 194, 683, 194, 194, 1183, 194, 194, 194, 1183, 194, + 685, 681, 194, 194, 194, 682, 194, 194, 194, 194, 194, 194, 684, 686, 194, + + 745, 194, 194, 683, 194, 1183, 687, 194, 194, 194, 689, 194, 685, 194, 690, 688, 194, + 746, 194, 194, 194, 194, 691, 194, 684, 686, 194, 745, 194, 194, 194, 194, 692, 687, + 194, 1183, 194, 689, 194, 694, 194, 690, 688, 194, 746, 194, 194, 693, 194, 691, 194, + 194, 695, 194, 1183, 1183, 194, 194, 194, 692, 696, 194, 194, 194, 194, 194, 694, 747, + 194, 1183, 194, 698, 194, 194, 693, 748, 700, 697, 194, 695, 194, 702, 194, 194, 194, + 194, 194, 696, 194, 194, 701, 194, 194, 699, 747, 194, 194, 1183, 698, 194, + + 194, 194, 748, 700, 697, 194, 194, 194, 702, 194, 1183, 194, 194, 194, 705, 194, 194, + 701, 194, 194, 699, 1183, 194, 194, 194, 704, 194, 194, 194, 749, 1183, 707, 194, 194, + 703, 750, 194, 706, 194, 194, 194, 705, 194, 194, 194, 194, 194, 1183, 194, 194, 708, + 194, 704, 711, 194, 709, 749, 710, 707, 194, 194, 703, 750, 194, 706, 194, 194, 194, + 194, 194, 194, 194, 1183, 194, 194, 194, 713, 708, 751, 712, 711, 194, 709, 1183, 710, + 714, 194, 194, 752, 194, 194, 1183, 721, 194, 194, 194, 194, 194, 194, 717, + + 194, 194, 719, 713, 1183, 751, 712, 718, 715, 194, 716, 194, 714, 194, 722, 752, 194, + 194, 194, 721, 194, 194, 753, 194, 194, 194, 717, 194, 1183, 719, 754, 194, 1183, 194, + 718, 715, 194, 716, 194, 1183, 194, 722, 723, 720, 194, 194, 194, 194, 724, 753, 755, + 194, 194, 194, 194, 725, 756, 754, 194, 726, 194, 194, 757, 758, 727, 728, 194, 759, + 760, 723, 720, 194, 194, 194, 194, 724, 761, 755, 762, 194, 194, 194, 725, 756, 763, + 764, 726, 765, 194, 757, 758, 727, 728, 194, 759, 760, 766, 767, 768, 194, + + 769, 770, 771, 761, 772, 762, 774, 775, 194, 776, 777, 763, 764, 780, 765, 773, 778, + 779, 781, 782, 783, 784, 785, 766, 767, 768, 786, 769, 770, 771, 787, 772, 788, 774, + 775, 789, 776, 777, 790, 791, 780, 792, 773, 778, 779, 781, 782, 783, 784, 785, 793, + 794, 795, 786, 796, 797, 798, 787, 799, 788, 800, 801, 789, 802, 803, 790, 791, 804, + 792, 805, 806, 807, 808, 809, 810, 811, 812, 793, 794, 795, 813, 796, 797, 798, 814, + 799, 1183, 800, 801, 194, 802, 803, 194, 194, 804, 194, 805, 806, 807, 808, + + 809, 810, 811, 812, 194, 816, 817, 813, 822, 818, 194, 814, 194, 194, 194, 819, 194, + 820, 1183, 194, 194, 823, 194, 821, 194, 194, 194, 194, 194, 1183, 194, 194, 816, 817, + 194, 822, 818, 194, 902, 194, 194, 194, 819, 903, 820, 194, 194, 194, 823, 194, 821, + 194, 194, 194, 194, 194, 824, 194, 194, 194, 194, 194, 827, 826, 194, 902, 825, 1183, + 194, 194, 903, 1183, 194, 194, 194, 1183, 194, 194, 194, 194, 194, 194, 829, 824, 194, + 194, 194, 194, 194, 827, 826, 194, 828, 825, 194, 194, 194, 194, 194, 904, + + 194, 194, 832, 194, 194, 194, 194, 194, 194, 829, 831, 194, 905, 830, 194, 194, 833, + 1183, 194, 828, 194, 194, 194, 194, 194, 194, 904, 194, 194, 832, 194, 194, 835, 1183, + 906, 836, 194, 831, 1183, 905, 830, 194, 194, 833, 194, 194, 834, 194, 838, 194, 194, + 194, 837, 1183, 194, 1183, 194, 194, 194, 835, 194, 906, 836, 194, 194, 194, 1183, 839, + 1183, 194, 1183, 194, 844, 834, 194, 838, 194, 194, 194, 837, 194, 194, 194, 194, 194, + 194, 194, 194, 1183, 1183, 194, 194, 194, 840, 839, 194, 194, 841, 1183, 844, + + 1183, 194, 194, 194, 194, 843, 194, 194, 846, 194, 194, 842, 194, 194, 194, 194, 194, + 194, 1183, 194, 840, 845, 194, 194, 841, 194, 848, 194, 194, 194, 194, 847, 843, 194, + 194, 846, 194, 194, 842, 194, 849, 194, 194, 194, 194, 194, 194, 194, 845, 194, 194, + 907, 194, 848, 194, 194, 1183, 194, 847, 194, 850, 194, 908, 194, 194, 194, 194, 849, + 853, 194, 194, 194, 194, 194, 194, 1183, 194, 194, 907, 194, 909, 194, 851, 194, 852, + 194, 194, 850, 194, 908, 194, 194, 194, 194, 854, 853, 194, 194, 1183, 1183, + + 194, 194, 855, 194, 194, 194, 194, 909, 194, 851, 194, 852, 194, 194, 194, 194, 858, + 194, 856, 194, 194, 854, 910, 1183, 194, 194, 857, 859, 194, 855, 194, 194, 194, 194, + 194, 194, 194, 194, 1183, 194, 194, 194, 860, 858, 911, 856, 194, 194, 1183, 910, 194, + 194, 194, 857, 859, 194, 194, 194, 194, 863, 194, 194, 194, 194, 194, 861, 194, 194, + 194, 860, 194, 911, 1183, 1183, 194, 862, 194, 194, 194, 194, 194, 1183, 194, 194, 194, + 194, 863, 912, 194, 194, 864, 865, 861, 867, 194, 194, 194, 194, 1183, 869, + + 194, 194, 862, 194, 866, 194, 194, 194, 868, 194, 194, 1183, 194, 913, 912, 194, 194, + 864, 865, 194, 867, 194, 1183, 194, 194, 870, 869, 194, 194, 194, 194, 866, 194, 194, + 873, 868, 194, 194, 194, 194, 913, 872, 871, 874, 194, 1183, 194, 194, 194, 194, 914, + 194, 870, 194, 915, 194, 194, 194, 194, 194, 194, 873, 1183, 194, 194, 194, 194, 194, + 872, 871, 874, 194, 875, 1183, 194, 194, 194, 914, 877, 876, 194, 915, 194, 194, 194, + 194, 194, 194, 194, 878, 194, 194, 194, 194, 194, 879, 881, 880, 194, 875, + + 194, 1183, 194, 1183, 1183, 877, 876, 194, 194, 883, 194, 194, 194, 194, 194, 194, 878, + 885, 194, 194, 194, 194, 879, 881, 880, 194, 194, 194, 882, 194, 884, 194, 194, 1183, + 194, 194, 883, 194, 916, 194, 194, 194, 886, 194, 885, 194, 194, 194, 194, 1183, 1183, + 194, 194, 194, 1183, 882, 194, 884, 194, 194, 194, 194, 194, 194, 194, 916, 1183, 194, + 194, 886, 194, 194, 889, 194, 194, 887, 888, 194, 194, 194, 890, 194, 194, 1183, 1183, + 194, 1183, 194, 194, 194, 194, 194, 892, 891, 194, 895, 194, 194, 194, 889, + + 893, 194, 887, 888, 194, 194, 194, 890, 194, 194, 897, 194, 194, 894, 194, 194, 194, + 896, 194, 892, 891, 194, 895, 194, 194, 194, 194, 893, 194, 899, 194, 194, 194, 194, + 194, 917, 918, 897, 194, 194, 894, 194, 194, 194, 896, 194, 898, 919, 194, 194, 194, + 194, 194, 194, 920, 194, 899, 194, 194, 194, 921, 194, 917, 918, 922, 900, 194, 923, + 924, 925, 926, 194, 194, 898, 919, 194, 194, 194, 194, 927, 928, 920, 929, 930, 931, + 932, 194, 921, 933, 934, 935, 922, 900, 936, 923, 924, 925, 926, 194, 937, + + 938, 939, 940, 941, 942, 943, 927, 928, 944, 929, 930, 931, 932, 945, 946, 933, 934, + 935, 947, 948, 936, 949, 950, 951, 952, 953, 937, 938, 939, 940, 941, 942, 943, 954, + 955, 944, 956, 957, 958, 959, 945, 946, 960, 961, 962, 947, 948, 963, 949, 950, 951, + 952, 953, 194, 1183, 194, 194, 1028, 194, 966, 954, 955, 1183, 956, 957, 958, 959, 194, + 967, 960, 961, 962, 194, 194, 963, 194, 194, 965, 194, 194, 194, 970, 194, 194, 1028, + 194, 966, 194, 194, 968, 194, 969, 194, 194, 194, 967, 1183, 1029, 1183, 194, + + 194, 194, 194, 194, 965, 194, 194, 194, 970, 973, 194, 972, 194, 194, 194, 194, 968, + 194, 969, 194, 194, 194, 971, 194, 1029, 978, 194, 194, 194, 194, 974, 976, 194, 975, + 194, 194, 973, 194, 972, 194, 194, 194, 1183, 194, 194, 194, 194, 1030, 194, 971, 194, + 977, 978, 194, 194, 194, 194, 974, 976, 194, 975, 194, 194, 194, 194, 194, 194, 979, + 194, 982, 194, 194, 194, 194, 1030, 981, 1031, 983, 977, 1032, 980, 194, 194, 194, 1183, + 194, 194, 1183, 194, 194, 194, 194, 194, 194, 979, 986, 982, 194, 1183, 194, + + 194, 194, 981, 1031, 983, 194, 1032, 980, 194, 987, 194, 194, 194, 194, 984, 985, 194, + 194, 1183, 194, 194, 988, 986, 194, 194, 194, 194, 194, 194, 1033, 1183, 194, 194, 194, + 194, 194, 987, 194, 194, 1034, 990, 984, 985, 194, 194, 194, 194, 194, 988, 989, 194, + 194, 194, 194, 194, 194, 1033, 194, 194, 991, 194, 194, 194, 1035, 194, 194, 1034, 990, + 194, 194, 194, 194, 194, 194, 1036, 1183, 989, 194, 194, 194, 194, 194, 194, 992, 194, + 994, 991, 1183, 194, 194, 1035, 1037, 194, 194, 993, 194, 194, 194, 194, 194, + + 194, 1036, 194, 194, 194, 194, 194, 194, 194, 997, 992, 995, 994, 194, 996, 194, 194, + 194, 1037, 998, 194, 993, 194, 194, 194, 1183, 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 997, 194, 995, 194, 194, 996, 194, 1000, 194, 999, 998, 194, 194, 194, 194, + 194, 1002, 194, 194, 194, 1001, 194, 194, 1183, 194, 1003, 194, 1183, 194, 1038, 194, 194, + 194, 194, 1000, 1183, 999, 194, 194, 194, 1006, 194, 194, 1002, 194, 194, 194, 1001, 194, + 194, 1007, 194, 1003, 194, 1004, 1183, 1038, 1039, 194, 194, 194, 194, 1005, 1040, + + 194, 194, 194, 1006, 194, 194, 1008, 194, 194, 194, 194, 1009, 194, 1007, 194, 194, 1011, + 1004, 1010, 194, 1039, 194, 1183, 194, 194, 1005, 1040, 194, 194, 194, 194, 1012, 194, 1008, + 194, 194, 194, 194, 1009, 194, 1013, 194, 194, 1011, 1183, 1010, 194, 194, 194, 1014, 1015, + 194, 194, 194, 194, 194, 194, 194, 1012, 1183, 1183, 194, 194, 194, 1016, 1018, 194, 1013, + 194, 194, 1017, 194, 194, 194, 194, 194, 1014, 1015, 194, 194, 194, 1019, 194, 194, 1020, + 194, 1021, 194, 194, 194, 1022, 1016, 1018, 1183, 1041, 194, 194, 1017, 194, 194, + + 194, 1183, 194, 1042, 194, 194, 194, 194, 1019, 194, 194, 1020, 194, 1021, 194, 194, 194, + 1022, 1025, 1024, 1023, 1041, 194, 194, 1026, 1043, 194, 1044, 194, 194, 1042, 194, 194, 194, + 194, 1045, 194, 194, 194, 194, 1046, 1047, 194, 194, 1048, 1025, 1024, 1023, 194, 1049, 194, + 1026, 1043, 194, 1044, 194, 194, 1050, 194, 194, 1051, 1052, 1045, 1053, 1054, 194, 194, 1046, + 1047, 1055, 194, 1048, 1056, 1057, 1058, 194, 1049, 1059, 1060, 1061, 1062, 1063, 1064, 1066, 1050, + 194, 194, 1051, 1052, 1104, 1053, 1054, 194, 194, 1068, 1183, 1055, 194, 1183, 1056, + + 1057, 1058, 1067, 194, 1059, 1060, 1061, 1062, 1063, 1064, 1066, 194, 194, 194, 194, 1183, 1104, + 194, 1183, 194, 194, 1068, 194, 194, 194, 194, 1069, 194, 1105, 1067, 194, 194, 1071, 1183, + 1106, 1072, 1070, 1183, 194, 194, 194, 194, 194, 194, 194, 194, 1073, 194, 194, 194, 194, + 194, 194, 1069, 194, 1105, 194, 194, 194, 1071, 194, 1106, 1072, 1070, 1074, 194, 1075, 1183, + 194, 194, 194, 194, 194, 1073, 194, 194, 194, 194, 194, 1076, 194, 1183, 194, 194, 194, + 194, 1077, 194, 194, 1183, 194, 1074, 194, 1075, 194, 194, 1078, 1183, 194, 194, + + 1107, 1183, 194, 194, 194, 194, 1076, 194, 194, 194, 194, 194, 194, 1077, 194, 194, 194, + 194, 1108, 194, 1079, 194, 194, 1078, 194, 194, 194, 1107, 194, 194, 194, 194, 194, 194, + 1183, 194, 1082, 194, 194, 1080, 1183, 194, 194, 194, 194, 1108, 194, 1079, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 1083, 194, 1082, 194, 194, 1080, 1081, + 1183, 194, 1183, 194, 1183, 194, 194, 194, 1084, 194, 1088, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 1083, 194, 194, 194, 194, 194, 1081, 1086, 194, 1085, 194, 194, + + 194, 194, 1087, 1084, 1183, 1088, 194, 194, 194, 194, 194, 194, 194, 1109, 194, 1183, 1089, + 194, 194, 194, 194, 1110, 1086, 194, 1085, 194, 194, 194, 194, 1087, 1090, 1091, 194, 194, + 194, 194, 194, 194, 194, 1183, 1109, 1092, 194, 1089, 194, 194, 194, 194, 1110, 1183, 1093, + 1094, 194, 194, 194, 194, 194, 1090, 1091, 194, 194, 194, 194, 194, 194, 194, 194, 1183, + 1092, 194, 1111, 194, 1096, 1095, 194, 194, 194, 1093, 1094, 194, 194, 194, 1098, 194, 194, + 1183, 194, 1183, 194, 194, 1097, 194, 194, 194, 194, 194, 194, 1111, 194, 1096, + + 1095, 1183, 194, 194, 194, 1112, 194, 1099, 194, 1098, 194, 194, 194, 194, 194, 194, 1183, + 1097, 194, 194, 1183, 194, 194, 194, 1113, 194, 194, 194, 1100, 1101, 194, 194, 1112, 194, + 1099, 194, 1183, 194, 1114, 194, 1115, 194, 194, 194, 1116, 194, 1117, 194, 1118, 1119, 1102, + 1113, 194, 194, 194, 1100, 1101, 194, 194, 1183, 194, 1121, 194, 194, 194, 1114, 194, 1115, + 1138, 1122, 194, 1116, 194, 1117, 194, 1118, 1119, 1102, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 1121, 194, 194, 194, 1124, 194, 1123, 1138, 1122, 194, 194, 194, + + 194, 1183, 194, 194, 1183, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 1125, 194, + 194, 194, 1124, 194, 1123, 1183, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, + 194, 1126, 194, 194, 1127, 194, 1129, 194, 1125, 194, 194, 194, 194, 194, 194, 1128, 194, + 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 1126, 194, 194, 1127, 194, 1129, + 1183, 194, 194, 194, 194, 194, 194, 194, 1128, 194, 194, 194, 194, 194, 194, 194, 194, + 1139, 1130, 194, 1131, 194, 194, 194, 194, 194, 1140, 1132, 194, 194, 194, 194, + + 194, 194, 194, 1133, 194, 194, 194, 194, 1136, 194, 194, 194, 1139, 1130, 1134, 1131, 194, + 194, 194, 194, 1135, 1140, 1132, 194, 194, 194, 194, 194, 194, 194, 1133, 194, 194, 194, + 194, 1136, 1141, 194, 194, 1142, 1143, 1134, 1144, 194, 194, 194, 1183, 1135, 194, 1183, 194, + 1154, 194, 194, 194, 194, 194, 1146, 194, 194, 194, 194, 194, 1141, 194, 194, 1142, 1143, + 194, 1144, 194, 194, 194, 194, 1147, 194, 194, 1148, 1154, 194, 194, 194, 194, 194, 1146, + 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 1183, 1149, 194, + + 194, 1147, 194, 194, 1148, 194, 194, 194, 194, 194, 194, 1155, 194, 1151, 194, 194, 1150, + 194, 1156, 194, 194, 194, 194, 194, 194, 1149, 194, 194, 1152, 194, 1158, 1162, 194, 194, + 1183, 194, 1183, 194, 1155, 194, 1151, 194, 194, 1150, 194, 1156, 194, 194, 194, 194, 194, + 194, 1183, 194, 194, 1152, 1159, 1158, 1162, 194, 194, 194, 194, 1183, 194, 1183, 194, 194, + 194, 194, 194, 194, 194, 1183, 194, 194, 1164, 194, 1183, 1183, 194, 194, 1160, 1159, 194, + 1183, 194, 194, 194, 194, 194, 194, 194, 1183, 194, 194, 1183, 194, 1183, 194, + + 1183, 1183, 1183, 1164, 1183, 1183, 1183, 1183, 194, 1160, 1183, 194, 1183, 1183, 194, 1183, 1183, + 194, 1183, 194, 46, 46, 46, 46, 46, 88, 1183, 1183, 88, 88, 179, 179, 179, 1183, + 179, 181, 1183, 181, 181, 181, 184, 1183, 184, 184, 184, 194, 1183, 194, 194, 194, 7, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183}; + +static const flex_int16_t yy_chk[4828] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1176,327 +1184,332 @@ static const flex_int16_t yy_chk[4763] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 9, 9, 10, 10, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 21, 22, 21, 24, - 1172, 23, 30, 24, 21, 1166, 21, 24, 23, 31, 21, 21, 44, 24, 99, + 1186, 23, 30, 24, 21, 1180, 21, 24, 23, 31, 21, 21, 44, 24, 99, - 23, 24, 22, 23, 1165, 25, 1164, 25, 21, 22, 21, 24, 25, 23, 30, 24, 21, + 23, 24, 22, 23, 1179, 25, 1178, 25, 21, 22, 21, 24, 25, 23, 30, 24, 21, 25, 21, 24, 23, 31, 21, 21, 44, 24, 99, 23, 24, 22, 23, 27, 25, 28, - 25, 1163, 32, 27, 1162, 25, 32, 28, 29, 42, 25, 26, 32, 28, 29, 29, 29, - 42, 1161, 26, 1160, 29, 26, 1159, 27, 26, 28, 1158, 26, 32, 27, 26, 1157, 32, - 28, 29, 42, 1156, 26, 32, 28, 29, 29, 29, 42, 34, 26, 33, 29, 26, 36, - 33, 26, 43, 43, 26, 35, 33, 26, 34, 1155, 36, 49, 49, 35, 34, - - 34, 36, 35, 38, 1154, 35, 34, 38, 33, 50, 50, 36, 33, 38, 43, 43, 1153, - 35, 33, 41, 34, 41, 36, 100, 41, 35, 34, 34, 36, 35, 38, 39, 35, 39, - 38, 103, 39, 71, 55, 104, 38, 58, 58, 39, 39, 1152, 41, 1151, 41, 55, 100, - 41, 86, 86, 67, 70, 108, 71, 39, 1149, 39, 67, 103, 39, 71, 70, 104, 67, - 111, 101, 39, 39, 40, 111, 67, 70, 40, 101, 107, 40, 40, 67, 70, 108, 71, - 107, 40, 114, 67, 40, 181, 181, 70, 1147, 67, 111, 101, 1143, 1139, 40, - - 111, 67, 70, 40, 101, 107, 40, 40, 1131, 1123, 1107, 1091, 107, 40, 114, 1054, 40, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 61, 61, 1017, 61, 61, 61, 61, 61, 61, 77, 68, 84, 955, - 893, 68, 808, 723, 115, 68, 61, 61, 61, 72, 116, 68, 61, 72, 61, 117, 77, - 118, 84, 72, 61, 68, 61, 77, 68, 84, 61, 61, 68, 72, 83, 115, 68, 83, - 83, 612, 72, 116, 68, 61, 72, 61, 117, 77, 118, 84, 72, 61, 68, - - 61, 83, 120, 501, 61, 61, 388, 72, 83, 274, 185, 83, 83, 61, 62, 62, 183, - 62, 62, 62, 62, 62, 62, 90, 88, 85, 73, 76, 83, 120, 73, 76, 60, 62, - 62, 62, 73, 110, 76, 78, 62, 81, 102, 78, 76, 102, 73, 110, 121, 78, 81, - 76, 81, 73, 76, 81, 122, 73, 76, 78, 62, 81, 59, 73, 110, 76, 78, 62, - 81, 102, 78, 76, 102, 73, 110, 121, 78, 81, 76, 81, 52, 123, 81, 122, 105, - 105, 78, 62, 81, 62, 63, 124, 82, 125, 63, 126, 82, 63, 105, 127, - - 82, 109, 109, 109, 63, 109, 51, 63, 123, 113, 113, 105, 105, 129, 63, 47, 82, - 63, 124, 82, 125, 63, 126, 82, 63, 105, 127, 82, 109, 109, 109, 63, 109, 112, - 63, 112, 113, 113, 112, 45, 129, 63, 64, 82, 112, 20, 64, 130, 132, 128, 64, - 112, 128, 133, 135, 119, 64, 119, 136, 64, 112, 119, 112, 19, 137, 112, 64, 11, - 119, 64, 138, 112, 119, 64, 130, 132, 128, 64, 112, 128, 133, 135, 119, 64, 119, - 136, 64, 7, 119, 141, 134, 137, 142, 64, 65, 119, 139, 138, 139, 119, - - 134, 65, 143, 65, 144, 134, 134, 140, 65, 140, 145, 146, 147, 65, 65, 4, 141, - 134, 148, 142, 140, 65, 150, 139, 151, 139, 3, 134, 65, 143, 65, 144, 134, 134, - 140, 65, 140, 145, 146, 147, 65, 65, 66, 152, 153, 148, 66, 140, 154, 150, 66, - 151, 154, 66, 156, 157, 66, 158, 0, 66, 160, 0, 66, 0, 161, 162, 66, 0, - 0, 66, 152, 153, 155, 66, 0, 154, 0, 66, 0, 154, 66, 156, 157, 66, 158, - 155, 66, 160, 159, 66, 155, 161, 162, 66, 69, 69, 163, 159, 164, 155, - - 165, 69, 69, 69, 166, 159, 167, 169, 69, 164, 169, 0, 155, 170, 69, 159, 171, - 155, 168, 0, 172, 69, 69, 163, 159, 164, 172, 165, 69, 69, 69, 166, 159, 167, - 169, 69, 164, 169, 168, 0, 170, 69, 74, 171, 173, 168, 74, 172, 174, 175, 176, - 277, 193, 172, 0, 0, 74, 173, 0, 279, 194, 194, 74, 74, 280, 168, 74, 0, - 0, 74, 0, 173, 193, 74, 282, 174, 175, 176, 277, 193, 0, 194, 195, 74, 173, - 196, 279, 194, 194, 74, 74, 280, 196, 74, 75, 75, 199, 195, 199, 193, - - 196, 282, 195, 75, 0, 196, 0, 75, 194, 195, 75, 0, 196, 198, 75, 0, 284, - 0, 199, 196, 0, 75, 75, 199, 195, 199, 198, 196, 0, 195, 75, 201, 196, 198, - 75, 197, 0, 75, 197, 197, 198, 75, 79, 284, 79, 199, 285, 79, 200, 200, 200, - 201, 286, 198, 79, 79, 0, 0, 201, 197, 198, 0, 197, 200, 79, 197, 197, 0, - 200, 79, 287, 79, 0, 285, 79, 200, 200, 200, 201, 286, 0, 79, 79, 205, 203, - 218, 197, 202, 203, 0, 200, 79, 80, 205, 202, 200, 80, 287, 218, 80, - - 80, 202, 289, 205, 290, 218, 80, 202, 203, 80, 205, 203, 218, 291, 202, 203, 80, - 0, 0, 80, 205, 202, 0, 80, 0, 218, 80, 80, 202, 289, 205, 290, 218, 80, - 202, 203, 80, 0, 0, 0, 291, 0, 0, 80, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 25, 1177, 32, 27, 1176, 25, 32, 28, 29, 42, 25, 26, 32, 28, 29, 29, 29, + 42, 1175, 26, 1174, 29, 26, 1173, 27, 26, 28, 1172, 26, 32, 27, 26, 1171, 32, + 28, 29, 42, 1170, 26, 32, 28, 29, 29, 29, 42, 34, 26, 33, 29, 26, 36, + 33, 26, 43, 43, 26, 35, 33, 26, 34, 100, 36, 49, 49, 35, 34, + + 34, 36, 35, 38, 1169, 35, 34, 38, 33, 50, 50, 36, 33, 38, 43, 43, 1168, + 35, 33, 1167, 34, 100, 36, 103, 55, 35, 34, 34, 36, 35, 38, 41, 35, 41, + 38, 55, 41, 58, 58, 1166, 38, 39, 104, 39, 1165, 71, 39, 77, 86, 86, 103, + 39, 1163, 39, 39, 1161, 70, 1157, 41, 1153, 41, 108, 1145, 41, 67, 71, 70, 77, + 39, 104, 39, 67, 71, 39, 77, 72, 70, 67, 39, 72, 39, 39, 40, 70, 67, + 72, 40, 110, 108, 40, 40, 67, 71, 70, 77, 72, 40, 110, 67, 40, + + 182, 182, 72, 70, 67, 1137, 72, 1120, 1103, 40, 1065, 67, 72, 40, 110, 1027, 40, + 40, 964, 901, 815, 729, 72, 40, 110, 617, 40, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 61, 505, + 61, 61, 61, 61, 61, 61, 84, 68, 114, 391, 276, 68, 186, 184, 115, 68, 61, + 61, 61, 73, 101, 68, 61, 73, 61, 116, 84, 117, 101, 73, 61, 68, 61, 84, + 68, 114, 61, 61, 68, 73, 102, 115, 68, 102, 90, 88, 73, 101, 68, + + 61, 73, 61, 116, 84, 117, 101, 73, 61, 68, 61, 85, 60, 118, 61, 61, 59, + 73, 102, 52, 51, 102, 76, 61, 62, 62, 76, 62, 62, 62, 62, 62, 62, 76, + 82, 47, 45, 78, 82, 76, 118, 78, 82, 62, 62, 62, 76, 78, 120, 76, 62, + 20, 19, 76, 121, 11, 122, 78, 82, 83, 76, 82, 83, 83, 78, 82, 76, 7, + 78, 82, 62, 107, 4, 76, 78, 120, 123, 62, 107, 83, 3, 121, 81, 122, 78, + 82, 83, 0, 0, 83, 83, 81, 124, 81, 105, 105, 81, 62, 107, 62, + + 63, 125, 81, 123, 63, 107, 83, 63, 105, 81, 0, 109, 109, 109, 63, 109, 0, + 63, 81, 124, 81, 105, 105, 81, 63, 0, 126, 63, 125, 81, 127, 63, 111, 0, + 63, 105, 129, 111, 109, 109, 109, 63, 109, 112, 63, 112, 113, 113, 112, 0, 130, + 63, 64, 126, 112, 0, 64, 127, 132, 111, 64, 112, 133, 129, 111, 119, 64, 119, + 135, 64, 112, 119, 112, 113, 113, 112, 64, 130, 119, 64, 136, 112, 119, 64, 0, + 132, 0, 64, 112, 133, 137, 0, 119, 64, 119, 135, 64, 0, 119, 128, + + 134, 138, 128, 64, 65, 119, 139, 136, 139, 119, 134, 65, 141, 65, 142, 134, 134, + 137, 65, 140, 143, 140, 144, 65, 65, 0, 128, 134, 138, 128, 145, 65, 140, 139, + 146, 139, 0, 134, 65, 141, 65, 142, 134, 134, 147, 65, 140, 143, 140, 144, 65, + 65, 66, 148, 150, 151, 66, 145, 152, 140, 66, 146, 153, 66, 154, 156, 66, 157, + 154, 66, 158, 147, 66, 0, 0, 160, 66, 0, 0, 66, 148, 150, 151, 66, 0, + 152, 0, 66, 155, 153, 66, 154, 156, 66, 157, 154, 66, 158, 161, 66, + + 159, 155, 160, 66, 69, 69, 155, 162, 163, 159, 164, 69, 69, 69, 166, 155, 167, + 159, 69, 165, 168, 171, 169, 170, 69, 161, 170, 159, 155, 0, 165, 69, 69, 155, + 162, 163, 159, 164, 69, 69, 69, 166, 169, 167, 159, 69, 165, 168, 171, 169, 170, + 69, 74, 170, 172, 173, 74, 165, 174, 175, 176, 173, 177, 279, 194, 0, 74, 0, + 0, 169, 281, 174, 74, 74, 195, 195, 74, 0, 0, 74, 0, 172, 173, 74, 194, + 174, 175, 176, 173, 177, 279, 194, 196, 74, 202, 195, 0, 281, 174, 74, + + 74, 195, 195, 74, 75, 75, 227, 196, 197, 0, 282, 194, 196, 75, 202, 197, 199, + 75, 0, 196, 75, 202, 195, 197, 75, 0, 227, 0, 197, 199, 0, 75, 75, 227, + 196, 197, 199, 282, 0, 196, 75, 202, 197, 199, 75, 198, 284, 75, 198, 198, 197, + 75, 79, 227, 79, 197, 199, 79, 200, 286, 200, 0, 79, 199, 79, 79, 0, 0, + 0, 198, 0, 0, 198, 284, 79, 198, 198, 0, 206, 79, 200, 79, 0, 0, 79, + 200, 286, 200, 206, 79, 0, 79, 79, 201, 201, 201, 198, 203, 206, 0, + + 287, 79, 80, 207, 203, 206, 80, 200, 201, 80, 80, 203, 288, 201, 289, 206, 80, + 203, 207, 80, 201, 201, 201, 207, 203, 206, 80, 287, 0, 80, 207, 203, 0, 80, + 0, 201, 80, 80, 203, 288, 201, 289, 0, 80, 203, 207, 80, 0, 0, 0, 207, + 0, 0, 80, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 204, 206, 292, 210, 0, 208, 293, 204, 204, 204, 0, - 204, 0, 210, 0, 0, 206, 211, 208, 208, 204, 206, 0, 210, 0, 208, 0, 204, - 206, 292, 210, 211, 208, 293, 204, 204, 204, 211, 204, 209, 210, 212, 212, 206, 211, - 208, 208, 204, 206, 207, 210, 207, 208, 207, 207, 209, 0, 226, 211, 209, 207, 213, - 212, 213, 211, 215, 209, 207, 212, 212, 294, 0, 215, 207, 295, 0, 207, 226, 207, - 296, 207, 207, 209, 213, 226, 215, 209, 207, 213, 212, 213, 0, 215, 297, - - 207, 216, 0, 294, 217, 215, 207, 295, 216, 225, 226, 298, 296, 220, 217, 0, 213, - 214, 215, 214, 220, 216, 219, 214, 217, 225, 297, 0, 216, 225, 214, 217, 219, 220, - 214, 216, 225, 0, 298, 214, 220, 217, 219, 221, 214, 222, 214, 220, 216, 219, 214, - 217, 225, 221, 223, 222, 225, 214, 224, 219, 220, 214, 299, 221, 228, 222, 214, 224, - 223, 219, 221, 223, 222, 227, 223, 228, 0, 227, 224, 230, 221, 223, 222, 231, 228, - 224, 300, 231, 230, 299, 221, 228, 222, 227, 224, 223, 232, 0, 223, 230, - - 227, 223, 228, 231, 227, 224, 230, 233, 233, 0, 231, 228, 302, 300, 231, 230, 232, - 0, 303, 304, 227, 229, 229, 232, 237, 0, 230, 233, 0, 0, 231, 229, 234, 237, - 233, 233, 229, 229, 234, 302, 234, 301, 229, 232, 237, 303, 304, 0, 229, 229, 0, - 237, 234, 235, 233, 235, 301, 235, 229, 234, 237, 236, 305, 229, 229, 234, 235, 234, - 301, 229, 306, 237, 239, 0, 236, 240, 238, 235, 0, 234, 235, 236, 235, 301, 235, - 238, 307, 239, 236, 305, 240, 241, 239, 235, 309, 240, 238, 306, 241, 239, - - 244, 236, 240, 238, 235, 242, 243, 243, 236, 242, 0, 241, 238, 307, 239, 260, 0, - 240, 241, 239, 244, 309, 240, 238, 0, 241, 243, 244, 246, 242, 245, 245, 242, 243, - 243, 260, 242, 248, 241, 247, 249, 248, 260, 246, 249, 0, 310, 244, 246, 0, 311, - 245, 247, 243, 0, 246, 242, 245, 245, 247, 249, 248, 260, 0, 248, 312, 247, 249, - 248, 0, 246, 249, 250, 310, 252, 246, 250, 311, 245, 247, 251, 252, 251, 313, 0, - 250, 247, 249, 248, 0, 250, 314, 312, 269, 252, 253, 250, 0, 253, 250, - - 251, 252, 254, 250, 254, 315, 255, 251, 252, 251, 313, 254, 250, 269, 0, 253, 255, - 250, 314, 254, 269, 252, 253, 250, 254, 253, 255, 251, 256, 254, 257, 254, 315, 255, - 257, 316, 258, 0, 254, 258, 269, 256, 253, 255, 261, 262, 254, 0, 256, 317, 259, - 254, 261, 255, 257, 256, 262, 257, 259, 258, 0, 257, 316, 258, 261, 262, 258, 0, - 256, 259, 259, 261, 262, 0, 263, 256, 317, 259, 263, 261, 264, 257, 0, 262, 264, - 259, 258, 264, 265, 265, 0, 261, 262, 268, 263, 0, 259, 259, 263, 266, - - 264, 263, 0, 266, 318, 263, 268, 264, 0, 265, 0, 264, 319, 268, 264, 265, 265, - 270, 0, 266, 268, 263, 267, 320, 271, 263, 266, 264, 271, 267, 266, 318, 270, 268, - 321, 267, 265, 270, 322, 319, 268, 323, 267, 288, 270, 288, 266, 324, 271, 267, 320, - 271, 0, 0, 0, 271, 267, 0, 0, 270, 288, 321, 267, 325, 270, 322, 326, 327, - 323, 267, 288, 328, 288, 329, 324, 271, 275, 275, 275, 275, 275, 275, 275, 275, 275, - 275, 330, 288, 331, 332, 325, 333, 334, 326, 327, 336, 337, 338, 328, 332, - - 329, 339, 340, 341, 342, 343, 344, 345, 347, 348, 349, 350, 351, 330, 352, 331, 332, - 353, 333, 334, 354, 355, 336, 337, 338, 356, 332, 357, 339, 340, 341, 342, 343, 344, - 345, 347, 348, 349, 350, 351, 358, 352, 359, 360, 353, 361, 362, 354, 355, 363, 365, - 366, 356, 367, 357, 368, 369, 370, 371, 372, 374, 376, 375, 376, 377, 378, 379, 358, - 380, 359, 360, 375, 361, 362, 381, 382, 363, 365, 366, 383, 367, 385, 368, 369, 370, - 371, 372, 374, 376, 375, 376, 377, 378, 379, 386, 380, 381, 0, 375, 384, - - 390, 381, 382, 384, 391, 392, 383, 0, 385, 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 393, 390, 386, 394, 381, 391, 392, 384, 390, 395, 394, 384, 391, 392, 396, - 397, 0, 0, 396, 502, 393, 0, 503, 394, 398, 0, 504, 393, 390, 395, 394, 0, - 391, 392, 398, 397, 395, 394, 396, 399, 400, 396, 397, 399, 398, 396, 502, 393, 401, - 503, 394, 398, 402, 504, 402, 401, 395, 404, 400, 399, 400, 398, 397, 403, 505, 396, - 399, 400, 401, 402, 399, 398, 405, 404, 402, 401, 403, 404, 406, 402, 405, - - 402, 401, 403, 404, 400, 399, 400, 407, 410, 403, 505, 405, 406, 506, 401, 402, 409, - 406, 405, 404, 402, 408, 403, 404, 406, 408, 405, 407, 410, 403, 409, 0, 0, 411, - 407, 410, 409, 414, 405, 406, 506, 414, 412, 409, 406, 408, 413, 411, 408, 412, 413, - 0, 408, 411, 407, 410, 416, 409, 416, 417, 411, 414, 412, 409, 414, 0, 413, 415, - 414, 412, 0, 421, 408, 413, 411, 418, 412, 413, 416, 417, 411, 419, 415, 416, 419, - 416, 417, 415, 414, 412, 418, 421, 420, 413, 415, 418, 422, 423, 421, 507, - - 424, 423, 418, 420, 419, 416, 417, 508, 419, 415, 0, 419, 420, 425, 415, 425, 422, - 418, 421, 420, 424, 423, 418, 422, 423, 0, 507, 424, 423, 427, 420, 419, 426, 430, - 508, 425, 427, 428, 510, 420, 425, 429, 425, 422, 513, 0, 426, 424, 423, 427, 428, - 0, 426, 430, 431, 429, 427, 428, 431, 426, 430, 429, 425, 427, 428, 510, 432, 433, - 429, 435, 514, 513, 435, 426, 432, 433, 427, 428, 431, 426, 430, 431, 429, 434, 428, - 431, 432, 433, 429, 0, 434, 436, 435, 432, 433, 437, 435, 514, 437, 435, - - 438, 432, 433, 434, 438, 431, 439, 436, 0, 0, 434, 436, 0, 432, 433, 437, 440, - 434, 436, 435, 438, 439, 437, 515, 443, 437, 439, 438, 0, 440, 434, 438, 0, 439, - 436, 441, 440, 444, 436, 442, 445, 441, 437, 440, 443, 0, 516, 438, 439, 442, 515, - 443, 448, 439, 447, 441, 440, 444, 0, 442, 445, 448, 441, 440, 444, 446, 442, 445, - 441, 449, 447, 443, 448, 516, 447, 446, 442, 0, 450, 448, 451, 447, 441, 0, 444, - 446, 442, 445, 448, 449, 452, 454, 446, 450, 452, 454, 449, 447, 450, 448, - - 451, 447, 446, 453, 453, 450, 455, 451, 455, 456, 452, 456, 446, 0, 460, 454, 449, - 452, 454, 518, 450, 452, 454, 457, 453, 450, 455, 451, 459, 456, 453, 453, 458, 455, - 460, 455, 456, 452, 456, 457, 463, 460, 454, 457, 459, 462, 518, 458, 459, 464, 457, - 453, 458, 455, 463, 459, 456, 461, 462, 458, 463, 460, 465, 0, 461, 462, 457, 463, - 0, 464, 457, 459, 462, 470, 458, 459, 464, 461, 0, 458, 470, 463, 465, 0, 461, - 462, 466, 463, 467, 465, 466, 461, 462, 470, 468, 471, 464, 467, 469, 471, - - 470, 0, 519, 0, 461, 468, 469, 470, 467, 465, 466, 520, 0, 466, 468, 467, 472, - 466, 469, 471, 470, 468, 471, 0, 467, 469, 471, 473, 475, 519, 473, 472, 468, 469, - 522, 467, 472, 466, 520, 477, 476, 468, 474, 472, 478, 469, 471, 473, 475, 474, 476, - 0, 479, 480, 473, 475, 0, 473, 472, 477, 476, 522, 474, 472, 478, 0, 477, 476, - 480, 474, 479, 478, 479, 480, 473, 475, 474, 476, 481, 479, 480, 482, 523, 483, 0, - 0, 477, 476, 482, 474, 0, 478, 484, 481, 483, 480, 486, 479, 481, 479, - - 480, 482, 485, 483, 487, 481, 524, 484, 482, 523, 483, 485, 484, 0, 525, 482, 486, - 488, 0, 484, 481, 483, 485, 486, 487, 481, 488, 489, 482, 485, 483, 487, 526, 524, - 484, 491, 489, 488, 485, 484, 490, 525, 492, 486, 488, 491, 492, 489, 493, 485, 490, - 487, 490, 488, 489, 491, 527, 493, 0, 526, 490, 0, 491, 489, 488, 494, 492, 490, - 493, 492, 496, 0, 491, 492, 489, 493, 495, 490, 495, 490, 0, 494, 491, 527, 493, - 494, 497, 490, 496, 0, 496, 498, 494, 492, 500, 493, 499, 496, 495, 499, - - 498, 497, 528, 495, 498, 495, 497, 500, 494, 529, 530, 498, 494, 497, 500, 496, 499, - 496, 498, 533, 534, 500, 535, 499, 536, 495, 499, 498, 497, 528, 537, 498, 538, 497, - 500, 539, 529, 530, 498, 541, 542, 500, 545, 499, 546, 548, 533, 534, 550, 535, 551, - 536, 552, 553, 554, 555, 558, 537, 562, 538, 564, 566, 539, 556, 567, 567, 541, 542, - 568, 545, 569, 546, 548, 571, 556, 550, 572, 551, 573, 552, 553, 554, 555, 558, 574, - 562, 575, 564, 566, 577, 556, 567, 567, 578, 580, 568, 581, 569, 582, 583, - - 571, 556, 584, 572, 585, 573, 586, 588, 589, 590, 591, 574, 594, 575, 595, 597, 577, - 598, 599, 600, 578, 580, 601, 581, 602, 582, 583, 603, 604, 584, 605, 585, 607, 586, - 588, 589, 590, 591, 609, 594, 611, 595, 597, 613, 598, 599, 600, 0, 614, 601, 0, - 602, 615, 616, 603, 604, 613, 605, 617, 607, 0, 614, 619, 613, 620, 609, 726, 611, - 614, 0, 613, 617, 615, 616, 622, 614, 728, 618, 617, 615, 616, 0, 619, 613, 620, - 617, 618, 623, 614, 619, 613, 620, 621, 726, 622, 614, 621, 618, 617, 615, - - 616, 622, 624, 728, 618, 617, 624, 623, 626, 619, 625, 620, 626, 618, 623, 0, 621, - 0, 625, 621, 0, 622, 628, 621, 618, 730, 624, 627, 626, 624, 625, 629, 0, 624, - 623, 626, 630, 625, 0, 626, 627, 632, 628, 621, 631, 625, 629, 627, 0, 628, 630, - 629, 730, 624, 627, 626, 630, 625, 629, 631, 635, 632, 634, 630, 631, 633, 0, 627, - 632, 628, 634, 631, 633, 629, 627, 636, 635, 630, 629, 0, 635, 0, 634, 630, 0, - 633, 631, 635, 632, 634, 636, 631, 633, 638, 637, 636, 640, 634, 637, 633, - - 640, 0, 636, 635, 641, 0, 638, 635, 639, 634, 639, 641, 633, 638, 642, 0, 640, - 636, 637, 643, 638, 637, 636, 640, 641, 637, 0, 640, 646, 0, 639, 641, 650, 638, - 642, 639, 644, 639, 641, 643, 638, 642, 645, 640, 646, 637, 643, 644, 646, 0, 647, - 641, 650, 645, 648, 646, 644, 639, 648, 650, 649, 642, 645, 644, 649, 647, 643, 0, - 651, 645, 647, 646, 653, 654, 644, 646, 653, 647, 648, 650, 645, 648, 655, 644, 649, - 648, 652, 649, 651, 645, 656, 649, 647, 654, 656, 651, 653, 647, 731, 653, - - 654, 652, 655, 653, 658, 648, 652, 657, 0, 655, 659, 649, 660, 652, 656, 651, 732, - 656, 657, 659, 654, 656, 661, 653, 658, 731, 0, 657, 652, 655, 659, 658, 660, 652, - 657, 662, 661, 659, 668, 660, 663, 656, 661, 732, 0, 657, 659, 0, 665, 661, 0, - 658, 664, 663, 657, 662, 733, 659, 668, 660, 663, 665, 662, 661, 666, 668, 669, 663, - 665, 661, 670, 664, 664, 669, 671, 665, 667, 666, 667, 664, 663, 0, 662, 733, 666, - 668, 669, 663, 665, 667, 670, 666, 672, 669, 671, 665, 667, 670, 664, 664, - - 669, 671, 0, 667, 666, 667, 674, 673, 675, 676, 677, 666, 672, 669, 734, 675, 667, - 670, 0, 672, 735, 671, 673, 667, 0, 0, 674, 673, 675, 676, 677, 678, 681, 674, - 673, 675, 676, 677, 736, 672, 679, 734, 675, 679, 738, 678, 678, 735, 680, 673, 0, - 678, 681, 674, 673, 675, 676, 677, 678, 681, 679, 680, 682, 683, 682, 736, 0, 679, - 680, 0, 679, 738, 678, 678, 0, 680, 687, 686, 678, 681, 684, 685, 688, 683, 682, - 686, 688, 679, 680, 682, 683, 682, 0, 684, 685, 680, 687, 686, 689, 690, - - 684, 685, 689, 687, 686, 0, 688, 684, 685, 688, 683, 682, 686, 688, 739, 0, 740, - 0, 0, 690, 684, 685, 689, 687, 686, 689, 690, 684, 685, 689, 691, 692, 693, 688, - 695, 741, 696, 694, 691, 0, 694, 739, 695, 740, 692, 696, 690, 693, 0, 689, 691, - 692, 693, 697, 695, 697, 696, 691, 692, 693, 694, 695, 741, 696, 694, 691, 698, 694, - 699, 695, 701, 692, 696, 0, 693, 697, 703, 691, 692, 693, 697, 695, 697, 696, 702, - 700, 698, 694, 699, 700, 701, 0, 0, 698, 702, 699, 703, 701, 704, 707, - - 705, 0, 697, 703, 702, 700, 0, 708, 706, 708, 0, 702, 700, 698, 705, 699, 700, - 701, 704, 707, 705, 702, 706, 703, 709, 704, 707, 705, 706, 708, 0, 702, 700, 709, - 708, 706, 708, 710, 711, 712, 0, 705, 711, 714, 709, 704, 707, 705, 713, 706, 713, - 709, 742, 710, 712, 706, 708, 710, 715, 712, 709, 715, 711, 714, 710, 711, 712, 717, - 713, 711, 714, 709, 716, 719, 0, 713, 716, 713, 715, 742, 710, 712, 718, 744, 710, - 715, 712, 717, 715, 711, 714, 720, 716, 719, 717, 713, 721, 745, 718, 716, - - 719, 722, 718, 716, 746, 715, 747, 748, 749, 718, 744, 720, 750, 751, 717, 722, 721, - 752, 720, 716, 719, 722, 753, 721, 745, 718, 756, 757, 722, 718, 759, 746, 762, 747, - 748, 749, 765, 766, 720, 750, 751, 768, 722, 721, 752, 773, 774, 767, 722, 753, 767, - 775, 776, 756, 757, 777, 780, 759, 781, 762, 782, 783, 784, 765, 766, 786, 787, 788, - 768, 789, 790, 791, 773, 774, 767, 792, 793, 767, 775, 776, 794, 795, 777, 780, 796, - 781, 798, 782, 783, 784, 799, 800, 786, 787, 788, 802, 789, 790, 791, 803, - - 804, 805, 792, 793, 809, 810, 894, 794, 795, 811, 0, 796, 0, 798, 812, 813, 0, - 799, 800, 814, 815, 817, 802, 817, 809, 810, 803, 804, 805, 811, 811, 809, 810, 894, - 812, 813, 811, 816, 816, 814, 815, 812, 813, 817, 0, 896, 814, 815, 817, 820, 817, - 809, 810, 819, 818, 821, 811, 811, 816, 820, 0, 812, 813, 818, 816, 816, 814, 815, - 819, 820, 817, 822, 896, 819, 818, 821, 820, 824, 0, 823, 819, 818, 821, 823, 825, - 816, 820, 824, 825, 827, 818, 822, 897, 828, 0, 819, 820, 824, 822, 823, - - 819, 818, 821, 829, 824, 826, 823, 829, 825, 827, 823, 825, 826, 828, 824, 825, 827, - 898, 822, 897, 828, 832, 830, 829, 824, 826, 823, 0, 0, 0, 829, 0, 826, 833, - 829, 825, 827, 830, 831, 826, 828, 832, 830, 0, 898, 0, 834, 831, 832, 830, 829, - 899, 826, 833, 838, 835, 838, 836, 831, 837, 833, 834, 0, 837, 830, 831, 834, 839, - 832, 830, 835, 836, 840, 834, 831, 835, 838, 836, 899, 837, 833, 838, 835, 838, 836, - 831, 837, 839, 834, 842, 837, 843, 840, 834, 839, 841, 842, 835, 836, 840, - - 845, 846, 835, 838, 836, 844, 837, 844, 901, 842, 841, 843, 0, 848, 839, 841, 842, - 0, 843, 840, 845, 846, 841, 842, 847, 844, 849, 845, 846, 851, 850, 0, 844, 848, - 844, 901, 842, 841, 843, 847, 848, 852, 841, 0, 847, 850, 849, 845, 846, 851, 850, - 847, 844, 849, 854, 852, 851, 850, 852, 855, 848, 852, 0, 853, 856, 0, 847, 857, - 852, 858, 853, 847, 850, 849, 854, 863, 851, 850, 859, 855, 0, 854, 852, 853, 856, - 852, 855, 857, 852, 858, 853, 856, 859, 862, 857, 863, 858, 853, 859, 860, - - 0, 854, 863, 860, 861, 859, 855, 861, 862, 864, 853, 856, 865, 862, 857, 0, 858, - 868, 903, 859, 862, 0, 863, 860, 861, 859, 860, 870, 866, 864, 860, 861, 865, 867, - 861, 862, 864, 868, 869, 865, 862, 866, 869, 0, 868, 903, 867, 870, 866, 904, 860, - 861, 874, 867, 870, 866, 864, 871, 869, 865, 867, 871, 872, 905, 868, 869, 872, 874, - 866, 869, 873, 873, 874, 867, 870, 866, 904, 0, 0, 874, 867, 871, 875, 875, 871, - 869, 872, 877, 871, 872, 905, 873, 876, 872, 874, 0, 876, 873, 873, 874, - - 880, 877, 878, 875, 880, 879, 882, 877, 871, 875, 875, 0, 0, 872, 877, 878, 876, - 881, 873, 876, 879, 881, 878, 876, 880, 879, 882, 880, 877, 878, 875, 880, 879, 882, - 877, 883, 884, 884, 885, 886, 887, 881, 878, 876, 881, 0, 888, 879, 881, 878, 888, - 880, 879, 882, 887, 883, 891, 884, 885, 886, 887, 906, 883, 884, 884, 885, 886, 887, - 881, 889, 888, 890, 892, 888, 908, 890, 891, 888, 889, 910, 914, 887, 883, 891, 884, - 885, 886, 887, 906, 889, 916, 917, 892, 923, 924, 890, 889, 888, 890, 892, - - 925, 908, 890, 891, 927, 889, 910, 914, 929, 930, 932, 933, 934, 936, 937, 938, 889, - 916, 917, 892, 923, 924, 890, 939, 942, 944, 945, 925, 946, 947, 952, 927, 953, 954, - 956, 929, 930, 932, 933, 934, 936, 937, 938, 957, 959, 962, 1021, 960, 0, 958, 939, - 942, 944, 945, 956, 946, 947, 952, 958, 953, 954, 956, 960, 957, 959, 962, 961, 960, - 963, 958, 957, 959, 962, 1021, 960, 963, 958, 964, 1024, 965, 961, 956, 0, 1025, 0, - 958, 961, 965, 963, 960, 957, 959, 962, 961, 960, 963, 958, 964, 966, 965, - - 966, 967, 963, 968, 964, 1024, 965, 961, 967, 969, 1025, 971, 0, 961, 965, 963, 970, - 973, 968, 970, 966, 967, 974, 968, 964, 966, 965, 966, 967, 969, 968, 971, 972, 975, - 972, 967, 969, 973, 971, 970, 0, 0, 974, 970, 973, 968, 970, 966, 967, 974, 968, - 976, 977, 975, 972, 979, 969, 980, 971, 972, 975, 972, 0, 981, 973, 978, 970, 982, - 983, 974, 979, 976, 977, 984, 978, 979, 985, 980, 976, 977, 975, 972, 979, 981, 980, - 978, 986, 982, 983, 985, 981, 988, 978, 984, 982, 983, 985, 979, 976, 977, - - 984, 978, 979, 985, 980, 987, 986, 989, 990, 987, 981, 988, 978, 986, 982, 983, 985, - 991, 988, 0, 984, 989, 992, 985, 991, 993, 992, 989, 990, 987, 0, 1028, 987, 986, - 989, 990, 987, 991, 988, 995, 996, 997, 994, 1029, 991, 993, 992, 0, 989, 992, 0, - 991, 993, 992, 989, 990, 987, 994, 1028, 995, 996, 997, 994, 998, 991, 998, 995, 996, - 997, 994, 1029, 0, 993, 992, 999, 1002, 999, 1000, 1003, 1001, 0, 0, 0, 1034, 994, - 998, 995, 996, 997, 994, 998, 1000, 998, 1001, 1035, 1002, 999, 1000, 1003, 1001, - - 0, 999, 1002, 999, 1000, 1003, 1001, 1004, 1005, 1006, 1034, 1038, 998, 1006, 1004, 1007, 0, - 1009, 1000, 1007, 1001, 1035, 1002, 999, 1000, 1003, 1001, 1004, 1005, 1008, 1010, 1008, 1009, 1006, - 1004, 1005, 1006, 1009, 1038, 1007, 1006, 1004, 1007, 1011, 1009, 1012, 1007, 1013, 1014, 1039, 1010, - 1008, 1042, 0, 1004, 1005, 1008, 1010, 1008, 1009, 1006, 1014, 0, 1011, 1009, 1012, 1007, 1013, - 1014, 1015, 1011, 1015, 1012, 1016, 1013, 1014, 1039, 1010, 1008, 1042, 1016, 1043, 1047, 1048, 1049, - 1050, 1055, 0, 1014, 1015, 1011, 0, 1012, 1016, 1013, 1014, 1015, 1056, 1015, 1057, - - 1016, 1058, 1059, 1060, 0, 1061, 1055, 1016, 1043, 1047, 1048, 1049, 1050, 1055, 1062, 1063, 1015, - 1056, 1062, 1057, 1016, 1058, 1059, 1060, 1056, 1061, 1057, 1064, 1058, 1059, 1060, 1065, 1061, 1055, - 0, 1063, 1067, 1068, 1062, 1069, 1066, 1062, 1063, 0, 1056, 1062, 1057, 1064, 1058, 1059, 1060, - 1065, 1061, 1070, 1064, 1066, 1067, 1068, 1065, 1069, 1066, 1073, 1063, 1067, 1068, 1062, 1069, 1066, - 1071, 1072, 1071, 1074, 1075, 1070, 1064, 0, 1072, 0, 1065, 1092, 1070, 1073, 1066, 1067, 1068, - 1075, 1069, 1066, 1073, 1072, 1071, 1074, 1075, 1076, 1077, 1071, 1072, 1071, 1074, 1075, - - 1070, 1094, 1078, 1072, 1081, 0, 1092, 1082, 1073, 0, 1079, 1097, 1075, 1076, 1077, 1083, 1072, - 1071, 1074, 1075, 1076, 1077, 1078, 1084, 1081, 1079, 1080, 1082, 1094, 1078, 1079, 1081, 1080, 0, - 1082, 1083, 1084, 1079, 1097, 1100, 1076, 1077, 1083, 1084, 1087, 1086, 1080, 1085, 1088, 1078, 1084, - 1081, 1079, 1080, 1082, 1085, 1089, 1079, 1090, 1080, 1086, 1103, 1083, 1084, 1087, 1086, 1100, 1085, - 1088, 1104, 1084, 1087, 1086, 1080, 1085, 1088, 1089, 1105, 1090, 1109, 1108, 1111, 1085, 1089, 0, - 1090, 0, 1086, 1103, 1112, 0, 1087, 1086, 1108, 1085, 1088, 1104, 1110, 1113, 1109, - - 1108, 1111, 1114, 1089, 1105, 1090, 1109, 1108, 1111, 1112, 1115, 1117, 1110, 1113, 0, 1118, 1112, - 1110, 1113, 1125, 1108, 1116, 1114, 1119, 1110, 1113, 1109, 1108, 1111, 1114, 1115, 1117, 1127, 1122, - 1116, 1118, 1112, 1115, 1117, 1110, 1113, 1116, 1118, 1119, 1110, 1113, 1125, 1121, 1116, 1114, 1119, - 1121, 1120, 1122, 1130, 1132, 1133, 1115, 1117, 1127, 1122, 1116, 1118, 1120, 1134, 1136, 0, 1121, - 1116, 1137, 1119, 0, 1120, 1135, 1121, 1132, 1133, 1142, 1121, 1120, 1122, 1130, 1132, 1133, 1134, - 1136, 1144, 1135, 1138, 1137, 1120, 1134, 1136, 1135, 1121, 0, 1137, 1145, 1138, 1120, - - 1135, 1146, 1132, 1133, 1142, 0, 1144, 1150, 1138, 0, 1146, 1134, 1136, 1144, 1135, 1138, 1137, - 1145, 0, 0, 1135, 1146, 0, 0, 1145, 1138, 0, 1150, 1146, 0, 0, 0, 0, 1144, - 1150, 1138, 0, 1146, 0, 0, 0, 0, 0, 0, 1145, 0, 0, 0, 1146, 0, 0, - 0, 0, 0, 1150, 1170, 1170, 1170, 1170, 1170, 1171, 0, 0, 1171, 1171, 1173, 1173, 1173, - 0, 1173, 1174, 0, 1174, 1174, 1174, 1175, 0, 1175, 1175, 1175, 1176, 0, 1176, 1176, 1176, - 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, - - 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, - 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, - 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, - 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169}; + 188, 188, 188, 188, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 204, + 209, 210, 211, 204, 291, 212, 292, 293, 294, 0, 0, 295, 211, 209, 209, 213, 213, + 210, 0, 212, 209, 210, 211, 204, 0, 212, 204, 209, 210, 211, 204, 291, 212, 292, + 293, 294, 213, 233, 295, 211, 209, 209, 213, 213, 210, 229, 212, 209, 210, 211, 204, + 205, 212, 214, 0, 214, 229, 233, 205, 205, 205, 216, 205, 213, 233, 229, 0, 0, + 216, 296, 297, 205, 229, 0, 0, 214, 0, 0, 205, 298, 214, 216, 214, + + 229, 233, 205, 205, 205, 216, 205, 0, 299, 229, 217, 219, 216, 296, 297, 205, 208, + 217, 208, 214, 208, 208, 218, 298, 219, 216, 220, 208, 0, 0, 217, 219, 218, 0, + 208, 299, 220, 217, 219, 0, 208, 0, 218, 208, 217, 208, 220, 208, 208, 218, 300, + 219, 237, 220, 208, 221, 222, 217, 219, 218, 245, 208, 221, 220, 0, 237, 222, 208, + 215, 218, 215, 0, 237, 220, 215, 221, 222, 300, 223, 237, 245, 215, 221, 222, 0, + 215, 0, 245, 223, 221, 215, 225, 237, 222, 240, 215, 224, 215, 223, 237, + + 225, 215, 221, 222, 226, 223, 0, 245, 215, 240, 224, 225, 215, 224, 240, 223, 224, + 215, 225, 231, 226, 240, 228, 224, 226, 223, 228, 225, 231, 0, 232, 226, 234, 234, + 232, 301, 240, 224, 225, 231, 224, 240, 228, 224, 0, 302, 231, 226, 235, 228, 232, + 226, 234, 228, 235, 231, 235, 232, 0, 234, 234, 232, 301, 236, 0, 236, 231, 236, + 235, 228, 230, 230, 302, 238, 0, 235, 236, 232, 0, 234, 230, 235, 238, 235, 241, + 230, 230, 236, 304, 0, 236, 230, 236, 238, 236, 235, 239, 230, 230, 241, + + 238, 242, 305, 236, 241, 239, 243, 230, 242, 238, 243, 241, 230, 230, 236, 304, 239, + 0, 230, 0, 238, 242, 0, 239, 244, 244, 241, 247, 242, 305, 243, 241, 239, 243, + 0, 242, 248, 243, 246, 246, 306, 250, 247, 239, 244, 250, 249, 247, 242, 248, 249, + 244, 244, 0, 247, 0, 248, 243, 307, 246, 252, 250, 252, 248, 0, 246, 246, 306, + 250, 247, 249, 244, 250, 249, 247, 0, 248, 249, 251, 308, 252, 254, 251, 248, 254, + 307, 246, 252, 250, 252, 256, 251, 253, 0, 0, 0, 251, 249, 309, 253, + + 256, 254, 251, 0, 311, 251, 308, 252, 254, 251, 256, 254, 253, 255, 0, 255, 0, + 256, 251, 253, 257, 258, 255, 251, 257, 309, 253, 256, 254, 251, 255, 311, 259, 312, + 258, 255, 259, 256, 0, 253, 255, 258, 255, 260, 257, 261, 260, 257, 258, 255, 313, + 257, 314, 261, 262, 315, 259, 255, 264, 259, 312, 258, 255, 259, 261, 261, 260, 263, + 258, 264, 260, 257, 261, 260, 262, 263, 0, 313, 264, 314, 261, 262, 315, 259, 265, + 264, 0, 263, 265, 267, 267, 261, 261, 260, 263, 0, 264, 316, 0, 266, + + 271, 262, 263, 266, 265, 264, 266, 0, 265, 268, 267, 265, 270, 268, 263, 265, 267, + 267, 273, 266, 271, 269, 273, 272, 316, 270, 266, 271, 269, 268, 266, 265, 270, 266, + 269, 265, 268, 267, 272, 270, 268, 269, 273, 272, 0, 273, 266, 271, 269, 273, 272, + 0, 270, 0, 0, 269, 268, 317, 318, 270, 319, 269, 320, 321, 290, 272, 290, 303, + 269, 273, 272, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 290, 303, 322, 317, + 318, 323, 319, 324, 320, 321, 290, 325, 290, 303, 326, 327, 328, 329, 330, + + 331, 332, 333, 335, 334, 336, 338, 339, 290, 303, 322, 340, 341, 323, 334, 324, 342, + 343, 344, 325, 345, 346, 326, 327, 328, 329, 330, 331, 332, 333, 335, 334, 336, 338, + 339, 347, 349, 350, 340, 341, 351, 334, 352, 342, 343, 344, 353, 345, 346, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 367, 347, 349, 350, 368, 369, 351, + 370, 352, 371, 372, 373, 353, 374, 375, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 367, 377, 380, 378, 368, 369, 379, 370, 379, 371, 372, 373, + + 378, 374, 375, 381, 382, 383, 384, 385, 386, 387, 388, 389, 0, 387, 0, 0, 377, + 380, 378, 0, 0, 379, 0, 379, 0, 0, 0, 378, 384, 0, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 393, 387, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 394, 395, 396, 397, 384, 398, 400, 399, 393, 0, 397, 399, 0, 506, 507, 393, 0, + 0, 508, 0, 394, 395, 396, 397, 403, 398, 400, 394, 395, 396, 397, 399, 398, 400, + 399, 393, 401, 397, 399, 402, 506, 507, 403, 402, 403, 508, 401, 394, 395, + + 396, 397, 403, 398, 400, 404, 405, 401, 405, 399, 402, 407, 404, 0, 401, 0, 406, + 402, 0, 0, 403, 402, 403, 405, 401, 404, 409, 407, 405, 406, 0, 407, 404, 405, + 401, 405, 406, 402, 407, 404, 408, 409, 410, 406, 0, 412, 409, 411, 408, 0, 405, + 411, 404, 409, 407, 405, 406, 413, 407, 412, 408, 0, 410, 406, 0, 412, 0, 408, + 409, 410, 509, 411, 412, 409, 411, 408, 414, 413, 411, 416, 418, 415, 0, 416, 413, + 510, 412, 408, 415, 410, 414, 419, 412, 419, 420, 418, 414, 509, 411, 416, + + 418, 415, 0, 414, 413, 417, 416, 418, 415, 417, 416, 424, 510, 419, 420, 415, 0, + 414, 419, 421, 419, 420, 418, 414, 423, 425, 416, 418, 415, 417, 422, 424, 417, 422, + 421, 423, 417, 0, 424, 421, 419, 420, 0, 426, 423, 425, 421, 426, 427, 0, 0, + 423, 425, 422, 511, 512, 417, 422, 424, 429, 422, 421, 423, 428, 431, 428, 421, 426, + 427, 430, 426, 423, 425, 429, 426, 427, 430, 431, 433, 429, 422, 511, 512, 0, 431, + 428, 429, 432, 0, 430, 428, 431, 428, 434, 426, 427, 430, 434, 433, 0, + + 429, 432, 435, 430, 431, 433, 429, 432, 0, 514, 435, 431, 428, 436, 432, 438, 430, + 434, 438, 437, 434, 436, 435, 517, 434, 433, 437, 439, 432, 435, 518, 519, 440, 436, + 432, 440, 514, 435, 438, 437, 436, 442, 438, 439, 434, 438, 437, 439, 436, 435, 517, + 441, 440, 437, 439, 441, 442, 518, 519, 440, 436, 442, 440, 0, 443, 438, 437, 444, + 442, 446, 439, 441, 447, 444, 439, 445, 0, 443, 441, 440, 0, 448, 441, 442, 443, + 445, 0, 444, 442, 446, 450, 443, 447, 449, 444, 445, 446, 520, 441, 447, + + 444, 448, 445, 449, 443, 452, 450, 454, 448, 451, 450, 443, 445, 449, 444, 522, 446, + 450, 451, 447, 449, 0, 445, 453, 520, 452, 523, 454, 448, 451, 449, 455, 452, 450, + 454, 455, 451, 450, 453, 524, 449, 0, 522, 453, 457, 451, 456, 456, 457, 0, 453, + 455, 452, 523, 454, 0, 451, 458, 455, 458, 460, 459, 455, 459, 0, 453, 524, 456, + 457, 462, 453, 457, 463, 456, 456, 457, 460, 458, 455, 0, 460, 459, 461, 0, 458, + 462, 458, 460, 459, 462, 459, 464, 463, 465, 456, 457, 462, 461, 464, 463, + + 526, 466, 461, 460, 458, 0, 465, 460, 459, 461, 467, 464, 462, 465, 468, 466, 462, + 527, 464, 463, 465, 466, 469, 470, 461, 464, 469, 526, 466, 461, 467, 472, 470, 465, + 468, 0, 471, 467, 464, 472, 465, 468, 466, 470, 527, 473, 469, 471, 466, 469, 470, + 472, 473, 469, 0, 0, 471, 467, 472, 470, 474, 468, 475, 471, 474, 473, 472, 528, + 476, 0, 470, 476, 473, 469, 471, 529, 478, 475, 472, 473, 479, 480, 475, 471, 474, + 481, 477, 474, 476, 475, 479, 474, 473, 477, 528, 476, 478, 0, 476, 484, + + 479, 480, 529, 478, 475, 481, 477, 479, 480, 475, 0, 474, 481, 477, 484, 476, 482, + 479, 483, 484, 477, 0, 485, 478, 486, 483, 484, 479, 480, 530, 0, 486, 481, 477, + 482, 531, 482, 485, 483, 487, 488, 484, 485, 482, 486, 483, 484, 0, 489, 485, 487, + 486, 483, 490, 491, 488, 530, 489, 486, 487, 488, 482, 531, 482, 485, 483, 487, 488, + 489, 485, 492, 486, 0, 490, 491, 489, 493, 487, 532, 492, 490, 491, 488, 0, 489, + 493, 487, 488, 533, 495, 492, 0, 499, 497, 499, 489, 493, 492, 494, 495, + + 490, 491, 497, 493, 0, 532, 492, 496, 494, 495, 494, 496, 493, 497, 499, 533, 495, + 492, 494, 499, 497, 499, 534, 493, 500, 494, 495, 498, 0, 497, 537, 496, 0, 501, + 496, 494, 495, 494, 496, 0, 497, 499, 500, 498, 500, 494, 502, 498, 501, 534, 538, + 500, 504, 501, 498, 502, 539, 537, 496, 502, 501, 503, 540, 541, 503, 504, 502, 542, + 543, 500, 498, 500, 504, 502, 498, 501, 545, 538, 546, 504, 501, 503, 502, 539, 549, + 550, 502, 552, 503, 540, 541, 503, 504, 502, 542, 543, 554, 555, 556, 504, + + 557, 558, 559, 545, 560, 546, 562, 566, 503, 568, 570, 549, 550, 572, 552, 560, 571, + 571, 573, 575, 576, 577, 578, 554, 555, 556, 579, 557, 558, 559, 581, 560, 582, 562, + 566, 584, 568, 570, 585, 586, 572, 587, 560, 571, 571, 573, 575, 576, 577, 578, 588, + 589, 590, 579, 592, 593, 594, 581, 595, 582, 596, 599, 584, 600, 602, 585, 586, 603, + 587, 604, 605, 606, 607, 608, 609, 610, 612, 588, 589, 590, 614, 592, 593, 594, 616, + 595, 0, 596, 599, 620, 600, 602, 618, 619, 603, 621, 604, 605, 606, 607, + + 608, 609, 610, 612, 622, 618, 619, 614, 624, 620, 625, 616, 618, 619, 623, 621, 620, + 622, 0, 618, 619, 626, 621, 623, 622, 626, 627, 628, 624, 0, 625, 622, 618, 619, + 623, 624, 620, 625, 732, 618, 619, 623, 621, 734, 622, 626, 627, 628, 626, 632, 623, + 622, 626, 627, 628, 624, 629, 625, 630, 631, 629, 623, 632, 631, 633, 732, 630, 0, + 635, 632, 734, 0, 626, 627, 628, 0, 632, 634, 630, 631, 629, 637, 635, 629, 633, + 630, 631, 629, 635, 632, 631, 633, 634, 630, 639, 635, 632, 634, 636, 736, + + 640, 637, 639, 638, 634, 630, 631, 629, 637, 635, 638, 633, 737, 636, 639, 635, 640, + 0, 636, 634, 640, 639, 643, 638, 634, 636, 736, 640, 637, 639, 638, 641, 642, 0, + 738, 643, 642, 638, 0, 737, 636, 639, 643, 640, 645, 636, 641, 640, 645, 643, 638, + 641, 644, 0, 644, 0, 642, 647, 641, 642, 646, 738, 643, 642, 645, 648, 0, 646, + 0, 643, 0, 645, 653, 641, 644, 645, 653, 647, 641, 644, 646, 644, 649, 642, 647, + 648, 650, 646, 0, 0, 652, 645, 648, 649, 646, 651, 653, 650, 0, 653, + + 0, 644, 649, 653, 647, 652, 650, 646, 655, 649, 652, 651, 648, 650, 656, 651, 657, + 652, 0, 659, 649, 654, 651, 653, 650, 654, 658, 660, 655, 649, 658, 657, 652, 650, + 656, 655, 657, 652, 651, 659, 661, 656, 651, 657, 661, 654, 659, 660, 654, 662, 658, + 739, 654, 658, 660, 655, 0, 658, 657, 663, 662, 656, 740, 657, 661, 665, 659, 661, + 667, 662, 666, 661, 654, 664, 660, 0, 662, 658, 739, 663, 741, 668, 664, 669, 666, + 665, 663, 662, 667, 740, 666, 661, 665, 664, 668, 667, 662, 666, 0, 0, + + 664, 668, 669, 669, 673, 670, 663, 741, 668, 664, 669, 666, 665, 671, 672, 667, 672, + 666, 670, 675, 664, 668, 742, 0, 673, 670, 671, 672, 668, 669, 669, 673, 670, 671, + 672, 674, 676, 677, 0, 675, 671, 672, 674, 672, 744, 670, 675, 679, 0, 742, 678, + 673, 670, 671, 672, 674, 676, 677, 681, 682, 671, 672, 674, 676, 677, 678, 675, 679, + 680, 674, 678, 744, 0, 0, 679, 680, 683, 678, 681, 682, 685, 0, 674, 676, 677, + 681, 682, 745, 680, 686, 683, 683, 678, 685, 679, 680, 683, 678, 0, 688, + + 685, 684, 680, 683, 684, 681, 682, 685, 687, 686, 687, 0, 689, 746, 745, 680, 686, + 683, 683, 688, 685, 684, 0, 683, 692, 689, 688, 685, 684, 690, 687, 684, 689, 691, + 693, 687, 686, 687, 693, 689, 746, 691, 690, 694, 692, 0, 688, 694, 684, 690, 747, + 692, 689, 691, 748, 695, 690, 687, 693, 689, 691, 693, 0, 698, 696, 693, 697, 694, + 691, 690, 694, 692, 696, 0, 694, 695, 690, 747, 698, 697, 691, 748, 695, 698, 696, + 693, 697, 700, 701, 699, 698, 696, 699, 697, 694, 700, 702, 701, 702, 696, + + 703, 0, 695, 0, 0, 698, 697, 700, 701, 705, 698, 696, 699, 697, 700, 701, 699, + 707, 702, 699, 703, 704, 700, 702, 701, 702, 706, 703, 704, 705, 706, 709, 708, 0, + 700, 701, 705, 707, 750, 699, 710, 704, 708, 713, 707, 702, 706, 703, 704, 0, 0, + 709, 708, 706, 0, 704, 705, 706, 709, 708, 710, 711, 712, 713, 707, 750, 0, 710, + 704, 708, 713, 715, 714, 706, 714, 711, 712, 716, 709, 708, 715, 711, 712, 0, 0, + 718, 0, 710, 711, 712, 713, 715, 717, 716, 714, 720, 717, 716, 715, 714, + + 718, 714, 711, 712, 716, 718, 722, 715, 711, 712, 722, 719, 718, 719, 721, 720, 717, + 721, 715, 717, 716, 714, 720, 717, 716, 723, 722, 718, 725, 726, 724, 719, 718, 722, + 721, 751, 752, 722, 719, 727, 719, 721, 720, 717, 721, 723, 724, 753, 725, 726, 724, + 728, 723, 722, 754, 725, 726, 724, 719, 727, 755, 721, 751, 752, 756, 728, 727, 757, + 758, 759, 762, 728, 723, 724, 753, 725, 726, 724, 728, 763, 765, 754, 768, 771, 772, + 773, 727, 755, 773, 774, 779, 756, 728, 780, 757, 758, 759, 762, 728, 781, + + 782, 783, 786, 787, 788, 789, 763, 765, 790, 768, 771, 772, 773, 792, 793, 773, 774, + 779, 794, 795, 780, 796, 797, 798, 799, 800, 781, 782, 783, 786, 787, 788, 789, 801, + 802, 790, 803, 805, 806, 807, 792, 793, 809, 810, 811, 794, 795, 812, 796, 797, 798, + 799, 800, 816, 0, 817, 818, 902, 819, 820, 801, 802, 0, 803, 805, 806, 807, 821, + 822, 809, 810, 811, 825, 816, 812, 817, 818, 818, 819, 820, 816, 825, 817, 818, 902, + 819, 820, 821, 822, 823, 823, 824, 825, 824, 821, 822, 0, 904, 0, 825, + + 816, 827, 817, 818, 818, 819, 820, 826, 825, 828, 823, 827, 829, 824, 821, 822, 823, + 823, 824, 825, 824, 827, 826, 831, 904, 834, 830, 826, 827, 828, 830, 832, 829, 831, + 826, 832, 828, 823, 827, 829, 824, 835, 0, 831, 833, 834, 830, 905, 827, 826, 831, + 833, 834, 830, 826, 832, 828, 830, 832, 829, 831, 835, 832, 836, 833, 837, 838, 836, + 835, 839, 831, 833, 834, 830, 905, 838, 906, 840, 833, 907, 837, 843, 832, 836, 0, + 837, 838, 0, 835, 839, 836, 833, 837, 838, 836, 843, 839, 840, 0, 841, + + 842, 843, 838, 906, 840, 844, 907, 837, 843, 844, 836, 846, 837, 838, 841, 842, 839, + 847, 0, 841, 842, 845, 843, 845, 840, 844, 841, 842, 843, 909, 0, 846, 844, 849, + 848, 850, 844, 847, 846, 911, 849, 841, 842, 845, 847, 852, 841, 842, 845, 848, 845, + 853, 844, 849, 848, 850, 909, 851, 846, 851, 849, 848, 850, 912, 847, 852, 911, 849, + 854, 855, 845, 853, 852, 856, 913, 0, 848, 851, 853, 857, 849, 848, 850, 854, 851, + 858, 851, 0, 854, 855, 912, 914, 852, 856, 857, 854, 855, 859, 853, 857, + + 856, 913, 860, 861, 851, 858, 857, 862, 863, 860, 854, 859, 858, 864, 859, 854, 855, + 859, 914, 865, 856, 857, 860, 861, 859, 0, 857, 862, 863, 860, 861, 866, 858, 864, + 862, 863, 860, 869, 859, 865, 864, 859, 870, 867, 859, 866, 865, 867, 871, 860, 861, + 866, 869, 868, 862, 863, 868, 869, 866, 0, 864, 872, 870, 0, 869, 916, 865, 867, + 871, 870, 867, 0, 866, 868, 867, 871, 875, 873, 866, 869, 868, 872, 876, 868, 869, + 874, 876, 877, 872, 870, 873, 0, 916, 918, 867, 871, 875, 873, 874, 922, + + 868, 881, 876, 875, 873, 874, 878, 877, 872, 876, 878, 879, 874, 876, 877, 879, 881, + 873, 880, 880, 918, 881, 0, 875, 873, 874, 922, 882, 881, 876, 878, 882, 874, 878, + 877, 879, 885, 878, 879, 880, 883, 883, 879, 881, 0, 880, 880, 882, 881, 884, 885, + 886, 890, 884, 882, 887, 885, 878, 882, 0, 0, 883, 879, 885, 886, 888, 880, 883, + 883, 888, 887, 886, 890, 884, 882, 887, 884, 885, 886, 890, 884, 889, 887, 885, 891, + 889, 892, 892, 883, 888, 893, 886, 888, 0, 924, 894, 888, 887, 886, 890, + + 884, 0, 887, 925, 891, 889, 895, 892, 889, 897, 893, 891, 889, 892, 892, 894, 888, + 893, 897, 896, 895, 924, 894, 896, 898, 931, 895, 932, 898, 897, 925, 891, 889, 895, + 892, 933, 897, 893, 899, 900, 935, 937, 894, 896, 938, 897, 896, 895, 898, 940, 896, + 898, 931, 895, 932, 898, 897, 941, 899, 900, 942, 944, 933, 945, 946, 899, 900, 935, + 937, 947, 896, 938, 949, 951, 953, 898, 940, 954, 955, 956, 961, 962, 963, 965, 941, + 899, 900, 942, 944, 1031, 945, 946, 966, 967, 968, 0, 947, 971, 0, 949, + + 951, 953, 967, 965, 954, 955, 956, 961, 962, 963, 965, 969, 966, 967, 968, 0, 1031, + 971, 0, 966, 967, 968, 970, 973, 971, 972, 969, 974, 1034, 967, 965, 969, 972, 0, + 1035, 974, 970, 0, 969, 966, 967, 968, 970, 973, 971, 972, 975, 974, 975, 970, 973, + 977, 972, 969, 974, 1034, 978, 976, 969, 972, 980, 1035, 974, 970, 976, 982, 977, 0, + 975, 970, 973, 977, 972, 975, 974, 975, 978, 976, 977, 979, 980, 0, 979, 978, 976, + 982, 981, 980, 981, 0, 983, 976, 982, 977, 984, 975, 985, 0, 977, 986, + + 1038, 0, 979, 978, 976, 989, 979, 980, 981, 979, 983, 987, 982, 981, 984, 981, 985, + 983, 1039, 986, 987, 984, 990, 985, 988, 989, 986, 1038, 991, 979, 992, 987, 989, 993, + 0, 981, 995, 983, 987, 988, 0, 984, 990, 985, 988, 1039, 986, 987, 991, 990, 992, + 988, 989, 993, 994, 991, 995, 992, 987, 997, 993, 996, 998, 995, 999, 996, 988, 994, + 0, 990, 0, 988, 0, 1002, 994, 991, 998, 992, 1004, 997, 993, 994, 998, 995, 999, + 996, 997, 1003, 996, 998, 1000, 999, 996, 1002, 994, 1001, 1005, 1000, 1004, 1001, + + 1002, 994, 1003, 998, 0, 1004, 997, 1003, 1006, 998, 1000, 999, 996, 1044, 1003, 0, 1005, + 1000, 1011, 1001, 1002, 1045, 1001, 1005, 1000, 1004, 1001, 1009, 1006, 1003, 1007, 1008, 1007, 1008, + 1003, 1006, 1010, 1000, 1011, 0, 1044, 1009, 1012, 1005, 1013, 1011, 1001, 1009, 1045, 0, 1010, + 1012, 1007, 1008, 1009, 1006, 1010, 1007, 1008, 1007, 1008, 1015, 1012, 1010, 1013, 1011, 1014, 0, + 1009, 1012, 1048, 1013, 1016, 1014, 1009, 1020, 1016, 1010, 1012, 1007, 1008, 1015, 1018, 1010, 1018, + 0, 1014, 0, 1015, 1012, 1017, 1013, 1019, 1014, 1017, 1020, 1016, 1048, 1021, 1016, + + 1014, 0, 1020, 1016, 1018, 1049, 1022, 1019, 1015, 1018, 1023, 1018, 1019, 1014, 1017, 1024, 0, + 1017, 1021, 1019, 0, 1017, 1020, 1016, 1052, 1021, 1022, 1025, 1024, 1025, 1023, 1018, 1049, 1022, + 1019, 1024, 0, 1023, 1053, 1019, 1056, 1017, 1024, 1026, 1058, 1021, 1059, 1025, 1060, 1061, 1026, + 1052, 1066, 1022, 1025, 1024, 1025, 1023, 1067, 0, 1068, 1069, 1024, 1026, 1070, 1053, 1071, 1056, + 1104, 1072, 1026, 1058, 1066, 1059, 1025, 1060, 1061, 1026, 1067, 1066, 1068, 1069, 1074, 1075, 1070, + 1067, 1071, 1068, 1069, 1072, 1026, 1070, 1076, 1071, 1073, 1104, 1072, 1078, 1073, 1066, + + 1077, 0, 1074, 1075, 0, 1067, 1079, 1068, 1069, 1074, 1075, 1070, 1076, 1071, 1080, 1077, 1072, + 1078, 1073, 1076, 1077, 1073, 0, 1081, 1078, 1073, 1079, 1077, 1084, 1074, 1075, 1083, 1085, 1079, + 1080, 1082, 1086, 1082, 1083, 1076, 1087, 1080, 1077, 1081, 1078, 1073, 1088, 1077, 1084, 1086, 1081, + 1083, 1085, 1079, 1089, 1084, 1086, 1082, 1083, 1085, 1087, 1080, 1082, 1086, 1082, 1083, 1088, 1087, + 0, 1092, 1081, 1090, 1093, 1088, 1089, 1084, 1086, 1095, 1083, 1085, 1094, 1089, 1091, 1086, 1082, + 1106, 1090, 1087, 1091, 1092, 1096, 1090, 1093, 1088, 1109, 1094, 1092, 1095, 1090, 1093, + + 1094, 1089, 1091, 1096, 1095, 1098, 1097, 1094, 1099, 1091, 1096, 1100, 1106, 1090, 1097, 1091, 1092, + 1096, 1090, 1093, 1098, 1109, 1094, 1101, 1095, 1098, 1097, 1094, 1099, 1091, 1096, 1100, 1098, 1097, + 1102, 1099, 1112, 1096, 1100, 1116, 1117, 1097, 1118, 1101, 1121, 1122, 0, 1098, 1124, 0, 1101, + 1139, 1098, 1097, 1102, 1099, 1125, 1121, 1100, 1123, 1127, 1102, 1126, 1112, 1121, 1122, 1116, 1117, + 1124, 1118, 1101, 1121, 1122, 1128, 1123, 1124, 1125, 1126, 1139, 1123, 1127, 1102, 1126, 1125, 1121, + 1129, 1123, 1127, 1130, 1126, 1131, 1121, 1122, 1128, 1132, 1124, 1133, 0, 1129, 1136, + + 1128, 1123, 1134, 1125, 1126, 1129, 1123, 1127, 1130, 1126, 1131, 1141, 1129, 1134, 1132, 1130, 1133, + 1131, 1144, 1136, 1128, 1132, 1134, 1133, 1135, 1129, 1136, 1146, 1135, 1134, 1147, 1156, 1129, 1148, + 0, 1130, 0, 1131, 1141, 1150, 1134, 1132, 1149, 1133, 1135, 1144, 1136, 1146, 1151, 1134, 1147, + 1135, 0, 1148, 1146, 1135, 1149, 1147, 1156, 1150, 1148, 1158, 1149, 0, 1159, 0, 1150, 1160, + 1151, 1149, 1164, 1135, 1152, 0, 1146, 1151, 1160, 1147, 0, 0, 1148, 1158, 1152, 1149, 1159, + 0, 1150, 1160, 1158, 1149, 1164, 1159, 1152, 0, 1160, 1151, 0, 1164, 0, 1152, + + 0, 0, 0, 1160, 0, 0, 0, 0, 1158, 1152, 0, 1159, 0, 0, 1160, 0, 0, + 1164, 0, 1152, 1184, 1184, 1184, 1184, 1184, 1185, 0, 0, 1185, 1185, 1187, 1187, 1187, 0, + 1187, 1188, 0, 1188, 1188, 1188, 1189, 0, 1189, 1189, 1189, 1190, 0, 1190, 1190, 1190, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183}; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. @@ -1527,7 +1540,7 @@ static const flex_int16_t yy_chk[4763] = { static thread_local std::stringstream strbuf; -#line 2112 "flex_lexer.cpp" +#line 2129 "flex_lexer.cpp" /*************************** ** Section 2: Rules @@ -1541,7 +1554,7 @@ static thread_local std::stringstream strbuf; /*************************** ** Section 3: Rules ***************************/ -#line 2126 "flex_lexer.cpp" +#line 2143 "flex_lexer.cpp" #define INITIAL 0 #define singlequotedstring 1 @@ -1810,7 +1823,7 @@ YY_DECL { { #line 57 "flex_lexer.l" -#line 2413 "flex_lexer.cpp" +#line 2430 "flex_lexer.cpp" while (/*CONSTCOND*/ 1) /* loops until end-of-file is reached */ { @@ -1834,11 +1847,11 @@ YY_DECL { } 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 >= 1170) yy_c = yy_meta[yy_c]; + if (yy_current_state >= 1184) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; - } while (yy_current_state != 1169); + } while (yy_current_state != 1183); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -2032,377 +2045,377 @@ YY_DECL { case 35: YY_RULE_SETUP #line 95 "flex_lexer.l" - TOKEN(VIRTUAL) + TOKEN(SMALLINT) YY_BREAK case 36: YY_RULE_SETUP #line 96 "flex_lexer.l" - TOKEN(BEFORE) + TOKEN(VIRTUAL) YY_BREAK case 37: YY_RULE_SETUP #line 97 "flex_lexer.l" - TOKEN(COLUMN) + TOKEN(BEFORE) YY_BREAK case 38: YY_RULE_SETUP #line 98 "flex_lexer.l" - TOKEN(CREATE) + TOKEN(COLUMN) YY_BREAK case 39: YY_RULE_SETUP #line 99 "flex_lexer.l" - TOKEN(DELETE) + TOKEN(CREATE) YY_BREAK case 40: YY_RULE_SETUP #line 100 "flex_lexer.l" - TOKEN(DIRECT) + TOKEN(DELETE) YY_BREAK case 41: YY_RULE_SETUP #line 101 "flex_lexer.l" - TOKEN(DOUBLE) + TOKEN(DIRECT) YY_BREAK case 42: YY_RULE_SETUP #line 102 "flex_lexer.l" - TOKEN(ESCAPE) + TOKEN(DOUBLE) YY_BREAK case 43: YY_RULE_SETUP #line 103 "flex_lexer.l" - TOKEN(EXCEPT) + TOKEN(ESCAPE) YY_BREAK case 44: YY_RULE_SETUP #line 104 "flex_lexer.l" - TOKEN(EXISTS) + TOKEN(EXCEPT) YY_BREAK case 45: YY_RULE_SETUP #line 105 "flex_lexer.l" - TOKEN(EXTRACT) + TOKEN(EXISTS) YY_BREAK case 46: YY_RULE_SETUP #line 106 "flex_lexer.l" - TOKEN(CAST) + TOKEN(EXTRACT) YY_BREAK case 47: YY_RULE_SETUP #line 107 "flex_lexer.l" - TOKEN(FORMAT) + TOKEN(CAST) YY_BREAK case 48: YY_RULE_SETUP #line 108 "flex_lexer.l" - TOKEN(GLOBAL) + TOKEN(FORMAT) YY_BREAK case 49: YY_RULE_SETUP #line 109 "flex_lexer.l" - TOKEN(HAVING) + TOKEN(GLOBAL) YY_BREAK case 50: YY_RULE_SETUP #line 110 "flex_lexer.l" - TOKEN(IMPORT) + TOKEN(HAVING) YY_BREAK case 51: YY_RULE_SETUP #line 111 "flex_lexer.l" - TOKEN(INSERT) + TOKEN(IMPORT) YY_BREAK case 52: YY_RULE_SETUP #line 112 "flex_lexer.l" - TOKEN(ISNULL) + TOKEN(INSERT) YY_BREAK case 53: YY_RULE_SETUP #line 113 "flex_lexer.l" - TOKEN(OFFSET) + TOKEN(ISNULL) YY_BREAK case 54: YY_RULE_SETUP #line 114 "flex_lexer.l" - TOKEN(RENAME) + TOKEN(OFFSET) YY_BREAK case 55: YY_RULE_SETUP #line 115 "flex_lexer.l" - TOKEN(SCHEMA) + TOKEN(RENAME) YY_BREAK case 56: YY_RULE_SETUP #line 116 "flex_lexer.l" - TOKEN(SELECT) + TOKEN(SCHEMA) YY_BREAK case 57: YY_RULE_SETUP #line 117 "flex_lexer.l" - TOKEN(SORTED) + TOKEN(SELECT) YY_BREAK case 58: YY_RULE_SETUP #line 118 "flex_lexer.l" - TOKEN(TABLES) + TOKEN(SORTED) YY_BREAK case 59: YY_RULE_SETUP #line 119 "flex_lexer.l" - TOKEN(UNIQUE) + TOKEN(TABLES) YY_BREAK case 60: YY_RULE_SETUP #line 120 "flex_lexer.l" - TOKEN(UNLOAD) + TOKEN(UNIQUE) YY_BREAK case 61: YY_RULE_SETUP #line 121 "flex_lexer.l" - TOKEN(UPDATE) + TOKEN(UNLOAD) YY_BREAK case 62: YY_RULE_SETUP #line 122 "flex_lexer.l" - TOKEN(VALUES) + TOKEN(UPDATE) YY_BREAK case 63: YY_RULE_SETUP #line 123 "flex_lexer.l" - TOKEN(AFTER) + TOKEN(VALUES) YY_BREAK case 64: YY_RULE_SETUP #line 124 "flex_lexer.l" - TOKEN(ALTER) + TOKEN(AFTER) YY_BREAK case 65: YY_RULE_SETUP #line 125 "flex_lexer.l" - TOKEN(ARRAY) + TOKEN(ALTER) YY_BREAK case 66: YY_RULE_SETUP #line 126 "flex_lexer.l" - TOKEN(CROSS) + TOKEN(ARRAY) YY_BREAK case 67: YY_RULE_SETUP #line 127 "flex_lexer.l" - TOKEN(DELTA) + TOKEN(CROSS) YY_BREAK case 68: YY_RULE_SETUP #line 128 "flex_lexer.l" - TOKEN(FLOAT) + TOKEN(DELTA) YY_BREAK case 69: YY_RULE_SETUP #line 129 "flex_lexer.l" - TOKEN(GROUP) + TOKEN(FLOAT) YY_BREAK case 70: YY_RULE_SETUP #line 130 "flex_lexer.l" - TOKEN(INDEX) + TOKEN(GROUP) YY_BREAK case 71: YY_RULE_SETUP #line 131 "flex_lexer.l" - TOKEN(INNER) + TOKEN(INDEX) YY_BREAK case 72: YY_RULE_SETUP #line 132 "flex_lexer.l" - TOKEN(LIMIT) + TOKEN(INNER) YY_BREAK case 73: YY_RULE_SETUP #line 133 "flex_lexer.l" - TOKEN(LOCAL) + TOKEN(LIMIT) YY_BREAK case 74: YY_RULE_SETUP #line 134 "flex_lexer.l" - TOKEN(MERGE) + TOKEN(LOCAL) YY_BREAK case 75: YY_RULE_SETUP #line 135 "flex_lexer.l" - TOKEN(MINUS) + TOKEN(MERGE) YY_BREAK case 76: YY_RULE_SETUP #line 136 "flex_lexer.l" - TOKEN(ORDER) + TOKEN(MINUS) YY_BREAK case 77: YY_RULE_SETUP #line 137 "flex_lexer.l" - TOKEN(OUTER) + TOKEN(ORDER) YY_BREAK case 78: YY_RULE_SETUP #line 138 "flex_lexer.l" - TOKEN(RIGHT) + TOKEN(OUTER) YY_BREAK case 79: YY_RULE_SETUP #line 139 "flex_lexer.l" - TOKEN(TABLE) + TOKEN(RIGHT) YY_BREAK case 80: YY_RULE_SETUP #line 140 "flex_lexer.l" - TOKEN(UNION) + TOKEN(TABLE) YY_BREAK case 81: YY_RULE_SETUP #line 141 "flex_lexer.l" - TOKEN(USING) + TOKEN(UNION) YY_BREAK case 82: YY_RULE_SETUP #line 142 "flex_lexer.l" - TOKEN(WHERE) + TOKEN(USING) YY_BREAK case 83: YY_RULE_SETUP #line 143 "flex_lexer.l" - TOKEN(CALL) + TOKEN(WHERE) YY_BREAK case 84: YY_RULE_SETUP #line 144 "flex_lexer.l" - TOKEN(CASE) + TOKEN(CALL) YY_BREAK case 85: YY_RULE_SETUP #line 145 "flex_lexer.l" - TOKEN(CHAR) + TOKEN(CASE) YY_BREAK case 86: YY_RULE_SETUP #line 146 "flex_lexer.l" - TOKEN(COPY) + TOKEN(CHAR) YY_BREAK case 87: YY_RULE_SETUP #line 147 "flex_lexer.l" - TOKEN(DATE) + TOKEN(COPY) YY_BREAK case 88: YY_RULE_SETUP #line 148 "flex_lexer.l" - TOKEN(DATETIME) + TOKEN(DATE) YY_BREAK case 89: YY_RULE_SETUP #line 149 "flex_lexer.l" - TOKEN(DESC) + TOKEN(DATETIME) YY_BREAK case 90: YY_RULE_SETUP #line 150 "flex_lexer.l" - TOKEN(DROP) + TOKEN(DESC) YY_BREAK case 91: YY_RULE_SETUP #line 151 "flex_lexer.l" - TOKEN(ELSE) + TOKEN(DROP) YY_BREAK case 92: YY_RULE_SETUP #line 152 "flex_lexer.l" - TOKEN(FILE) + TOKEN(ELSE) YY_BREAK case 93: YY_RULE_SETUP #line 153 "flex_lexer.l" - TOKEN(FROM) + TOKEN(FILE) YY_BREAK case 94: YY_RULE_SETUP #line 154 "flex_lexer.l" - TOKEN(FULL) + TOKEN(FROM) YY_BREAK case 95: YY_RULE_SETUP #line 155 "flex_lexer.l" - TOKEN(HASH) + TOKEN(FULL) YY_BREAK case 96: YY_RULE_SETUP #line 156 "flex_lexer.l" - TOKEN(HINT) + TOKEN(HASH) YY_BREAK case 97: YY_RULE_SETUP #line 157 "flex_lexer.l" - TOKEN(INTO) + TOKEN(HINT) YY_BREAK case 98: YY_RULE_SETUP #line 158 "flex_lexer.l" - TOKEN(JOIN) + TOKEN(INTO) YY_BREAK case 99: YY_RULE_SETUP #line 159 "flex_lexer.l" - TOKEN(LEFT) + TOKEN(JOIN) YY_BREAK case 100: YY_RULE_SETUP #line 160 "flex_lexer.l" - TOKEN(LIKE) + TOKEN(LEFT) YY_BREAK case 101: YY_RULE_SETUP #line 161 "flex_lexer.l" - TOKEN(ILIKE) + TOKEN(LIKE) YY_BREAK case 102: YY_RULE_SETUP #line 162 "flex_lexer.l" - TOKEN(LOAD) + TOKEN(ILIKE) YY_BREAK case 103: YY_RULE_SETUP #line 163 "flex_lexer.l" - TOKEN(LONG) + TOKEN(LOAD) YY_BREAK case 104: YY_RULE_SETUP #line 164 "flex_lexer.l" - TOKEN(NULL) + TOKEN(LONG) YY_BREAK case 105: YY_RULE_SETUP #line 165 "flex_lexer.l" - TOKEN(PLAN) + TOKEN(NULL) YY_BREAK case 106: YY_RULE_SETUP #line 166 "flex_lexer.l" - TOKEN(SHOW) + TOKEN(PLAN) YY_BREAK case 107: YY_RULE_SETUP #line 167 "flex_lexer.l" - TOKEN(TEXT) + TOKEN(SHOW) YY_BREAK case 108: YY_RULE_SETUP #line 168 "flex_lexer.l" - TOKEN(THEN) + TOKEN(TEXT) YY_BREAK case 109: YY_RULE_SETUP #line 169 "flex_lexer.l" - TOKEN(TIME) + TOKEN(THEN) YY_BREAK case 110: YY_RULE_SETUP @@ -2763,7 +2776,7 @@ YY_DECL { #line 269 "flex_lexer.l" ECHO; YY_BREAK -#line 3352 "flex_lexer.cpp" +#line 3369 "flex_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): yyterminate(); @@ -3024,7 +3037,7 @@ static yy_state_type yy_get_previous_state(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 >= 1170) yy_c = yy_meta[yy_c]; + if (yy_current_state >= 1184) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } @@ -3049,10 +3062,10 @@ static yy_state_type yy_try_NUL_trans(yy_state_type yy_current_state, yyscan_t y } 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 >= 1170) yy_c = yy_meta[yy_c]; + if (yy_current_state >= 1184) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1169); + yy_is_jam = (yy_current_state == 1183); (void)yyg; return yy_is_jam ? 0 : yy_current_state; diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index fa97622c..a8f8345e 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 @@ -728,6 +728,6 @@ extern int yylex(YYSTYPE* yylval_param, YYLTYPE* yylloc_param, yyscan_t yyscanne #line 269 "flex_lexer.l" -#line 737 "flex_lexer.h" +#line 736 "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 5ab7e54c..e0d0187e 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -92,6 +92,7 @@ VARYING TOKEN(VARYING) TIME TOKEN(TIME) DECIMAL TOKEN(DECIMAL) REAL TOKEN(REAL) +SMALLINT TOKEN(SMALLINT) VIRTUAL TOKEN(VIRTUAL) BEFORE TOKEN(BEFORE) COLUMN TOKEN(COLUMN) diff --git a/src/sql/ColumnType.h b/src/sql/ColumnType.h old mode 100755 new mode 100644 index 15fe9d3c..0b0be88b --- a/src/sql/ColumnType.h +++ b/src/sql/ColumnType.h @@ -6,36 +6,29 @@ namespace hsql { enum class DataType { UNKNOWN, + CHAR, + DATE, + DATETIME, + DECIMAL, + DOUBLE, + FLOAT, INT, LONG, - FLOAT, - DOUBLE, - DECIMAL, REAL, - CHAR, - VARCHAR, + SMALLINT, TEXT, - DATETIME, - DATE, TIME, - SMALLINT, -}; - -struct ColumnSpecification { - ColumnSpecification() = default; - ColumnSpecification(int64_t precision, int64_t scale); - ColumnSpecification(int64_t precision); - int64_t precision; - int64_t scale; + VARCHAR, }; // Represents the type of a column, e.g., FLOAT or VARCHAR(10) struct ColumnType { ColumnType() = default; - ColumnType(DataType data_type, int64_t length = 0, ColumnSpecification column_specification = ColumnSpecification{}); + ColumnType(DataType data_type, int64_t length = 0, int64_t precision = 0, int64_t scale = 0); DataType data_type; - int64_t length; // Used for, e.g., VARCHAR(10) - ColumnSpecification columnSpecification; // used for, e.g. DECIMAL (6, 4) or TIME (5) + int64_t length; // Used for, e.g., VARCHAR(10) + int64_t precision; // Used for, e.g., DECIMAL (6, 4) or TIME (5) + int64_t scale; // Used for DECIMAL (6, 4) }; bool operator==(const ColumnType& lhs, const ColumnType& rhs); diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index 37d7764b..a4c3b7dd 100755 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -23,19 +23,12 @@ ColumnDefinition::~ColumnDefinition() { delete column_constraints; } -ColumnType::ColumnType(DataType data_type, int64_t length, ColumnSpecification column_specification) - : data_type(data_type), length(length), columnSpecification(column_specification){}; - -ColumnSpecification::ColumnSpecification(int64_t precision, int64_t scale) : precision(precision), scale(scale){}; - -ColumnSpecification::ColumnSpecification(int64_t precision) : precision(precision), scale(0){}; +ColumnType::ColumnType(DataType data_type, int64_t length, int64_t precision, int64_t scale) + : data_type(data_type), length(length), precision(precision), scale(scale){}; 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; + return lhs.length == rhs.length && lhs.precision == rhs.precision && lhs.scale == rhs.scale; } bool operator!=(const ColumnType& lhs, const ColumnType& rhs) { return !(lhs == rhs); } diff --git a/test/sql_tests.cpp b/test/sql_tests.cpp index 43ca0ea1..9e1c5ee4 100644 --- a/test/sql_tests.cpp +++ b/test/sql_tests.cpp @@ -30,8 +30,11 @@ TEST(DeleteStatementTest) { TEST(CreateStatementTest) { SQLParserResult result; SQLParser::parse( - "CREATE TABLE students (name VARCHAR(50), student_number INT, city INTEGER NULL, PRIMARY KEY(name, " - "student_number), grade DOUBLE NOT NULL, comment TEXT UNIQUE PRIMARY KEY NOT NULL)", + "CREATE TABLE dummy_table (c_char CHAR(42), c_date DATE, c_datetime DATETIME, c_decimal DECIMAL, " + "c_decimal_precision DECIMAL(13), c_decimal_precision_scale DECIMAL(13,37), c_double_not_null DOUBLE NOT NULL, " + "c_float FLOAT, c_int INT, PRIMARY KEY(c_char, c_int), c_integer INTEGER NULL, c_long LONG, c_real REAL, " + "c_smallint SMALLINT, c_text TEXT UNIQUE PRIMARY KEY NOT NULL, c_time TIME, c_time_precision TIME(17), c_varchar" + " VARCHAR(50), c_char_varying CHARACTER VARYING(60))", &result); ASSERT(result.isValid()); @@ -40,27 +43,75 @@ TEST(CreateStatementTest) { const CreateStatement* stmt = (const CreateStatement*)result.getStatement(0); ASSERT_EQ(stmt->type, kCreateTable); - ASSERT_STREQ(stmt->tableName, "students"); + ASSERT_STREQ(stmt->tableName, "dummy_table"); ASSERT_NOTNULL(stmt->columns); - 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_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->size(), 18); + ASSERT_STREQ(stmt->columns->at(0)->name, "c_char"); + ASSERT_STREQ(stmt->columns->at(1)->name, "c_date"); + ASSERT_STREQ(stmt->columns->at(2)->name, "c_datetime"); + ASSERT_STREQ(stmt->columns->at(3)->name, "c_decimal"); + ASSERT_STREQ(stmt->columns->at(4)->name, "c_decimal_precision"); + ASSERT_STREQ(stmt->columns->at(5)->name, "c_decimal_precision_scale"); + ASSERT_STREQ(stmt->columns->at(6)->name, "c_double_not_null"); + ASSERT_STREQ(stmt->columns->at(7)->name, "c_float"); + ASSERT_STREQ(stmt->columns->at(8)->name, "c_int"); + ASSERT_STREQ(stmt->columns->at(9)->name, "c_integer"); + ASSERT_STREQ(stmt->columns->at(10)->name, "c_long"); + ASSERT_STREQ(stmt->columns->at(11)->name, "c_real"); + ASSERT_STREQ(stmt->columns->at(12)->name, "c_smallint"); + ASSERT_STREQ(stmt->columns->at(13)->name, "c_text"); + ASSERT_STREQ(stmt->columns->at(14)->name, "c_time"); + ASSERT_STREQ(stmt->columns->at(15)->name, "c_time_precision"); + ASSERT_STREQ(stmt->columns->at(16)->name, "c_varchar"); + ASSERT_STREQ(stmt->columns->at(17)->name, "c_char_varying"); + ASSERT_EQ(stmt->columns->at(0)->type, (ColumnType{DataType::CHAR, 42})); + ASSERT_NEQ(stmt->columns->at(0)->type, (ColumnType{DataType::CHAR, 43})); + ASSERT_EQ(stmt->columns->at(1)->type, (ColumnType{DataType::DATE})); + ASSERT_EQ(stmt->columns->at(2)->type, (ColumnType{DataType::DATETIME})); + ASSERT_EQ(stmt->columns->at(3)->type, (ColumnType{DataType::DECIMAL})); + ASSERT_EQ(stmt->columns->at(4)->type, (ColumnType{DataType::DECIMAL, 0, 13})); + ASSERT_NEQ(stmt->columns->at(4)->type, (ColumnType{DataType::DECIMAL, 0, 14})); + ASSERT_EQ(stmt->columns->at(5)->type, (ColumnType{DataType::DECIMAL, 0, 13, 37})); + ASSERT_NEQ(stmt->columns->at(5)->type, (ColumnType{DataType::DECIMAL, 0, 14, 37})); + ASSERT_NEQ(stmt->columns->at(5)->type, (ColumnType{DataType::DECIMAL, 0, 13, 38})); + ASSERT_EQ(stmt->columns->at(6)->type, (ColumnType{DataType::DOUBLE})); + ASSERT_EQ(stmt->columns->at(7)->type, (ColumnType{DataType::FLOAT})); + ASSERT_EQ(stmt->columns->at(8)->type, (ColumnType{DataType::INT})); + ASSERT_EQ(stmt->columns->at(9)->type, (ColumnType{DataType::INT})); + ASSERT_EQ(stmt->columns->at(10)->type, (ColumnType{DataType::LONG})); + ASSERT_EQ(stmt->columns->at(11)->type, (ColumnType{DataType::REAL})); + ASSERT_EQ(stmt->columns->at(12)->type, (ColumnType{DataType::SMALLINT})); + ASSERT_EQ(stmt->columns->at(13)->type, (ColumnType{DataType::TEXT})); + ASSERT_EQ(stmt->columns->at(14)->type, (ColumnType{DataType::TIME})); + ASSERT_EQ(stmt->columns->at(15)->type, (ColumnType{DataType::TIME, 0, 17})); + ASSERT_NEQ(stmt->columns->at(15)->type, (ColumnType{DataType::TIME, 0, 18})); + ASSERT_EQ(stmt->columns->at(16)->type, (ColumnType{DataType::VARCHAR, 50})); + ASSERT_NEQ(stmt->columns->at(16)->type, (ColumnType{DataType::VARCHAR, 51})); + ASSERT_EQ(stmt->columns->at(17)->type, (ColumnType{DataType::VARCHAR, 60})); + ASSERT_NEQ(stmt->columns->at(17)->type, (ColumnType{DataType::VARCHAR, 61})); + 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(2)->nullable, false); ASSERT_EQ(stmt->columns->at(3)->nullable, false); ASSERT_EQ(stmt->columns->at(4)->nullable, false); - ASSERT_EQ(stmt->columns->at(4)->column_constraints->size(), 2); - ASSERT_STREQ(stmt->tableConstraints->at(0)->columnNames->at(0), "name"); - ASSERT_STREQ(stmt->tableConstraints->at(0)->columnNames->at(1), "student_number"); + ASSERT_EQ(stmt->columns->at(5)->nullable, false); + ASSERT_EQ(stmt->columns->at(6)->nullable, false); + ASSERT_EQ(stmt->columns->at(7)->nullable, false); + ASSERT_EQ(stmt->columns->at(8)->nullable, false); + ASSERT_EQ(stmt->columns->at(9)->nullable, true); + ASSERT_EQ(stmt->columns->at(10)->nullable, false); + ASSERT_EQ(stmt->columns->at(11)->nullable, false); + ASSERT_EQ(stmt->columns->at(12)->nullable, false); + ASSERT_EQ(stmt->columns->at(13)->nullable, false); + ASSERT_EQ(stmt->columns->at(14)->nullable, false); + ASSERT_EQ(stmt->columns->at(15)->nullable, false); + ASSERT_EQ(stmt->columns->at(16)->nullable, false); + // Expecting two column constraints since the NULL constraint gets explicitly removed and the corresponding + // information is then stored in `ColumnDefinition::nullable` instead. + ASSERT_EQ(stmt->columns->at(13)->column_constraints->size(), 2); + ASSERT_STREQ(stmt->tableConstraints->at(0)->columnNames->at(0), "c_char"); + ASSERT_STREQ(stmt->tableConstraints->at(0)->columnNames->at(1), "c_int"); } TEST(CreateAsSelectStatementTest) { From 787e47f7e417fc6962f1ffc7aae23a8213ecf869 Mon Sep 17 00:00:00 2001 From: mweisgut Date: Fri, 14 Jan 2022 09:42:09 +0100 Subject: [PATCH 2/3] address feedback --- test/sql_tests.cpp | 129 +++++++++++++++++++++++++++++---------------- 1 file changed, 85 insertions(+), 44 deletions(-) diff --git a/test/sql_tests.cpp b/test/sql_tests.cpp index 9e1c5ee4..2b52927b 100644 --- a/test/sql_tests.cpp +++ b/test/sql_tests.cpp @@ -30,13 +30,27 @@ TEST(DeleteStatementTest) { TEST(CreateStatementTest) { SQLParserResult result; SQLParser::parse( - "CREATE TABLE dummy_table (c_char CHAR(42), c_date DATE, c_datetime DATETIME, c_decimal DECIMAL, " - "c_decimal_precision DECIMAL(13), c_decimal_precision_scale DECIMAL(13,37), c_double_not_null DOUBLE NOT NULL, " - "c_float FLOAT, c_int INT, PRIMARY KEY(c_char, c_int), c_integer INTEGER NULL, c_long LONG, c_real REAL, " - "c_smallint SMALLINT, c_text TEXT UNIQUE PRIMARY KEY NOT NULL, c_time TIME, c_time_precision TIME(17), c_varchar" - " VARCHAR(50), c_char_varying CHARACTER VARYING(60))", + "CREATE TABLE dummy_table (" + "c_char CHAR(42), " + "c_date DATE, " + "c_datetime DATETIME, " + "c_decimal DECIMAL, " + "c_decimal_precision DECIMAL(13), " + "c_decimal_precision_scale DECIMAL(13,37), " + "c_double_not_null DOUBLE NOT NULL, " + "c_float FLOAT, " + "c_int INT, " + "PRIMARY KEY(c_char, c_int), " + "c_integer_null INTEGER NULL, " + "c_long LONG, " + "c_real REAL, " + "c_smallint SMALLINT, " + "c_text TEXT UNIQUE PRIMARY KEY NOT NULL, " + "c_time TIME, " + "c_time_precision TIME(17), " + "c_varchar VARCHAR(50), " + "c_char_varying CHARACTER VARYING(60))", &result); - ASSERT(result.isValid()); ASSERT_EQ(result.size(), 1); ASSERT_EQ(result.getStatement(0)->type(), kStmtCreate); @@ -46,70 +60,97 @@ TEST(CreateStatementTest) { ASSERT_STREQ(stmt->tableName, "dummy_table"); ASSERT_NOTNULL(stmt->columns); ASSERT_EQ(stmt->columns->size(), 18); + // c_char CHAR(42) ASSERT_STREQ(stmt->columns->at(0)->name, "c_char"); - ASSERT_STREQ(stmt->columns->at(1)->name, "c_date"); - ASSERT_STREQ(stmt->columns->at(2)->name, "c_datetime"); - ASSERT_STREQ(stmt->columns->at(3)->name, "c_decimal"); - ASSERT_STREQ(stmt->columns->at(4)->name, "c_decimal_precision"); - ASSERT_STREQ(stmt->columns->at(5)->name, "c_decimal_precision_scale"); - ASSERT_STREQ(stmt->columns->at(6)->name, "c_double_not_null"); - ASSERT_STREQ(stmt->columns->at(7)->name, "c_float"); - ASSERT_STREQ(stmt->columns->at(8)->name, "c_int"); - ASSERT_STREQ(stmt->columns->at(9)->name, "c_integer"); - ASSERT_STREQ(stmt->columns->at(10)->name, "c_long"); - ASSERT_STREQ(stmt->columns->at(11)->name, "c_real"); - ASSERT_STREQ(stmt->columns->at(12)->name, "c_smallint"); - ASSERT_STREQ(stmt->columns->at(13)->name, "c_text"); - ASSERT_STREQ(stmt->columns->at(14)->name, "c_time"); - ASSERT_STREQ(stmt->columns->at(15)->name, "c_time_precision"); - ASSERT_STREQ(stmt->columns->at(16)->name, "c_varchar"); - ASSERT_STREQ(stmt->columns->at(17)->name, "c_char_varying"); ASSERT_EQ(stmt->columns->at(0)->type, (ColumnType{DataType::CHAR, 42})); ASSERT_NEQ(stmt->columns->at(0)->type, (ColumnType{DataType::CHAR, 43})); + ASSERT_EQ(stmt->columns->at(0)->nullable, false); + // c_date DATE + ASSERT_STREQ(stmt->columns->at(1)->name, "c_date"); ASSERT_EQ(stmt->columns->at(1)->type, (ColumnType{DataType::DATE})); + ASSERT_EQ(stmt->columns->at(1)->nullable, false); + // c_datetime DATETIME + ASSERT_STREQ(stmt->columns->at(2)->name, "c_datetime"); ASSERT_EQ(stmt->columns->at(2)->type, (ColumnType{DataType::DATETIME})); + ASSERT_EQ(stmt->columns->at(2)->nullable, false); + // c_decimal DECIMAL + ASSERT_STREQ(stmt->columns->at(3)->name, "c_decimal"); ASSERT_EQ(stmt->columns->at(3)->type, (ColumnType{DataType::DECIMAL})); + ASSERT_EQ(stmt->columns->at(3)->nullable, false); + // c_decimal_precision DECIMAL(13) + ASSERT_STREQ(stmt->columns->at(4)->name, "c_decimal_precision"); ASSERT_EQ(stmt->columns->at(4)->type, (ColumnType{DataType::DECIMAL, 0, 13})); ASSERT_NEQ(stmt->columns->at(4)->type, (ColumnType{DataType::DECIMAL, 0, 14})); + ASSERT_NEQ(stmt->columns->at(4)->type, (ColumnType{DataType::DECIMAL, 1, 13})); + ASSERT_EQ(stmt->columns->at(4)->nullable, false); + // c_decimal_precision_scale DECIMAL(13,37) + ASSERT_STREQ(stmt->columns->at(5)->name, "c_decimal_precision_scale"); ASSERT_EQ(stmt->columns->at(5)->type, (ColumnType{DataType::DECIMAL, 0, 13, 37})); ASSERT_NEQ(stmt->columns->at(5)->type, (ColumnType{DataType::DECIMAL, 0, 14, 37})); ASSERT_NEQ(stmt->columns->at(5)->type, (ColumnType{DataType::DECIMAL, 0, 13, 38})); + ASSERT_NEQ(stmt->columns->at(5)->type, (ColumnType{DataType::DECIMAL, 1, 13, 37})); + ASSERT_EQ(stmt->columns->at(5)->nullable, false); + // c_double_not_null DOUBLE NOT NULL + ASSERT_STREQ(stmt->columns->at(6)->name, "c_double_not_null"); ASSERT_EQ(stmt->columns->at(6)->type, (ColumnType{DataType::DOUBLE})); + ASSERT_EQ(stmt->columns->at(6)->nullable, false); + // c_float FLOAT + ASSERT_STREQ(stmt->columns->at(7)->name, "c_float"); ASSERT_EQ(stmt->columns->at(7)->type, (ColumnType{DataType::FLOAT})); + ASSERT_EQ(stmt->columns->at(7)->nullable, false); + // c_int INT + ASSERT_STREQ(stmt->columns->at(8)->name, "c_int"); ASSERT_EQ(stmt->columns->at(8)->type, (ColumnType{DataType::INT})); + ASSERT_EQ(stmt->columns->at(8)->nullable, false); + // c_integer INTEGER NULL + ASSERT_STREQ(stmt->columns->at(9)->name, "c_integer_null"); ASSERT_EQ(stmt->columns->at(9)->type, (ColumnType{DataType::INT})); + ASSERT_EQ(stmt->columns->at(9)->nullable, true); + // c_long LONG + ASSERT_STREQ(stmt->columns->at(10)->name, "c_long"); ASSERT_EQ(stmt->columns->at(10)->type, (ColumnType{DataType::LONG})); + ASSERT_EQ(stmt->columns->at(10)->nullable, false); + // c_real REAL + ASSERT_STREQ(stmt->columns->at(11)->name, "c_real"); ASSERT_EQ(stmt->columns->at(11)->type, (ColumnType{DataType::REAL})); + ASSERT_EQ(stmt->columns->at(11)->nullable, false); + // c_smallint SMALLINT + ASSERT_STREQ(stmt->columns->at(12)->name, "c_smallint"); ASSERT_EQ(stmt->columns->at(12)->type, (ColumnType{DataType::SMALLINT})); + ASSERT_EQ(stmt->columns->at(12)->nullable, false); + // c_text TEXT UNIQUE PRIMARY KEY NOT NULL + ASSERT_STREQ(stmt->columns->at(13)->name, "c_text"); ASSERT_EQ(stmt->columns->at(13)->type, (ColumnType{DataType::TEXT})); + ASSERT_EQ(stmt->columns->at(13)->nullable, false); + // Expecting two elements in column_constraints since information about NULL constraints is separately stored in + // ColumnDefinition::nullable + ASSERT_EQ(stmt->columns->at(13)->column_constraints->size(), 2); + ASSERT(stmt->columns->at(13)->column_constraints->at(0) == ConstraintType::Unique); + ASSERT(stmt->columns->at(13)->column_constraints->at(1) == ConstraintType::PrimaryKey); + // c_time TIME + ASSERT_STREQ(stmt->columns->at(14)->name, "c_time"); ASSERT_EQ(stmt->columns->at(14)->type, (ColumnType{DataType::TIME})); + ASSERT_EQ(stmt->columns->at(14)->nullable, false); + // c_time_precision TIME(17) + ASSERT_STREQ(stmt->columns->at(15)->name, "c_time_precision"); ASSERT_EQ(stmt->columns->at(15)->type, (ColumnType{DataType::TIME, 0, 17})); ASSERT_NEQ(stmt->columns->at(15)->type, (ColumnType{DataType::TIME, 0, 18})); + ASSERT_NEQ(stmt->columns->at(15)->type, (ColumnType{DataType::TIME, 1, 17})); + ASSERT_EQ(stmt->columns->at(15)->nullable, false); + // c_varchar VARCHAR(50) + ASSERT_STREQ(stmt->columns->at(16)->name, "c_varchar"); ASSERT_EQ(stmt->columns->at(16)->type, (ColumnType{DataType::VARCHAR, 50})); ASSERT_NEQ(stmt->columns->at(16)->type, (ColumnType{DataType::VARCHAR, 51})); + ASSERT_EQ(stmt->columns->at(16)->nullable, false); + // c_char_varying CHARACTER VARYING(60) + ASSERT_STREQ(stmt->columns->at(17)->name, "c_char_varying"); ASSERT_EQ(stmt->columns->at(17)->type, (ColumnType{DataType::VARCHAR, 60})); ASSERT_NEQ(stmt->columns->at(17)->type, (ColumnType{DataType::VARCHAR, 61})); - - ASSERT_EQ(stmt->columns->at(0)->nullable, false); - ASSERT_EQ(stmt->columns->at(1)->nullable, false); - ASSERT_EQ(stmt->columns->at(2)->nullable, false); - ASSERT_EQ(stmt->columns->at(3)->nullable, false); - ASSERT_EQ(stmt->columns->at(4)->nullable, false); - ASSERT_EQ(stmt->columns->at(5)->nullable, false); - ASSERT_EQ(stmt->columns->at(6)->nullable, false); - ASSERT_EQ(stmt->columns->at(7)->nullable, false); - ASSERT_EQ(stmt->columns->at(8)->nullable, false); - ASSERT_EQ(stmt->columns->at(9)->nullable, true); - ASSERT_EQ(stmt->columns->at(10)->nullable, false); - ASSERT_EQ(stmt->columns->at(11)->nullable, false); - ASSERT_EQ(stmt->columns->at(12)->nullable, false); - ASSERT_EQ(stmt->columns->at(13)->nullable, false); - ASSERT_EQ(stmt->columns->at(14)->nullable, false); - ASSERT_EQ(stmt->columns->at(15)->nullable, false); - ASSERT_EQ(stmt->columns->at(16)->nullable, false); - // Expecting two column constraints since the NULL constraint gets explicitly removed and the corresponding - // information is then stored in `ColumnDefinition::nullable` instead. - ASSERT_EQ(stmt->columns->at(13)->column_constraints->size(), 2); + // Table constraints are identified and separated during the parsing of the SQL string + // Table constraints: + // - PRIMARY KEY(c_char, c_int) + ASSERT_EQ(stmt->tableConstraints->size(), 1); + ASSERT(stmt->tableConstraints->at(0)->type == ConstraintType::PrimaryKey); ASSERT_STREQ(stmt->tableConstraints->at(0)->columnNames->at(0), "c_char"); ASSERT_STREQ(stmt->tableConstraints->at(0)->columnNames->at(1), "c_int"); } From c115169c8bf8ae1968aacef61e563ccf1e79f212 Mon Sep 17 00:00:00 2001 From: mweisgut Date: Fri, 14 Jan 2022 09:44:15 +0100 Subject: [PATCH 3/3] formatting --- test/sql_tests.cpp | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/test/sql_tests.cpp b/test/sql_tests.cpp index 2b52927b..fa725b94 100644 --- a/test/sql_tests.cpp +++ b/test/sql_tests.cpp @@ -31,25 +31,26 @@ TEST(CreateStatementTest) { SQLParserResult result; SQLParser::parse( "CREATE TABLE dummy_table (" - "c_char CHAR(42), " - "c_date DATE, " - "c_datetime DATETIME, " - "c_decimal DECIMAL, " - "c_decimal_precision DECIMAL(13), " - "c_decimal_precision_scale DECIMAL(13,37), " - "c_double_not_null DOUBLE NOT NULL, " - "c_float FLOAT, " - "c_int INT, " - "PRIMARY KEY(c_char, c_int), " - "c_integer_null INTEGER NULL, " - "c_long LONG, " - "c_real REAL, " - "c_smallint SMALLINT, " - "c_text TEXT UNIQUE PRIMARY KEY NOT NULL, " - "c_time TIME, " - "c_time_precision TIME(17), " - "c_varchar VARCHAR(50), " - "c_char_varying CHARACTER VARYING(60))", + " c_char CHAR(42), " + " c_date DATE, " + " c_datetime DATETIME, " + " c_decimal DECIMAL, " + " c_decimal_precision DECIMAL(13), " + " c_decimal_precision_scale DECIMAL(13,37), " + " c_double_not_null DOUBLE NOT NULL, " + " c_float FLOAT, " + " c_int INT, " + " PRIMARY KEY(c_char, c_int), " + " c_integer_null INTEGER NULL, " + " c_long LONG, " + " c_real REAL, " + " c_smallint SMALLINT, " + " c_text TEXT UNIQUE PRIMARY KEY NOT NULL, " + " c_time TIME, " + " c_time_precision TIME(17), " + " c_varchar VARCHAR(50), " + " c_char_varying CHARACTER VARYING(60)" + ")", &result); ASSERT(result.isValid()); ASSERT_EQ(result.size(), 1);