From ef49bdaea06166dbc8ef4f89e8c80046e759f890 Mon Sep 17 00:00:00 2001 From: Konstantinos Chasapis Date: Mon, 2 Jun 2025 21:28:56 +0000 Subject: [PATCH] INTERVAL support, date pseudo literals TIMESTAMP and TIME literals. The interval was not allowed to be a column data type. With this patch we add this support. We add support for the pseudo literals CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_DATE. Also, we add support for TIMESTAMP and TIME literals. The user can now explicitly set the type of the string value it follows with TIMESTAMP 'value' and TIME 'value. DATE was already supported. --- src/parser/bison_parser.cpp | 3752 +++++++++++++++++---------------- src/parser/bison_parser.h | 345 +-- src/parser/bison_parser.y | 31 +- src/parser/flex_lexer.cpp | 2509 +++++++++++----------- src/parser/flex_lexer.h | 8 +- src/parser/flex_lexer.l | 3 + src/parser/sql_keywords.txt | 1 + src/sql/ColumnType.h | 1 + src/sql/Expr.cpp | 30 +- src/sql/Expr.h | 15 + src/sql/statements.cpp | 3 + test/queries/queries-good.sql | 8 +- test/sql_tests.cpp | 213 ++ 13 files changed, 3695 insertions(+), 3224 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 719b2b1b..962449bd 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -145,327 +145,335 @@ enum yysymbol_kind_t YYSYMBOL_INTERSECT = 9, /* INTERSECT */ YYSYMBOL_TEMPORARY = 10, /* TEMPORARY */ YYSYMBOL_TIMESTAMP = 11, /* TIMESTAMP */ - YYSYMBOL_DISTINCT = 12, /* DISTINCT */ - YYSYMBOL_NVARCHAR = 13, /* NVARCHAR */ - YYSYMBOL_RESTRICT = 14, /* RESTRICT */ - YYSYMBOL_TRUNCATE = 15, /* TRUNCATE */ - YYSYMBOL_ANALYZE = 16, /* ANALYZE */ - YYSYMBOL_BETWEEN = 17, /* BETWEEN */ - YYSYMBOL_CASCADE = 18, /* CASCADE */ - YYSYMBOL_COLUMNS = 19, /* COLUMNS */ - YYSYMBOL_CONTROL = 20, /* CONTROL */ - YYSYMBOL_DEFAULT = 21, /* DEFAULT */ - YYSYMBOL_EXECUTE = 22, /* EXECUTE */ - YYSYMBOL_EXPLAIN = 23, /* EXPLAIN */ - YYSYMBOL_ENCODING = 24, /* ENCODING */ - YYSYMBOL_INTEGER = 25, /* INTEGER */ - YYSYMBOL_NATURAL = 26, /* NATURAL */ - YYSYMBOL_PREPARE = 27, /* PREPARE */ - YYSYMBOL_SCHEMAS = 28, /* SCHEMAS */ - YYSYMBOL_CHARACTER_VARYING = 29, /* CHARACTER_VARYING */ - YYSYMBOL_REAL = 30, /* REAL */ - YYSYMBOL_DECIMAL = 31, /* DECIMAL */ - YYSYMBOL_SMALLINT = 32, /* SMALLINT */ - YYSYMBOL_BIGINT = 33, /* BIGINT */ - 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_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_OVER = 77, /* OVER */ - 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_PARTITION = 105, /* PARTITION */ - YYSYMBOL_PLAN = 106, /* PLAN */ - YYSYMBOL_SHOW = 107, /* SHOW */ - YYSYMBOL_TEXT = 108, /* TEXT */ - YYSYMBOL_THEN = 109, /* THEN */ - YYSYMBOL_TIME = 110, /* TIME */ - YYSYMBOL_VIEW = 111, /* VIEW */ - YYSYMBOL_WHEN = 112, /* WHEN */ - YYSYMBOL_WITH = 113, /* WITH */ - YYSYMBOL_ADD = 114, /* ADD */ - YYSYMBOL_ALL = 115, /* ALL */ - YYSYMBOL_AND = 116, /* AND */ - YYSYMBOL_ASC = 117, /* ASC */ - YYSYMBOL_END = 118, /* END */ - YYSYMBOL_FOR = 119, /* FOR */ - YYSYMBOL_INT = 120, /* INT */ - 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_NO = 134, /* NO */ - YYSYMBOL_ARRAY = 135, /* ARRAY */ - YYSYMBOL_CONCAT = 136, /* CONCAT */ - YYSYMBOL_ILIKE = 137, /* ILIKE */ - YYSYMBOL_SECOND = 138, /* SECOND */ - YYSYMBOL_MINUTE = 139, /* MINUTE */ - YYSYMBOL_HOUR = 140, /* HOUR */ - YYSYMBOL_DAY = 141, /* DAY */ - YYSYMBOL_MONTH = 142, /* MONTH */ - YYSYMBOL_YEAR = 143, /* YEAR */ - YYSYMBOL_SECONDS = 144, /* SECONDS */ - YYSYMBOL_MINUTES = 145, /* MINUTES */ - YYSYMBOL_HOURS = 146, /* HOURS */ - YYSYMBOL_DAYS = 147, /* DAYS */ - YYSYMBOL_MONTHS = 148, /* MONTHS */ - YYSYMBOL_YEARS = 149, /* YEARS */ - YYSYMBOL_INTERVAL = 150, /* INTERVAL */ - YYSYMBOL_TRUE = 151, /* TRUE */ - YYSYMBOL_FALSE = 152, /* FALSE */ - YYSYMBOL_BOOLEAN = 153, /* BOOLEAN */ - YYSYMBOL_TRANSACTION = 154, /* TRANSACTION */ - YYSYMBOL_BEGIN = 155, /* BEGIN */ - YYSYMBOL_COMMIT = 156, /* COMMIT */ - YYSYMBOL_ROLLBACK = 157, /* ROLLBACK */ - YYSYMBOL_NOWAIT = 158, /* NOWAIT */ - YYSYMBOL_SKIP = 159, /* SKIP */ - YYSYMBOL_LOCKED = 160, /* LOCKED */ - YYSYMBOL_SHARE = 161, /* SHARE */ - YYSYMBOL_RANGE = 162, /* RANGE */ - YYSYMBOL_ROWS = 163, /* ROWS */ - YYSYMBOL_GROUPS = 164, /* GROUPS */ - YYSYMBOL_UNBOUNDED = 165, /* UNBOUNDED */ - YYSYMBOL_FOLLOWING = 166, /* FOLLOWING */ - YYSYMBOL_PRECEDING = 167, /* PRECEDING */ - YYSYMBOL_CURRENT_ROW = 168, /* CURRENT_ROW */ - YYSYMBOL_UNIQUE = 169, /* UNIQUE */ - YYSYMBOL_PRIMARY = 170, /* PRIMARY */ - YYSYMBOL_FOREIGN = 171, /* FOREIGN */ - YYSYMBOL_KEY = 172, /* KEY */ - YYSYMBOL_REFERENCES = 173, /* REFERENCES */ - YYSYMBOL_174_ = 174, /* '=' */ - YYSYMBOL_EQUALS = 175, /* EQUALS */ - YYSYMBOL_NOTEQUALS = 176, /* NOTEQUALS */ - YYSYMBOL_177_ = 177, /* '<' */ - YYSYMBOL_178_ = 178, /* '>' */ - YYSYMBOL_LESS = 179, /* LESS */ - YYSYMBOL_GREATER = 180, /* GREATER */ - YYSYMBOL_LESSEQ = 181, /* LESSEQ */ - YYSYMBOL_GREATEREQ = 182, /* GREATEREQ */ - YYSYMBOL_NOTNULL = 183, /* NOTNULL */ - YYSYMBOL_184_ = 184, /* '+' */ - YYSYMBOL_185_ = 185, /* '-' */ - YYSYMBOL_186_ = 186, /* '*' */ - YYSYMBOL_187_ = 187, /* '/' */ - YYSYMBOL_188_ = 188, /* '%' */ - YYSYMBOL_189_ = 189, /* '^' */ - YYSYMBOL_UMINUS = 190, /* UMINUS */ - YYSYMBOL_191_ = 191, /* '[' */ - YYSYMBOL_192_ = 192, /* ']' */ - YYSYMBOL_193_ = 193, /* '(' */ - YYSYMBOL_194_ = 194, /* ')' */ - YYSYMBOL_195_ = 195, /* '.' */ - YYSYMBOL_196_ = 196, /* ';' */ - YYSYMBOL_197_ = 197, /* ',' */ - YYSYMBOL_198_ = 198, /* '?' */ - YYSYMBOL_YYACCEPT = 199, /* $accept */ - YYSYMBOL_input = 200, /* input */ - YYSYMBOL_statement_list = 201, /* statement_list */ - YYSYMBOL_statement = 202, /* statement */ - YYSYMBOL_preparable_statement = 203, /* preparable_statement */ - YYSYMBOL_opt_hints = 204, /* opt_hints */ - YYSYMBOL_hint_list = 205, /* hint_list */ - YYSYMBOL_hint = 206, /* hint */ - YYSYMBOL_transaction_statement = 207, /* transaction_statement */ - YYSYMBOL_opt_transaction_keyword = 208, /* opt_transaction_keyword */ - YYSYMBOL_prepare_statement = 209, /* prepare_statement */ - YYSYMBOL_prepare_target_query = 210, /* prepare_target_query */ - YYSYMBOL_execute_statement = 211, /* execute_statement */ - YYSYMBOL_import_statement = 212, /* import_statement */ - YYSYMBOL_file_type = 213, /* file_type */ - YYSYMBOL_file_path = 214, /* file_path */ - YYSYMBOL_opt_import_export_options = 215, /* opt_import_export_options */ - YYSYMBOL_import_export_options = 216, /* import_export_options */ - YYSYMBOL_export_statement = 217, /* export_statement */ - YYSYMBOL_show_statement = 218, /* show_statement */ - YYSYMBOL_create_statement = 219, /* create_statement */ - YYSYMBOL_opt_not_exists = 220, /* opt_not_exists */ - YYSYMBOL_table_elem_commalist = 221, /* table_elem_commalist */ - YYSYMBOL_table_elem = 222, /* table_elem */ - YYSYMBOL_column_def = 223, /* column_def */ - YYSYMBOL_column_type = 224, /* column_type */ - YYSYMBOL_opt_time_precision = 225, /* opt_time_precision */ - YYSYMBOL_opt_decimal_specification = 226, /* opt_decimal_specification */ - YYSYMBOL_opt_column_constraints = 227, /* opt_column_constraints */ - YYSYMBOL_column_constraints = 228, /* column_constraints */ - YYSYMBOL_column_constraint = 229, /* column_constraint */ - YYSYMBOL_table_constraint = 230, /* table_constraint */ - YYSYMBOL_references_spec = 231, /* references_spec */ - YYSYMBOL_drop_statement = 232, /* drop_statement */ - YYSYMBOL_opt_exists = 233, /* opt_exists */ - YYSYMBOL_alter_statement = 234, /* alter_statement */ - YYSYMBOL_alter_action = 235, /* alter_action */ - YYSYMBOL_drop_action = 236, /* drop_action */ - YYSYMBOL_delete_statement = 237, /* delete_statement */ - YYSYMBOL_truncate_statement = 238, /* truncate_statement */ - YYSYMBOL_insert_statement = 239, /* insert_statement */ - YYSYMBOL_opt_column_list = 240, /* opt_column_list */ - YYSYMBOL_update_statement = 241, /* update_statement */ - YYSYMBOL_update_clause_commalist = 242, /* update_clause_commalist */ - YYSYMBOL_update_clause = 243, /* update_clause */ - YYSYMBOL_select_statement = 244, /* select_statement */ - YYSYMBOL_select_within_set_operation = 245, /* select_within_set_operation */ - YYSYMBOL_select_within_set_operation_no_parentheses = 246, /* select_within_set_operation_no_parentheses */ - YYSYMBOL_select_with_paren = 247, /* select_with_paren */ - YYSYMBOL_select_no_paren = 248, /* select_no_paren */ - YYSYMBOL_set_operator = 249, /* set_operator */ - YYSYMBOL_set_type = 250, /* set_type */ - YYSYMBOL_opt_all = 251, /* opt_all */ - YYSYMBOL_select_clause = 252, /* select_clause */ - YYSYMBOL_opt_distinct = 253, /* opt_distinct */ - YYSYMBOL_select_list = 254, /* select_list */ - YYSYMBOL_opt_from_clause = 255, /* opt_from_clause */ - YYSYMBOL_from_clause = 256, /* from_clause */ - YYSYMBOL_opt_where = 257, /* opt_where */ - YYSYMBOL_opt_group = 258, /* opt_group */ - YYSYMBOL_opt_having = 259, /* opt_having */ - YYSYMBOL_opt_order = 260, /* opt_order */ - YYSYMBOL_order_list = 261, /* order_list */ - YYSYMBOL_order_desc = 262, /* order_desc */ - YYSYMBOL_opt_order_type = 263, /* opt_order_type */ - YYSYMBOL_opt_top = 264, /* opt_top */ - YYSYMBOL_opt_limit = 265, /* opt_limit */ - YYSYMBOL_expr_list = 266, /* expr_list */ - YYSYMBOL_opt_extended_literal_list = 267, /* opt_extended_literal_list */ - YYSYMBOL_extended_literal_list = 268, /* extended_literal_list */ - YYSYMBOL_casted_extended_literal = 269, /* casted_extended_literal */ - YYSYMBOL_extended_literal = 270, /* extended_literal */ - YYSYMBOL_expr_alias = 271, /* expr_alias */ - YYSYMBOL_expr = 272, /* expr */ - YYSYMBOL_operand = 273, /* operand */ - YYSYMBOL_scalar_expr = 274, /* scalar_expr */ - YYSYMBOL_unary_expr = 275, /* unary_expr */ - YYSYMBOL_binary_expr = 276, /* binary_expr */ - YYSYMBOL_logic_expr = 277, /* logic_expr */ - YYSYMBOL_in_expr = 278, /* in_expr */ - YYSYMBOL_case_expr = 279, /* case_expr */ - YYSYMBOL_case_list = 280, /* case_list */ - YYSYMBOL_exists_expr = 281, /* exists_expr */ - YYSYMBOL_comp_expr = 282, /* comp_expr */ - YYSYMBOL_function_expr = 283, /* function_expr */ - YYSYMBOL_opt_window = 284, /* opt_window */ - YYSYMBOL_opt_partition = 285, /* opt_partition */ - YYSYMBOL_opt_frame_clause = 286, /* opt_frame_clause */ - YYSYMBOL_frame_type = 287, /* frame_type */ - YYSYMBOL_frame_bound = 288, /* frame_bound */ - YYSYMBOL_extract_expr = 289, /* extract_expr */ - YYSYMBOL_cast_expr = 290, /* cast_expr */ - YYSYMBOL_datetime_field = 291, /* datetime_field */ - YYSYMBOL_datetime_field_plural = 292, /* datetime_field_plural */ - YYSYMBOL_duration_field = 293, /* duration_field */ - YYSYMBOL_array_expr = 294, /* array_expr */ - YYSYMBOL_array_index = 295, /* array_index */ - YYSYMBOL_between_expr = 296, /* between_expr */ - YYSYMBOL_column_name = 297, /* column_name */ - YYSYMBOL_literal = 298, /* literal */ - YYSYMBOL_string_literal = 299, /* string_literal */ - YYSYMBOL_bool_literal = 300, /* bool_literal */ - YYSYMBOL_num_literal = 301, /* num_literal */ - YYSYMBOL_int_literal = 302, /* int_literal */ - YYSYMBOL_null_literal = 303, /* null_literal */ - YYSYMBOL_date_literal = 304, /* date_literal */ - YYSYMBOL_interval_literal = 305, /* interval_literal */ - YYSYMBOL_param_expr = 306, /* param_expr */ - YYSYMBOL_table_ref = 307, /* table_ref */ - YYSYMBOL_table_ref_atomic = 308, /* table_ref_atomic */ - YYSYMBOL_nonjoin_table_ref_atomic = 309, /* nonjoin_table_ref_atomic */ - YYSYMBOL_table_ref_commalist = 310, /* table_ref_commalist */ - YYSYMBOL_table_ref_name = 311, /* table_ref_name */ - YYSYMBOL_table_ref_name_no_alias = 312, /* table_ref_name_no_alias */ - YYSYMBOL_table_name = 313, /* table_name */ - YYSYMBOL_opt_index_name = 314, /* opt_index_name */ - YYSYMBOL_table_alias = 315, /* table_alias */ - YYSYMBOL_opt_table_alias = 316, /* opt_table_alias */ - YYSYMBOL_alias = 317, /* alias */ - YYSYMBOL_opt_alias = 318, /* opt_alias */ - YYSYMBOL_opt_locking_clause = 319, /* opt_locking_clause */ - YYSYMBOL_opt_locking_clause_list = 320, /* opt_locking_clause_list */ - YYSYMBOL_locking_clause = 321, /* locking_clause */ - YYSYMBOL_row_lock_mode = 322, /* row_lock_mode */ - YYSYMBOL_opt_row_lock_policy = 323, /* opt_row_lock_policy */ - YYSYMBOL_opt_with_clause = 324, /* opt_with_clause */ - YYSYMBOL_with_clause = 325, /* with_clause */ - YYSYMBOL_with_description_list = 326, /* with_description_list */ - YYSYMBOL_with_description = 327, /* with_description */ - YYSYMBOL_join_clause = 328, /* join_clause */ - YYSYMBOL_opt_join_type = 329, /* opt_join_type */ - YYSYMBOL_join_condition = 330, /* join_condition */ - YYSYMBOL_opt_semicolon = 331, /* opt_semicolon */ - YYSYMBOL_ident_commalist = 332 /* ident_commalist */ + YYSYMBOL_CURRENT_TIMESTAMP = 12, /* CURRENT_TIMESTAMP */ + YYSYMBOL_CURRENT_DATE = 13, /* CURRENT_DATE */ + YYSYMBOL_CURRENT_TIME = 14, /* CURRENT_TIME */ + YYSYMBOL_DISTINCT = 15, /* DISTINCT */ + YYSYMBOL_NVARCHAR = 16, /* NVARCHAR */ + YYSYMBOL_RESTRICT = 17, /* RESTRICT */ + YYSYMBOL_TRUNCATE = 18, /* TRUNCATE */ + YYSYMBOL_ANALYZE = 19, /* ANALYZE */ + YYSYMBOL_BETWEEN = 20, /* BETWEEN */ + YYSYMBOL_CASCADE = 21, /* CASCADE */ + YYSYMBOL_COLUMNS = 22, /* COLUMNS */ + YYSYMBOL_CONTROL = 23, /* CONTROL */ + YYSYMBOL_DEFAULT = 24, /* DEFAULT */ + YYSYMBOL_EXECUTE = 25, /* EXECUTE */ + YYSYMBOL_EXPLAIN = 26, /* EXPLAIN */ + YYSYMBOL_ENCODING = 27, /* ENCODING */ + YYSYMBOL_INTEGER = 28, /* INTEGER */ + YYSYMBOL_NATURAL = 29, /* NATURAL */ + YYSYMBOL_PREPARE = 30, /* PREPARE */ + YYSYMBOL_SCHEMAS = 31, /* SCHEMAS */ + YYSYMBOL_CHARACTER_VARYING = 32, /* CHARACTER_VARYING */ + YYSYMBOL_REAL = 33, /* REAL */ + YYSYMBOL_DECIMAL = 34, /* DECIMAL */ + YYSYMBOL_SMALLINT = 35, /* SMALLINT */ + YYSYMBOL_BIGINT = 36, /* BIGINT */ + YYSYMBOL_SPATIAL = 37, /* SPATIAL */ + YYSYMBOL_VARCHAR = 38, /* VARCHAR */ + YYSYMBOL_VIRTUAL = 39, /* VIRTUAL */ + YYSYMBOL_DESCRIBE = 40, /* DESCRIBE */ + YYSYMBOL_BEFORE = 41, /* BEFORE */ + YYSYMBOL_COLUMN = 42, /* COLUMN */ + YYSYMBOL_CREATE = 43, /* CREATE */ + YYSYMBOL_DELETE = 44, /* DELETE */ + YYSYMBOL_DIRECT = 45, /* DIRECT */ + YYSYMBOL_DOUBLE = 46, /* DOUBLE */ + YYSYMBOL_ESCAPE = 47, /* ESCAPE */ + YYSYMBOL_EXCEPT = 48, /* EXCEPT */ + YYSYMBOL_EXISTS = 49, /* EXISTS */ + YYSYMBOL_EXTRACT = 50, /* EXTRACT */ + YYSYMBOL_CAST = 51, /* CAST */ + YYSYMBOL_FORMAT = 52, /* FORMAT */ + YYSYMBOL_GLOBAL = 53, /* GLOBAL */ + YYSYMBOL_HAVING = 54, /* HAVING */ + YYSYMBOL_IMPORT = 55, /* IMPORT */ + YYSYMBOL_INSERT = 56, /* INSERT */ + YYSYMBOL_ISNULL = 57, /* ISNULL */ + YYSYMBOL_OFFSET = 58, /* OFFSET */ + YYSYMBOL_RENAME = 59, /* RENAME */ + YYSYMBOL_SCHEMA = 60, /* SCHEMA */ + YYSYMBOL_SELECT = 61, /* SELECT */ + YYSYMBOL_SORTED = 62, /* SORTED */ + YYSYMBOL_TABLES = 63, /* TABLES */ + YYSYMBOL_UNLOAD = 64, /* UNLOAD */ + YYSYMBOL_UPDATE = 65, /* UPDATE */ + YYSYMBOL_VALUES = 66, /* VALUES */ + YYSYMBOL_AFTER = 67, /* AFTER */ + YYSYMBOL_ALTER = 68, /* ALTER */ + YYSYMBOL_CROSS = 69, /* CROSS */ + YYSYMBOL_DELTA = 70, /* DELTA */ + YYSYMBOL_FLOAT = 71, /* FLOAT */ + YYSYMBOL_GROUP = 72, /* GROUP */ + YYSYMBOL_INDEX = 73, /* INDEX */ + YYSYMBOL_INNER = 74, /* INNER */ + YYSYMBOL_LIMIT = 75, /* LIMIT */ + YYSYMBOL_LOCAL = 76, /* LOCAL */ + YYSYMBOL_MERGE = 77, /* MERGE */ + YYSYMBOL_MINUS = 78, /* MINUS */ + YYSYMBOL_ORDER = 79, /* ORDER */ + YYSYMBOL_OVER = 80, /* OVER */ + YYSYMBOL_OUTER = 81, /* OUTER */ + YYSYMBOL_RIGHT = 82, /* RIGHT */ + YYSYMBOL_TABLE = 83, /* TABLE */ + YYSYMBOL_UNION = 84, /* UNION */ + YYSYMBOL_USING = 85, /* USING */ + YYSYMBOL_WHERE = 86, /* WHERE */ + YYSYMBOL_CALL = 87, /* CALL */ + YYSYMBOL_CASE = 88, /* CASE */ + YYSYMBOL_CHAR = 89, /* CHAR */ + YYSYMBOL_COPY = 90, /* COPY */ + YYSYMBOL_DATE = 91, /* DATE */ + YYSYMBOL_DATETIME = 92, /* DATETIME */ + YYSYMBOL_DESC = 93, /* DESC */ + YYSYMBOL_DROP = 94, /* DROP */ + YYSYMBOL_ELSE = 95, /* ELSE */ + YYSYMBOL_FILE = 96, /* FILE */ + YYSYMBOL_FROM = 97, /* FROM */ + YYSYMBOL_FULL = 98, /* FULL */ + YYSYMBOL_HASH = 99, /* HASH */ + YYSYMBOL_HINT = 100, /* HINT */ + YYSYMBOL_INTO = 101, /* INTO */ + YYSYMBOL_JOIN = 102, /* JOIN */ + YYSYMBOL_LEFT = 103, /* LEFT */ + YYSYMBOL_LIKE = 104, /* LIKE */ + YYSYMBOL_LOAD = 105, /* LOAD */ + YYSYMBOL_LONG = 106, /* LONG */ + YYSYMBOL_NULL = 107, /* NULL */ + YYSYMBOL_PARTITION = 108, /* PARTITION */ + YYSYMBOL_PLAN = 109, /* PLAN */ + YYSYMBOL_SHOW = 110, /* SHOW */ + YYSYMBOL_TEXT = 111, /* TEXT */ + YYSYMBOL_THEN = 112, /* THEN */ + YYSYMBOL_TIME = 113, /* TIME */ + YYSYMBOL_VIEW = 114, /* VIEW */ + YYSYMBOL_WHEN = 115, /* WHEN */ + YYSYMBOL_WITH = 116, /* WITH */ + YYSYMBOL_ADD = 117, /* ADD */ + YYSYMBOL_ALL = 118, /* ALL */ + YYSYMBOL_AND = 119, /* AND */ + YYSYMBOL_ASC = 120, /* ASC */ + YYSYMBOL_END = 121, /* END */ + YYSYMBOL_FOR = 122, /* FOR */ + YYSYMBOL_INT = 123, /* INT */ + YYSYMBOL_NOT = 124, /* NOT */ + YYSYMBOL_OFF = 125, /* OFF */ + YYSYMBOL_SET = 126, /* SET */ + YYSYMBOL_TOP = 127, /* TOP */ + YYSYMBOL_AS = 128, /* AS */ + YYSYMBOL_BY = 129, /* BY */ + YYSYMBOL_IF = 130, /* IF */ + YYSYMBOL_IN = 131, /* IN */ + YYSYMBOL_IS = 132, /* IS */ + YYSYMBOL_OF = 133, /* OF */ + YYSYMBOL_ON = 134, /* ON */ + YYSYMBOL_OR = 135, /* OR */ + YYSYMBOL_TO = 136, /* TO */ + YYSYMBOL_NO = 137, /* NO */ + YYSYMBOL_ARRAY = 138, /* ARRAY */ + YYSYMBOL_CONCAT = 139, /* CONCAT */ + YYSYMBOL_ILIKE = 140, /* ILIKE */ + YYSYMBOL_SECOND = 141, /* SECOND */ + YYSYMBOL_MINUTE = 142, /* MINUTE */ + YYSYMBOL_HOUR = 143, /* HOUR */ + YYSYMBOL_DAY = 144, /* DAY */ + YYSYMBOL_MONTH = 145, /* MONTH */ + YYSYMBOL_YEAR = 146, /* YEAR */ + YYSYMBOL_SECONDS = 147, /* SECONDS */ + YYSYMBOL_MINUTES = 148, /* MINUTES */ + YYSYMBOL_HOURS = 149, /* HOURS */ + YYSYMBOL_DAYS = 150, /* DAYS */ + YYSYMBOL_MONTHS = 151, /* MONTHS */ + YYSYMBOL_YEARS = 152, /* YEARS */ + YYSYMBOL_INTERVAL = 153, /* INTERVAL */ + YYSYMBOL_TRUE = 154, /* TRUE */ + YYSYMBOL_FALSE = 155, /* FALSE */ + YYSYMBOL_BOOLEAN = 156, /* BOOLEAN */ + YYSYMBOL_TRANSACTION = 157, /* TRANSACTION */ + YYSYMBOL_BEGIN = 158, /* BEGIN */ + YYSYMBOL_COMMIT = 159, /* COMMIT */ + YYSYMBOL_ROLLBACK = 160, /* ROLLBACK */ + YYSYMBOL_NOWAIT = 161, /* NOWAIT */ + YYSYMBOL_SKIP = 162, /* SKIP */ + YYSYMBOL_LOCKED = 163, /* LOCKED */ + YYSYMBOL_SHARE = 164, /* SHARE */ + YYSYMBOL_RANGE = 165, /* RANGE */ + YYSYMBOL_ROWS = 166, /* ROWS */ + YYSYMBOL_GROUPS = 167, /* GROUPS */ + YYSYMBOL_UNBOUNDED = 168, /* UNBOUNDED */ + YYSYMBOL_FOLLOWING = 169, /* FOLLOWING */ + YYSYMBOL_PRECEDING = 170, /* PRECEDING */ + YYSYMBOL_CURRENT_ROW = 171, /* CURRENT_ROW */ + YYSYMBOL_UNIQUE = 172, /* UNIQUE */ + YYSYMBOL_PRIMARY = 173, /* PRIMARY */ + YYSYMBOL_FOREIGN = 174, /* FOREIGN */ + YYSYMBOL_KEY = 175, /* KEY */ + YYSYMBOL_REFERENCES = 176, /* REFERENCES */ + YYSYMBOL_177_ = 177, /* '=' */ + YYSYMBOL_EQUALS = 178, /* EQUALS */ + YYSYMBOL_NOTEQUALS = 179, /* NOTEQUALS */ + YYSYMBOL_180_ = 180, /* '<' */ + YYSYMBOL_181_ = 181, /* '>' */ + YYSYMBOL_LESS = 182, /* LESS */ + YYSYMBOL_GREATER = 183, /* GREATER */ + YYSYMBOL_LESSEQ = 184, /* LESSEQ */ + YYSYMBOL_GREATEREQ = 185, /* GREATEREQ */ + YYSYMBOL_NOTNULL = 186, /* NOTNULL */ + YYSYMBOL_187_ = 187, /* '+' */ + YYSYMBOL_188_ = 188, /* '-' */ + YYSYMBOL_189_ = 189, /* '*' */ + YYSYMBOL_190_ = 190, /* '/' */ + YYSYMBOL_191_ = 191, /* '%' */ + YYSYMBOL_192_ = 192, /* '^' */ + YYSYMBOL_UMINUS = 193, /* UMINUS */ + YYSYMBOL_194_ = 194, /* '[' */ + YYSYMBOL_195_ = 195, /* ']' */ + YYSYMBOL_196_ = 196, /* '(' */ + YYSYMBOL_197_ = 197, /* ')' */ + YYSYMBOL_198_ = 198, /* '.' */ + YYSYMBOL_199_ = 199, /* ';' */ + YYSYMBOL_200_ = 200, /* ',' */ + YYSYMBOL_201_ = 201, /* '?' */ + YYSYMBOL_YYACCEPT = 202, /* $accept */ + YYSYMBOL_input = 203, /* input */ + YYSYMBOL_statement_list = 204, /* statement_list */ + YYSYMBOL_statement = 205, /* statement */ + YYSYMBOL_preparable_statement = 206, /* preparable_statement */ + YYSYMBOL_opt_hints = 207, /* opt_hints */ + YYSYMBOL_hint_list = 208, /* hint_list */ + YYSYMBOL_hint = 209, /* hint */ + YYSYMBOL_transaction_statement = 210, /* transaction_statement */ + YYSYMBOL_opt_transaction_keyword = 211, /* opt_transaction_keyword */ + YYSYMBOL_prepare_statement = 212, /* prepare_statement */ + YYSYMBOL_prepare_target_query = 213, /* prepare_target_query */ + YYSYMBOL_execute_statement = 214, /* execute_statement */ + YYSYMBOL_import_statement = 215, /* import_statement */ + YYSYMBOL_file_type = 216, /* file_type */ + YYSYMBOL_file_path = 217, /* file_path */ + YYSYMBOL_opt_import_export_options = 218, /* opt_import_export_options */ + YYSYMBOL_import_export_options = 219, /* import_export_options */ + YYSYMBOL_export_statement = 220, /* export_statement */ + YYSYMBOL_show_statement = 221, /* show_statement */ + YYSYMBOL_create_statement = 222, /* create_statement */ + YYSYMBOL_opt_not_exists = 223, /* opt_not_exists */ + YYSYMBOL_table_elem_commalist = 224, /* table_elem_commalist */ + YYSYMBOL_table_elem = 225, /* table_elem */ + YYSYMBOL_column_def = 226, /* column_def */ + YYSYMBOL_column_type = 227, /* column_type */ + YYSYMBOL_opt_time_precision = 228, /* opt_time_precision */ + YYSYMBOL_opt_decimal_specification = 229, /* opt_decimal_specification */ + YYSYMBOL_opt_column_constraints = 230, /* opt_column_constraints */ + YYSYMBOL_column_constraints = 231, /* column_constraints */ + YYSYMBOL_column_constraint = 232, /* column_constraint */ + YYSYMBOL_table_constraint = 233, /* table_constraint */ + YYSYMBOL_references_spec = 234, /* references_spec */ + YYSYMBOL_drop_statement = 235, /* drop_statement */ + YYSYMBOL_opt_exists = 236, /* opt_exists */ + YYSYMBOL_alter_statement = 237, /* alter_statement */ + YYSYMBOL_alter_action = 238, /* alter_action */ + YYSYMBOL_drop_action = 239, /* drop_action */ + YYSYMBOL_delete_statement = 240, /* delete_statement */ + YYSYMBOL_truncate_statement = 241, /* truncate_statement */ + YYSYMBOL_insert_statement = 242, /* insert_statement */ + YYSYMBOL_opt_column_list = 243, /* opt_column_list */ + YYSYMBOL_update_statement = 244, /* update_statement */ + YYSYMBOL_update_clause_commalist = 245, /* update_clause_commalist */ + YYSYMBOL_update_clause = 246, /* update_clause */ + YYSYMBOL_select_statement = 247, /* select_statement */ + YYSYMBOL_select_within_set_operation = 248, /* select_within_set_operation */ + YYSYMBOL_select_within_set_operation_no_parentheses = 249, /* select_within_set_operation_no_parentheses */ + YYSYMBOL_select_with_paren = 250, /* select_with_paren */ + YYSYMBOL_select_no_paren = 251, /* select_no_paren */ + YYSYMBOL_set_operator = 252, /* set_operator */ + YYSYMBOL_set_type = 253, /* set_type */ + YYSYMBOL_opt_all = 254, /* opt_all */ + YYSYMBOL_select_clause = 255, /* select_clause */ + YYSYMBOL_opt_distinct = 256, /* opt_distinct */ + YYSYMBOL_select_list = 257, /* select_list */ + YYSYMBOL_opt_from_clause = 258, /* opt_from_clause */ + YYSYMBOL_from_clause = 259, /* from_clause */ + YYSYMBOL_opt_where = 260, /* opt_where */ + YYSYMBOL_opt_group = 261, /* opt_group */ + YYSYMBOL_opt_having = 262, /* opt_having */ + YYSYMBOL_opt_order = 263, /* opt_order */ + YYSYMBOL_order_list = 264, /* order_list */ + YYSYMBOL_order_desc = 265, /* order_desc */ + YYSYMBOL_opt_order_type = 266, /* opt_order_type */ + YYSYMBOL_opt_top = 267, /* opt_top */ + YYSYMBOL_opt_limit = 268, /* opt_limit */ + YYSYMBOL_expr_list = 269, /* expr_list */ + YYSYMBOL_opt_extended_literal_list = 270, /* opt_extended_literal_list */ + YYSYMBOL_extended_literal_list = 271, /* extended_literal_list */ + YYSYMBOL_casted_extended_literal = 272, /* casted_extended_literal */ + YYSYMBOL_extended_literal = 273, /* extended_literal */ + YYSYMBOL_expr_alias = 274, /* expr_alias */ + YYSYMBOL_expr = 275, /* expr */ + YYSYMBOL_operand = 276, /* operand */ + YYSYMBOL_scalar_expr = 277, /* scalar_expr */ + YYSYMBOL_unary_expr = 278, /* unary_expr */ + YYSYMBOL_binary_expr = 279, /* binary_expr */ + YYSYMBOL_logic_expr = 280, /* logic_expr */ + YYSYMBOL_in_expr = 281, /* in_expr */ + YYSYMBOL_case_expr = 282, /* case_expr */ + YYSYMBOL_case_list = 283, /* case_list */ + YYSYMBOL_exists_expr = 284, /* exists_expr */ + YYSYMBOL_comp_expr = 285, /* comp_expr */ + YYSYMBOL_function_expr = 286, /* function_expr */ + YYSYMBOL_opt_window = 287, /* opt_window */ + YYSYMBOL_opt_partition = 288, /* opt_partition */ + YYSYMBOL_opt_frame_clause = 289, /* opt_frame_clause */ + YYSYMBOL_frame_type = 290, /* frame_type */ + YYSYMBOL_frame_bound = 291, /* frame_bound */ + YYSYMBOL_extract_expr = 292, /* extract_expr */ + YYSYMBOL_cast_expr = 293, /* cast_expr */ + YYSYMBOL_datetime_field = 294, /* datetime_field */ + YYSYMBOL_datetime_field_plural = 295, /* datetime_field_plural */ + YYSYMBOL_duration_field = 296, /* duration_field */ + YYSYMBOL_array_expr = 297, /* array_expr */ + YYSYMBOL_array_index = 298, /* array_index */ + YYSYMBOL_between_expr = 299, /* between_expr */ + YYSYMBOL_column_name = 300, /* column_name */ + YYSYMBOL_literal = 301, /* literal */ + YYSYMBOL_string_literal = 302, /* string_literal */ + YYSYMBOL_bool_literal = 303, /* bool_literal */ + YYSYMBOL_num_literal = 304, /* num_literal */ + YYSYMBOL_int_literal = 305, /* int_literal */ + YYSYMBOL_null_literal = 306, /* null_literal */ + YYSYMBOL_date_literal = 307, /* date_literal */ + YYSYMBOL_timestamp_literal = 308, /* timestamp_literal */ + YYSYMBOL_time_literal = 309, /* time_literal */ + YYSYMBOL_interval_literal = 310, /* interval_literal */ + YYSYMBOL_param_expr = 311, /* param_expr */ + YYSYMBOL_current_timestamp = 312, /* current_timestamp */ + YYSYMBOL_current_date = 313, /* current_date */ + YYSYMBOL_current_time = 314, /* current_time */ + YYSYMBOL_table_ref = 315, /* table_ref */ + YYSYMBOL_table_ref_atomic = 316, /* table_ref_atomic */ + YYSYMBOL_nonjoin_table_ref_atomic = 317, /* nonjoin_table_ref_atomic */ + YYSYMBOL_table_ref_commalist = 318, /* table_ref_commalist */ + YYSYMBOL_table_ref_name = 319, /* table_ref_name */ + YYSYMBOL_table_ref_name_no_alias = 320, /* table_ref_name_no_alias */ + YYSYMBOL_table_name = 321, /* table_name */ + YYSYMBOL_opt_index_name = 322, /* opt_index_name */ + YYSYMBOL_table_alias = 323, /* table_alias */ + YYSYMBOL_opt_table_alias = 324, /* opt_table_alias */ + YYSYMBOL_alias = 325, /* alias */ + YYSYMBOL_opt_alias = 326, /* opt_alias */ + YYSYMBOL_opt_locking_clause = 327, /* opt_locking_clause */ + YYSYMBOL_opt_locking_clause_list = 328, /* opt_locking_clause_list */ + YYSYMBOL_locking_clause = 329, /* locking_clause */ + YYSYMBOL_row_lock_mode = 330, /* row_lock_mode */ + YYSYMBOL_opt_row_lock_policy = 331, /* opt_row_lock_policy */ + YYSYMBOL_opt_with_clause = 332, /* opt_with_clause */ + YYSYMBOL_with_clause = 333, /* with_clause */ + YYSYMBOL_with_description_list = 334, /* with_description_list */ + YYSYMBOL_with_description = 335, /* with_description */ + YYSYMBOL_join_clause = 336, /* join_clause */ + YYSYMBOL_opt_join_type = 337, /* opt_join_type */ + YYSYMBOL_join_condition = 338, /* join_condition */ + YYSYMBOL_opt_semicolon = 339, /* opt_semicolon */ + YYSYMBOL_ident_commalist = 340 /* ident_commalist */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -796,19 +804,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 69 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 905 +#define YYLAST 938 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 199 +#define YYNTOKENS 202 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 134 +#define YYNNTS 139 /* YYNRULES -- Number of rules. */ -#define YYNRULES 349 +#define YYNRULES 361 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 640 +#define YYNSTATES 655 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 436 +#define YYMAXUTOK 439 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -825,13 +833,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, 188, 2, 2, - 193, 194, 186, 184, 197, 185, 195, 187, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 196, - 177, 174, 178, 198, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 191, 2, 2, + 196, 197, 189, 187, 200, 188, 198, 190, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 199, + 180, 177, 181, 201, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 191, 2, 192, 189, 2, 2, 2, 2, 2, + 2, 194, 2, 195, 192, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -864,49 +872,51 @@ static const yytype_uint8 yytranslate[] = 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, - 176, 179, 180, 181, 182, 183, 190 + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 178, 179, 182, 183, 184, 185, 186, 193 }; #if HSQL_DEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 335, 335, 354, 360, 367, 371, 375, 376, 377, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 394, 395, 397, 401, 406, 410, 420, 421, 422, 424, - 424, 430, 436, 438, 442, 454, 460, 473, 488, 490, - 491, 492, 494, 503, 507, 517, 527, 538, 554, 555, - 560, 571, 584, 596, 603, 610, 619, 620, 622, 626, - 631, 632, 634, 642, 643, 644, 645, 646, 647, 648, - 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, - 662, 664, 665, 667, 668, 669, 671, 672, 674, 678, - 682, 687, 695, 696, 697, 698, 700, 701, 702, 704, - 712, 718, 724, 730, 736, 737, 744, 750, 752, 762, - 769, 780, 787, 795, 796, 803, 810, 814, 819, 829, - 833, 837, 849, 849, 851, 852, 861, 862, 864, 878, - 890, 895, 899, 903, 908, 909, 911, 921, 922, 924, - 926, 927, 929, 931, 932, 934, 939, 941, 942, 944, - 945, 947, 951, 956, 958, 959, 960, 964, 965, 967, - 968, 969, 970, 971, 972, 977, 981, 987, 988, 990, - 994, 999, 999, 1003, 1011, 1012, 1014, 1023, 1023, 1023, - 1023, 1023, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1027, 1027, 1031, 1031, 1033, 1034, 1035, 1036, 1037, - 1039, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, - 1048, 1050, 1051, 1053, 1054, 1055, 1056, 1060, 1061, 1062, - 1063, 1065, 1066, 1068, 1069, 1071, 1072, 1073, 1074, 1075, - 1076, 1077, 1081, 1082, 1086, 1087, 1089, 1090, 1095, 1096, - 1097, 1101, 1102, 1103, 1105, 1106, 1107, 1108, 1109, 1111, - 1113, 1115, 1116, 1117, 1118, 1119, 1120, 1122, 1123, 1124, - 1125, 1126, 1127, 1129, 1129, 1131, 1133, 1135, 1137, 1138, - 1139, 1140, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1144, - 1146, 1147, 1149, 1150, 1152, 1154, 1156, 1167, 1168, 1179, - 1211, 1220, 1220, 1227, 1227, 1229, 1229, 1236, 1240, 1245, - 1253, 1259, 1263, 1268, 1269, 1271, 1271, 1273, 1273, 1275, - 1276, 1278, 1278, 1284, 1285, 1287, 1291, 1296, 1302, 1309, - 1310, 1311, 1312, 1314, 1315, 1316, 1322, 1322, 1324, 1326, - 1330, 1335, 1345, 1352, 1360, 1369, 1370, 1371, 1372, 1373, - 1374, 1375, 1376, 1377, 1378, 1380, 1386, 1386, 1389, 1393 + 0, 337, 337, 356, 362, 369, 373, 377, 378, 379, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 396, 397, 399, 403, 408, 412, 422, 423, 424, 426, + 426, 432, 438, 440, 444, 456, 462, 475, 490, 492, + 493, 494, 496, 505, 509, 519, 529, 540, 556, 557, + 562, 573, 586, 598, 605, 612, 621, 622, 624, 628, + 633, 634, 636, 644, 645, 646, 647, 648, 649, 650, + 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, + 664, 665, 667, 668, 670, 671, 672, 674, 675, 677, + 681, 685, 690, 698, 699, 700, 701, 703, 704, 705, + 707, 715, 721, 727, 733, 739, 740, 747, 753, 755, + 765, 772, 783, 790, 798, 799, 806, 813, 817, 822, + 832, 836, 840, 852, 852, 854, 855, 864, 865, 867, + 881, 893, 898, 902, 906, 911, 912, 914, 924, 925, + 927, 929, 930, 932, 934, 935, 937, 942, 944, 945, + 947, 948, 950, 954, 959, 961, 962, 963, 967, 968, + 970, 971, 972, 973, 974, 975, 980, 984, 990, 991, + 993, 997, 1002, 1002, 1006, 1014, 1015, 1017, 1026, 1026, + 1026, 1026, 1026, 1028, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1030, 1030, 1034, 1034, 1036, 1037, 1038, 1039, + 1040, 1042, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, + 1050, 1051, 1053, 1054, 1056, 1057, 1058, 1059, 1063, 1064, + 1065, 1066, 1068, 1069, 1071, 1072, 1074, 1075, 1076, 1077, + 1078, 1079, 1080, 1084, 1085, 1089, 1090, 1092, 1093, 1098, + 1099, 1100, 1104, 1105, 1106, 1108, 1109, 1110, 1111, 1112, + 1114, 1116, 1118, 1119, 1120, 1121, 1122, 1123, 1125, 1126, + 1127, 1128, 1129, 1130, 1132, 1132, 1134, 1136, 1138, 1140, + 1141, 1142, 1143, 1145, 1145, 1145, 1145, 1145, 1145, 1145, + 1146, 1146, 1146, 1146, 1146, 1148, 1150, 1151, 1153, 1154, + 1156, 1158, 1160, 1171, 1175, 1179, 1180, 1191, 1194, 1226, + 1232, 1234, 1236, 1241, 1241, 1248, 1248, 1250, 1250, 1257, + 1261, 1266, 1274, 1280, 1284, 1289, 1290, 1292, 1292, 1294, + 1294, 1296, 1297, 1299, 1299, 1305, 1306, 1308, 1312, 1317, + 1323, 1330, 1331, 1332, 1333, 1335, 1336, 1337, 1343, 1343, + 1345, 1347, 1351, 1356, 1366, 1373, 1381, 1390, 1391, 1392, + 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1401, 1407, 1407, + 1410, 1414 }; #endif @@ -924,7 +934,8 @@ static const char *const yytname[] = { "\"end of file\"", "error", "\"invalid token\"", "IDENTIFIER", "STRING", "FLOATVAL", "INTVAL", "DEALLOCATE", "PARAMETERS", "INTERSECT", - "TEMPORARY", "TIMESTAMP", "DISTINCT", "NVARCHAR", "RESTRICT", "TRUNCATE", + "TEMPORARY", "TIMESTAMP", "CURRENT_TIMESTAMP", "CURRENT_DATE", + "CURRENT_TIME", "DISTINCT", "NVARCHAR", "RESTRICT", "TRUNCATE", "ANALYZE", "BETWEEN", "CASCADE", "COLUMNS", "CONTROL", "DEFAULT", "EXECUTE", "EXPLAIN", "ENCODING", "INTEGER", "NATURAL", "PREPARE", "SCHEMAS", "CHARACTER_VARYING", "REAL", "DECIMAL", "SMALLINT", "BIGINT", @@ -978,15 +989,16 @@ static const char *const yytname[] = "datetime_field", "datetime_field_plural", "duration_field", "array_expr", "array_index", "between_expr", "column_name", "literal", "string_literal", "bool_literal", "num_literal", "int_literal", - "null_literal", "date_literal", "interval_literal", "param_expr", - "table_ref", "table_ref_atomic", "nonjoin_table_ref_atomic", - "table_ref_commalist", "table_ref_name", "table_ref_name_no_alias", - "table_name", "opt_index_name", "table_alias", "opt_table_alias", - "alias", "opt_alias", "opt_locking_clause", "opt_locking_clause_list", - "locking_clause", "row_lock_mode", "opt_row_lock_policy", - "opt_with_clause", "with_clause", "with_description_list", - "with_description", "join_clause", "opt_join_type", "join_condition", - "opt_semicolon", "ident_commalist", YY_NULLPTR + "null_literal", "date_literal", "timestamp_literal", "time_literal", + "interval_literal", "param_expr", "current_timestamp", + "current_date", "current_time", "table_ref", + "table_ref_atomic", "nonjoin_table_ref_atomic", "table_ref_commalist", + "table_ref_name", "table_ref_name_no_alias", "table_name", + "opt_index_name", "table_alias", "opt_table_alias", "alias", "opt_alias", + "opt_locking_clause", "opt_locking_clause_list", "locking_clause", + "row_lock_mode", "opt_row_lock_policy", "opt_with_clause", "with_clause", + "with_description_list", "with_description", "join_clause", + "opt_join_type", "join_condition", "opt_semicolon", "ident_commalist", YY_NULLPTR }; static const char * @@ -996,12 +1008,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-463) +#define YYPACT_NINF (-542) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-347) +#define YYTABLE_NINF (-359) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -1010,70 +1022,72 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 659, 58, 86, 102, 234, 86, -14, 95, 181, 146, - 86, 227, 8, 36, 145, 277, 141, 141, 141, 323, - 161, -463, 224, -463, 224, -463, -463, -463, -463, -463, - -463, -463, -463, -463, -463, -463, -463, -25, -463, 361, - 189, -463, 193, 280, -463, 264, 264, 264, 86, 403, - 86, 286, -463, 295, -25, 294, -32, 295, 295, 295, - 86, -463, 288, 229, -463, -463, -463, -463, -463, -463, - 642, -463, 332, -463, -463, 309, 77, -463, 158, -463, - 431, 19, 436, 314, 439, 86, 86, 365, -463, 357, - 258, 444, 409, 86, 262, 267, 461, 461, 461, 460, - 86, 86, -463, 274, 277, -463, 281, 467, 471, -463, - -463, -463, -25, 372, 363, -25, 191, -463, -463, -463, - 756, 297, 496, -463, 497, -463, -463, 38, -463, 308, - 306, -463, -463, -463, -463, -463, -463, -463, -463, -463, - -463, -463, -463, -463, 458, -463, 376, -33, 258, 364, - -463, 461, 505, 123, 335, -31, -463, -463, 419, -463, - -463, -463, -48, -48, -48, -463, -463, -463, -463, -463, - 508, -463, -463, -463, 364, 441, -463, -463, 77, -463, - -463, 364, 441, 364, 150, 393, -463, -463, -463, -463, - -463, -463, -463, -463, -463, -463, -463, -463, -463, -463, - -463, 394, -463, 354, -463, -463, -463, 19, -463, 86, - 517, 410, 24, 397, 149, 331, 333, 334, 273, 384, - 337, 433, -463, 293, -42, 459, -463, -463, -463, -463, - -463, -463, -463, -463, -463, -463, -463, -463, -463, -463, - -463, -463, 427, -463, -17, 336, -463, 364, 444, -463, - 491, -463, -463, 338, 45, -463, 365, -463, 339, -7, - -463, 445, 341, -463, 47, 191, -25, 343, -463, 140, - 191, -42, 478, 104, 90, -463, 393, -463, 416, -463, - -463, 349, 450, -463, 732, 355, 379, 381, 87, -463, - -463, -463, 410, 17, 23, 489, 354, 364, 364, -39, - 73, 362, 433, 673, 364, 117, 367, -77, 364, 364, - 433, -463, 433, 131, 370, -8, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 467, 86, -463, 553, 19, -42, -463, 295, 45, - 554, 403, 96, -463, 19, -463, 508, 15, 365, -463, - 364, -463, 561, -463, -463, -463, -463, 364, -463, -463, - -463, 393, 364, 364, -463, 395, -463, 404, 128, -463, - 732, 505, 461, -463, -463, 378, -463, 380, -463, -463, - 382, -463, -463, 383, -463, -463, -463, -463, 385, -463, - -463, 119, 505, 388, 396, -463, 24, -463, 495, 364, - -463, -463, 392, 472, 200, 202, 137, 364, 364, -463, - 489, 473, 72, -463, -463, -463, 474, 602, 702, 433, - 398, 293, -463, 490, 402, 702, 702, 702, 702, 423, - 423, 423, 423, 117, 117, -79, -79, -79, -76, 405, - -463, -463, 130, 595, 152, -463, -463, -463, 201, 156, - -463, 410, -463, 9, -463, 406, -463, 51, -463, 530, - -463, -463, -463, -463, -42, -42, 540, -463, 505, -463, - 446, -463, 421, 162, -463, 607, 610, -463, 611, 614, - 615, -463, -463, 518, -463, 451, 86, -463, 119, -463, - -463, 168, 505, 505, -463, 432, -463, 169, -463, 364, - 732, 364, 364, -463, 194, 206, 430, -463, 433, 702, - 293, 434, 178, -463, -463, -463, -463, -463, 623, 403, - -463, 435, 531, -463, -463, -463, 560, 573, 574, 533, - 15, 636, -463, -463, -463, 527, -463, -463, 25, -463, - -463, -463, 464, 179, 465, 466, 468, -463, -463, 258, - -463, -463, -463, 185, 186, 549, 495, -53, 469, -42, - 215, -463, 364, -463, 673, 476, 198, -463, -463, -463, - -463, 51, 15, -463, -463, -463, 15, 148, 462, 364, - -463, -463, -463, 655, -463, -463, -463, -463, -463, 492, - 541, 441, -463, -463, -463, -463, -42, -463, -463, -463, - -463, 375, 505, -19, 477, -463, 364, 254, 475, 364, - 199, 364, -463, -463, 341, -463, -463, -463, 479, 34, - 505, -42, -463, -463, -42, -463, 100, 53, 147, -463, - -463, 208, -463, -463, 556, -463, -463, -463, 53, -463 + 687, 44, 53, 77, 110, 53, 4, 47, 80, 89, + 53, 161, 18, 9, 51, 191, 95, 95, 95, 261, + 96, -542, 201, -542, 201, -542, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -24, -542, 330, + 109, -542, 151, 274, -542, 230, 230, 230, 53, 370, + 53, 254, -542, 268, -24, 276, -40, 268, 268, 268, + 53, -542, 290, 220, -542, -542, -542, -542, -542, -542, + 628, -542, 336, -542, -542, 303, 56, -542, 180, -542, + 439, 512, 440, 327, 455, 53, 53, 384, -542, 379, + 289, 483, 438, 53, 291, 292, 490, 490, 490, 492, + 53, 53, -542, 302, 191, -542, 305, 491, 485, -542, + -542, -542, -24, 385, 373, -24, 45, -542, -542, -542, + 665, 504, -542, -542, -542, 314, 509, -542, 517, 320, + -542, -542, 26, -542, 331, 329, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, -542, -542, 482, -542, 398, -33, 289, 352, + -542, 490, 531, 225, 365, -35, -542, -542, 453, -542, + -542, -542, -50, -50, -50, -542, -542, -542, -542, -542, + 547, -542, -542, -542, 352, 472, -542, -542, 56, -542, + -542, 352, 472, 352, 57, 430, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, 308, -542, -542, 263, 263, -542, -542, -542, + 512, -542, 53, 551, 446, 27, 428, -12, 377, 381, + 382, 147, 442, 387, 532, -542, 326, 68, 380, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, -542, -542, -542, 474, -542, 30, 389, -542, + 352, 483, -542, 534, -542, -542, 390, 23, -542, 384, + -542, 391, 75, -542, 493, 388, -542, 50, 45, -24, + 393, -542, 232, 45, 68, 536, 113, -21, -542, 430, + -542, 461, -542, -542, -542, 402, 503, -542, 713, 404, + 426, 427, 111, -542, -542, -542, 446, 7, 17, 543, + 263, 352, 352, 104, -36, 409, 532, 719, 352, 203, + 410, 99, 352, 352, 532, -542, 532, -37, 413, 69, + 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, + 532, 532, 532, 532, 532, 491, 53, -542, 603, 512, + 68, -542, 268, 23, 606, 370, 181, -542, 512, -542, + 547, 21, 384, -542, 352, -542, 608, -542, -542, -542, + -542, 352, -542, -542, -542, 430, 352, 352, -542, 441, + -542, 450, 154, -542, 713, 531, 490, -542, -542, 419, + -542, 421, -542, -542, 422, -542, -542, 425, -542, -542, + -542, -542, 431, -542, -542, -542, 173, 531, 433, 444, + -542, 27, -542, 542, 352, -542, -542, 429, 527, 155, + 131, 142, 352, 352, -542, 543, 528, 128, -542, -542, + -542, 515, 650, 744, 532, 445, 326, -542, 529, 443, + 744, 744, 744, 744, 576, 576, 576, 576, 203, 203, + -106, -106, -106, -97, 447, -542, -542, 182, 641, 188, + -542, -542, -542, 63, 189, -542, 446, -542, 196, -542, + 448, -542, 46, -542, 575, -542, -542, -542, -542, 68, + 68, 584, -542, 531, -542, 487, -542, 454, 213, -542, + 646, 648, -542, 649, 651, 653, -542, -542, 553, -542, + 486, 53, -542, 173, -542, -542, 219, 531, 531, -542, + 466, -542, 227, -542, 352, 713, 352, 352, -542, 112, + 215, 467, -542, 532, 744, 326, 476, 228, -542, -542, + -542, -542, -542, 659, 370, -542, 477, 567, -542, -542, + -542, 594, 595, 596, 577, 21, 675, -542, -542, -542, + 552, -542, -542, 79, -542, -542, -542, 494, 229, 495, + 498, 500, -542, -542, 289, -542, -542, -542, 234, 235, + 572, 542, 107, 501, 68, 249, -542, 352, -542, 719, + 502, 241, -542, -542, -542, -542, 46, 21, -542, -542, + -542, 21, 510, 505, 352, -542, -542, -542, 676, -542, + -542, -542, -542, -542, 513, 559, 472, -542, -542, -542, + -542, 68, -542, -542, -542, -542, 207, 531, -20, 506, + -542, 352, 301, 508, 352, 252, 352, -542, -542, 388, + -542, -542, -542, 514, 20, 531, 68, -542, -542, 68, + -542, 184, 37, 221, -542, -542, 260, -542, -542, 571, + -542, -542, -542, 37, -542 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1081,108 +1095,110 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 0, - 347, 3, 21, 19, 21, 18, 8, 9, 7, 11, - 16, 17, 13, 14, 12, 15, 10, 0, 326, 0, - 301, 110, 33, 0, 50, 57, 57, 57, 0, 0, - 0, 0, 300, 105, 0, 0, 0, 105, 105, 105, - 0, 48, 0, 328, 329, 29, 26, 28, 27, 1, - 327, 2, 0, 6, 5, 158, 119, 120, 150, 102, - 0, 168, 0, 0, 304, 0, 0, 144, 37, 0, - 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 49, 0, 0, 4, 0, 0, 138, 132, - 133, 131, 0, 135, 0, 0, 164, 302, 279, 282, - 284, 0, 0, 285, 0, 280, 281, 0, 290, 0, - 167, 169, 171, 173, 272, 273, 274, 283, 275, 276, - 277, 278, 32, 31, 0, 303, 0, 0, 114, 0, - 109, 0, 0, 0, 0, 144, 116, 104, 0, 127, - 126, 38, 41, 41, 41, 103, 100, 101, 331, 330, - 0, 284, 157, 137, 0, 150, 123, 122, 124, 134, - 130, 0, 150, 0, 0, 314, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 287, 0, 286, 289, 174, 175, 34, 0, 56, 0, - 0, 327, 0, 0, 268, 0, 0, 0, 0, 0, - 0, 0, 270, 0, 143, 177, 184, 185, 186, 179, - 181, 187, 180, 200, 188, 189, 190, 191, 183, 178, - 193, 194, 0, 348, 0, 0, 112, 0, 0, 115, - 0, 106, 107, 0, 0, 47, 144, 46, 24, 0, - 22, 141, 139, 165, 312, 164, 0, 149, 151, 156, - 164, 160, 162, 159, 0, 128, 313, 315, 0, 288, - 170, 0, 0, 53, 0, 0, 0, 0, 0, 58, - 60, 61, 327, 138, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 196, 0, 195, 0, 0, 0, 0, - 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, + 359, 3, 21, 19, 21, 18, 8, 9, 7, 11, + 16, 17, 13, 14, 12, 15, 10, 0, 338, 0, + 313, 111, 33, 0, 50, 57, 57, 57, 0, 0, + 0, 0, 312, 106, 0, 0, 0, 106, 106, 106, + 0, 48, 0, 340, 341, 29, 26, 28, 27, 1, + 339, 2, 0, 6, 5, 159, 120, 121, 151, 103, + 0, 169, 0, 0, 316, 0, 0, 145, 37, 0, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 49, 0, 0, 4, 0, 0, 139, 133, + 134, 132, 0, 136, 0, 0, 165, 314, 285, 288, + 290, 0, 300, 301, 302, 0, 0, 291, 0, 0, + 286, 287, 0, 299, 0, 168, 170, 172, 174, 273, + 274, 275, 289, 276, 277, 280, 281, 278, 279, 282, + 283, 284, 32, 31, 0, 315, 0, 0, 115, 0, + 110, 0, 0, 0, 0, 145, 117, 105, 0, 128, + 127, 38, 41, 41, 41, 104, 101, 102, 343, 342, + 0, 290, 158, 138, 0, 151, 124, 123, 125, 135, + 131, 0, 151, 0, 0, 326, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 295, 293, 0, 292, 294, 298, 0, 175, 176, 34, + 0, 56, 0, 0, 339, 0, 0, 269, 0, 0, + 0, 0, 0, 0, 0, 271, 0, 144, 178, 185, + 186, 187, 180, 182, 188, 181, 201, 189, 190, 191, + 192, 184, 179, 194, 195, 0, 360, 0, 0, 113, + 0, 0, 116, 0, 107, 108, 0, 0, 47, 145, + 46, 24, 0, 22, 142, 140, 166, 324, 165, 0, + 150, 152, 157, 165, 161, 163, 160, 0, 129, 325, + 327, 0, 296, 297, 171, 0, 0, 53, 0, 0, + 0, 0, 0, 58, 60, 61, 339, 139, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 197, 0, 196, + 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 113, 0, 0, 118, 117, 105, 0, - 0, 0, 0, 36, 0, 20, 0, 0, 144, 140, - 0, 310, 0, 311, 176, 121, 125, 0, 155, 154, - 153, 314, 0, 0, 319, 0, 321, 0, 325, 316, - 0, 0, 0, 79, 73, 0, 75, 85, 76, 63, - 0, 70, 71, 0, 67, 68, 74, 77, 82, 72, - 64, 87, 0, 0, 0, 52, 0, 55, 235, 0, - 269, 271, 0, 0, 0, 0, 0, 0, 0, 219, - 0, 0, 0, 192, 182, 211, 212, 0, 207, 0, - 0, 0, 198, 0, 210, 209, 225, 226, 227, 228, - 229, 230, 231, 202, 201, 204, 203, 205, 206, 0, - 35, 349, 0, 0, 0, 45, 43, 40, 0, 0, - 23, 327, 142, 291, 293, 0, 295, 308, 294, 146, - 166, 309, 152, 129, 163, 161, 0, 322, 0, 324, - 0, 317, 0, 0, 51, 0, 0, 69, 0, 0, - 0, 78, 94, 0, 93, 0, 0, 62, 86, 88, - 90, 0, 0, 0, 59, 0, 232, 0, 223, 0, - 0, 0, 0, 217, 0, 0, 0, 265, 0, 208, - 0, 0, 0, 199, 266, 111, 108, 39, 0, 0, - 25, 0, 0, 343, 335, 341, 339, 342, 337, 0, - 0, 0, 307, 299, 305, 0, 136, 320, 325, 323, - 172, 54, 0, 0, 0, 0, 0, 95, 92, 114, - 89, 91, 97, 0, 0, 237, 235, 0, 0, 221, - 0, 220, 0, 224, 267, 0, 0, 215, 213, 44, - 42, 308, 0, 338, 340, 336, 0, 292, 309, 0, - 318, 66, 84, 0, 80, 65, 81, 99, 96, 0, - 0, 150, 233, 249, 250, 218, 222, 216, 214, 296, - 332, 344, 0, 148, 0, 98, 0, 240, 0, 0, - 0, 0, 145, 83, 236, 241, 242, 243, 0, 0, - 0, 345, 333, 306, 147, 234, 0, 0, 0, 248, - 238, 0, 247, 245, 0, 246, 244, 334, 0, 239 + 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, + 119, 118, 106, 0, 0, 0, 0, 36, 0, 20, + 0, 0, 145, 141, 0, 322, 0, 323, 177, 122, + 126, 0, 156, 155, 154, 326, 0, 0, 331, 0, + 333, 0, 337, 328, 0, 0, 0, 80, 73, 0, + 76, 86, 77, 63, 0, 70, 71, 0, 67, 68, + 75, 78, 83, 72, 74, 64, 88, 0, 0, 0, + 52, 0, 55, 236, 0, 270, 272, 0, 0, 0, + 0, 0, 0, 0, 220, 0, 0, 0, 193, 183, + 212, 213, 0, 208, 0, 0, 0, 199, 0, 211, + 210, 226, 227, 228, 229, 230, 231, 232, 203, 202, + 205, 204, 206, 207, 0, 35, 361, 0, 0, 0, + 45, 43, 40, 0, 0, 23, 339, 143, 303, 305, + 0, 307, 320, 306, 147, 167, 321, 153, 130, 164, + 162, 0, 334, 0, 336, 0, 329, 0, 0, 51, + 0, 0, 69, 0, 0, 0, 79, 95, 0, 94, + 0, 0, 62, 87, 89, 91, 0, 0, 0, 59, + 0, 233, 0, 224, 0, 0, 0, 0, 218, 0, + 0, 0, 266, 0, 209, 0, 0, 0, 200, 267, + 112, 109, 39, 0, 0, 25, 0, 0, 355, 347, + 353, 351, 354, 349, 0, 0, 0, 319, 311, 317, + 0, 137, 332, 337, 335, 173, 54, 0, 0, 0, + 0, 0, 96, 93, 115, 90, 92, 98, 0, 0, + 238, 236, 0, 0, 222, 0, 221, 0, 225, 268, + 0, 0, 216, 214, 44, 42, 320, 0, 350, 352, + 348, 0, 304, 321, 0, 330, 66, 85, 0, 81, + 65, 82, 100, 97, 0, 0, 151, 234, 250, 251, + 219, 223, 217, 215, 308, 344, 356, 0, 149, 0, + 99, 0, 241, 0, 0, 0, 0, 146, 84, 237, + 242, 243, 244, 0, 0, 0, 357, 345, 318, 148, + 235, 0, 0, 0, 249, 239, 0, 248, 246, 0, + 247, 245, 346, 0, 240 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -463, -463, -463, 605, -463, 652, -463, 342, -463, 311, - -463, -463, -463, -463, -319, -81, 240, 345, -463, -463, - -463, 373, -463, 282, -463, -325, -463, -463, -463, -463, - 192, -463, -441, -463, -44, -463, -463, -463, -463, -463, - -463, -142, -463, -463, 429, -210, -84, -463, 41, -50, - -29, -463, -463, -74, 399, -463, -463, -463, -136, -463, - -463, -170, -463, 328, -463, -463, 3, -297, -463, -263, - 480, 488, 340, -147, -191, -463, -463, -463, -463, -463, - -463, 407, -463, -463, -463, 135, -463, -463, -463, -396, - -463, -463, -139, -463, -463, -463, -463, -463, -463, -61, - -463, -463, 566, -98, -463, -463, 570, -463, -463, -462, - 126, -463, -463, -463, -2, -463, -463, 134, 437, -463, - 347, -463, 426, -463, 171, -463, -463, -463, 606, -463, - -463, -463, -463, -350 + -542, -542, -542, 632, -542, 682, -542, 349, -542, 456, + -542, -542, -542, -542, -332, -83, 304, 361, -542, -542, + -542, 436, -542, 312, -542, -349, -542, -542, -542, -542, + 216, -542, -431, -542, -46, -542, -542, -542, -542, -542, + -542, -153, -542, -542, 464, -217, -70, -542, 170, -53, + -26, -542, -542, -87, 432, -542, -542, -542, -147, -542, + -542, -183, -542, 345, -542, -542, 91, -312, -542, -249, + 516, 520, 362, -155, -205, -542, -542, -542, -542, -542, + -542, 416, -542, -542, -542, 163, -542, -542, -542, -541, + -542, -542, -161, -542, -542, -542, -542, -542, -542, -65, + -542, -542, 605, -90, -542, -542, -542, -542, 618, -542, + -542, -542, -542, -542, -498, 148, -542, -542, -542, -2, + -542, -542, 167, 463, -542, 383, -542, 473, -542, 218, + -542, -542, -542, 668, -542, -542, -542, -542, -366 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 19, 20, 21, 22, 73, 259, 260, 23, 66, - 24, 143, 25, 26, 89, 162, 255, 342, 27, 28, - 29, 84, 288, 289, 290, 391, 481, 477, 487, 488, - 489, 291, 490, 30, 93, 31, 251, 252, 32, 33, - 34, 153, 35, 155, 156, 36, 175, 176, 177, 77, - 112, 113, 180, 78, 174, 261, 348, 349, 150, 536, - 612, 116, 267, 268, 360, 108, 185, 262, 129, 130, - 131, 132, 263, 264, 225, 226, 227, 228, 229, 230, - 231, 300, 232, 233, 234, 496, 591, 618, 619, 630, - 235, 236, 198, 199, 200, 237, 238, 239, 240, 241, - 134, 135, 136, 137, 138, 139, 140, 141, 452, 453, - 454, 455, 456, 51, 457, 146, 532, 533, 534, 354, - 275, 276, 277, 368, 471, 37, 38, 63, 64, 458, - 529, 622, 71, 244 + 0, 19, 20, 21, 22, 73, 272, 273, 23, 66, + 24, 153, 25, 26, 89, 172, 268, 356, 27, 28, + 29, 84, 302, 303, 304, 406, 496, 492, 502, 503, + 504, 305, 505, 30, 93, 31, 264, 265, 32, 33, + 34, 163, 35, 165, 166, 36, 185, 186, 187, 77, + 112, 113, 190, 78, 184, 274, 362, 363, 160, 551, + 627, 116, 280, 281, 374, 108, 195, 275, 134, 135, + 136, 137, 276, 277, 238, 239, 240, 241, 242, 243, + 244, 314, 245, 246, 247, 511, 606, 633, 634, 645, + 248, 249, 208, 209, 210, 250, 251, 252, 253, 254, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 467, 468, 469, 470, 471, 51, 472, + 156, 547, 548, 549, 368, 288, 289, 290, 382, 486, + 37, 38, 63, 64, 473, 544, 637, 71, 257 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1190,302 +1206,312 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 41, 283, 224, 44, 95, 265, 213, 412, 52, 172, - 56, 40, 270, 99, 100, 101, 163, 164, 40, 249, - 133, 473, 446, 118, 119, 120, 400, 284, 303, 173, - 305, 182, 611, 75, 269, 522, 271, 273, 178, 308, - 626, 178, 491, 119, 120, 472, 87, 551, 90, 115, - 351, 627, 149, 55, 351, 309, 45, 316, 102, 626, - 316, 210, 97, 308, 279, 253, 46, 121, 577, 340, - 242, 299, 442, 298, 308, 523, 307, 308, 76, 309, - 524, 449, 397, 147, 148, 39, 109, 525, 526, 40, - 309, 158, 211, 309, 341, 94, 422, 47, 166, 167, - 336, 98, 497, 246, 527, 42, 57, 122, -344, 528, - 330, 303, 331, 423, 601, 331, 58, 414, 538, 417, - 343, 418, 110, 123, 512, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 133, 593, 553, 554, 168, 254, 133, 59, 605, 266, - 404, 405, 364, 214, 118, 119, 120, 403, 111, 363, - 212, 415, 416, 308, 60, 407, 248, 109, 54, 124, - 125, 126, 352, 306, 522, 558, 531, 333, 350, 309, - 334, 75, 356, 469, 470, 408, 245, 345, 124, 48, - 346, 409, 178, 285, 286, 287, 215, 216, 217, 628, - 570, 54, 629, 110, 127, 61, -297, 281, 451, 401, - 269, 398, 459, 566, 523, 464, 465, 128, 628, 524, - 308, 629, 334, 482, 365, 518, 525, 526, 509, 502, - 358, 634, 419, 439, 114, 218, 309, 43, 122, 111, - 483, 521, 639, 527, 50, 402, 183, -344, 528, 408, - 519, 366, 610, 316, 123, 503, 308, 359, 468, 420, - 504, 505, 367, 184, 507, 272, 632, 633, 355, 350, - 631, 219, 309, 361, 133, 49, 214, 118, 119, 120, - 62, 395, 603, 133, 396, 220, 469, 470, 484, 485, - 447, 474, 486, 448, 443, 65, 214, 118, 119, 120, - 124, 125, 126, 327, 328, 329, 330, 53, 331, 614, - 308, 501, 561, 635, 636, 562, 308, 564, 308, 215, - 216, 217, 308, 69, 515, 500, 309, 207, 67, 68, - 440, 308, 309, 595, 309, 221, 222, 72, 309, 215, - 216, 217, 293, 223, 294, -298, 517, 309, 128, 448, - 520, 75, 557, 207, 559, 560, 541, 70, 218, 334, - 506, 122, 552, 556, 79, 334, 350, 214, 118, 119, - 120, 511, 568, 582, 82, 350, 583, 123, 218, 588, - 589, 122, 334, 334, 80, 298, 81, 214, 118, 119, - 120, 83, 598, 623, 219, 350, 334, 123, 118, 119, - 120, 522, 637, 256, 257, 334, 88, 587, 220, 91, - 215, 216, 217, 103, 219, 596, 615, 616, 617, 85, - 86, 607, 92, 124, 125, 126, 104, 96, 220, 106, - 301, 216, 217, 107, 117, 144, 214, 118, 119, 120, - 142, 523, 145, 124, 125, 126, 524, 154, 149, 218, - 151, 152, 122, 525, 526, 157, 159, 608, 221, 222, - 565, 160, 621, 165, 624, 161, 223, 54, 123, 218, - 527, 128, 122, 171, 170, 528, 310, 311, 221, 222, - 216, 217, 122, 173, 549, 219, 223, 179, 123, 181, - 201, 128, 186, 187, 188, 189, 190, 191, 123, 220, - 202, 203, 206, 207, 208, 302, 609, 209, 243, 247, - 250, 258, 274, 311, 124, 125, 126, 114, 218, 220, - 282, 122, 292, 15, 295, 332, 296, 297, 304, 335, - 338, 339, 344, 362, 124, 125, 126, 123, 350, 347, - 357, 370, 371, 372, 124, 125, 126, 75, 392, 221, - 222, 393, 315, 394, 302, 410, 441, 223, 445, 316, - 312, 413, 128, 421, 461, 467, 499, 466, 220, 221, - 222, 475, 495, 476, 419, 478, 479, 223, 480, 127, - 313, 492, 128, 124, 125, 126, 498, 314, 315, 493, - 308, 510, 128, 331, 513, 316, 317, 514, 516, 535, - -347, -347, 537, 530, -347, -347, 539, 325, 326, 327, - 328, 329, 330, 542, 331, 540, 543, 544, 221, 222, - 545, 546, 547, 548, 563, 555, 223, 569, 567, 571, - 572, 128, 576, 318, 319, 320, 321, 322, 573, 578, - 323, 324, -346, 325, 326, 327, 328, 329, 330, 1, - 331, 574, 575, 579, 590, 602, 311, 2, 581, 584, - 585, 604, 586, 594, 3, 486, 1, 606, 620, 4, - 597, 613, 638, 625, 2, 105, 74, 337, 494, 5, - 550, 3, 6, 7, 444, 462, 4, 280, 450, 278, - 460, 592, 399, 204, 8, 9, 5, 205, 600, 6, - 7, 353, 369, 312, 10, 599, 406, 11, 463, 580, - 169, 8, 9, 0, 0, 0, 0, 0, 508, 0, - 0, 10, 0, 411, 11, 0, 0, 311, 0, 12, - 0, 315, 0, 13, 0, 0, 0, 0, 316, 317, - 0, 0, 0, 373, 0, 0, 12, 0, 0, 14, - 13, 0, 0, 0, 0, 15, 311, 374, 0, 0, - 0, 375, 376, 377, 378, 379, 14, 380, 0, 0, - 0, 0, 15, 0, 312, 381, 318, 319, 320, 321, - 322, 0, 0, 323, 324, 0, 325, 326, 327, 328, - 329, 330, 0, 331, 411, 0, 0, 16, 17, 18, - 382, 0, 315, -347, 0, 0, 0, 0, 0, 316, - 317, 0, 0, 0, 16, 17, 18, 0, 383, 0, - 384, 385, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 315, 0, 0, 0, 386, 0, 0, 316, -347, - 387, 0, 388, 0, 0, 0, 0, 318, 319, 320, - 321, 322, 389, 0, 323, 324, 0, 325, 326, 327, - 328, 329, 330, 0, 331, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -347, -347, -347, 321, - 322, 0, 0, 323, 324, 390, 325, 326, 327, 328, - 329, 330, 0, 331, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197 + 41, 95, 278, 44, 237, 226, 427, 297, 52, 283, + 56, 99, 100, 101, 173, 174, 138, 182, 262, 488, + 415, 40, 183, 461, 40, 188, 641, 317, 188, 319, + 298, 119, 120, 330, 626, 487, 282, 75, 284, 286, + 642, 506, 330, 641, 378, 192, 87, 592, 90, 365, + 354, 159, 115, 365, 292, 293, 40, 97, 102, 422, + 227, 118, 119, 120, 223, 109, 266, 434, 121, 122, + 123, 124, 566, 60, 39, 355, 313, 45, 255, 423, + 42, 321, 57, 157, 158, 424, 344, 46, 345, 412, + 533, 168, 58, 616, 435, 224, 98, 345, 176, 177, + 457, 649, 512, 193, 110, 350, 228, 229, 230, 464, + 259, 317, 654, 43, 61, 534, 379, 553, 47, 432, + 194, 433, 357, 59, 527, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 111, 568, 569, 380, 48, 231, 267, 138, 126, 418, + 227, 118, 119, 120, 381, 138, 419, 420, 121, 122, + 123, 124, 279, 225, 127, 261, 573, 430, 431, 322, + 128, 377, 54, 620, 546, 285, 437, 49, 366, 129, + 364, 232, 55, 320, 307, 323, 308, 322, 643, 109, + 50, 644, 188, 438, 62, 233, 228, 229, 230, 299, + 300, 301, 585, 323, 413, 643, 416, 76, 644, 370, + 129, 130, 131, 581, 54, 474, 282, 466, 322, 312, + 295, 479, 480, 322, 94, 537, 322, 347, 110, 524, + 348, 322, 322, 576, 323, 231, 537, 517, 126, 323, + 484, 485, 323, 516, 53, 234, 235, 323, 323, 536, + 322, 625, 65, 236, 127, 454, 417, 423, 133, 114, + 128, 69, 312, 518, 111, 538, 323, 519, 520, 646, + 539, 232, 359, 178, 322, 360, 538, 540, 541, 348, + 497, 539, 618, 515, 138, 233, 75, 483, 540, 541, + 323, 258, 623, 138, 542, 70, 429, 498, -356, 543, + 129, 130, 131, 489, 608, 542, 458, 80, 410, 629, + 543, 411, 118, 119, 120, 484, 485, 72, 579, 121, + 122, 123, 124, 522, 215, 372, 216, 577, 364, 227, + 118, 119, 120, 79, 322, 234, 235, 121, 122, 123, + 124, 624, 330, 236, 455, 499, 500, 81, 133, 501, + 323, 322, 373, 647, 648, 227, 118, 119, 120, 572, + 83, 574, 575, 121, 122, 123, 124, 323, 322, 369, + 610, 82, 521, 88, 375, 228, 229, 230, 462, 530, + 91, 463, 220, 526, 323, 532, 535, 75, 463, 220, + 650, 651, 341, 342, 343, 344, -309, 345, 92, 126, + 324, 228, 229, 230, 196, 197, 198, 199, 200, 201, + 556, 602, 96, 348, 231, 127, 567, 126, 103, 348, + 104, 128, 611, 622, 571, 583, 597, 364, 364, 598, + 107, 603, 604, 127, 348, 348, 106, 325, 613, 128, + 231, 364, 117, 126, 152, 227, 118, 119, 120, 638, + 232, 154, 348, 121, 122, 123, 124, 652, 155, 127, + 348, 129, 130, 131, 233, 128, 630, 631, 632, 636, + 159, 639, 580, 67, 68, 161, 232, 269, 270, 129, + 130, 131, 85, 86, 326, 162, 164, 167, 169, 170, + 233, 315, 229, 230, 171, 175, 132, 181, 54, 564, + 183, 180, 191, 189, 327, 129, 130, 131, 211, 133, + 212, 328, 329, 213, 234, 235, 118, 119, 120, 330, + 331, 214, 236, 121, 122, 123, 124, 133, 219, 220, + 231, 221, 222, 126, 256, 227, 118, 119, 120, 537, + 234, 235, 260, 121, 122, 123, 124, 263, 236, 127, + 271, 114, 287, 133, 296, 128, 306, 332, 333, 334, + 335, 336, 15, 125, 337, 338, 316, 339, 340, 341, + 342, 343, 344, 309, 345, 346, 352, 310, 311, 538, + 233, 318, 229, 230, 539, 349, 353, 358, 364, 384, + 361, 540, 541, 371, 376, 129, 130, 131, 385, 386, + 407, 408, 409, 126, 75, 425, 456, 428, 542, 436, + 460, 476, -356, 543, 482, 490, 481, 491, 493, 127, + 231, 494, 510, 126, 514, 128, 513, 495, -358, 507, + 234, 235, 434, 325, 322, 1, 528, 345, 236, 127, + 508, 525, 529, 133, 531, 128, 2, 550, 545, 552, + 554, 555, 557, 3, 558, 559, 316, 560, 4, 561, + 562, 563, 570, 584, 578, 129, 130, 131, 5, 587, + 233, 6, 7, 582, 586, 588, 589, 590, 593, 591, + 605, 594, 619, 8, 9, 129, 130, 131, 621, 501, + 653, 596, 599, 10, 1, 600, 11, 601, 609, 612, + 132, 617, 105, 628, 635, 2, 74, 325, 329, 465, + -310, 640, 3, 133, 459, 330, 477, 4, 12, 565, + 234, 235, 13, 509, 387, 351, 475, 5, 236, 421, + 6, 7, 291, 133, 607, 615, 294, 217, 14, 414, + 367, 388, 8, 9, 15, 389, 390, 391, 392, 393, + 218, 394, 10, 614, 326, 11, -359, -359, 478, 395, + -359, -359, 383, 339, 340, 341, 342, 343, 344, 523, + 345, 595, 179, 0, 426, 0, 325, 12, 0, 0, + 0, 13, 329, 0, 396, 0, 16, 17, 18, 330, + 331, 0, 0, 0, 0, 0, 0, 14, 0, 0, + 0, 325, 397, 15, 398, 399, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 0, 400, + 0, 0, 0, 326, 401, 0, 402, 332, 333, 334, + 335, 336, 0, 0, 337, 338, 403, 339, 340, 341, + 342, 343, 344, 426, 345, 16, 17, 18, -359, 0, + 0, 329, 0, 0, 0, 0, 0, 0, 330, 331, + 0, 0, 0, 0, 0, 0, 404, 0, 0, 405, + 0, 0, 0, 0, 0, 0, 329, 0, 0, 0, + 0, 0, 0, 330, -359, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, + 336, 0, 0, 337, 338, 0, 339, 340, 341, 342, + 343, 344, 0, 345, 0, 0, 0, 0, 0, 0, + 0, -359, -359, -359, 335, 336, 0, 0, 337, 338, + 0, 339, 340, 341, 342, 343, 344, 0, 345 }; static const yytype_int16 yycheck[] = { - 2, 211, 149, 5, 54, 175, 148, 304, 10, 107, - 12, 3, 182, 57, 58, 59, 97, 98, 3, 155, - 81, 371, 341, 4, 5, 6, 3, 3, 219, 12, - 221, 115, 51, 58, 181, 26, 183, 184, 112, 116, - 6, 115, 392, 5, 6, 370, 48, 488, 50, 78, - 3, 17, 83, 12, 3, 132, 70, 136, 60, 6, - 136, 94, 94, 116, 203, 113, 80, 48, 530, 24, - 151, 218, 335, 112, 116, 66, 223, 116, 37, 132, - 71, 344, 292, 85, 86, 27, 9, 78, 79, 3, - 132, 93, 125, 132, 49, 54, 104, 111, 100, 101, - 247, 133, 399, 153, 95, 3, 70, 88, 99, 100, - 189, 302, 191, 121, 576, 191, 80, 194, 468, 310, - 256, 312, 45, 104, 421, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 201, 194, 492, 493, 103, 193, 207, 111, 589, 178, - 297, 298, 62, 3, 4, 5, 6, 296, 81, 55, - 193, 308, 309, 116, 19, 92, 197, 9, 193, 150, - 151, 152, 125, 223, 26, 500, 125, 194, 197, 132, - 197, 58, 266, 158, 159, 112, 63, 194, 150, 94, - 197, 118, 266, 169, 170, 171, 46, 47, 48, 165, - 519, 193, 168, 45, 185, 60, 197, 209, 193, 186, - 357, 194, 348, 510, 66, 362, 363, 198, 165, 71, - 116, 168, 197, 104, 134, 24, 78, 79, 419, 92, - 90, 627, 101, 331, 76, 85, 132, 3, 88, 81, - 121, 451, 638, 95, 98, 295, 55, 99, 100, 112, - 49, 161, 602, 136, 104, 118, 116, 117, 130, 128, - 407, 408, 172, 72, 192, 115, 166, 167, 265, 197, - 620, 121, 132, 270, 335, 94, 3, 4, 5, 6, - 3, 194, 579, 344, 197, 135, 158, 159, 169, 170, - 194, 372, 173, 197, 338, 154, 3, 4, 5, 6, - 150, 151, 152, 186, 187, 188, 189, 80, 191, 606, - 116, 109, 118, 166, 167, 109, 116, 508, 116, 46, - 47, 48, 116, 0, 194, 125, 132, 197, 17, 18, - 332, 116, 132, 118, 132, 185, 186, 113, 132, 46, - 47, 48, 193, 193, 195, 197, 194, 132, 198, 197, - 194, 58, 499, 197, 501, 502, 194, 196, 85, 197, - 410, 88, 194, 194, 3, 197, 197, 3, 4, 5, - 6, 421, 194, 194, 94, 197, 197, 104, 85, 194, - 194, 88, 197, 197, 195, 112, 193, 3, 4, 5, - 6, 127, 194, 194, 121, 197, 197, 104, 4, 5, - 6, 26, 194, 163, 164, 197, 3, 549, 135, 123, - 46, 47, 48, 125, 121, 562, 162, 163, 164, 46, - 47, 591, 127, 150, 151, 152, 197, 133, 135, 97, - 46, 47, 48, 124, 3, 121, 3, 4, 5, 6, - 4, 66, 3, 150, 151, 152, 71, 3, 83, 85, - 93, 193, 88, 78, 79, 46, 194, 82, 185, 186, - 510, 194, 609, 3, 611, 4, 193, 193, 104, 85, - 95, 198, 88, 6, 193, 100, 17, 54, 185, 186, - 47, 48, 88, 12, 486, 121, 193, 115, 104, 126, - 193, 198, 138, 139, 140, 141, 142, 143, 104, 135, - 4, 4, 194, 197, 46, 121, 131, 131, 3, 174, - 91, 3, 119, 54, 150, 151, 152, 76, 85, 135, - 3, 88, 125, 113, 193, 98, 193, 193, 191, 193, - 39, 193, 193, 55, 150, 151, 152, 104, 197, 94, - 197, 125, 193, 93, 150, 151, 152, 58, 193, 185, - 186, 172, 129, 172, 121, 193, 3, 193, 4, 136, - 101, 194, 198, 193, 3, 161, 94, 172, 135, 185, - 186, 193, 77, 193, 101, 193, 193, 193, 193, 185, - 121, 193, 198, 150, 151, 152, 194, 128, 129, 193, - 116, 193, 198, 191, 104, 136, 137, 192, 3, 69, - 177, 178, 62, 197, 181, 182, 160, 184, 185, 186, - 187, 188, 189, 6, 191, 194, 6, 6, 185, 186, - 6, 6, 104, 172, 194, 193, 193, 4, 194, 194, - 99, 198, 99, 174, 175, 176, 177, 178, 78, 3, - 181, 182, 0, 184, 185, 186, 187, 188, 189, 7, - 191, 78, 78, 126, 105, 193, 54, 15, 194, 194, - 194, 6, 194, 194, 22, 173, 7, 126, 193, 27, - 194, 194, 116, 194, 15, 70, 24, 248, 396, 37, - 488, 22, 40, 41, 339, 357, 27, 207, 346, 201, - 350, 556, 293, 127, 52, 53, 37, 127, 572, 40, - 41, 264, 276, 101, 62, 571, 299, 65, 361, 538, - 104, 52, 53, -1, -1, -1, -1, -1, 116, -1, - -1, 62, -1, 121, 65, -1, -1, 54, -1, 87, - -1, 129, -1, 91, -1, -1, -1, -1, 136, 137, - -1, -1, -1, 11, -1, -1, 87, -1, -1, 107, - 91, -1, -1, -1, -1, 113, 54, 25, -1, -1, - -1, 29, 30, 31, 32, 33, 107, 35, -1, -1, - -1, -1, 113, -1, 101, 43, 174, 175, 176, 177, - 178, -1, -1, 181, 182, -1, 184, 185, 186, 187, - 188, 189, -1, 191, 121, -1, -1, 155, 156, 157, - 68, -1, 129, 101, -1, -1, -1, -1, -1, 136, - 137, -1, -1, -1, 155, 156, 157, -1, 86, -1, - 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 129, -1, -1, -1, 103, -1, -1, 136, 137, - 108, -1, 110, -1, -1, -1, -1, 174, 175, 176, - 177, 178, 120, -1, 181, 182, -1, 184, 185, 186, - 187, 188, 189, -1, 191, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 174, 175, 176, 177, - 178, -1, -1, 181, 182, 153, 184, 185, 186, 187, - 188, 189, -1, 191, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149 + 2, 54, 185, 5, 159, 158, 318, 224, 10, 192, + 12, 57, 58, 59, 97, 98, 81, 107, 165, 385, + 3, 3, 15, 355, 3, 112, 6, 232, 115, 234, + 3, 5, 6, 139, 54, 384, 191, 61, 193, 194, + 20, 407, 139, 6, 65, 115, 48, 545, 50, 3, + 27, 86, 78, 3, 215, 216, 3, 97, 60, 95, + 3, 4, 5, 6, 97, 9, 116, 104, 11, 12, + 13, 14, 503, 22, 30, 52, 231, 73, 161, 115, + 3, 236, 73, 85, 86, 121, 192, 83, 194, 306, + 27, 93, 83, 591, 131, 128, 136, 194, 100, 101, + 349, 642, 414, 58, 48, 260, 49, 50, 51, 358, + 163, 316, 653, 3, 63, 52, 137, 483, 114, 324, + 75, 326, 269, 114, 436, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 84, 507, 508, 164, 97, 88, 196, 212, 91, 310, + 3, 4, 5, 6, 175, 220, 311, 312, 11, 12, + 13, 14, 188, 196, 107, 200, 515, 322, 323, 119, + 113, 58, 196, 604, 128, 118, 107, 97, 128, 153, + 200, 124, 12, 236, 196, 135, 198, 119, 168, 9, + 101, 171, 279, 124, 3, 138, 49, 50, 51, 172, + 173, 174, 534, 135, 197, 168, 189, 37, 171, 279, + 153, 154, 155, 525, 196, 362, 371, 196, 119, 115, + 222, 376, 377, 119, 54, 29, 119, 197, 48, 434, + 200, 119, 119, 121, 135, 88, 29, 95, 91, 135, + 161, 162, 135, 112, 83, 188, 189, 135, 135, 466, + 119, 617, 157, 196, 107, 345, 309, 115, 201, 79, + 113, 0, 115, 121, 84, 69, 135, 422, 423, 635, + 74, 124, 197, 103, 119, 200, 69, 81, 82, 200, + 107, 74, 594, 128, 349, 138, 61, 133, 81, 82, + 135, 66, 85, 358, 98, 199, 197, 124, 102, 103, + 153, 154, 155, 386, 197, 98, 352, 198, 197, 621, + 103, 200, 4, 5, 6, 161, 162, 116, 523, 11, + 12, 13, 14, 195, 4, 93, 6, 112, 200, 3, + 4, 5, 6, 3, 119, 188, 189, 11, 12, 13, + 14, 134, 139, 196, 346, 172, 173, 196, 201, 176, + 135, 119, 120, 169, 170, 3, 4, 5, 6, 514, + 130, 516, 517, 11, 12, 13, 14, 135, 119, 278, + 121, 97, 425, 3, 283, 49, 50, 51, 197, 197, + 126, 200, 200, 436, 135, 197, 197, 61, 200, 200, + 169, 170, 189, 190, 191, 192, 200, 194, 130, 91, + 20, 49, 50, 51, 141, 142, 143, 144, 145, 146, + 197, 564, 136, 200, 88, 107, 197, 91, 128, 200, + 200, 113, 577, 606, 197, 197, 197, 200, 200, 200, + 127, 197, 197, 107, 200, 200, 100, 57, 197, 113, + 88, 200, 3, 91, 4, 3, 4, 5, 6, 197, + 124, 124, 200, 11, 12, 13, 14, 197, 3, 107, + 200, 153, 154, 155, 138, 113, 165, 166, 167, 624, + 86, 626, 525, 17, 18, 96, 124, 173, 174, 153, + 154, 155, 46, 47, 104, 196, 3, 49, 197, 197, + 138, 49, 50, 51, 4, 3, 188, 6, 196, 501, + 15, 196, 129, 118, 124, 153, 154, 155, 4, 201, + 196, 131, 132, 4, 188, 189, 4, 5, 6, 139, + 140, 4, 196, 11, 12, 13, 14, 201, 197, 200, + 88, 49, 134, 91, 3, 3, 4, 5, 6, 29, + 188, 189, 177, 11, 12, 13, 14, 94, 196, 107, + 3, 79, 122, 201, 3, 113, 128, 177, 178, 179, + 180, 181, 116, 51, 184, 185, 124, 187, 188, 189, + 190, 191, 192, 196, 194, 101, 42, 196, 196, 69, + 138, 194, 50, 51, 74, 196, 196, 196, 200, 128, + 97, 81, 82, 200, 58, 153, 154, 155, 196, 96, + 196, 175, 175, 91, 61, 196, 3, 197, 98, 196, + 4, 3, 102, 103, 164, 196, 175, 196, 196, 107, + 88, 196, 80, 91, 97, 113, 197, 196, 0, 196, + 188, 189, 104, 57, 119, 7, 107, 194, 196, 107, + 196, 196, 195, 201, 3, 113, 18, 72, 200, 65, + 163, 197, 6, 25, 6, 6, 124, 6, 30, 6, + 107, 175, 196, 4, 197, 153, 154, 155, 40, 102, + 138, 43, 44, 197, 197, 81, 81, 81, 3, 102, + 108, 129, 6, 55, 56, 153, 154, 155, 129, 176, + 119, 197, 197, 65, 7, 197, 68, 197, 197, 197, + 188, 196, 70, 197, 196, 18, 24, 57, 132, 360, + 200, 197, 25, 201, 353, 139, 371, 30, 90, 503, + 188, 189, 94, 411, 11, 261, 364, 40, 196, 313, + 43, 44, 212, 201, 571, 587, 220, 132, 110, 307, + 277, 28, 55, 56, 116, 32, 33, 34, 35, 36, + 132, 38, 65, 586, 104, 68, 180, 181, 375, 46, + 184, 185, 289, 187, 188, 189, 190, 191, 192, 119, + 194, 553, 104, -1, 124, -1, 57, 90, -1, -1, + -1, 94, 132, -1, 71, -1, 158, 159, 160, 139, + 140, -1, -1, -1, -1, -1, -1, 110, -1, -1, + -1, 57, 89, 116, 91, 92, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, -1, 106, + -1, -1, -1, 104, 111, -1, 113, 177, 178, 179, + 180, 181, -1, -1, 184, 185, 123, 187, 188, 189, + 190, 191, 192, 124, 194, 158, 159, 160, 104, -1, + -1, 132, -1, -1, -1, -1, -1, -1, 139, 140, + -1, -1, -1, -1, -1, -1, 153, -1, -1, 156, + -1, -1, -1, -1, -1, -1, 132, -1, -1, -1, + -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, + 181, -1, -1, 184, 185, -1, 187, 188, 189, 190, + 191, 192, -1, 194, -1, -1, -1, -1, -1, -1, + -1, 177, 178, 179, 180, 181, -1, -1, 184, 185, + -1, 187, 188, 189, 190, 191, 192, -1, 194 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 7, 15, 22, 27, 37, 40, 41, 52, 53, - 62, 65, 87, 91, 107, 113, 155, 156, 157, 200, - 201, 202, 203, 207, 209, 211, 212, 217, 218, 219, - 232, 234, 237, 238, 239, 241, 244, 324, 325, 27, - 3, 313, 3, 3, 313, 70, 80, 111, 94, 94, - 98, 312, 313, 80, 193, 247, 313, 70, 80, 111, - 19, 60, 3, 326, 327, 154, 208, 208, 208, 0, - 196, 331, 113, 204, 204, 58, 247, 248, 252, 3, - 195, 193, 94, 127, 220, 220, 220, 313, 3, 213, - 313, 123, 127, 233, 247, 248, 133, 94, 133, 233, - 233, 233, 313, 125, 197, 202, 97, 124, 264, 9, - 45, 81, 249, 250, 76, 249, 260, 3, 4, 5, - 6, 48, 88, 104, 150, 151, 152, 185, 198, 267, - 268, 269, 270, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 4, 210, 121, 3, 314, 313, 313, 83, - 257, 93, 193, 240, 3, 242, 243, 46, 313, 194, - 194, 4, 214, 214, 214, 3, 313, 313, 247, 327, - 193, 6, 302, 12, 253, 245, 246, 247, 252, 115, - 251, 126, 245, 55, 72, 265, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 291, 292, - 293, 193, 4, 4, 301, 305, 194, 197, 46, 131, - 94, 125, 193, 240, 3, 46, 47, 48, 85, 121, - 135, 185, 186, 193, 272, 273, 274, 275, 276, 277, - 278, 279, 281, 282, 283, 289, 290, 294, 295, 296, - 297, 298, 214, 3, 332, 63, 248, 174, 197, 257, - 91, 235, 236, 113, 193, 215, 215, 215, 3, 205, - 206, 254, 266, 271, 272, 260, 249, 261, 262, 272, - 260, 272, 115, 272, 119, 319, 320, 321, 270, 291, - 269, 313, 3, 244, 3, 169, 170, 171, 221, 222, - 223, 230, 125, 193, 195, 193, 193, 193, 112, 272, - 280, 46, 121, 273, 191, 273, 248, 272, 116, 132, - 17, 54, 101, 121, 128, 129, 136, 137, 174, 175, - 176, 177, 178, 181, 182, 184, 185, 186, 187, 188, - 189, 191, 98, 194, 197, 193, 272, 243, 39, 193, - 24, 49, 216, 257, 193, 194, 197, 94, 255, 256, - 197, 3, 125, 317, 318, 265, 245, 197, 90, 117, - 263, 265, 55, 55, 62, 134, 161, 172, 322, 321, - 125, 193, 93, 11, 25, 29, 30, 31, 32, 33, - 35, 43, 68, 86, 88, 89, 103, 108, 110, 120, - 153, 224, 193, 172, 172, 194, 197, 244, 194, 253, - 3, 186, 248, 291, 272, 272, 280, 92, 112, 118, - 193, 121, 266, 194, 194, 272, 272, 273, 273, 101, - 128, 193, 104, 121, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 273, 273, 273, 273, 273, 273, 302, - 313, 3, 268, 233, 216, 4, 213, 194, 197, 268, - 206, 193, 307, 308, 309, 310, 311, 313, 328, 257, - 271, 3, 262, 319, 272, 272, 172, 161, 130, 158, - 159, 323, 224, 332, 214, 193, 193, 226, 193, 193, - 193, 225, 104, 121, 169, 170, 173, 227, 228, 229, - 231, 332, 193, 193, 222, 77, 284, 266, 194, 94, - 125, 109, 92, 118, 272, 272, 248, 192, 116, 273, - 193, 248, 266, 104, 192, 194, 3, 194, 24, 49, - 194, 244, 26, 66, 71, 78, 79, 95, 100, 329, - 197, 125, 315, 316, 317, 69, 258, 62, 332, 160, - 194, 194, 6, 6, 6, 6, 6, 104, 172, 313, - 229, 231, 194, 332, 332, 193, 194, 272, 224, 272, - 272, 118, 109, 194, 273, 248, 266, 194, 194, 4, - 213, 194, 99, 78, 78, 78, 99, 308, 3, 126, - 323, 194, 194, 197, 194, 194, 194, 240, 194, 194, - 105, 285, 284, 194, 194, 118, 272, 194, 194, 316, - 309, 308, 193, 266, 6, 231, 126, 260, 82, 131, - 332, 51, 259, 194, 266, 162, 163, 164, 286, 287, - 193, 272, 330, 194, 272, 194, 6, 17, 165, 168, - 288, 332, 166, 167, 288, 166, 167, 194, 116, 288 + 0, 7, 18, 25, 30, 40, 43, 44, 55, 56, + 65, 68, 90, 94, 110, 116, 158, 159, 160, 203, + 204, 205, 206, 210, 212, 214, 215, 220, 221, 222, + 235, 237, 240, 241, 242, 244, 247, 332, 333, 30, + 3, 321, 3, 3, 321, 73, 83, 114, 97, 97, + 101, 320, 321, 83, 196, 250, 321, 73, 83, 114, + 22, 63, 3, 334, 335, 157, 211, 211, 211, 0, + 199, 339, 116, 207, 207, 61, 250, 251, 255, 3, + 198, 196, 97, 130, 223, 223, 223, 321, 3, 216, + 321, 126, 130, 236, 250, 251, 136, 97, 136, 236, + 236, 236, 321, 128, 200, 205, 100, 127, 267, 9, + 48, 84, 252, 253, 79, 252, 263, 3, 4, 5, + 6, 11, 12, 13, 14, 51, 91, 107, 113, 153, + 154, 155, 188, 201, 270, 271, 272, 273, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 4, 213, 124, 3, 322, 321, 321, 86, + 260, 96, 196, 243, 3, 245, 246, 49, 321, 197, + 197, 4, 217, 217, 217, 3, 321, 321, 250, 335, + 196, 6, 305, 15, 256, 248, 249, 250, 255, 118, + 254, 129, 248, 58, 75, 268, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 294, 295, + 296, 4, 196, 4, 4, 4, 6, 304, 310, 197, + 200, 49, 134, 97, 128, 196, 243, 3, 49, 50, + 51, 88, 124, 138, 188, 189, 196, 275, 276, 277, + 278, 279, 280, 281, 282, 284, 285, 286, 292, 293, + 297, 298, 299, 300, 301, 217, 3, 340, 66, 251, + 177, 200, 260, 94, 238, 239, 116, 196, 218, 218, + 218, 3, 208, 209, 257, 269, 274, 275, 263, 252, + 264, 265, 275, 263, 275, 118, 275, 122, 327, 328, + 329, 273, 294, 294, 272, 321, 3, 247, 3, 172, + 173, 174, 224, 225, 226, 233, 128, 196, 198, 196, + 196, 196, 115, 275, 283, 49, 124, 276, 194, 276, + 251, 275, 119, 135, 20, 57, 104, 124, 131, 132, + 139, 140, 177, 178, 179, 180, 181, 184, 185, 187, + 188, 189, 190, 191, 192, 194, 101, 197, 200, 196, + 275, 246, 42, 196, 27, 52, 219, 260, 196, 197, + 200, 97, 258, 259, 200, 3, 128, 325, 326, 268, + 248, 200, 93, 120, 266, 268, 58, 58, 65, 137, + 164, 175, 330, 329, 128, 196, 96, 11, 28, 32, + 33, 34, 35, 36, 38, 46, 71, 89, 91, 92, + 106, 111, 113, 123, 153, 156, 227, 196, 175, 175, + 197, 200, 247, 197, 256, 3, 189, 251, 294, 275, + 275, 283, 95, 115, 121, 196, 124, 269, 197, 197, + 275, 275, 276, 276, 104, 131, 196, 107, 124, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 305, 321, 3, 271, 236, 219, + 4, 216, 197, 200, 271, 209, 196, 315, 316, 317, + 318, 319, 321, 336, 260, 274, 3, 265, 327, 275, + 275, 175, 164, 133, 161, 162, 331, 227, 340, 217, + 196, 196, 229, 196, 196, 196, 228, 107, 124, 172, + 173, 176, 230, 231, 232, 234, 340, 196, 196, 225, + 80, 287, 269, 197, 97, 128, 112, 95, 121, 275, + 275, 251, 195, 119, 276, 196, 251, 269, 107, 195, + 197, 3, 197, 27, 52, 197, 247, 29, 69, 74, + 81, 82, 98, 103, 337, 200, 128, 323, 324, 325, + 72, 261, 65, 340, 163, 197, 197, 6, 6, 6, + 6, 6, 107, 175, 321, 232, 234, 197, 340, 340, + 196, 197, 275, 227, 275, 275, 121, 112, 197, 276, + 251, 269, 197, 197, 4, 216, 197, 102, 81, 81, + 81, 102, 316, 3, 129, 331, 197, 197, 200, 197, + 197, 197, 243, 197, 197, 108, 288, 287, 197, 197, + 121, 275, 197, 197, 324, 317, 316, 196, 269, 6, + 234, 129, 263, 85, 134, 340, 54, 262, 197, 269, + 165, 166, 167, 289, 290, 196, 275, 338, 197, 275, + 197, 6, 20, 168, 171, 291, 340, 169, 170, 291, + 169, 170, 197, 119, 291 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 199, 200, 201, 201, 202, 202, 202, 202, 202, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 204, 204, 205, 205, 206, 206, 207, 207, 207, 208, - 208, 209, 210, 211, 211, 212, 212, 213, 214, 215, - 215, 215, 216, 216, 216, 216, 217, 217, 218, 218, - 218, 219, 219, 219, 219, 219, 220, 220, 221, 221, - 222, 222, 223, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 225, 225, 226, 226, 226, 227, 227, 228, 228, - 228, 228, 229, 229, 229, 229, 230, 230, 230, 231, - 232, 232, 232, 232, 233, 233, 234, 235, 236, 237, - 238, 239, 239, 240, 240, 241, 242, 242, 243, 244, - 244, 244, 245, 245, 246, 246, 247, 247, 248, 248, - 249, 250, 250, 250, 251, 251, 252, 253, 253, 254, - 255, 255, 256, 257, 257, 258, 258, 259, 259, 260, - 260, 261, 261, 262, 263, 263, 263, 264, 264, 265, - 265, 265, 265, 265, 265, 266, 266, 267, 267, 268, - 268, 269, 269, 270, 270, 270, 271, 272, 272, 272, - 272, 272, 273, 273, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 274, 274, 275, 275, 275, 275, 275, - 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, - 276, 277, 277, 278, 278, 278, 278, 279, 279, 279, - 279, 280, 280, 281, 281, 282, 282, 282, 282, 282, - 282, 282, 283, 283, 284, 284, 285, 285, 286, 286, - 286, 287, 287, 287, 288, 288, 288, 288, 288, 289, - 290, 291, 291, 291, 291, 291, 291, 292, 292, 292, - 292, 292, 292, 293, 293, 294, 295, 296, 297, 297, - 297, 297, 298, 298, 298, 298, 298, 298, 298, 299, - 300, 300, 301, 301, 302, 303, 304, 305, 305, 305, - 306, 307, 307, 308, 308, 309, 309, 310, 310, 311, - 312, 313, 313, 314, 314, 315, 315, 316, 316, 317, - 317, 318, 318, 319, 319, 320, 320, 321, 321, 322, - 322, 322, 322, 323, 323, 323, 324, 324, 325, 326, - 326, 327, 328, 328, 328, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 330, 331, 331, 332, 332 + 0, 202, 203, 204, 204, 205, 205, 205, 205, 205, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 207, 207, 208, 208, 209, 209, 210, 210, 210, 211, + 211, 212, 213, 214, 214, 215, 215, 216, 217, 218, + 218, 218, 219, 219, 219, 219, 220, 220, 221, 221, + 221, 222, 222, 222, 222, 222, 223, 223, 224, 224, + 225, 225, 226, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 228, 228, 229, 229, 229, 230, 230, 231, + 231, 231, 231, 232, 232, 232, 232, 233, 233, 233, + 234, 235, 235, 235, 235, 236, 236, 237, 238, 239, + 240, 241, 242, 242, 243, 243, 244, 245, 245, 246, + 247, 247, 247, 248, 248, 249, 249, 250, 250, 251, + 251, 252, 253, 253, 253, 254, 254, 255, 256, 256, + 257, 258, 258, 259, 260, 260, 261, 261, 262, 262, + 263, 263, 264, 264, 265, 266, 266, 266, 267, 267, + 268, 268, 268, 268, 268, 268, 269, 269, 270, 270, + 271, 271, 272, 272, 273, 273, 273, 274, 275, 275, + 275, 275, 275, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 277, 277, 278, 278, 278, 278, + 278, 279, 279, 279, 279, 279, 279, 279, 279, 279, + 279, 279, 280, 280, 281, 281, 281, 281, 282, 282, + 282, 282, 283, 283, 284, 284, 285, 285, 285, 285, + 285, 285, 285, 286, 286, 287, 287, 288, 288, 289, + 289, 289, 290, 290, 290, 291, 291, 291, 291, 291, + 292, 293, 294, 294, 294, 294, 294, 294, 295, 295, + 295, 295, 295, 295, 296, 296, 297, 298, 299, 300, + 300, 300, 300, 301, 301, 301, 301, 301, 301, 301, + 301, 301, 301, 301, 301, 302, 303, 303, 304, 304, + 305, 306, 307, 308, 309, 310, 310, 310, 310, 311, + 312, 313, 314, 315, 315, 316, 316, 317, 317, 318, + 318, 319, 320, 321, 321, 322, 322, 323, 323, 324, + 324, 325, 325, 326, 326, 327, 327, 328, 328, 329, + 329, 330, 330, 330, 330, 331, 331, 331, 332, 332, + 333, 334, 334, 335, 336, 336, 336, 337, 337, 337, + 337, 337, 337, 337, 337, 337, 337, 338, 339, 339, + 340, 340 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1498,34 +1524,36 @@ static const yytype_int8 yyr2[] = 3, 0, 4, 2, 4, 2, 5, 5, 2, 3, 2, 8, 7, 6, 9, 7, 3, 0, 1, 3, 1, 1, 3, 1, 1, 4, 4, 1, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, - 4, 3, 0, 5, 3, 0, 1, 0, 1, 2, - 1, 2, 2, 1, 1, 2, 5, 4, 6, 3, - 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, 4, 6, - 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, 1, 6, 1, 2, 2, 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, 4, 6, 6, 0, 3, 0, 2, 5, - 0, 1, 1, 1, 2, 2, 2, 2, 1, 6, - 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 4, 4, 5, 1, 3, - 1, 3, 1, 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, 1, 2, 3, 5, 1, - 3, 1, 2, 2, 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, 1, 1, 1, 1, 1, 1, 2, + 1, 4, 3, 0, 5, 3, 0, 1, 0, 1, + 2, 1, 2, 2, 1, 1, 2, 5, 4, 6, + 3, 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, 4, + 6, 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, 1, 6, 1, 2, 2, 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, 4, 6, 6, 0, 3, 0, 2, + 5, 0, 1, 1, 1, 2, 2, 2, 2, 1, + 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 4, 4, 5, 1, + 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 3, 3, 2, 1, + 1, 1, 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, 1, 2, 3, + 5, 1, 3, 1, 2, 2, 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 }; @@ -2091,25 +2119,25 @@ yydestruct (const char *yymsg, case YYSYMBOL_IDENTIFIER: /* IDENTIFIER */ #line 192 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2095 "bison_parser.cpp" +#line 2123 "bison_parser.cpp" break; case YYSYMBOL_STRING: /* STRING */ #line 192 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2101 "bison_parser.cpp" +#line 2129 "bison_parser.cpp" break; case YYSYMBOL_FLOATVAL: /* FLOATVAL */ #line 179 "bison_parser.y" { } -#line 2107 "bison_parser.cpp" +#line 2135 "bison_parser.cpp" break; case YYSYMBOL_INTVAL: /* INTVAL */ #line 179 "bison_parser.y" { } -#line 2113 "bison_parser.cpp" +#line 2141 "bison_parser.cpp" break; case YYSYMBOL_statement_list: /* statement_list */ @@ -2122,19 +2150,19 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).stmt_vec)); } -#line 2126 "bison_parser.cpp" +#line 2154 "bison_parser.cpp" break; case YYSYMBOL_statement: /* statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2132 "bison_parser.cpp" +#line 2160 "bison_parser.cpp" break; case YYSYMBOL_preparable_statement: /* preparable_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2138 "bison_parser.cpp" +#line 2166 "bison_parser.cpp" break; case YYSYMBOL_opt_hints: /* opt_hints */ @@ -2147,7 +2175,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2151 "bison_parser.cpp" +#line 2179 "bison_parser.cpp" break; case YYSYMBOL_hint_list: /* hint_list */ @@ -2160,91 +2188,91 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2164 "bison_parser.cpp" +#line 2192 "bison_parser.cpp" break; case YYSYMBOL_hint: /* hint */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2170 "bison_parser.cpp" +#line 2198 "bison_parser.cpp" break; case YYSYMBOL_transaction_statement: /* transaction_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).transaction_stmt)); } -#line 2176 "bison_parser.cpp" +#line 2204 "bison_parser.cpp" break; case YYSYMBOL_prepare_statement: /* prepare_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).prep_stmt)); } -#line 2182 "bison_parser.cpp" +#line 2210 "bison_parser.cpp" break; case YYSYMBOL_prepare_target_query: /* prepare_target_query */ #line 192 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2188 "bison_parser.cpp" +#line 2216 "bison_parser.cpp" break; case YYSYMBOL_execute_statement: /* execute_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).exec_stmt)); } -#line 2194 "bison_parser.cpp" +#line 2222 "bison_parser.cpp" break; case YYSYMBOL_import_statement: /* import_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).import_stmt)); } -#line 2200 "bison_parser.cpp" +#line 2228 "bison_parser.cpp" break; case YYSYMBOL_file_type: /* file_type */ #line 179 "bison_parser.y" { } -#line 2206 "bison_parser.cpp" +#line 2234 "bison_parser.cpp" break; case YYSYMBOL_file_path: /* file_path */ #line 192 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2212 "bison_parser.cpp" +#line 2240 "bison_parser.cpp" break; case YYSYMBOL_opt_import_export_options: /* opt_import_export_options */ #line 201 "bison_parser.y" { delete (((*yyvaluep).import_export_option_t)); } -#line 2218 "bison_parser.cpp" +#line 2246 "bison_parser.cpp" break; case YYSYMBOL_import_export_options: /* import_export_options */ #line 201 "bison_parser.y" { delete (((*yyvaluep).import_export_option_t)); } -#line 2224 "bison_parser.cpp" +#line 2252 "bison_parser.cpp" break; case YYSYMBOL_export_statement: /* export_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).export_stmt)); } -#line 2230 "bison_parser.cpp" +#line 2258 "bison_parser.cpp" break; case YYSYMBOL_show_statement: /* show_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).show_stmt)); } -#line 2236 "bison_parser.cpp" +#line 2264 "bison_parser.cpp" break; case YYSYMBOL_create_statement: /* create_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).create_stmt)); } -#line 2242 "bison_parser.cpp" +#line 2270 "bison_parser.cpp" break; case YYSYMBOL_opt_not_exists: /* opt_not_exists */ #line 179 "bison_parser.y" { } -#line 2248 "bison_parser.cpp" +#line 2276 "bison_parser.cpp" break; case YYSYMBOL_table_elem_commalist: /* table_elem_commalist */ @@ -2257,115 +2285,115 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_element_vec)); } -#line 2261 "bison_parser.cpp" +#line 2289 "bison_parser.cpp" break; case YYSYMBOL_table_elem: /* table_elem */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table_element_t)); } -#line 2267 "bison_parser.cpp" +#line 2295 "bison_parser.cpp" break; case YYSYMBOL_column_def: /* column_def */ #line 201 "bison_parser.y" { delete (((*yyvaluep).column_t)); } -#line 2273 "bison_parser.cpp" +#line 2301 "bison_parser.cpp" break; case YYSYMBOL_column_type: /* column_type */ #line 179 "bison_parser.y" { } -#line 2279 "bison_parser.cpp" +#line 2307 "bison_parser.cpp" break; case YYSYMBOL_opt_time_precision: /* opt_time_precision */ #line 179 "bison_parser.y" { } -#line 2285 "bison_parser.cpp" +#line 2313 "bison_parser.cpp" break; case YYSYMBOL_opt_decimal_specification: /* opt_decimal_specification */ #line 201 "bison_parser.y" { delete (((*yyvaluep).ival_pair)); } -#line 2291 "bison_parser.cpp" +#line 2319 "bison_parser.cpp" break; case YYSYMBOL_opt_column_constraints: /* opt_column_constraints */ #line 201 "bison_parser.y" { delete (((*yyvaluep).column_constraints_t)); } -#line 2297 "bison_parser.cpp" +#line 2325 "bison_parser.cpp" break; case YYSYMBOL_column_constraints: /* column_constraints */ #line 201 "bison_parser.y" { delete (((*yyvaluep).column_constraints_t)); } -#line 2303 "bison_parser.cpp" +#line 2331 "bison_parser.cpp" break; case YYSYMBOL_column_constraint: /* column_constraint */ #line 179 "bison_parser.y" { } -#line 2309 "bison_parser.cpp" +#line 2337 "bison_parser.cpp" break; case YYSYMBOL_table_constraint: /* table_constraint */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table_constraint_t)); } -#line 2315 "bison_parser.cpp" +#line 2343 "bison_parser.cpp" break; case YYSYMBOL_references_spec: /* references_spec */ #line 201 "bison_parser.y" { delete (((*yyvaluep).references_spec_t)); } -#line 2321 "bison_parser.cpp" +#line 2349 "bison_parser.cpp" break; case YYSYMBOL_drop_statement: /* drop_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).drop_stmt)); } -#line 2327 "bison_parser.cpp" +#line 2355 "bison_parser.cpp" break; case YYSYMBOL_opt_exists: /* opt_exists */ #line 179 "bison_parser.y" { } -#line 2333 "bison_parser.cpp" +#line 2361 "bison_parser.cpp" break; case YYSYMBOL_alter_statement: /* alter_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).alter_stmt)); } -#line 2339 "bison_parser.cpp" +#line 2367 "bison_parser.cpp" break; case YYSYMBOL_alter_action: /* alter_action */ #line 201 "bison_parser.y" { delete (((*yyvaluep).alter_action_t)); } -#line 2345 "bison_parser.cpp" +#line 2373 "bison_parser.cpp" break; case YYSYMBOL_drop_action: /* drop_action */ #line 201 "bison_parser.y" { delete (((*yyvaluep).drop_action_t)); } -#line 2351 "bison_parser.cpp" +#line 2379 "bison_parser.cpp" break; case YYSYMBOL_delete_statement: /* delete_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2357 "bison_parser.cpp" +#line 2385 "bison_parser.cpp" break; case YYSYMBOL_truncate_statement: /* truncate_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2363 "bison_parser.cpp" +#line 2391 "bison_parser.cpp" break; case YYSYMBOL_insert_statement: /* insert_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).insert_stmt)); } -#line 2369 "bison_parser.cpp" +#line 2397 "bison_parser.cpp" break; case YYSYMBOL_opt_column_list: /* opt_column_list */ @@ -2378,13 +2406,13 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2382 "bison_parser.cpp" +#line 2410 "bison_parser.cpp" break; case YYSYMBOL_update_statement: /* update_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } -#line 2388 "bison_parser.cpp" +#line 2416 "bison_parser.cpp" break; case YYSYMBOL_update_clause_commalist: /* update_clause_commalist */ @@ -2397,73 +2425,73 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).update_vec)); } -#line 2401 "bison_parser.cpp" +#line 2429 "bison_parser.cpp" break; case YYSYMBOL_update_clause: /* update_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).update_t)); } -#line 2407 "bison_parser.cpp" +#line 2435 "bison_parser.cpp" break; case YYSYMBOL_select_statement: /* select_statement */ #line 201 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2413 "bison_parser.cpp" +#line 2441 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation: /* select_within_set_operation */ #line 201 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2419 "bison_parser.cpp" +#line 2447 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation_no_parentheses: /* select_within_set_operation_no_parentheses */ #line 201 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2425 "bison_parser.cpp" +#line 2453 "bison_parser.cpp" break; case YYSYMBOL_select_with_paren: /* select_with_paren */ #line 201 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2431 "bison_parser.cpp" +#line 2459 "bison_parser.cpp" break; case YYSYMBOL_select_no_paren: /* select_no_paren */ #line 201 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2437 "bison_parser.cpp" +#line 2465 "bison_parser.cpp" break; case YYSYMBOL_set_operator: /* set_operator */ #line 201 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2443 "bison_parser.cpp" +#line 2471 "bison_parser.cpp" break; case YYSYMBOL_set_type: /* set_type */ #line 201 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2449 "bison_parser.cpp" +#line 2477 "bison_parser.cpp" break; case YYSYMBOL_opt_all: /* opt_all */ #line 179 "bison_parser.y" { } -#line 2455 "bison_parser.cpp" +#line 2483 "bison_parser.cpp" break; case YYSYMBOL_select_clause: /* select_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2461 "bison_parser.cpp" +#line 2489 "bison_parser.cpp" break; case YYSYMBOL_opt_distinct: /* opt_distinct */ #line 179 "bison_parser.y" { } -#line 2467 "bison_parser.cpp" +#line 2495 "bison_parser.cpp" break; case YYSYMBOL_select_list: /* select_list */ @@ -2476,37 +2504,37 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2480 "bison_parser.cpp" +#line 2508 "bison_parser.cpp" break; case YYSYMBOL_opt_from_clause: /* opt_from_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2486 "bison_parser.cpp" +#line 2514 "bison_parser.cpp" break; case YYSYMBOL_from_clause: /* from_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2492 "bison_parser.cpp" +#line 2520 "bison_parser.cpp" break; case YYSYMBOL_opt_where: /* opt_where */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2498 "bison_parser.cpp" +#line 2526 "bison_parser.cpp" break; case YYSYMBOL_opt_group: /* opt_group */ #line 201 "bison_parser.y" { delete (((*yyvaluep).group_t)); } -#line 2504 "bison_parser.cpp" +#line 2532 "bison_parser.cpp" break; case YYSYMBOL_opt_having: /* opt_having */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2510 "bison_parser.cpp" +#line 2538 "bison_parser.cpp" break; case YYSYMBOL_opt_order: /* opt_order */ @@ -2519,7 +2547,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2523 "bison_parser.cpp" +#line 2551 "bison_parser.cpp" break; case YYSYMBOL_order_list: /* order_list */ @@ -2532,31 +2560,31 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2536 "bison_parser.cpp" +#line 2564 "bison_parser.cpp" break; case YYSYMBOL_order_desc: /* order_desc */ #line 201 "bison_parser.y" { delete (((*yyvaluep).order)); } -#line 2542 "bison_parser.cpp" +#line 2570 "bison_parser.cpp" break; case YYSYMBOL_opt_order_type: /* opt_order_type */ #line 179 "bison_parser.y" { } -#line 2548 "bison_parser.cpp" +#line 2576 "bison_parser.cpp" break; case YYSYMBOL_opt_top: /* opt_top */ #line 201 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2554 "bison_parser.cpp" +#line 2582 "bison_parser.cpp" break; case YYSYMBOL_opt_limit: /* opt_limit */ #line 201 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2560 "bison_parser.cpp" +#line 2588 "bison_parser.cpp" break; case YYSYMBOL_expr_list: /* expr_list */ @@ -2569,7 +2597,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2573 "bison_parser.cpp" +#line 2601 "bison_parser.cpp" break; case YYSYMBOL_opt_extended_literal_list: /* opt_extended_literal_list */ @@ -2582,7 +2610,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2586 "bison_parser.cpp" +#line 2614 "bison_parser.cpp" break; case YYSYMBOL_extended_literal_list: /* extended_literal_list */ @@ -2595,103 +2623,103 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2599 "bison_parser.cpp" +#line 2627 "bison_parser.cpp" break; case YYSYMBOL_casted_extended_literal: /* casted_extended_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2605 "bison_parser.cpp" +#line 2633 "bison_parser.cpp" break; case YYSYMBOL_extended_literal: /* extended_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2611 "bison_parser.cpp" +#line 2639 "bison_parser.cpp" break; case YYSYMBOL_expr_alias: /* expr_alias */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2617 "bison_parser.cpp" +#line 2645 "bison_parser.cpp" break; case YYSYMBOL_expr: /* expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2623 "bison_parser.cpp" +#line 2651 "bison_parser.cpp" break; case YYSYMBOL_operand: /* operand */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2629 "bison_parser.cpp" +#line 2657 "bison_parser.cpp" break; case YYSYMBOL_scalar_expr: /* scalar_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2635 "bison_parser.cpp" +#line 2663 "bison_parser.cpp" break; case YYSYMBOL_unary_expr: /* unary_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2641 "bison_parser.cpp" +#line 2669 "bison_parser.cpp" break; case YYSYMBOL_binary_expr: /* binary_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2647 "bison_parser.cpp" +#line 2675 "bison_parser.cpp" break; case YYSYMBOL_logic_expr: /* logic_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2653 "bison_parser.cpp" +#line 2681 "bison_parser.cpp" break; case YYSYMBOL_in_expr: /* in_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2659 "bison_parser.cpp" +#line 2687 "bison_parser.cpp" break; case YYSYMBOL_case_expr: /* case_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2665 "bison_parser.cpp" +#line 2693 "bison_parser.cpp" break; case YYSYMBOL_case_list: /* case_list */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2671 "bison_parser.cpp" +#line 2699 "bison_parser.cpp" break; case YYSYMBOL_exists_expr: /* exists_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2677 "bison_parser.cpp" +#line 2705 "bison_parser.cpp" break; case YYSYMBOL_comp_expr: /* comp_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2683 "bison_parser.cpp" +#line 2711 "bison_parser.cpp" break; case YYSYMBOL_function_expr: /* function_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2689 "bison_parser.cpp" +#line 2717 "bison_parser.cpp" break; case YYSYMBOL_opt_window: /* opt_window */ #line 201 "bison_parser.y" { delete (((*yyvaluep).window_description)); } -#line 2695 "bison_parser.cpp" +#line 2723 "bison_parser.cpp" break; case YYSYMBOL_opt_partition: /* opt_partition */ @@ -2704,151 +2732,181 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2708 "bison_parser.cpp" +#line 2736 "bison_parser.cpp" break; case YYSYMBOL_opt_frame_clause: /* opt_frame_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).frame_description)); } -#line 2714 "bison_parser.cpp" +#line 2742 "bison_parser.cpp" break; case YYSYMBOL_frame_type: /* frame_type */ #line 179 "bison_parser.y" { } -#line 2720 "bison_parser.cpp" +#line 2748 "bison_parser.cpp" break; case YYSYMBOL_frame_bound: /* frame_bound */ #line 201 "bison_parser.y" { delete (((*yyvaluep).frame_bound)); } -#line 2726 "bison_parser.cpp" +#line 2754 "bison_parser.cpp" break; case YYSYMBOL_extract_expr: /* extract_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2732 "bison_parser.cpp" +#line 2760 "bison_parser.cpp" break; case YYSYMBOL_cast_expr: /* cast_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2738 "bison_parser.cpp" +#line 2766 "bison_parser.cpp" break; case YYSYMBOL_datetime_field: /* datetime_field */ #line 179 "bison_parser.y" { } -#line 2744 "bison_parser.cpp" +#line 2772 "bison_parser.cpp" break; case YYSYMBOL_datetime_field_plural: /* datetime_field_plural */ #line 179 "bison_parser.y" { } -#line 2750 "bison_parser.cpp" +#line 2778 "bison_parser.cpp" break; case YYSYMBOL_duration_field: /* duration_field */ #line 179 "bison_parser.y" { } -#line 2756 "bison_parser.cpp" +#line 2784 "bison_parser.cpp" break; case YYSYMBOL_array_expr: /* array_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2762 "bison_parser.cpp" +#line 2790 "bison_parser.cpp" break; case YYSYMBOL_array_index: /* array_index */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2768 "bison_parser.cpp" +#line 2796 "bison_parser.cpp" break; case YYSYMBOL_between_expr: /* between_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2774 "bison_parser.cpp" +#line 2802 "bison_parser.cpp" break; case YYSYMBOL_column_name: /* column_name */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2780 "bison_parser.cpp" +#line 2808 "bison_parser.cpp" break; case YYSYMBOL_literal: /* literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2786 "bison_parser.cpp" +#line 2814 "bison_parser.cpp" break; case YYSYMBOL_string_literal: /* string_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2792 "bison_parser.cpp" +#line 2820 "bison_parser.cpp" break; case YYSYMBOL_bool_literal: /* bool_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2798 "bison_parser.cpp" +#line 2826 "bison_parser.cpp" break; case YYSYMBOL_num_literal: /* num_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2804 "bison_parser.cpp" +#line 2832 "bison_parser.cpp" break; case YYSYMBOL_int_literal: /* int_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2810 "bison_parser.cpp" +#line 2838 "bison_parser.cpp" break; case YYSYMBOL_null_literal: /* null_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2816 "bison_parser.cpp" +#line 2844 "bison_parser.cpp" break; case YYSYMBOL_date_literal: /* date_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2822 "bison_parser.cpp" +#line 2850 "bison_parser.cpp" + break; + + case YYSYMBOL_timestamp_literal: /* timestamp_literal */ +#line 201 "bison_parser.y" + { delete (((*yyvaluep).expr)); } +#line 2856 "bison_parser.cpp" + break; + + case YYSYMBOL_time_literal: /* time_literal */ +#line 201 "bison_parser.y" + { delete (((*yyvaluep).expr)); } +#line 2862 "bison_parser.cpp" break; case YYSYMBOL_interval_literal: /* interval_literal */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2828 "bison_parser.cpp" +#line 2868 "bison_parser.cpp" break; case YYSYMBOL_param_expr: /* param_expr */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2834 "bison_parser.cpp" +#line 2874 "bison_parser.cpp" + break; + + case YYSYMBOL_current_timestamp: /* current_timestamp */ +#line 201 "bison_parser.y" + { delete (((*yyvaluep).expr)); } +#line 2880 "bison_parser.cpp" + break; + + case YYSYMBOL_current_date: /* current_date */ +#line 201 "bison_parser.y" + { delete (((*yyvaluep).expr)); } +#line 2886 "bison_parser.cpp" + break; + + case YYSYMBOL_current_time: /* current_time */ +#line 201 "bison_parser.y" + { delete (((*yyvaluep).expr)); } +#line 2892 "bison_parser.cpp" break; case YYSYMBOL_table_ref: /* table_ref */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2840 "bison_parser.cpp" +#line 2898 "bison_parser.cpp" break; case YYSYMBOL_table_ref_atomic: /* table_ref_atomic */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2846 "bison_parser.cpp" +#line 2904 "bison_parser.cpp" break; case YYSYMBOL_nonjoin_table_ref_atomic: /* nonjoin_table_ref_atomic */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2852 "bison_parser.cpp" +#line 2910 "bison_parser.cpp" break; case YYSYMBOL_table_ref_commalist: /* table_ref_commalist */ @@ -2861,19 +2919,19 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_vec)); } -#line 2865 "bison_parser.cpp" +#line 2923 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name: /* table_ref_name */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2871 "bison_parser.cpp" +#line 2929 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name_no_alias: /* table_ref_name_no_alias */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2877 "bison_parser.cpp" +#line 2935 "bison_parser.cpp" break; case YYSYMBOL_table_name: /* table_name */ @@ -2882,109 +2940,109 @@ yydestruct (const char *yymsg, free(((*yyvaluep).table_name).name); free(((*yyvaluep).table_name).schema); } -#line 2886 "bison_parser.cpp" +#line 2944 "bison_parser.cpp" break; case YYSYMBOL_opt_index_name: /* opt_index_name */ #line 192 "bison_parser.y" { free(((*yyvaluep).sval)); } -#line 2892 "bison_parser.cpp" +#line 2950 "bison_parser.cpp" break; case YYSYMBOL_table_alias: /* table_alias */ #line 201 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2898 "bison_parser.cpp" +#line 2956 "bison_parser.cpp" break; case YYSYMBOL_opt_table_alias: /* opt_table_alias */ #line 201 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2904 "bison_parser.cpp" +#line 2962 "bison_parser.cpp" break; case YYSYMBOL_alias: /* alias */ #line 201 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2910 "bison_parser.cpp" +#line 2968 "bison_parser.cpp" break; case YYSYMBOL_opt_alias: /* opt_alias */ #line 201 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2916 "bison_parser.cpp" +#line 2974 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause: /* opt_locking_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2922 "bison_parser.cpp" +#line 2980 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause_list: /* opt_locking_clause_list */ #line 201 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2928 "bison_parser.cpp" +#line 2986 "bison_parser.cpp" break; case YYSYMBOL_locking_clause: /* locking_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).locking_t)); } -#line 2934 "bison_parser.cpp" +#line 2992 "bison_parser.cpp" break; case YYSYMBOL_row_lock_mode: /* row_lock_mode */ #line 179 "bison_parser.y" { } -#line 2940 "bison_parser.cpp" +#line 2998 "bison_parser.cpp" break; case YYSYMBOL_opt_row_lock_policy: /* opt_row_lock_policy */ #line 179 "bison_parser.y" { } -#line 2946 "bison_parser.cpp" +#line 3004 "bison_parser.cpp" break; case YYSYMBOL_opt_with_clause: /* opt_with_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2952 "bison_parser.cpp" +#line 3010 "bison_parser.cpp" break; case YYSYMBOL_with_clause: /* with_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2958 "bison_parser.cpp" +#line 3016 "bison_parser.cpp" break; case YYSYMBOL_with_description_list: /* with_description_list */ #line 201 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2964 "bison_parser.cpp" +#line 3022 "bison_parser.cpp" break; case YYSYMBOL_with_description: /* with_description */ #line 201 "bison_parser.y" { delete (((*yyvaluep).with_description_t)); } -#line 2970 "bison_parser.cpp" +#line 3028 "bison_parser.cpp" break; case YYSYMBOL_join_clause: /* join_clause */ #line 201 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2976 "bison_parser.cpp" +#line 3034 "bison_parser.cpp" break; case YYSYMBOL_opt_join_type: /* opt_join_type */ #line 179 "bison_parser.y" { } -#line 2982 "bison_parser.cpp" +#line 3040 "bison_parser.cpp" break; case YYSYMBOL_join_condition: /* join_condition */ #line 201 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2988 "bison_parser.cpp" +#line 3046 "bison_parser.cpp" break; case YYSYMBOL_ident_commalist: /* ident_commalist */ @@ -2997,7 +3055,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 3001 "bison_parser.cpp" +#line 3059 "bison_parser.cpp" break; default: @@ -3105,7 +3163,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 3109 "bison_parser.cpp" +#line 3167 "bison_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -3316,7 +3374,7 @@ YYLTYPE yylloc = yyloc_default; switch (yyn) { case 2: /* input: statement_list opt_semicolon */ -#line 335 "bison_parser.y" +#line 337 "bison_parser.y" { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -3334,236 +3392,236 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].stmt_vec); } -#line 3338 "bison_parser.cpp" +#line 3396 "bison_parser.cpp" break; case 3: /* statement_list: statement */ -#line 354 "bison_parser.y" +#line 356 "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 3349 "bison_parser.cpp" +#line 3407 "bison_parser.cpp" break; case 4: /* statement_list: statement_list ';' statement */ -#line 360 "bison_parser.y" +#line 362 "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 3360 "bison_parser.cpp" +#line 3418 "bison_parser.cpp" break; case 5: /* statement: prepare_statement opt_hints */ -#line 367 "bison_parser.y" +#line 369 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3369 "bison_parser.cpp" +#line 3427 "bison_parser.cpp" break; case 6: /* statement: preparable_statement opt_hints */ -#line 371 "bison_parser.y" +#line 373 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3378 "bison_parser.cpp" +#line 3436 "bison_parser.cpp" break; case 7: /* statement: show_statement */ -#line 375 "bison_parser.y" +#line 377 "bison_parser.y" { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 3384 "bison_parser.cpp" +#line 3442 "bison_parser.cpp" break; case 8: /* statement: import_statement */ -#line 376 "bison_parser.y" +#line 378 "bison_parser.y" { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 3390 "bison_parser.cpp" +#line 3448 "bison_parser.cpp" break; case 9: /* statement: export_statement */ -#line 377 "bison_parser.y" +#line 379 "bison_parser.y" { (yyval.statement) = (yyvsp[0].export_stmt); } -#line 3396 "bison_parser.cpp" +#line 3454 "bison_parser.cpp" break; case 10: /* preparable_statement: select_statement */ -#line 379 "bison_parser.y" +#line 381 "bison_parser.y" { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 3402 "bison_parser.cpp" +#line 3460 "bison_parser.cpp" break; case 11: /* preparable_statement: create_statement */ -#line 380 "bison_parser.y" +#line 382 "bison_parser.y" { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 3408 "bison_parser.cpp" +#line 3466 "bison_parser.cpp" break; case 12: /* preparable_statement: insert_statement */ -#line 381 "bison_parser.y" +#line 383 "bison_parser.y" { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 3414 "bison_parser.cpp" +#line 3472 "bison_parser.cpp" break; case 13: /* preparable_statement: delete_statement */ -#line 382 "bison_parser.y" +#line 384 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3420 "bison_parser.cpp" +#line 3478 "bison_parser.cpp" break; case 14: /* preparable_statement: truncate_statement */ -#line 383 "bison_parser.y" +#line 385 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3426 "bison_parser.cpp" +#line 3484 "bison_parser.cpp" break; case 15: /* preparable_statement: update_statement */ -#line 384 "bison_parser.y" +#line 386 "bison_parser.y" { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 3432 "bison_parser.cpp" +#line 3490 "bison_parser.cpp" break; case 16: /* preparable_statement: drop_statement */ -#line 385 "bison_parser.y" +#line 387 "bison_parser.y" { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 3438 "bison_parser.cpp" +#line 3496 "bison_parser.cpp" break; case 17: /* preparable_statement: alter_statement */ -#line 386 "bison_parser.y" +#line 388 "bison_parser.y" { (yyval.statement) = (yyvsp[0].alter_stmt); } -#line 3444 "bison_parser.cpp" +#line 3502 "bison_parser.cpp" break; case 18: /* preparable_statement: execute_statement */ -#line 387 "bison_parser.y" +#line 389 "bison_parser.y" { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 3450 "bison_parser.cpp" +#line 3508 "bison_parser.cpp" break; case 19: /* preparable_statement: transaction_statement */ -#line 388 "bison_parser.y" +#line 390 "bison_parser.y" { (yyval.statement) = (yyvsp[0].transaction_stmt); } -#line 3456 "bison_parser.cpp" +#line 3514 "bison_parser.cpp" break; case 20: /* opt_hints: WITH HINT '(' hint_list ')' */ -#line 394 "bison_parser.y" +#line 396 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 3462 "bison_parser.cpp" +#line 3520 "bison_parser.cpp" break; case 21: /* opt_hints: %empty */ -#line 395 "bison_parser.y" +#line 397 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 3468 "bison_parser.cpp" +#line 3526 "bison_parser.cpp" break; case 22: /* hint_list: hint */ -#line 397 "bison_parser.y" +#line 399 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3477 "bison_parser.cpp" +#line 3535 "bison_parser.cpp" break; case 23: /* hint_list: hint_list ',' hint */ -#line 401 "bison_parser.y" +#line 403 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3486 "bison_parser.cpp" +#line 3544 "bison_parser.cpp" break; case 24: /* hint: IDENTIFIER */ -#line 406 "bison_parser.y" +#line 408 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 3495 "bison_parser.cpp" +#line 3553 "bison_parser.cpp" break; case 25: /* hint: IDENTIFIER '(' extended_literal_list ')' */ -#line 410 "bison_parser.y" +#line 412 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 3505 "bison_parser.cpp" +#line 3563 "bison_parser.cpp" break; case 26: /* transaction_statement: BEGIN opt_transaction_keyword */ -#line 420 "bison_parser.y" +#line 422 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kBeginTransaction); } -#line 3511 "bison_parser.cpp" +#line 3569 "bison_parser.cpp" break; case 27: /* transaction_statement: ROLLBACK opt_transaction_keyword */ -#line 421 "bison_parser.y" +#line 423 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kRollbackTransaction); } -#line 3517 "bison_parser.cpp" +#line 3575 "bison_parser.cpp" break; case 28: /* transaction_statement: COMMIT opt_transaction_keyword */ -#line 422 "bison_parser.y" +#line 424 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kCommitTransaction); } -#line 3523 "bison_parser.cpp" +#line 3581 "bison_parser.cpp" break; case 31: /* prepare_statement: PREPARE IDENTIFIER FROM prepare_target_query */ -#line 430 "bison_parser.y" +#line 432 "bison_parser.y" { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 3533 "bison_parser.cpp" +#line 3591 "bison_parser.cpp" break; case 33: /* execute_statement: EXECUTE IDENTIFIER */ -#line 438 "bison_parser.y" +#line 440 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 3542 "bison_parser.cpp" +#line 3600 "bison_parser.cpp" break; case 34: /* execute_statement: EXECUTE IDENTIFIER '(' opt_extended_literal_list ')' */ -#line 442 "bison_parser.y" +#line 444 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 3552 "bison_parser.cpp" +#line 3610 "bison_parser.cpp" break; case 35: /* import_statement: IMPORT FROM file_type FILE file_path INTO table_name */ -#line 454 "bison_parser.y" +#line 456 "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 3563 "bison_parser.cpp" +#line 3621 "bison_parser.cpp" break; case 36: /* import_statement: COPY table_name FROM file_path opt_import_export_options opt_where */ -#line 460 "bison_parser.y" +#line 462 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-1].import_export_option_t)->format); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); @@ -3576,11 +3634,11 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].import_export_option_t); } -#line 3580 "bison_parser.cpp" +#line 3638 "bison_parser.cpp" break; case 37: /* file_type: IDENTIFIER */ -#line 473 "bison_parser.y" +#line 475 "bison_parser.y" { if (strcasecmp((yyvsp[0].sval), "csv") == 0) { (yyval.import_type_t) = kImportCSV; @@ -3595,35 +3653,35 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[0].sval)); } -#line 3599 "bison_parser.cpp" +#line 3657 "bison_parser.cpp" break; case 38: /* file_path: STRING */ -#line 488 "bison_parser.y" +#line 490 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 3605 "bison_parser.cpp" +#line 3663 "bison_parser.cpp" break; case 39: /* opt_import_export_options: WITH '(' import_export_options ')' */ -#line 490 "bison_parser.y" +#line 492 "bison_parser.y" { (yyval.import_export_option_t) = (yyvsp[-1].import_export_option_t); } -#line 3611 "bison_parser.cpp" +#line 3669 "bison_parser.cpp" break; case 40: /* opt_import_export_options: '(' import_export_options ')' */ -#line 491 "bison_parser.y" +#line 493 "bison_parser.y" { (yyval.import_export_option_t) = (yyvsp[-1].import_export_option_t); } -#line 3617 "bison_parser.cpp" +#line 3675 "bison_parser.cpp" break; case 41: /* opt_import_export_options: %empty */ -#line 492 "bison_parser.y" +#line 494 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; } -#line 3623 "bison_parser.cpp" +#line 3681 "bison_parser.cpp" break; case 42: /* import_export_options: import_export_options ',' FORMAT file_type */ -#line 494 "bison_parser.y" +#line 496 "bison_parser.y" { if ((yyvsp[-3].import_export_option_t)->format != kImportAuto) { delete (yyvsp[-3].import_export_option_t); @@ -3633,20 +3691,20 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-3].import_export_option_t)->format = (yyvsp[0].import_type_t); (yyval.import_export_option_t) = (yyvsp[-3].import_export_option_t); } -#line 3637 "bison_parser.cpp" +#line 3695 "bison_parser.cpp" break; case 43: /* import_export_options: FORMAT file_type */ -#line 503 "bison_parser.y" +#line 505 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; (yyval.import_export_option_t)->format = (yyvsp[0].import_type_t); } -#line 3646 "bison_parser.cpp" +#line 3704 "bison_parser.cpp" break; case 44: /* import_export_options: import_export_options ',' ENCODING STRING */ -#line 507 "bison_parser.y" +#line 509 "bison_parser.y" { if ((yyvsp[-3].import_export_option_t)->encoding) { delete (yyvsp[-3].import_export_option_t); @@ -3657,20 +3715,20 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-3].import_export_option_t)->encoding = (yyvsp[0].sval); (yyval.import_export_option_t) = (yyvsp[-3].import_export_option_t); } -#line 3661 "bison_parser.cpp" +#line 3719 "bison_parser.cpp" break; case 45: /* import_export_options: ENCODING STRING */ -#line 517 "bison_parser.y" +#line 519 "bison_parser.y" { (yyval.import_export_option_t) = new ImportExportOptions{}; (yyval.import_export_option_t)->encoding = (yyvsp[0].sval); } -#line 3670 "bison_parser.cpp" +#line 3728 "bison_parser.cpp" break; case 46: /* export_statement: COPY table_name TO file_path opt_import_export_options */ -#line 527 "bison_parser.y" +#line 529 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_export_option_t)->format); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); @@ -3682,11 +3740,11 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].import_export_option_t); } -#line 3686 "bison_parser.cpp" +#line 3744 "bison_parser.cpp" break; case 47: /* export_statement: COPY select_with_paren TO file_path opt_import_export_options */ -#line 538 "bison_parser.y" +#line 540 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_export_option_t)->format); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); @@ -3697,37 +3755,37 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].import_export_option_t); } -#line 3701 "bison_parser.cpp" +#line 3759 "bison_parser.cpp" break; case 48: /* show_statement: SHOW TABLES */ -#line 554 "bison_parser.y" +#line 556 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3707 "bison_parser.cpp" +#line 3765 "bison_parser.cpp" break; case 49: /* show_statement: SHOW COLUMNS table_name */ -#line 555 "bison_parser.y" +#line 557 "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 3717 "bison_parser.cpp" +#line 3775 "bison_parser.cpp" break; case 50: /* show_statement: DESCRIBE table_name */ -#line 560 "bison_parser.y" +#line 562 "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 3727 "bison_parser.cpp" +#line 3785 "bison_parser.cpp" break; case 51: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ -#line 571 "bison_parser.y" +#line 573 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -3741,11 +3799,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3745 "bison_parser.cpp" +#line 3803 "bison_parser.cpp" break; case 52: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ -#line 584 "bison_parser.y" +#line 586 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3758,11 +3816,11 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 3762 "bison_parser.cpp" +#line 3820 "bison_parser.cpp" break; case 53: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ -#line 596 "bison_parser.y" +#line 598 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3770,11 +3828,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3774 "bison_parser.cpp" +#line 3832 "bison_parser.cpp" break; case 54: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ -#line 603 "bison_parser.y" +#line 605 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateIndex); (yyval.create_stmt)->indexName = (yyvsp[-5].sval); @@ -3782,11 +3840,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->indexColumns = (yyvsp[-1].str_vec); } -#line 3786 "bison_parser.cpp" +#line 3844 "bison_parser.cpp" break; case 55: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ -#line 610 "bison_parser.y" +#line 612 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3795,53 +3853,53 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3799 "bison_parser.cpp" +#line 3857 "bison_parser.cpp" break; case 56: /* opt_not_exists: IF NOT EXISTS */ -#line 619 "bison_parser.y" +#line 621 "bison_parser.y" { (yyval.bval) = true; } -#line 3805 "bison_parser.cpp" +#line 3863 "bison_parser.cpp" break; case 57: /* opt_not_exists: %empty */ -#line 620 "bison_parser.y" +#line 622 "bison_parser.y" { (yyval.bval) = false; } -#line 3811 "bison_parser.cpp" +#line 3869 "bison_parser.cpp" break; case 58: /* table_elem_commalist: table_elem */ -#line 622 "bison_parser.y" +#line 624 "bison_parser.y" { (yyval.table_element_vec) = new std::vector(); (yyval.table_element_vec)->push_back((yyvsp[0].table_element_t)); } -#line 3820 "bison_parser.cpp" +#line 3878 "bison_parser.cpp" break; case 59: /* table_elem_commalist: table_elem_commalist ',' table_elem */ -#line 626 "bison_parser.y" +#line 628 "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 3829 "bison_parser.cpp" +#line 3887 "bison_parser.cpp" break; case 60: /* table_elem: column_def */ -#line 631 "bison_parser.y" +#line 633 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].column_t); } -#line 3835 "bison_parser.cpp" +#line 3893 "bison_parser.cpp" break; case 61: /* table_elem: table_constraint */ -#line 632 "bison_parser.y" +#line 634 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3841 "bison_parser.cpp" +#line 3899 "bison_parser.cpp" break; case 62: /* column_def: IDENTIFIER column_type opt_column_constraints */ -#line 634 "bison_parser.y" +#line 636 "bison_parser.y" { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].column_constraints_t)->constraints, (yyvsp[0].column_constraints_t)->references); if (!(yyval.column_t)->trySetNullableExplicit()) { @@ -3849,192 +3907,198 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[0].column_constraints_t); } -#line 3853 "bison_parser.cpp" +#line 3911 "bison_parser.cpp" break; case 63: /* column_type: BIGINT */ -#line 642 "bison_parser.y" +#line 644 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BIGINT}; } -#line 3859 "bison_parser.cpp" +#line 3917 "bison_parser.cpp" break; case 64: /* column_type: BOOLEAN */ -#line 643 "bison_parser.y" +#line 645 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BOOLEAN}; } -#line 3865 "bison_parser.cpp" +#line 3923 "bison_parser.cpp" break; case 65: /* column_type: CHAR '(' INTVAL ')' */ -#line 644 "bison_parser.y" +#line 646 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3871 "bison_parser.cpp" +#line 3929 "bison_parser.cpp" break; case 66: /* column_type: CHARACTER_VARYING '(' INTVAL ')' */ -#line 645 "bison_parser.y" +#line 647 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3877 "bison_parser.cpp" +#line 3935 "bison_parser.cpp" break; case 67: /* column_type: DATE */ -#line 646 "bison_parser.y" +#line 648 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATE}; } -#line 3883 "bison_parser.cpp" +#line 3941 "bison_parser.cpp" break; case 68: /* column_type: DATETIME */ -#line 647 "bison_parser.y" +#line 649 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3889 "bison_parser.cpp" +#line 3947 "bison_parser.cpp" break; case 69: /* column_type: DECIMAL opt_decimal_specification */ -#line 648 "bison_parser.y" +#line 650 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DECIMAL, 0, (yyvsp[0].ival_pair)->first, (yyvsp[0].ival_pair)->second}; delete (yyvsp[0].ival_pair); } -#line 3898 "bison_parser.cpp" +#line 3956 "bison_parser.cpp" break; case 70: /* column_type: DOUBLE */ -#line 652 "bison_parser.y" +#line 654 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 3904 "bison_parser.cpp" +#line 3962 "bison_parser.cpp" break; case 71: /* column_type: FLOAT */ -#line 653 "bison_parser.y" +#line 655 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 3910 "bison_parser.cpp" +#line 3968 "bison_parser.cpp" break; case 72: /* column_type: INT */ -#line 654 "bison_parser.y" +#line 656 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3916 "bison_parser.cpp" +#line 3974 "bison_parser.cpp" break; case 73: /* column_type: INTEGER */ -#line 655 "bison_parser.y" +#line 657 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3922 "bison_parser.cpp" +#line 3980 "bison_parser.cpp" break; - case 74: /* column_type: LONG */ -#line 656 "bison_parser.y" + case 74: /* column_type: INTERVAL */ +#line 658 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::INTERVAL}; } +#line 3986 "bison_parser.cpp" + break; + + case 75: /* column_type: LONG */ +#line 659 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 3928 "bison_parser.cpp" +#line 3992 "bison_parser.cpp" break; - case 75: /* column_type: REAL */ -#line 657 "bison_parser.y" + case 76: /* column_type: REAL */ +#line 660 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::REAL}; } -#line 3934 "bison_parser.cpp" +#line 3998 "bison_parser.cpp" break; - case 76: /* column_type: SMALLINT */ -#line 658 "bison_parser.y" + case 77: /* column_type: SMALLINT */ +#line 661 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::SMALLINT}; } -#line 3940 "bison_parser.cpp" +#line 4004 "bison_parser.cpp" break; - case 77: /* column_type: TEXT */ -#line 659 "bison_parser.y" + case 78: /* column_type: TEXT */ +#line 662 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 3946 "bison_parser.cpp" +#line 4010 "bison_parser.cpp" break; - case 78: /* column_type: TIME opt_time_precision */ -#line 660 "bison_parser.y" + case 79: /* column_type: TIME opt_time_precision */ +#line 663 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TIME, 0, (yyvsp[0].ival)}; } -#line 3952 "bison_parser.cpp" +#line 4016 "bison_parser.cpp" break; - case 79: /* column_type: TIMESTAMP */ -#line 661 "bison_parser.y" + case 80: /* column_type: TIMESTAMP */ +#line 664 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3958 "bison_parser.cpp" +#line 4022 "bison_parser.cpp" break; - case 80: /* column_type: VARCHAR '(' INTVAL ')' */ -#line 662 "bison_parser.y" + case 81: /* column_type: VARCHAR '(' INTVAL ')' */ +#line 665 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3964 "bison_parser.cpp" +#line 4028 "bison_parser.cpp" break; - case 81: /* opt_time_precision: '(' INTVAL ')' */ -#line 664 "bison_parser.y" + case 82: /* opt_time_precision: '(' INTVAL ')' */ +#line 667 "bison_parser.y" { (yyval.ival) = (yyvsp[-1].ival); } -#line 3970 "bison_parser.cpp" +#line 4034 "bison_parser.cpp" break; - case 82: /* opt_time_precision: %empty */ -#line 665 "bison_parser.y" + case 83: /* opt_time_precision: %empty */ +#line 668 "bison_parser.y" { (yyval.ival) = 0; } -#line 3976 "bison_parser.cpp" +#line 4040 "bison_parser.cpp" break; - case 83: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ -#line 667 "bison_parser.y" + case 84: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ +#line 670 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-3].ival), (yyvsp[-1].ival)}; } -#line 3982 "bison_parser.cpp" +#line 4046 "bison_parser.cpp" break; - case 84: /* opt_decimal_specification: '(' INTVAL ')' */ -#line 668 "bison_parser.y" + case 85: /* opt_decimal_specification: '(' INTVAL ')' */ +#line 671 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-1].ival), 0}; } -#line 3988 "bison_parser.cpp" +#line 4052 "bison_parser.cpp" break; - case 85: /* opt_decimal_specification: %empty */ -#line 669 "bison_parser.y" + case 86: /* opt_decimal_specification: %empty */ +#line 672 "bison_parser.y" { (yyval.ival_pair) = new std::pair{0, 0}; } -#line 3994 "bison_parser.cpp" +#line 4058 "bison_parser.cpp" break; - case 86: /* opt_column_constraints: column_constraints */ -#line 671 "bison_parser.y" + case 87: /* opt_column_constraints: column_constraints */ +#line 674 "bison_parser.y" { (yyval.column_constraints_t) = (yyvsp[0].column_constraints_t); } -#line 4000 "bison_parser.cpp" +#line 4064 "bison_parser.cpp" break; - case 87: /* opt_column_constraints: %empty */ -#line 672 "bison_parser.y" + case 88: /* opt_column_constraints: %empty */ +#line 675 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); } -#line 4006 "bison_parser.cpp" +#line 4070 "bison_parser.cpp" break; - case 88: /* column_constraints: column_constraint */ -#line 674 "bison_parser.y" + case 89: /* column_constraints: column_constraint */ +#line 677 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); (yyval.column_constraints_t)->constraints->insert((yyvsp[0].column_constraint_t)); } -#line 4015 "bison_parser.cpp" +#line 4079 "bison_parser.cpp" break; - case 89: /* column_constraints: column_constraints column_constraint */ -#line 678 "bison_parser.y" + case 90: /* column_constraints: column_constraints column_constraint */ +#line 681 "bison_parser.y" { (yyvsp[-1].column_constraints_t)->constraints->insert((yyvsp[0].column_constraint_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 4024 "bison_parser.cpp" +#line 4088 "bison_parser.cpp" break; - case 90: /* column_constraints: references_spec */ -#line 682 "bison_parser.y" + case 91: /* column_constraints: references_spec */ +#line 685 "bison_parser.y" { (yyval.column_constraints_t) = new ColumnConstraints(); (yyval.column_constraints_t)->constraints->insert(ConstraintType::ForeignKey); (yyval.column_constraints_t)->references->emplace_back((yyvsp[0].references_spec_t)); } -#line 4034 "bison_parser.cpp" +#line 4098 "bison_parser.cpp" break; - case 91: /* column_constraints: column_constraints references_spec */ -#line 687 "bison_parser.y" + case 92: /* column_constraints: column_constraints references_spec */ +#line 690 "bison_parser.y" { // Multiple foreign keys for the same column could be possible, so we do not raise an error in that case. // Think of foreign keys referenced on multiple levels (returned item references sold item references items). @@ -4042,159 +4106,159 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-1].column_constraints_t)->references->emplace_back((yyvsp[0].references_spec_t)); (yyval.column_constraints_t) = (yyvsp[-1].column_constraints_t); } -#line 4046 "bison_parser.cpp" +#line 4110 "bison_parser.cpp" break; - case 92: /* column_constraint: PRIMARY KEY */ -#line 695 "bison_parser.y" + case 93: /* column_constraint: PRIMARY KEY */ +#line 698 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::PrimaryKey; } -#line 4052 "bison_parser.cpp" +#line 4116 "bison_parser.cpp" break; - case 93: /* column_constraint: UNIQUE */ -#line 696 "bison_parser.y" + case 94: /* column_constraint: UNIQUE */ +#line 699 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Unique; } -#line 4058 "bison_parser.cpp" +#line 4122 "bison_parser.cpp" break; - case 94: /* column_constraint: NULL */ -#line 697 "bison_parser.y" + case 95: /* column_constraint: NULL */ +#line 700 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Null; } -#line 4064 "bison_parser.cpp" +#line 4128 "bison_parser.cpp" break; - case 95: /* column_constraint: NOT NULL */ -#line 698 "bison_parser.y" + case 96: /* column_constraint: NOT NULL */ +#line 701 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::NotNull; } -#line 4070 "bison_parser.cpp" +#line 4134 "bison_parser.cpp" break; - case 96: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ -#line 700 "bison_parser.y" + case 97: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ +#line 703 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::PrimaryKey, (yyvsp[-1].str_vec)); } -#line 4076 "bison_parser.cpp" +#line 4140 "bison_parser.cpp" break; - case 97: /* table_constraint: UNIQUE '(' ident_commalist ')' */ -#line 701 "bison_parser.y" + case 98: /* table_constraint: UNIQUE '(' ident_commalist ')' */ +#line 704 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::Unique, (yyvsp[-1].str_vec)); } -#line 4082 "bison_parser.cpp" +#line 4146 "bison_parser.cpp" break; - case 98: /* table_constraint: FOREIGN KEY '(' ident_commalist ')' references_spec */ -#line 702 "bison_parser.y" + case 99: /* table_constraint: FOREIGN KEY '(' ident_commalist ')' references_spec */ +#line 705 "bison_parser.y" { (yyval.table_constraint_t) = new ForeignKeyConstraint((yyvsp[-2].str_vec), (yyvsp[0].references_spec_t)); } -#line 4088 "bison_parser.cpp" +#line 4152 "bison_parser.cpp" break; - case 99: /* references_spec: REFERENCES table_name opt_column_list */ -#line 704 "bison_parser.y" + case 100: /* references_spec: REFERENCES table_name opt_column_list */ +#line 707 "bison_parser.y" { (yyval.references_spec_t) = new ReferencesSpecification((yyvsp[-1].table_name).schema, (yyvsp[-1].table_name).name, (yyvsp[0].str_vec)); } -#line 4094 "bison_parser.cpp" +#line 4158 "bison_parser.cpp" break; - case 100: /* drop_statement: DROP TABLE opt_exists table_name */ -#line 712 "bison_parser.y" + case 101: /* drop_statement: DROP TABLE opt_exists table_name */ +#line 715 "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 4105 "bison_parser.cpp" +#line 4169 "bison_parser.cpp" break; - case 101: /* drop_statement: DROP VIEW opt_exists table_name */ -#line 718 "bison_parser.y" + case 102: /* drop_statement: DROP VIEW opt_exists table_name */ +#line 721 "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 4116 "bison_parser.cpp" +#line 4180 "bison_parser.cpp" break; - case 102: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ -#line 724 "bison_parser.y" + case 103: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ +#line 727 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 4126 "bison_parser.cpp" +#line 4190 "bison_parser.cpp" break; - case 103: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ -#line 730 "bison_parser.y" + case 104: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ +#line 733 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropIndex); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->indexName = (yyvsp[0].sval); } -#line 4136 "bison_parser.cpp" +#line 4200 "bison_parser.cpp" break; - case 104: /* opt_exists: IF EXISTS */ -#line 736 "bison_parser.y" + case 105: /* opt_exists: IF EXISTS */ +#line 739 "bison_parser.y" { (yyval.bval) = true; } -#line 4142 "bison_parser.cpp" +#line 4206 "bison_parser.cpp" break; - case 105: /* opt_exists: %empty */ -#line 737 "bison_parser.y" + case 106: /* opt_exists: %empty */ +#line 740 "bison_parser.y" { (yyval.bval) = false; } -#line 4148 "bison_parser.cpp" +#line 4212 "bison_parser.cpp" break; - case 106: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ -#line 744 "bison_parser.y" + case 107: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ +#line 747 "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 4158 "bison_parser.cpp" +#line 4222 "bison_parser.cpp" break; - case 107: /* alter_action: drop_action */ -#line 750 "bison_parser.y" + case 108: /* alter_action: drop_action */ +#line 753 "bison_parser.y" { (yyval.alter_action_t) = (yyvsp[0].drop_action_t); } -#line 4164 "bison_parser.cpp" +#line 4228 "bison_parser.cpp" break; - case 108: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ -#line 752 "bison_parser.y" + case 109: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ +#line 755 "bison_parser.y" { (yyval.drop_action_t) = new DropColumnAction((yyvsp[0].sval)); (yyval.drop_action_t)->ifExists = (yyvsp[-1].bval); } -#line 4173 "bison_parser.cpp" +#line 4237 "bison_parser.cpp" break; - case 109: /* delete_statement: DELETE FROM table_name opt_where */ -#line 762 "bison_parser.y" + case 110: /* delete_statement: DELETE FROM table_name opt_where */ +#line 765 "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 4184 "bison_parser.cpp" +#line 4248 "bison_parser.cpp" break; - case 110: /* truncate_statement: TRUNCATE table_name */ -#line 769 "bison_parser.y" + case 111: /* truncate_statement: TRUNCATE table_name */ +#line 772 "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 4194 "bison_parser.cpp" +#line 4258 "bison_parser.cpp" break; - case 111: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' extended_literal_list ')' */ -#line 780 "bison_parser.y" + case 112: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' extended_literal_list ')' */ +#line 783 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -4202,11 +4266,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 4206 "bison_parser.cpp" +#line 4270 "bison_parser.cpp" break; - case 112: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ -#line 787 "bison_parser.y" + case 113: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ +#line 790 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -4214,80 +4278,80 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 4218 "bison_parser.cpp" +#line 4282 "bison_parser.cpp" break; - case 113: /* opt_column_list: '(' ident_commalist ')' */ -#line 795 "bison_parser.y" + case 114: /* opt_column_list: '(' ident_commalist ')' */ +#line 798 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 4224 "bison_parser.cpp" +#line 4288 "bison_parser.cpp" break; - case 114: /* opt_column_list: %empty */ -#line 796 "bison_parser.y" + case 115: /* opt_column_list: %empty */ +#line 799 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 4230 "bison_parser.cpp" +#line 4294 "bison_parser.cpp" break; - case 115: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ -#line 803 "bison_parser.y" + case 116: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ +#line 806 "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 4241 "bison_parser.cpp" +#line 4305 "bison_parser.cpp" break; - case 116: /* update_clause_commalist: update_clause */ -#line 810 "bison_parser.y" + case 117: /* update_clause_commalist: update_clause */ +#line 813 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 4250 "bison_parser.cpp" +#line 4314 "bison_parser.cpp" break; - case 117: /* update_clause_commalist: update_clause_commalist ',' update_clause */ -#line 814 "bison_parser.y" + case 118: /* update_clause_commalist: update_clause_commalist ',' update_clause */ +#line 817 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 4259 "bison_parser.cpp" +#line 4323 "bison_parser.cpp" break; - case 118: /* update_clause: IDENTIFIER '=' expr */ -#line 819 "bison_parser.y" + case 119: /* update_clause: IDENTIFIER '=' expr */ +#line 822 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 4269 "bison_parser.cpp" +#line 4333 "bison_parser.cpp" break; - case 119: /* select_statement: opt_with_clause select_with_paren */ -#line 829 "bison_parser.y" + case 120: /* select_statement: opt_with_clause select_with_paren */ +#line 832 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4278 "bison_parser.cpp" +#line 4342 "bison_parser.cpp" break; - case 120: /* select_statement: opt_with_clause select_no_paren */ -#line 833 "bison_parser.y" + case 121: /* select_statement: opt_with_clause select_no_paren */ +#line 836 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4287 "bison_parser.cpp" +#line 4351 "bison_parser.cpp" break; - case 121: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ -#line 837 "bison_parser.y" + case 122: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ +#line 840 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4299,17 +4363,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 4303 "bison_parser.cpp" +#line 4367 "bison_parser.cpp" break; - case 124: /* select_within_set_operation_no_parentheses: select_clause */ -#line 851 "bison_parser.y" + case 125: /* select_within_set_operation_no_parentheses: select_clause */ +#line 854 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 4309 "bison_parser.cpp" +#line 4373 "bison_parser.cpp" break; - case 125: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ -#line 852 "bison_parser.y" + case 126: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ +#line 855 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4318,23 +4382,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 4322 "bison_parser.cpp" +#line 4386 "bison_parser.cpp" break; - case 126: /* select_with_paren: '(' select_no_paren ')' */ -#line 861 "bison_parser.y" + case 127: /* select_with_paren: '(' select_no_paren ')' */ +#line 864 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4328 "bison_parser.cpp" +#line 4392 "bison_parser.cpp" break; - case 127: /* select_with_paren: '(' select_with_paren ')' */ -#line 862 "bison_parser.y" + case 128: /* select_with_paren: '(' select_with_paren ')' */ +#line 865 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4334 "bison_parser.cpp" +#line 4398 "bison_parser.cpp" break; - case 128: /* select_no_paren: select_clause opt_order opt_limit opt_locking_clause */ -#line 864 "bison_parser.y" + case 129: /* select_no_paren: select_clause opt_order opt_limit opt_locking_clause */ +#line 867 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-3].select_stmt); (yyval.select_stmt)->order = (yyvsp[-2].order_vec); @@ -4349,11 +4413,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } } -#line 4353 "bison_parser.cpp" +#line 4417 "bison_parser.cpp" break; - case 129: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit opt_locking_clause */ -#line 878 "bison_parser.y" + case 130: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit opt_locking_clause */ +#line 881 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-5].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4365,59 +4429,59 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[-1].limit); (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } -#line 4369 "bison_parser.cpp" +#line 4433 "bison_parser.cpp" break; - case 130: /* set_operator: set_type opt_all */ -#line 890 "bison_parser.y" + case 131: /* set_operator: set_type opt_all */ +#line 893 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 4378 "bison_parser.cpp" +#line 4442 "bison_parser.cpp" break; - case 131: /* set_type: UNION */ -#line 895 "bison_parser.y" + case 132: /* set_type: UNION */ +#line 898 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 4387 "bison_parser.cpp" +#line 4451 "bison_parser.cpp" break; - case 132: /* set_type: INTERSECT */ -#line 899 "bison_parser.y" + case 133: /* set_type: INTERSECT */ +#line 902 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 4396 "bison_parser.cpp" +#line 4460 "bison_parser.cpp" break; - case 133: /* set_type: EXCEPT */ -#line 903 "bison_parser.y" + case 134: /* set_type: EXCEPT */ +#line 906 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 4405 "bison_parser.cpp" +#line 4469 "bison_parser.cpp" break; - case 134: /* opt_all: ALL */ -#line 908 "bison_parser.y" + case 135: /* opt_all: ALL */ +#line 911 "bison_parser.y" { (yyval.bval) = true; } -#line 4411 "bison_parser.cpp" +#line 4475 "bison_parser.cpp" break; - case 135: /* opt_all: %empty */ -#line 909 "bison_parser.y" + case 136: /* opt_all: %empty */ +#line 912 "bison_parser.y" { (yyval.bval) = false; } -#line 4417 "bison_parser.cpp" +#line 4481 "bison_parser.cpp" break; - case 136: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ -#line 911 "bison_parser.y" + case 137: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ +#line 914 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -4427,239 +4491,239 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 4431 "bison_parser.cpp" +#line 4495 "bison_parser.cpp" break; - case 137: /* opt_distinct: DISTINCT */ -#line 921 "bison_parser.y" + case 138: /* opt_distinct: DISTINCT */ +#line 924 "bison_parser.y" { (yyval.bval) = true; } -#line 4437 "bison_parser.cpp" +#line 4501 "bison_parser.cpp" break; - case 138: /* opt_distinct: %empty */ -#line 922 "bison_parser.y" + case 139: /* opt_distinct: %empty */ +#line 925 "bison_parser.y" { (yyval.bval) = false; } -#line 4443 "bison_parser.cpp" +#line 4507 "bison_parser.cpp" break; - case 140: /* opt_from_clause: from_clause */ -#line 926 "bison_parser.y" + case 141: /* opt_from_clause: from_clause */ +#line 929 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4449 "bison_parser.cpp" +#line 4513 "bison_parser.cpp" break; - case 141: /* opt_from_clause: %empty */ -#line 927 "bison_parser.y" + case 142: /* opt_from_clause: %empty */ +#line 930 "bison_parser.y" { (yyval.table) = nullptr; } -#line 4455 "bison_parser.cpp" +#line 4519 "bison_parser.cpp" break; - case 142: /* from_clause: FROM table_ref */ -#line 929 "bison_parser.y" + case 143: /* from_clause: FROM table_ref */ +#line 932 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4461 "bison_parser.cpp" +#line 4525 "bison_parser.cpp" break; - case 143: /* opt_where: WHERE expr */ -#line 931 "bison_parser.y" + case 144: /* opt_where: WHERE expr */ +#line 934 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4467 "bison_parser.cpp" +#line 4531 "bison_parser.cpp" break; - case 144: /* opt_where: %empty */ -#line 932 "bison_parser.y" + case 145: /* opt_where: %empty */ +#line 935 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4473 "bison_parser.cpp" +#line 4537 "bison_parser.cpp" break; - case 145: /* opt_group: GROUP BY expr_list opt_having */ -#line 934 "bison_parser.y" + case 146: /* opt_group: GROUP BY expr_list opt_having */ +#line 937 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 4483 "bison_parser.cpp" +#line 4547 "bison_parser.cpp" break; - case 146: /* opt_group: %empty */ -#line 939 "bison_parser.y" + case 147: /* opt_group: %empty */ +#line 942 "bison_parser.y" { (yyval.group_t) = nullptr; } -#line 4489 "bison_parser.cpp" +#line 4553 "bison_parser.cpp" break; - case 147: /* opt_having: HAVING expr */ -#line 941 "bison_parser.y" + case 148: /* opt_having: HAVING expr */ +#line 944 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4495 "bison_parser.cpp" +#line 4559 "bison_parser.cpp" break; - case 148: /* opt_having: %empty */ -#line 942 "bison_parser.y" + case 149: /* opt_having: %empty */ +#line 945 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4501 "bison_parser.cpp" +#line 4565 "bison_parser.cpp" break; - case 149: /* opt_order: ORDER BY order_list */ -#line 944 "bison_parser.y" + case 150: /* opt_order: ORDER BY order_list */ +#line 947 "bison_parser.y" { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 4507 "bison_parser.cpp" +#line 4571 "bison_parser.cpp" break; - case 150: /* opt_order: %empty */ -#line 945 "bison_parser.y" + case 151: /* opt_order: %empty */ +#line 948 "bison_parser.y" { (yyval.order_vec) = nullptr; } -#line 4513 "bison_parser.cpp" +#line 4577 "bison_parser.cpp" break; - case 151: /* order_list: order_desc */ -#line 947 "bison_parser.y" + case 152: /* order_list: order_desc */ +#line 950 "bison_parser.y" { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 4522 "bison_parser.cpp" +#line 4586 "bison_parser.cpp" break; - case 152: /* order_list: order_list ',' order_desc */ -#line 951 "bison_parser.y" + case 153: /* order_list: order_list ',' order_desc */ +#line 954 "bison_parser.y" { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 4531 "bison_parser.cpp" +#line 4595 "bison_parser.cpp" break; - case 153: /* order_desc: expr opt_order_type */ -#line 956 "bison_parser.y" + case 154: /* order_desc: expr opt_order_type */ +#line 959 "bison_parser.y" { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 4537 "bison_parser.cpp" +#line 4601 "bison_parser.cpp" break; - case 154: /* opt_order_type: ASC */ -#line 958 "bison_parser.y" + case 155: /* opt_order_type: ASC */ +#line 961 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4543 "bison_parser.cpp" +#line 4607 "bison_parser.cpp" break; - case 155: /* opt_order_type: DESC */ -#line 959 "bison_parser.y" + case 156: /* opt_order_type: DESC */ +#line 962 "bison_parser.y" { (yyval.order_type) = kOrderDesc; } -#line 4549 "bison_parser.cpp" +#line 4613 "bison_parser.cpp" break; - case 156: /* opt_order_type: %empty */ -#line 960 "bison_parser.y" + case 157: /* opt_order_type: %empty */ +#line 963 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4555 "bison_parser.cpp" +#line 4619 "bison_parser.cpp" break; - case 157: /* opt_top: TOP int_literal */ -#line 964 "bison_parser.y" + case 158: /* opt_top: TOP int_literal */ +#line 967 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4561 "bison_parser.cpp" +#line 4625 "bison_parser.cpp" break; - case 158: /* opt_top: %empty */ -#line 965 "bison_parser.y" + case 159: /* opt_top: %empty */ +#line 968 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4567 "bison_parser.cpp" +#line 4631 "bison_parser.cpp" break; - case 159: /* opt_limit: LIMIT expr */ -#line 967 "bison_parser.y" + case 160: /* opt_limit: LIMIT expr */ +#line 970 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4573 "bison_parser.cpp" +#line 4637 "bison_parser.cpp" break; - case 160: /* opt_limit: OFFSET expr */ -#line 968 "bison_parser.y" + case 161: /* opt_limit: OFFSET expr */ +#line 971 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4579 "bison_parser.cpp" +#line 4643 "bison_parser.cpp" break; - case 161: /* opt_limit: LIMIT expr OFFSET expr */ -#line 969 "bison_parser.y" + case 162: /* opt_limit: LIMIT expr OFFSET expr */ +#line 972 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4585 "bison_parser.cpp" +#line 4649 "bison_parser.cpp" break; - case 162: /* opt_limit: LIMIT ALL */ -#line 970 "bison_parser.y" + case 163: /* opt_limit: LIMIT ALL */ +#line 973 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 4591 "bison_parser.cpp" +#line 4655 "bison_parser.cpp" break; - case 163: /* opt_limit: LIMIT ALL OFFSET expr */ -#line 971 "bison_parser.y" + case 164: /* opt_limit: LIMIT ALL OFFSET expr */ +#line 974 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4597 "bison_parser.cpp" +#line 4661 "bison_parser.cpp" break; - case 164: /* opt_limit: %empty */ -#line 972 "bison_parser.y" + case 165: /* opt_limit: %empty */ +#line 975 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4603 "bison_parser.cpp" +#line 4667 "bison_parser.cpp" break; - case 165: /* expr_list: expr_alias */ -#line 977 "bison_parser.y" + case 166: /* expr_list: expr_alias */ +#line 980 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4612 "bison_parser.cpp" +#line 4676 "bison_parser.cpp" break; - case 166: /* expr_list: expr_list ',' expr_alias */ -#line 981 "bison_parser.y" + case 167: /* expr_list: expr_list ',' expr_alias */ +#line 984 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4621 "bison_parser.cpp" +#line 4685 "bison_parser.cpp" break; - case 167: /* opt_extended_literal_list: extended_literal_list */ -#line 987 "bison_parser.y" + case 168: /* opt_extended_literal_list: extended_literal_list */ +#line 990 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4627 "bison_parser.cpp" +#line 4691 "bison_parser.cpp" break; - case 168: /* opt_extended_literal_list: %empty */ -#line 988 "bison_parser.y" + case 169: /* opt_extended_literal_list: %empty */ +#line 991 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4633 "bison_parser.cpp" +#line 4697 "bison_parser.cpp" break; - case 169: /* extended_literal_list: casted_extended_literal */ -#line 990 "bison_parser.y" + case 170: /* extended_literal_list: casted_extended_literal */ +#line 993 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4642 "bison_parser.cpp" +#line 4706 "bison_parser.cpp" break; - case 170: /* extended_literal_list: extended_literal_list ',' casted_extended_literal */ -#line 994 "bison_parser.y" + case 171: /* extended_literal_list: extended_literal_list ',' casted_extended_literal */ +#line 997 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4651 "bison_parser.cpp" +#line 4715 "bison_parser.cpp" break; - case 172: /* casted_extended_literal: CAST '(' extended_literal AS column_type ')' */ -#line 999 "bison_parser.y" + case 173: /* casted_extended_literal: CAST '(' extended_literal AS column_type ')' */ +#line 1002 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4659 "bison_parser.cpp" +#line 4723 "bison_parser.cpp" break; - case 173: /* extended_literal: literal */ -#line 1003 "bison_parser.y" + case 174: /* extended_literal: literal */ +#line 1006 "bison_parser.y" { if ((yyvsp[0].expr)->type == ExprType::kExprParameter) { delete (yyvsp[0].expr); @@ -4668,23 +4732,23 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = (yyvsp[0].expr); } -#line 4672 "bison_parser.cpp" +#line 4736 "bison_parser.cpp" break; - case 174: /* extended_literal: '-' num_literal */ -#line 1011 "bison_parser.y" + case 175: /* extended_literal: '-' num_literal */ +#line 1014 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4678 "bison_parser.cpp" +#line 4742 "bison_parser.cpp" break; - case 175: /* extended_literal: '-' interval_literal */ -#line 1012 "bison_parser.y" + case 176: /* extended_literal: '-' interval_literal */ +#line 1015 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4684 "bison_parser.cpp" +#line 4748 "bison_parser.cpp" break; - case 176: /* expr_alias: expr opt_alias */ -#line 1014 "bison_parser.y" + case 177: /* expr_alias: expr opt_alias */ +#line 1017 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -4693,507 +4757,507 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].alias_t); } } -#line 4697 "bison_parser.cpp" +#line 4761 "bison_parser.cpp" break; - case 182: /* operand: '(' expr ')' */ -#line 1025 "bison_parser.y" + case 183: /* operand: '(' expr ')' */ +#line 1028 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4703 "bison_parser.cpp" +#line 4767 "bison_parser.cpp" break; - case 192: /* operand: '(' select_no_paren ')' */ -#line 1027 "bison_parser.y" + case 193: /* operand: '(' select_no_paren ')' */ +#line 1030 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4711 "bison_parser.cpp" +#line 4775 "bison_parser.cpp" break; - case 195: /* unary_expr: '-' operand */ -#line 1033 "bison_parser.y" + case 196: /* unary_expr: '-' operand */ +#line 1036 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4717 "bison_parser.cpp" +#line 4781 "bison_parser.cpp" break; - case 196: /* unary_expr: NOT operand */ -#line 1034 "bison_parser.y" + case 197: /* unary_expr: NOT operand */ +#line 1037 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4723 "bison_parser.cpp" +#line 4787 "bison_parser.cpp" break; - case 197: /* unary_expr: operand ISNULL */ -#line 1035 "bison_parser.y" + case 198: /* unary_expr: operand ISNULL */ +#line 1038 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4729 "bison_parser.cpp" +#line 4793 "bison_parser.cpp" break; - case 198: /* unary_expr: operand IS NULL */ -#line 1036 "bison_parser.y" + case 199: /* unary_expr: operand IS NULL */ +#line 1039 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4735 "bison_parser.cpp" +#line 4799 "bison_parser.cpp" break; - case 199: /* unary_expr: operand IS NOT NULL */ -#line 1037 "bison_parser.y" + case 200: /* unary_expr: operand IS NOT NULL */ +#line 1040 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4741 "bison_parser.cpp" +#line 4805 "bison_parser.cpp" break; - case 201: /* binary_expr: operand '-' operand */ -#line 1039 "bison_parser.y" + case 202: /* binary_expr: operand '-' operand */ +#line 1042 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4747 "bison_parser.cpp" +#line 4811 "bison_parser.cpp" break; - case 202: /* binary_expr: operand '+' operand */ -#line 1040 "bison_parser.y" + case 203: /* binary_expr: operand '+' operand */ +#line 1043 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4753 "bison_parser.cpp" +#line 4817 "bison_parser.cpp" break; - case 203: /* binary_expr: operand '/' operand */ -#line 1041 "bison_parser.y" + case 204: /* binary_expr: operand '/' operand */ +#line 1044 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4759 "bison_parser.cpp" +#line 4823 "bison_parser.cpp" break; - case 204: /* binary_expr: operand '*' operand */ -#line 1042 "bison_parser.y" + case 205: /* binary_expr: operand '*' operand */ +#line 1045 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4765 "bison_parser.cpp" +#line 4829 "bison_parser.cpp" break; - case 205: /* binary_expr: operand '%' operand */ -#line 1043 "bison_parser.y" + case 206: /* binary_expr: operand '%' operand */ +#line 1046 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4771 "bison_parser.cpp" +#line 4835 "bison_parser.cpp" break; - case 206: /* binary_expr: operand '^' operand */ -#line 1044 "bison_parser.y" + case 207: /* binary_expr: operand '^' operand */ +#line 1047 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4777 "bison_parser.cpp" +#line 4841 "bison_parser.cpp" break; - case 207: /* binary_expr: operand LIKE operand */ -#line 1045 "bison_parser.y" + case 208: /* binary_expr: operand LIKE operand */ +#line 1048 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4783 "bison_parser.cpp" +#line 4847 "bison_parser.cpp" break; - case 208: /* binary_expr: operand NOT LIKE operand */ -#line 1046 "bison_parser.y" + case 209: /* binary_expr: operand NOT LIKE operand */ +#line 1049 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4789 "bison_parser.cpp" +#line 4853 "bison_parser.cpp" break; - case 209: /* binary_expr: operand ILIKE operand */ -#line 1047 "bison_parser.y" + case 210: /* binary_expr: operand ILIKE operand */ +#line 1050 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4795 "bison_parser.cpp" +#line 4859 "bison_parser.cpp" break; - case 210: /* binary_expr: operand CONCAT operand */ -#line 1048 "bison_parser.y" + case 211: /* binary_expr: operand CONCAT operand */ +#line 1051 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4801 "bison_parser.cpp" +#line 4865 "bison_parser.cpp" break; - case 211: /* logic_expr: expr AND expr */ -#line 1050 "bison_parser.y" + case 212: /* logic_expr: expr AND expr */ +#line 1053 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4807 "bison_parser.cpp" +#line 4871 "bison_parser.cpp" break; - case 212: /* logic_expr: expr OR expr */ -#line 1051 "bison_parser.y" + case 213: /* logic_expr: expr OR expr */ +#line 1054 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4813 "bison_parser.cpp" +#line 4877 "bison_parser.cpp" break; - case 213: /* in_expr: operand IN '(' expr_list ')' */ -#line 1053 "bison_parser.y" + case 214: /* in_expr: operand IN '(' expr_list ')' */ +#line 1056 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4819 "bison_parser.cpp" +#line 4883 "bison_parser.cpp" break; - case 214: /* in_expr: operand NOT IN '(' expr_list ')' */ -#line 1054 "bison_parser.y" + case 215: /* in_expr: operand NOT IN '(' expr_list ')' */ +#line 1057 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4825 "bison_parser.cpp" +#line 4889 "bison_parser.cpp" break; - case 215: /* in_expr: operand IN '(' select_no_paren ')' */ -#line 1055 "bison_parser.y" + case 216: /* in_expr: operand IN '(' select_no_paren ')' */ +#line 1058 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4831 "bison_parser.cpp" +#line 4895 "bison_parser.cpp" break; - case 216: /* in_expr: operand NOT IN '(' select_no_paren ')' */ -#line 1056 "bison_parser.y" + case 217: /* in_expr: operand NOT IN '(' select_no_paren ')' */ +#line 1059 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4837 "bison_parser.cpp" +#line 4901 "bison_parser.cpp" break; - case 217: /* case_expr: CASE expr case_list END */ -#line 1060 "bison_parser.y" + case 218: /* case_expr: CASE expr case_list END */ +#line 1063 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4843 "bison_parser.cpp" +#line 4907 "bison_parser.cpp" break; - case 218: /* case_expr: CASE expr case_list ELSE expr END */ -#line 1061 "bison_parser.y" + case 219: /* case_expr: CASE expr case_list ELSE expr END */ +#line 1064 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4849 "bison_parser.cpp" +#line 4913 "bison_parser.cpp" break; - case 219: /* case_expr: CASE case_list END */ -#line 1062 "bison_parser.y" + case 220: /* case_expr: CASE case_list END */ +#line 1065 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4855 "bison_parser.cpp" +#line 4919 "bison_parser.cpp" break; - case 220: /* case_expr: CASE case_list ELSE expr END */ -#line 1063 "bison_parser.y" + case 221: /* case_expr: CASE case_list ELSE expr END */ +#line 1066 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4861 "bison_parser.cpp" +#line 4925 "bison_parser.cpp" break; - case 221: /* case_list: WHEN expr THEN expr */ -#line 1065 "bison_parser.y" + case 222: /* case_list: WHEN expr THEN expr */ +#line 1068 "bison_parser.y" { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4867 "bison_parser.cpp" +#line 4931 "bison_parser.cpp" break; - case 222: /* case_list: case_list WHEN expr THEN expr */ -#line 1066 "bison_parser.y" + case 223: /* case_list: case_list WHEN expr THEN expr */ +#line 1069 "bison_parser.y" { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4873 "bison_parser.cpp" +#line 4937 "bison_parser.cpp" break; - case 223: /* exists_expr: EXISTS '(' select_no_paren ')' */ -#line 1068 "bison_parser.y" + case 224: /* exists_expr: EXISTS '(' select_no_paren ')' */ +#line 1071 "bison_parser.y" { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 4879 "bison_parser.cpp" +#line 4943 "bison_parser.cpp" break; - case 224: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ -#line 1069 "bison_parser.y" + case 225: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ +#line 1072 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 4885 "bison_parser.cpp" +#line 4949 "bison_parser.cpp" break; - case 225: /* comp_expr: operand '=' operand */ -#line 1071 "bison_parser.y" + case 226: /* comp_expr: operand '=' operand */ +#line 1074 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4891 "bison_parser.cpp" +#line 4955 "bison_parser.cpp" break; - case 226: /* comp_expr: operand EQUALS operand */ -#line 1072 "bison_parser.y" + case 227: /* comp_expr: operand EQUALS operand */ +#line 1075 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4897 "bison_parser.cpp" +#line 4961 "bison_parser.cpp" break; - case 227: /* comp_expr: operand NOTEQUALS operand */ -#line 1073 "bison_parser.y" + case 228: /* comp_expr: operand NOTEQUALS operand */ +#line 1076 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 4903 "bison_parser.cpp" +#line 4967 "bison_parser.cpp" break; - case 228: /* comp_expr: operand '<' operand */ -#line 1074 "bison_parser.y" + case 229: /* comp_expr: operand '<' operand */ +#line 1077 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 4909 "bison_parser.cpp" +#line 4973 "bison_parser.cpp" break; - case 229: /* comp_expr: operand '>' operand */ -#line 1075 "bison_parser.y" + case 230: /* comp_expr: operand '>' operand */ +#line 1078 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 4915 "bison_parser.cpp" +#line 4979 "bison_parser.cpp" break; - case 230: /* comp_expr: operand LESSEQ operand */ -#line 1076 "bison_parser.y" + case 231: /* comp_expr: operand LESSEQ operand */ +#line 1079 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 4921 "bison_parser.cpp" +#line 4985 "bison_parser.cpp" break; - case 231: /* comp_expr: operand GREATEREQ operand */ -#line 1077 "bison_parser.y" + case 232: /* comp_expr: operand GREATEREQ operand */ +#line 1080 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 4927 "bison_parser.cpp" +#line 4991 "bison_parser.cpp" break; - case 232: /* function_expr: IDENTIFIER '(' ')' opt_window */ -#line 1081 "bison_parser.y" + case 233: /* function_expr: IDENTIFIER '(' ')' opt_window */ +#line 1084 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-3].sval), new std::vector(), false, (yyvsp[0].window_description)); } -#line 4933 "bison_parser.cpp" +#line 4997 "bison_parser.cpp" break; - case 233: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' opt_window */ -#line 1082 "bison_parser.y" + case 234: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' opt_window */ +#line 1085 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-5].sval), (yyvsp[-2].expr_vec), (yyvsp[-3].bval), (yyvsp[0].window_description)); } -#line 4939 "bison_parser.cpp" +#line 5003 "bison_parser.cpp" break; - case 234: /* opt_window: OVER '(' opt_partition opt_order opt_frame_clause ')' */ -#line 1086 "bison_parser.y" + case 235: /* opt_window: OVER '(' opt_partition opt_order opt_frame_clause ')' */ +#line 1089 "bison_parser.y" { (yyval.window_description) = new WindowDescription((yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } -#line 4945 "bison_parser.cpp" +#line 5009 "bison_parser.cpp" break; - case 235: /* opt_window: %empty */ -#line 1087 "bison_parser.y" + case 236: /* opt_window: %empty */ +#line 1090 "bison_parser.y" { (yyval.window_description) = nullptr; } -#line 4951 "bison_parser.cpp" +#line 5015 "bison_parser.cpp" break; - case 236: /* opt_partition: PARTITION BY expr_list */ -#line 1089 "bison_parser.y" + case 237: /* opt_partition: PARTITION BY expr_list */ +#line 1092 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4957 "bison_parser.cpp" +#line 5021 "bison_parser.cpp" break; - case 237: /* opt_partition: %empty */ -#line 1090 "bison_parser.y" + case 238: /* opt_partition: %empty */ +#line 1093 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4963 "bison_parser.cpp" +#line 5027 "bison_parser.cpp" break; - case 238: /* opt_frame_clause: frame_type frame_bound */ -#line 1095 "bison_parser.y" + case 239: /* opt_frame_clause: frame_type frame_bound */ +#line 1098 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].frame_bound), new FrameBound{0, kCurrentRow, false}}; } -#line 4969 "bison_parser.cpp" +#line 5033 "bison_parser.cpp" break; - case 239: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ -#line 1096 "bison_parser.y" + case 240: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ +#line 1099 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].frame_bound), (yyvsp[0].frame_bound)}; } -#line 4975 "bison_parser.cpp" +#line 5039 "bison_parser.cpp" break; - case 240: /* opt_frame_clause: %empty */ -#line 1097 "bison_parser.y" + case 241: /* opt_frame_clause: %empty */ +#line 1100 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{kRange, new FrameBound{0, kPreceding, true}, new FrameBound{0, kCurrentRow, false}}; } -#line 4983 "bison_parser.cpp" +#line 5047 "bison_parser.cpp" break; - case 241: /* frame_type: RANGE */ -#line 1101 "bison_parser.y" + case 242: /* frame_type: RANGE */ +#line 1104 "bison_parser.y" { (yyval.frame_type) = kRange; } -#line 4989 "bison_parser.cpp" +#line 5053 "bison_parser.cpp" break; - case 242: /* frame_type: ROWS */ -#line 1102 "bison_parser.y" + case 243: /* frame_type: ROWS */ +#line 1105 "bison_parser.y" { (yyval.frame_type) = kRows; } -#line 4995 "bison_parser.cpp" +#line 5059 "bison_parser.cpp" break; - case 243: /* frame_type: GROUPS */ -#line 1103 "bison_parser.y" + case 244: /* frame_type: GROUPS */ +#line 1106 "bison_parser.y" { (yyval.frame_type) = kGroups; } -#line 5001 "bison_parser.cpp" +#line 5065 "bison_parser.cpp" break; - case 244: /* frame_bound: UNBOUNDED PRECEDING */ -#line 1105 "bison_parser.y" + case 245: /* frame_bound: UNBOUNDED PRECEDING */ +#line 1108 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kPreceding, true}; } -#line 5007 "bison_parser.cpp" +#line 5071 "bison_parser.cpp" break; - case 245: /* frame_bound: INTVAL PRECEDING */ -#line 1106 "bison_parser.y" + case 246: /* frame_bound: INTVAL PRECEDING */ +#line 1109 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kPreceding, false}; } -#line 5013 "bison_parser.cpp" +#line 5077 "bison_parser.cpp" break; - case 246: /* frame_bound: UNBOUNDED FOLLOWING */ -#line 1107 "bison_parser.y" + case 247: /* frame_bound: UNBOUNDED FOLLOWING */ +#line 1110 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kFollowing, true}; } -#line 5019 "bison_parser.cpp" +#line 5083 "bison_parser.cpp" break; - case 247: /* frame_bound: INTVAL FOLLOWING */ -#line 1108 "bison_parser.y" + case 248: /* frame_bound: INTVAL FOLLOWING */ +#line 1111 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kFollowing, false}; } -#line 5025 "bison_parser.cpp" +#line 5089 "bison_parser.cpp" break; - case 248: /* frame_bound: CURRENT_ROW */ -#line 1109 "bison_parser.y" + case 249: /* frame_bound: CURRENT_ROW */ +#line 1112 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kCurrentRow, false}; } -#line 5031 "bison_parser.cpp" +#line 5095 "bison_parser.cpp" break; - case 249: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 1111 "bison_parser.y" + case 250: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ +#line 1114 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 5037 "bison_parser.cpp" +#line 5101 "bison_parser.cpp" break; - case 250: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 1113 "bison_parser.y" + case 251: /* cast_expr: CAST '(' expr AS column_type ')' */ +#line 1116 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 5043 "bison_parser.cpp" +#line 5107 "bison_parser.cpp" break; - case 251: /* datetime_field: SECOND */ -#line 1115 "bison_parser.y" + case 252: /* datetime_field: SECOND */ +#line 1118 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 5049 "bison_parser.cpp" +#line 5113 "bison_parser.cpp" break; - case 252: /* datetime_field: MINUTE */ -#line 1116 "bison_parser.y" + case 253: /* datetime_field: MINUTE */ +#line 1119 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 5055 "bison_parser.cpp" +#line 5119 "bison_parser.cpp" break; - case 253: /* datetime_field: HOUR */ -#line 1117 "bison_parser.y" + case 254: /* datetime_field: HOUR */ +#line 1120 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 5061 "bison_parser.cpp" +#line 5125 "bison_parser.cpp" break; - case 254: /* datetime_field: DAY */ -#line 1118 "bison_parser.y" + case 255: /* datetime_field: DAY */ +#line 1121 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 5067 "bison_parser.cpp" +#line 5131 "bison_parser.cpp" break; - case 255: /* datetime_field: MONTH */ -#line 1119 "bison_parser.y" + case 256: /* datetime_field: MONTH */ +#line 1122 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 5073 "bison_parser.cpp" +#line 5137 "bison_parser.cpp" break; - case 256: /* datetime_field: YEAR */ -#line 1120 "bison_parser.y" + case 257: /* datetime_field: YEAR */ +#line 1123 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 5079 "bison_parser.cpp" +#line 5143 "bison_parser.cpp" break; - case 257: /* datetime_field_plural: SECONDS */ -#line 1122 "bison_parser.y" + case 258: /* datetime_field_plural: SECONDS */ +#line 1125 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 5085 "bison_parser.cpp" +#line 5149 "bison_parser.cpp" break; - case 258: /* datetime_field_plural: MINUTES */ -#line 1123 "bison_parser.y" + case 259: /* datetime_field_plural: MINUTES */ +#line 1126 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 5091 "bison_parser.cpp" +#line 5155 "bison_parser.cpp" break; - case 259: /* datetime_field_plural: HOURS */ -#line 1124 "bison_parser.y" + case 260: /* datetime_field_plural: HOURS */ +#line 1127 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 5097 "bison_parser.cpp" +#line 5161 "bison_parser.cpp" break; - case 260: /* datetime_field_plural: DAYS */ -#line 1125 "bison_parser.y" + case 261: /* datetime_field_plural: DAYS */ +#line 1128 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 5103 "bison_parser.cpp" +#line 5167 "bison_parser.cpp" break; - case 261: /* datetime_field_plural: MONTHS */ -#line 1126 "bison_parser.y" + case 262: /* datetime_field_plural: MONTHS */ +#line 1129 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 5109 "bison_parser.cpp" +#line 5173 "bison_parser.cpp" break; - case 262: /* datetime_field_plural: YEARS */ -#line 1127 "bison_parser.y" + case 263: /* datetime_field_plural: YEARS */ +#line 1130 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 5115 "bison_parser.cpp" +#line 5179 "bison_parser.cpp" break; - case 265: /* array_expr: ARRAY '[' expr_list ']' */ -#line 1131 "bison_parser.y" + case 266: /* array_expr: ARRAY '[' expr_list ']' */ +#line 1134 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 5121 "bison_parser.cpp" +#line 5185 "bison_parser.cpp" break; - case 266: /* array_index: operand '[' int_literal ']' */ -#line 1133 "bison_parser.y" + case 267: /* array_index: operand '[' int_literal ']' */ +#line 1136 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 5127 "bison_parser.cpp" +#line 5191 "bison_parser.cpp" break; - case 267: /* between_expr: operand BETWEEN operand AND operand */ -#line 1135 "bison_parser.y" + case 268: /* between_expr: operand BETWEEN operand AND operand */ +#line 1138 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 5133 "bison_parser.cpp" +#line 5197 "bison_parser.cpp" break; - case 268: /* column_name: IDENTIFIER */ -#line 1137 "bison_parser.y" + case 269: /* column_name: IDENTIFIER */ +#line 1140 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 5139 "bison_parser.cpp" +#line 5203 "bison_parser.cpp" break; - case 269: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 1138 "bison_parser.y" + case 270: /* column_name: IDENTIFIER '.' IDENTIFIER */ +#line 1141 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 5145 "bison_parser.cpp" +#line 5209 "bison_parser.cpp" break; - case 270: /* column_name: '*' */ -#line 1139 "bison_parser.y" + case 271: /* column_name: '*' */ +#line 1142 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 5151 "bison_parser.cpp" +#line 5215 "bison_parser.cpp" break; - case 271: /* column_name: IDENTIFIER '.' '*' */ -#line 1140 "bison_parser.y" + case 272: /* column_name: IDENTIFIER '.' '*' */ +#line 1143 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 5157 "bison_parser.cpp" +#line 5221 "bison_parser.cpp" break; - case 279: /* string_literal: STRING */ -#line 1144 "bison_parser.y" + case 285: /* string_literal: STRING */ +#line 1148 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 5163 "bison_parser.cpp" +#line 5227 "bison_parser.cpp" break; - case 280: /* bool_literal: TRUE */ -#line 1146 "bison_parser.y" + case 286: /* bool_literal: TRUE */ +#line 1150 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 5169 "bison_parser.cpp" +#line 5233 "bison_parser.cpp" break; - case 281: /* bool_literal: FALSE */ -#line 1147 "bison_parser.y" + case 287: /* bool_literal: FALSE */ +#line 1151 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 5175 "bison_parser.cpp" +#line 5239 "bison_parser.cpp" break; - case 282: /* num_literal: FLOATVAL */ -#line 1149 "bison_parser.y" + case 288: /* num_literal: FLOATVAL */ +#line 1153 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 5181 "bison_parser.cpp" +#line 5245 "bison_parser.cpp" break; - case 284: /* int_literal: INTVAL */ -#line 1152 "bison_parser.y" + case 290: /* int_literal: INTVAL */ +#line 1156 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 5187 "bison_parser.cpp" +#line 5251 "bison_parser.cpp" break; - case 285: /* null_literal: NULL */ -#line 1154 "bison_parser.y" + case 291: /* null_literal: NULL */ +#line 1158 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 5193 "bison_parser.cpp" +#line 5257 "bison_parser.cpp" break; - case 286: /* date_literal: DATE STRING */ -#line 1156 "bison_parser.y" + case 292: /* date_literal: DATE STRING */ +#line 1160 "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 @@ -5204,17 +5268,33 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeDateLiteral((yyvsp[0].sval)); } -#line 5208 "bison_parser.cpp" +#line 5272 "bison_parser.cpp" break; - case 287: /* interval_literal: INTVAL duration_field */ -#line 1167 "bison_parser.y" + case 293: /* timestamp_literal: TIMESTAMP STRING */ +#line 1171 "bison_parser.y" + { + (yyval.expr) = Expr::makeTimestampLiteral((yyvsp[0].sval)); +} +#line 5280 "bison_parser.cpp" + break; + + case 294: /* time_literal: TIME STRING */ +#line 1175 "bison_parser.y" + { + (yyval.expr) = Expr::makeTimeLiteral((yyvsp[0].sval)); +} +#line 5288 "bison_parser.cpp" + break; + + case 295: /* interval_literal: INTVAL duration_field */ +#line 1179 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].ival), (yyvsp[0].datetime_field)); } -#line 5214 "bison_parser.cpp" +#line 5294 "bison_parser.cpp" break; - case 288: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1168 "bison_parser.y" + case 296: /* interval_literal: INTERVAL STRING datetime_field */ +#line 1180 "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 @@ -5226,11 +5306,19 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].sval)); (yyval.expr) = Expr::makeIntervalLiteral(duration, (yyvsp[0].datetime_field)); } -#line 5230 "bison_parser.cpp" +#line 5310 "bison_parser.cpp" break; - case 289: /* interval_literal: INTERVAL STRING */ -#line 1179 "bison_parser.y" + case 297: /* interval_literal: INTERVAL INTVAL datetime_field */ +#line 1191 "bison_parser.y" + { + (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].ival), (yyvsp[0].datetime_field)); +} +#line 5318 "bison_parser.cpp" + break; + + case 298: /* interval_literal: INTERVAL STRING */ +#line 1194 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -5238,12 +5326,12 @@ YYLTYPE yylloc = yyloc_default; // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character if (sscanf((yyvsp[0].sval), "%d %7s%n", &duration, unit_string, &chars_parsed) != 2 || (yyvsp[0].sval)[chars_parsed] != 0) { free((yyvsp[0].sval)); - yyerror(&yyloc, result, scanner, "Found incorrect interval format. Expected format: INTEGER INTERVAL_QUALIIFIER"); + yyerror(&yyloc, result, scanner, "Found incorrect interval format. Expected format: INTEGER INTERVAL_QUALIFIER"); YYERROR; } free((yyvsp[0].sval)); - DatetimeField unit; + DatetimeField unit = kDatetimeNone; if (strcasecmp(unit_string, "second") == 0 || strcasecmp(unit_string, "seconds") == 0) { unit = kDatetimeSecond; } else if (strcasecmp(unit_string, "minute") == 0 || strcasecmp(unit_string, "minutes") == 0) { @@ -5262,61 +5350,79 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeIntervalLiteral(duration, unit); } -#line 5266 "bison_parser.cpp" +#line 5354 "bison_parser.cpp" break; - case 290: /* param_expr: '?' */ -#line 1211 "bison_parser.y" + case 299: /* param_expr: '?' */ +#line 1226 "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 5276 "bison_parser.cpp" +#line 5364 "bison_parser.cpp" + break; + + case 300: /* current_timestamp: CURRENT_TIMESTAMP */ +#line 1232 "bison_parser.y" + { (yyval.expr) = Expr::makeCurrentTimestamp(); } +#line 5370 "bison_parser.cpp" + break; + + case 301: /* current_date: CURRENT_DATE */ +#line 1234 "bison_parser.y" + { (yyval.expr) = Expr::makeCurrentDate(); } +#line 5376 "bison_parser.cpp" + break; + + case 302: /* current_time: CURRENT_TIME */ +#line 1236 "bison_parser.y" + { (yyval.expr) = Expr::makeCurrentTime(); } +#line 5382 "bison_parser.cpp" break; - case 292: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1220 "bison_parser.y" + case 304: /* table_ref: table_ref_commalist ',' table_ref_atomic */ +#line 1241 "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 5287 "bison_parser.cpp" +#line 5393 "bison_parser.cpp" break; - case 296: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1229 "bison_parser.y" + case 308: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ +#line 1250 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5298 "bison_parser.cpp" +#line 5404 "bison_parser.cpp" break; - case 297: /* table_ref_commalist: table_ref_atomic */ -#line 1236 "bison_parser.y" + case 309: /* table_ref_commalist: table_ref_atomic */ +#line 1257 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 5307 "bison_parser.cpp" +#line 5413 "bison_parser.cpp" break; - case 298: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1240 "bison_parser.y" + case 310: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ +#line 1261 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 5316 "bison_parser.cpp" +#line 5422 "bison_parser.cpp" break; - case 299: /* table_ref_name: table_name opt_table_alias */ -#line 1245 "bison_parser.y" + case 311: /* table_ref_name: table_name opt_table_alias */ +#line 1266 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -5324,215 +5430,215 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5328 "bison_parser.cpp" +#line 5434 "bison_parser.cpp" break; - case 300: /* table_ref_name_no_alias: table_name */ -#line 1253 "bison_parser.y" + case 312: /* table_ref_name_no_alias: table_name */ +#line 1274 "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 5338 "bison_parser.cpp" +#line 5444 "bison_parser.cpp" break; - case 301: /* table_name: IDENTIFIER */ -#line 1259 "bison_parser.y" + case 313: /* table_name: IDENTIFIER */ +#line 1280 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval); } -#line 5347 "bison_parser.cpp" +#line 5453 "bison_parser.cpp" break; - case 302: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1263 "bison_parser.y" + case 314: /* table_name: IDENTIFIER '.' IDENTIFIER */ +#line 1284 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 5356 "bison_parser.cpp" +#line 5462 "bison_parser.cpp" break; - case 303: /* opt_index_name: IDENTIFIER */ -#line 1268 "bison_parser.y" + case 315: /* opt_index_name: IDENTIFIER */ +#line 1289 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 5362 "bison_parser.cpp" +#line 5468 "bison_parser.cpp" break; - case 304: /* opt_index_name: %empty */ -#line 1269 "bison_parser.y" + case 316: /* opt_index_name: %empty */ +#line 1290 "bison_parser.y" { (yyval.sval) = nullptr; } -#line 5368 "bison_parser.cpp" +#line 5474 "bison_parser.cpp" break; - case 306: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1271 "bison_parser.y" + case 318: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ +#line 1292 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 5374 "bison_parser.cpp" +#line 5480 "bison_parser.cpp" break; - case 308: /* opt_table_alias: %empty */ -#line 1273 "bison_parser.y" + case 320: /* opt_table_alias: %empty */ +#line 1294 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5380 "bison_parser.cpp" +#line 5486 "bison_parser.cpp" break; - case 309: /* alias: AS IDENTIFIER */ -#line 1275 "bison_parser.y" + case 321: /* alias: AS IDENTIFIER */ +#line 1296 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5386 "bison_parser.cpp" +#line 5492 "bison_parser.cpp" break; - case 310: /* alias: IDENTIFIER */ -#line 1276 "bison_parser.y" + case 322: /* alias: IDENTIFIER */ +#line 1297 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5392 "bison_parser.cpp" +#line 5498 "bison_parser.cpp" break; - case 312: /* opt_alias: %empty */ -#line 1278 "bison_parser.y" + case 324: /* opt_alias: %empty */ +#line 1299 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5398 "bison_parser.cpp" +#line 5504 "bison_parser.cpp" break; - case 313: /* opt_locking_clause: opt_locking_clause_list */ -#line 1284 "bison_parser.y" + case 325: /* opt_locking_clause: opt_locking_clause_list */ +#line 1305 "bison_parser.y" { (yyval.locking_clause_vec) = (yyvsp[0].locking_clause_vec); } -#line 5404 "bison_parser.cpp" +#line 5510 "bison_parser.cpp" break; - case 314: /* opt_locking_clause: %empty */ -#line 1285 "bison_parser.y" + case 326: /* opt_locking_clause: %empty */ +#line 1306 "bison_parser.y" { (yyval.locking_clause_vec) = nullptr; } -#line 5410 "bison_parser.cpp" +#line 5516 "bison_parser.cpp" break; - case 315: /* opt_locking_clause_list: locking_clause */ -#line 1287 "bison_parser.y" + case 327: /* opt_locking_clause_list: locking_clause */ +#line 1308 "bison_parser.y" { (yyval.locking_clause_vec) = new std::vector(); (yyval.locking_clause_vec)->push_back((yyvsp[0].locking_t)); } -#line 5419 "bison_parser.cpp" +#line 5525 "bison_parser.cpp" break; - case 316: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ -#line 1291 "bison_parser.y" + case 328: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ +#line 1312 "bison_parser.y" { (yyvsp[-1].locking_clause_vec)->push_back((yyvsp[0].locking_t)); (yyval.locking_clause_vec) = (yyvsp[-1].locking_clause_vec); } -#line 5428 "bison_parser.cpp" +#line 5534 "bison_parser.cpp" break; - case 317: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ -#line 1296 "bison_parser.y" + case 329: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ +#line 1317 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-1].lock_mode_t); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); (yyval.locking_t)->tables = nullptr; } -#line 5439 "bison_parser.cpp" +#line 5545 "bison_parser.cpp" break; - case 318: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ -#line 1302 "bison_parser.y" + case 330: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ +#line 1323 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-3].lock_mode_t); (yyval.locking_t)->tables = (yyvsp[-1].str_vec); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); } -#line 5450 "bison_parser.cpp" +#line 5556 "bison_parser.cpp" break; - case 319: /* row_lock_mode: UPDATE */ -#line 1309 "bison_parser.y" + case 331: /* row_lock_mode: UPDATE */ +#line 1330 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForUpdate; } -#line 5456 "bison_parser.cpp" +#line 5562 "bison_parser.cpp" break; - case 320: /* row_lock_mode: NO KEY UPDATE */ -#line 1310 "bison_parser.y" + case 332: /* row_lock_mode: NO KEY UPDATE */ +#line 1331 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForNoKeyUpdate; } -#line 5462 "bison_parser.cpp" +#line 5568 "bison_parser.cpp" break; - case 321: /* row_lock_mode: SHARE */ -#line 1311 "bison_parser.y" + case 333: /* row_lock_mode: SHARE */ +#line 1332 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForShare; } -#line 5468 "bison_parser.cpp" +#line 5574 "bison_parser.cpp" break; - case 322: /* row_lock_mode: KEY SHARE */ -#line 1312 "bison_parser.y" + case 334: /* row_lock_mode: KEY SHARE */ +#line 1333 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForKeyShare; } -#line 5474 "bison_parser.cpp" +#line 5580 "bison_parser.cpp" break; - case 323: /* opt_row_lock_policy: SKIP LOCKED */ -#line 1314 "bison_parser.y" + case 335: /* opt_row_lock_policy: SKIP LOCKED */ +#line 1335 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::SkipLocked; } -#line 5480 "bison_parser.cpp" +#line 5586 "bison_parser.cpp" break; - case 324: /* opt_row_lock_policy: NOWAIT */ -#line 1315 "bison_parser.y" + case 336: /* opt_row_lock_policy: NOWAIT */ +#line 1336 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::NoWait; } -#line 5486 "bison_parser.cpp" +#line 5592 "bison_parser.cpp" break; - case 325: /* opt_row_lock_policy: %empty */ -#line 1316 "bison_parser.y" + case 337: /* opt_row_lock_policy: %empty */ +#line 1337 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::None; } -#line 5492 "bison_parser.cpp" +#line 5598 "bison_parser.cpp" break; - case 327: /* opt_with_clause: %empty */ -#line 1322 "bison_parser.y" + case 339: /* opt_with_clause: %empty */ +#line 1343 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 5498 "bison_parser.cpp" +#line 5604 "bison_parser.cpp" break; - case 328: /* with_clause: WITH with_description_list */ -#line 1324 "bison_parser.y" + case 340: /* with_clause: WITH with_description_list */ +#line 1345 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 5504 "bison_parser.cpp" +#line 5610 "bison_parser.cpp" break; - case 329: /* with_description_list: with_description */ -#line 1326 "bison_parser.y" + case 341: /* with_description_list: with_description */ +#line 1347 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 5513 "bison_parser.cpp" +#line 5619 "bison_parser.cpp" break; - case 330: /* with_description_list: with_description_list ',' with_description */ -#line 1330 "bison_parser.y" + case 342: /* with_description_list: with_description_list ',' with_description */ +#line 1351 "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 5522 "bison_parser.cpp" +#line 5628 "bison_parser.cpp" break; - case 331: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1335 "bison_parser.y" + case 343: /* with_description: IDENTIFIER AS select_with_paren */ +#line 1356 "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 5532 "bison_parser.cpp" +#line 5638 "bison_parser.cpp" break; - case 332: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1345 "bison_parser.y" + case 344: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ +#line 1366 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5540,11 +5646,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 5544 "bison_parser.cpp" +#line 5650 "bison_parser.cpp" break; - case 333: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1352 "bison_parser.y" + case 345: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ +#line 1373 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5553,11 +5659,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 5557 "bison_parser.cpp" +#line 5663 "bison_parser.cpp" break; - case 334: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' ident_commalist ')' */ -#line 1360 "bison_parser.y" + case 346: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' ident_commalist ')' */ +#line 1381 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5566,89 +5672,89 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-4].table); (yyval.table)->join->namedColumns = (yyvsp[-1].str_vec); } -#line 5570 "bison_parser.cpp" +#line 5676 "bison_parser.cpp" break; - case 335: /* opt_join_type: INNER */ -#line 1369 "bison_parser.y" + case 347: /* opt_join_type: INNER */ +#line 1390 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5576 "bison_parser.cpp" +#line 5682 "bison_parser.cpp" break; - case 336: /* opt_join_type: LEFT OUTER */ -#line 1370 "bison_parser.y" + case 348: /* opt_join_type: LEFT OUTER */ +#line 1391 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5582 "bison_parser.cpp" +#line 5688 "bison_parser.cpp" break; - case 337: /* opt_join_type: LEFT */ -#line 1371 "bison_parser.y" + case 349: /* opt_join_type: LEFT */ +#line 1392 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5588 "bison_parser.cpp" +#line 5694 "bison_parser.cpp" break; - case 338: /* opt_join_type: RIGHT OUTER */ -#line 1372 "bison_parser.y" + case 350: /* opt_join_type: RIGHT OUTER */ +#line 1393 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5594 "bison_parser.cpp" +#line 5700 "bison_parser.cpp" break; - case 339: /* opt_join_type: RIGHT */ -#line 1373 "bison_parser.y" + case 351: /* opt_join_type: RIGHT */ +#line 1394 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5600 "bison_parser.cpp" +#line 5706 "bison_parser.cpp" break; - case 340: /* opt_join_type: FULL OUTER */ -#line 1374 "bison_parser.y" + case 352: /* opt_join_type: FULL OUTER */ +#line 1395 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5606 "bison_parser.cpp" +#line 5712 "bison_parser.cpp" break; - case 341: /* opt_join_type: OUTER */ -#line 1375 "bison_parser.y" + case 353: /* opt_join_type: OUTER */ +#line 1396 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5612 "bison_parser.cpp" +#line 5718 "bison_parser.cpp" break; - case 342: /* opt_join_type: FULL */ -#line 1376 "bison_parser.y" + case 354: /* opt_join_type: FULL */ +#line 1397 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5618 "bison_parser.cpp" +#line 5724 "bison_parser.cpp" break; - case 343: /* opt_join_type: CROSS */ -#line 1377 "bison_parser.y" + case 355: /* opt_join_type: CROSS */ +#line 1398 "bison_parser.y" { (yyval.join_type) = kJoinCross; } -#line 5624 "bison_parser.cpp" +#line 5730 "bison_parser.cpp" break; - case 344: /* opt_join_type: %empty */ -#line 1378 "bison_parser.y" + case 356: /* opt_join_type: %empty */ +#line 1399 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5630 "bison_parser.cpp" +#line 5736 "bison_parser.cpp" break; - case 348: /* ident_commalist: IDENTIFIER */ -#line 1389 "bison_parser.y" + case 360: /* ident_commalist: IDENTIFIER */ +#line 1410 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 5639 "bison_parser.cpp" +#line 5745 "bison_parser.cpp" break; - case 349: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1393 "bison_parser.y" + case 361: /* ident_commalist: ident_commalist ',' IDENTIFIER */ +#line 1414 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 5648 "bison_parser.cpp" +#line 5754 "bison_parser.cpp" break; -#line 5652 "bison_parser.cpp" +#line 5758 "bison_parser.cpp" default: break; } @@ -5877,7 +5983,7 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1399 "bison_parser.y" +#line 1420 "bison_parser.y" /********************************* diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index 8357584b..a3aa1963 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -96,176 +96,179 @@ extern int hsql_debug; 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_ENCODING = 279, /* ENCODING */ - SQL_INTEGER = 280, /* INTEGER */ - SQL_NATURAL = 281, /* NATURAL */ - SQL_PREPARE = 282, /* PREPARE */ - SQL_SCHEMAS = 283, /* SCHEMAS */ - SQL_CHARACTER_VARYING = 284, /* CHARACTER_VARYING */ - SQL_REAL = 285, /* REAL */ - SQL_DECIMAL = 286, /* DECIMAL */ - SQL_SMALLINT = 287, /* SMALLINT */ - SQL_BIGINT = 288, /* BIGINT */ - 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_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_OVER = 332, /* OVER */ - 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_PARTITION = 360, /* PARTITION */ - SQL_PLAN = 361, /* PLAN */ - SQL_SHOW = 362, /* SHOW */ - SQL_TEXT = 363, /* TEXT */ - SQL_THEN = 364, /* THEN */ - SQL_TIME = 365, /* TIME */ - SQL_VIEW = 366, /* VIEW */ - SQL_WHEN = 367, /* WHEN */ - SQL_WITH = 368, /* WITH */ - SQL_ADD = 369, /* ADD */ - SQL_ALL = 370, /* ALL */ - SQL_AND = 371, /* AND */ - SQL_ASC = 372, /* ASC */ - SQL_END = 373, /* END */ - SQL_FOR = 374, /* FOR */ - SQL_INT = 375, /* INT */ - 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_NO = 389, /* NO */ - SQL_ARRAY = 390, /* ARRAY */ - SQL_CONCAT = 391, /* CONCAT */ - SQL_ILIKE = 392, /* ILIKE */ - SQL_SECOND = 393, /* SECOND */ - SQL_MINUTE = 394, /* MINUTE */ - SQL_HOUR = 395, /* HOUR */ - SQL_DAY = 396, /* DAY */ - SQL_MONTH = 397, /* MONTH */ - SQL_YEAR = 398, /* YEAR */ - SQL_SECONDS = 399, /* SECONDS */ - SQL_MINUTES = 400, /* MINUTES */ - SQL_HOURS = 401, /* HOURS */ - SQL_DAYS = 402, /* DAYS */ - SQL_MONTHS = 403, /* MONTHS */ - SQL_YEARS = 404, /* YEARS */ - SQL_INTERVAL = 405, /* INTERVAL */ - SQL_TRUE = 406, /* TRUE */ - SQL_FALSE = 407, /* FALSE */ - SQL_BOOLEAN = 408, /* BOOLEAN */ - SQL_TRANSACTION = 409, /* TRANSACTION */ - SQL_BEGIN = 410, /* BEGIN */ - SQL_COMMIT = 411, /* COMMIT */ - SQL_ROLLBACK = 412, /* ROLLBACK */ - SQL_NOWAIT = 413, /* NOWAIT */ - SQL_SKIP = 414, /* SKIP */ - SQL_LOCKED = 415, /* LOCKED */ - SQL_SHARE = 416, /* SHARE */ - SQL_RANGE = 417, /* RANGE */ - SQL_ROWS = 418, /* ROWS */ - SQL_GROUPS = 419, /* GROUPS */ - SQL_UNBOUNDED = 420, /* UNBOUNDED */ - SQL_FOLLOWING = 421, /* FOLLOWING */ - SQL_PRECEDING = 422, /* PRECEDING */ - SQL_CURRENT_ROW = 423, /* CURRENT_ROW */ - SQL_UNIQUE = 424, /* UNIQUE */ - SQL_PRIMARY = 425, /* PRIMARY */ - SQL_FOREIGN = 426, /* FOREIGN */ - SQL_KEY = 427, /* KEY */ - SQL_REFERENCES = 428, /* REFERENCES */ - SQL_EQUALS = 429, /* EQUALS */ - SQL_NOTEQUALS = 430, /* NOTEQUALS */ - SQL_LESS = 431, /* LESS */ - SQL_GREATER = 432, /* GREATER */ - SQL_LESSEQ = 433, /* LESSEQ */ - SQL_GREATEREQ = 434, /* GREATEREQ */ - SQL_NOTNULL = 435, /* NOTNULL */ - SQL_UMINUS = 436 /* UMINUS */ + SQL_CURRENT_TIMESTAMP = 267, /* CURRENT_TIMESTAMP */ + SQL_CURRENT_DATE = 268, /* CURRENT_DATE */ + SQL_CURRENT_TIME = 269, /* CURRENT_TIME */ + SQL_DISTINCT = 270, /* DISTINCT */ + SQL_NVARCHAR = 271, /* NVARCHAR */ + SQL_RESTRICT = 272, /* RESTRICT */ + SQL_TRUNCATE = 273, /* TRUNCATE */ + SQL_ANALYZE = 274, /* ANALYZE */ + SQL_BETWEEN = 275, /* BETWEEN */ + SQL_CASCADE = 276, /* CASCADE */ + SQL_COLUMNS = 277, /* COLUMNS */ + SQL_CONTROL = 278, /* CONTROL */ + SQL_DEFAULT = 279, /* DEFAULT */ + SQL_EXECUTE = 280, /* EXECUTE */ + SQL_EXPLAIN = 281, /* EXPLAIN */ + SQL_ENCODING = 282, /* ENCODING */ + SQL_INTEGER = 283, /* INTEGER */ + SQL_NATURAL = 284, /* NATURAL */ + SQL_PREPARE = 285, /* PREPARE */ + SQL_SCHEMAS = 286, /* SCHEMAS */ + SQL_CHARACTER_VARYING = 287, /* CHARACTER_VARYING */ + SQL_REAL = 288, /* REAL */ + SQL_DECIMAL = 289, /* DECIMAL */ + SQL_SMALLINT = 290, /* SMALLINT */ + SQL_BIGINT = 291, /* BIGINT */ + SQL_SPATIAL = 292, /* SPATIAL */ + SQL_VARCHAR = 293, /* VARCHAR */ + SQL_VIRTUAL = 294, /* VIRTUAL */ + SQL_DESCRIBE = 295, /* DESCRIBE */ + SQL_BEFORE = 296, /* BEFORE */ + SQL_COLUMN = 297, /* COLUMN */ + SQL_CREATE = 298, /* CREATE */ + SQL_DELETE = 299, /* DELETE */ + SQL_DIRECT = 300, /* DIRECT */ + SQL_DOUBLE = 301, /* DOUBLE */ + SQL_ESCAPE = 302, /* ESCAPE */ + SQL_EXCEPT = 303, /* EXCEPT */ + SQL_EXISTS = 304, /* EXISTS */ + SQL_EXTRACT = 305, /* EXTRACT */ + SQL_CAST = 306, /* CAST */ + SQL_FORMAT = 307, /* FORMAT */ + SQL_GLOBAL = 308, /* GLOBAL */ + SQL_HAVING = 309, /* HAVING */ + SQL_IMPORT = 310, /* IMPORT */ + SQL_INSERT = 311, /* INSERT */ + SQL_ISNULL = 312, /* ISNULL */ + SQL_OFFSET = 313, /* OFFSET */ + SQL_RENAME = 314, /* RENAME */ + SQL_SCHEMA = 315, /* SCHEMA */ + SQL_SELECT = 316, /* SELECT */ + SQL_SORTED = 317, /* SORTED */ + SQL_TABLES = 318, /* TABLES */ + SQL_UNLOAD = 319, /* UNLOAD */ + SQL_UPDATE = 320, /* UPDATE */ + SQL_VALUES = 321, /* VALUES */ + SQL_AFTER = 322, /* AFTER */ + SQL_ALTER = 323, /* ALTER */ + SQL_CROSS = 324, /* CROSS */ + SQL_DELTA = 325, /* DELTA */ + SQL_FLOAT = 326, /* FLOAT */ + SQL_GROUP = 327, /* GROUP */ + SQL_INDEX = 328, /* INDEX */ + SQL_INNER = 329, /* INNER */ + SQL_LIMIT = 330, /* LIMIT */ + SQL_LOCAL = 331, /* LOCAL */ + SQL_MERGE = 332, /* MERGE */ + SQL_MINUS = 333, /* MINUS */ + SQL_ORDER = 334, /* ORDER */ + SQL_OVER = 335, /* OVER */ + SQL_OUTER = 336, /* OUTER */ + SQL_RIGHT = 337, /* RIGHT */ + SQL_TABLE = 338, /* TABLE */ + SQL_UNION = 339, /* UNION */ + SQL_USING = 340, /* USING */ + SQL_WHERE = 341, /* WHERE */ + SQL_CALL = 342, /* CALL */ + SQL_CASE = 343, /* CASE */ + SQL_CHAR = 344, /* CHAR */ + SQL_COPY = 345, /* COPY */ + SQL_DATE = 346, /* DATE */ + SQL_DATETIME = 347, /* DATETIME */ + SQL_DESC = 348, /* DESC */ + SQL_DROP = 349, /* DROP */ + SQL_ELSE = 350, /* ELSE */ + SQL_FILE = 351, /* FILE */ + SQL_FROM = 352, /* FROM */ + SQL_FULL = 353, /* FULL */ + SQL_HASH = 354, /* HASH */ + SQL_HINT = 355, /* HINT */ + SQL_INTO = 356, /* INTO */ + SQL_JOIN = 357, /* JOIN */ + SQL_LEFT = 358, /* LEFT */ + SQL_LIKE = 359, /* LIKE */ + SQL_LOAD = 360, /* LOAD */ + SQL_LONG = 361, /* LONG */ + SQL_NULL = 362, /* NULL */ + SQL_PARTITION = 363, /* PARTITION */ + SQL_PLAN = 364, /* PLAN */ + SQL_SHOW = 365, /* SHOW */ + SQL_TEXT = 366, /* TEXT */ + SQL_THEN = 367, /* THEN */ + SQL_TIME = 368, /* TIME */ + SQL_VIEW = 369, /* VIEW */ + SQL_WHEN = 370, /* WHEN */ + SQL_WITH = 371, /* WITH */ + SQL_ADD = 372, /* ADD */ + SQL_ALL = 373, /* ALL */ + SQL_AND = 374, /* AND */ + SQL_ASC = 375, /* ASC */ + SQL_END = 376, /* END */ + SQL_FOR = 377, /* FOR */ + SQL_INT = 378, /* INT */ + SQL_NOT = 379, /* NOT */ + SQL_OFF = 380, /* OFF */ + SQL_SET = 381, /* SET */ + SQL_TOP = 382, /* TOP */ + SQL_AS = 383, /* AS */ + SQL_BY = 384, /* BY */ + SQL_IF = 385, /* IF */ + SQL_IN = 386, /* IN */ + SQL_IS = 387, /* IS */ + SQL_OF = 388, /* OF */ + SQL_ON = 389, /* ON */ + SQL_OR = 390, /* OR */ + SQL_TO = 391, /* TO */ + SQL_NO = 392, /* NO */ + SQL_ARRAY = 393, /* ARRAY */ + SQL_CONCAT = 394, /* CONCAT */ + SQL_ILIKE = 395, /* ILIKE */ + SQL_SECOND = 396, /* SECOND */ + SQL_MINUTE = 397, /* MINUTE */ + SQL_HOUR = 398, /* HOUR */ + SQL_DAY = 399, /* DAY */ + SQL_MONTH = 400, /* MONTH */ + SQL_YEAR = 401, /* YEAR */ + SQL_SECONDS = 402, /* SECONDS */ + SQL_MINUTES = 403, /* MINUTES */ + SQL_HOURS = 404, /* HOURS */ + SQL_DAYS = 405, /* DAYS */ + SQL_MONTHS = 406, /* MONTHS */ + SQL_YEARS = 407, /* YEARS */ + SQL_INTERVAL = 408, /* INTERVAL */ + SQL_TRUE = 409, /* TRUE */ + SQL_FALSE = 410, /* FALSE */ + SQL_BOOLEAN = 411, /* BOOLEAN */ + SQL_TRANSACTION = 412, /* TRANSACTION */ + SQL_BEGIN = 413, /* BEGIN */ + SQL_COMMIT = 414, /* COMMIT */ + SQL_ROLLBACK = 415, /* ROLLBACK */ + SQL_NOWAIT = 416, /* NOWAIT */ + SQL_SKIP = 417, /* SKIP */ + SQL_LOCKED = 418, /* LOCKED */ + SQL_SHARE = 419, /* SHARE */ + SQL_RANGE = 420, /* RANGE */ + SQL_ROWS = 421, /* ROWS */ + SQL_GROUPS = 422, /* GROUPS */ + SQL_UNBOUNDED = 423, /* UNBOUNDED */ + SQL_FOLLOWING = 424, /* FOLLOWING */ + SQL_PRECEDING = 425, /* PRECEDING */ + SQL_CURRENT_ROW = 426, /* CURRENT_ROW */ + SQL_UNIQUE = 427, /* UNIQUE */ + SQL_PRIMARY = 428, /* PRIMARY */ + SQL_FOREIGN = 429, /* FOREIGN */ + SQL_KEY = 430, /* KEY */ + SQL_REFERENCES = 431, /* REFERENCES */ + SQL_EQUALS = 432, /* EQUALS */ + SQL_NOTEQUALS = 433, /* NOTEQUALS */ + SQL_LESS = 434, /* LESS */ + SQL_GREATER = 435, /* GREATER */ + SQL_LESSEQ = 436, /* LESSEQ */ + SQL_GREATEREQ = 437, /* GREATEREQ */ + SQL_NOTNULL = 438, /* NOTNULL */ + SQL_UMINUS = 439 /* UMINUS */ }; typedef enum hsql_tokentype hsql_token_kind_t; #endif @@ -347,7 +350,7 @@ union HSQL_STYPE // clang-format off -#line 351 "bison_parser.h" +#line 354 "bison_parser.h" }; typedef union HSQL_STYPE HSQL_STYPE; diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index f907a494..9ec4dced 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -210,6 +210,7 @@ /* SQL Keywords */ %token DEALLOCATE PARAMETERS INTERSECT TEMPORARY TIMESTAMP +%token CURRENT_TIMESTAMP CURRENT_DATE CURRENT_TIME %token DISTINCT NVARCHAR RESTRICT TRUNCATE ANALYZE BETWEEN %token CASCADE COLUMNS CONTROL DEFAULT EXECUTE EXPLAIN ENCODING %token INTEGER NATURAL PREPARE SCHEMAS CHARACTER_VARYING REAL DECIMAL SMALLINT BIGINT @@ -265,6 +266,7 @@ %type expr operand scalar_expr unary_expr binary_expr logic_expr exists_expr extract_expr cast_expr %type function_expr between_expr expr_alias param_expr %type column_name literal int_literal num_literal string_literal bool_literal date_literal interval_literal +%type timestamp_literal time_literal current_timestamp current_date current_time %type comp_expr opt_where join_condition opt_having case_expr case_list in_expr hint %type array_expr array_index null_literal extended_literal casted_extended_literal %type opt_limit opt_top @@ -643,7 +645,7 @@ column_type : BIGINT { $$ = ColumnType{DataType::BIGINT}; } | BOOLEAN { $$ = ColumnType{DataType::BOOLEAN}; } | CHAR '(' INTVAL ')' { $$ = ColumnType{DataType::CHAR, $3}; } | CHARACTER_VARYING '(' INTVAL ')' { $$ = ColumnType{DataType::VARCHAR, $3}; } -| DATE { $$ = ColumnType{DataType::DATE}; }; +| DATE { $$ = ColumnType{DataType::DATE}; } | DATETIME { $$ = ColumnType{DataType::DATETIME}; } | DECIMAL opt_decimal_specification { $$ = ColumnType{DataType::DECIMAL, 0, $2->first, $2->second}; @@ -653,6 +655,7 @@ column_type : BIGINT { $$ = ColumnType{DataType::BIGINT}; } | FLOAT { $$ = ColumnType{DataType::FLOAT}; } | INT { $$ = ColumnType{DataType::INT}; } | INTEGER { $$ = ColumnType{DataType::INT}; } +| INTERVAL { $$ = ColumnType{DataType::INTERVAL}; } | LONG { $$ = ColumnType{DataType::LONG}; } | REAL { $$ = ColumnType{DataType::REAL}; } | SMALLINT { $$ = ColumnType{DataType::SMALLINT}; } @@ -1008,7 +1011,7 @@ extended_literal : literal { } $$ = $1; } -| '-' num_literal { $$ = Expr::makeOpUnary(kOpUnaryMinus, $2); }; +| '-' num_literal { $$ = Expr::makeOpUnary(kOpUnaryMinus, $2); } | '-' interval_literal { $$ = Expr::makeOpUnary(kOpUnaryMinus, $2); }; expr_alias : expr opt_alias { @@ -1139,7 +1142,8 @@ column_name : IDENTIFIER { $$ = Expr::makeColumnRef($1); } | '*' { $$ = Expr::makeStar(); } | IDENTIFIER '.' '*' { $$ = Expr::makeStar($1); }; -literal : string_literal | bool_literal | num_literal | null_literal | date_literal | interval_literal | param_expr; +literal : string_literal | bool_literal | num_literal | null_literal | date_literal | interval_literal | param_expr +| timestamp_literal | time_literal | current_timestamp | current_date | current_time; string_literal : STRING { $$ = Expr::makeLiteral($1); }; @@ -1164,6 +1168,14 @@ date_literal : DATE STRING { $$ = Expr::makeDateLiteral($2); }; +timestamp_literal : TIMESTAMP STRING { + $$ = Expr::makeTimestampLiteral($2); +}; + +time_literal : TIME STRING { + $$ = Expr::makeTimeLiteral($2); +}; + interval_literal : INTVAL duration_field { $$ = Expr::makeIntervalLiteral($1, $2); } | INTERVAL STRING datetime_field { int duration{0}, chars_parsed{0}; @@ -1176,6 +1188,9 @@ interval_literal : INTVAL duration_field { $$ = Expr::makeIntervalLiteral($1, $2 free($2); $$ = Expr::makeIntervalLiteral(duration, $3); } +| INTERVAL INTVAL datetime_field { + $$ = Expr::makeIntervalLiteral($2, $3); +} | INTERVAL STRING { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -1183,12 +1198,12 @@ interval_literal : INTVAL duration_field { $$ = Expr::makeIntervalLiteral($1, $2 // If the whole string is parsed, chars_parsed points to the terminating null byte after the last character if (sscanf($2, "%d %7s%n", &duration, unit_string, &chars_parsed) != 2 || $2[chars_parsed] != 0) { free($2); - yyerror(&yyloc, result, scanner, "Found incorrect interval format. Expected format: INTEGER INTERVAL_QUALIIFIER"); + yyerror(&yyloc, result, scanner, "Found incorrect interval format. Expected format: INTEGER INTERVAL_QUALIFIER"); YYERROR; } free($2); - DatetimeField unit; + DatetimeField unit = kDatetimeNone; if (strcasecmp(unit_string, "second") == 0 || strcasecmp(unit_string, "seconds") == 0) { unit = kDatetimeSecond; } else if (strcasecmp(unit_string, "minute") == 0 || strcasecmp(unit_string, "minutes") == 0) { @@ -1214,6 +1229,12 @@ param_expr : '?' { yyloc.param_list.push_back($$); }; +current_timestamp : CURRENT_TIMESTAMP { $$ = Expr::makeCurrentTimestamp(); }; + +current_date : CURRENT_DATE { $$ = Expr::makeCurrentDate(); }; + +current_time : CURRENT_TIME { $$ = Expr::makeCurrentTime(); }; + /****************************** * Table ******************************/ diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index c544b92f..c931f921 100644 --- a/src/parser/flex_lexer.cpp +++ b/src/parser/flex_lexer.cpp @@ -1,6 +1,6 @@ -#line 1 "flex_lexer.cpp" +#line 2 "flex_lexer.cpp" -#line 3 "flex_lexer.cpp" +#line 4 "flex_lexer.cpp" #define YY_INT_ALIGNED short int @@ -573,8 +573,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 189 -#define YY_END_OF_BUFFER 190 +#define YY_NUM_RULES 192 +#define YY_END_OF_BUFFER 193 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -582,28 +582,28 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1368] = +static const flex_int16_t yy_accept[1396] = { 0, - 0, 0, 186, 186, 2, 2, 190, 188, 4, 4, - 188, 188, 177, 184, 177, 177, 181, 177, 177, 177, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 177, 186, 187, 2, 2, 3, + 0, 0, 189, 189, 2, 2, 193, 191, 4, 4, + 191, 191, 180, 187, 180, 180, 184, 180, 180, 180, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 180, 189, 190, 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, 172, 0, 1, 0, - 179, 178, 181, 174, 173, 171, 175, 183, 183, 183, - - 183, 183, 183, 12, 183, 183, 183, 19, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 73, 183, 183, 76, 85, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 103, 183, 183, - 108, 111, 112, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 149, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 176, 186, 185, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 4, 175, 0, 1, 0, + 182, 181, 184, 177, 176, 174, 178, 186, 186, 186, + + 186, 186, 186, 12, 186, 186, 186, 19, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 73, 186, 186, 76, 85, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 103, 186, 186, + 108, 111, 112, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 149, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 179, 189, 188, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -614,22 +614,22 @@ static const flex_int16_t yy_accept[1368] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 182, 0, 178, 5, - 183, 7, 183, 183, 10, 183, 13, 183, 183, 183, - - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 34, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 49, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 60, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 80, 183, 183, 88, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 104, 183, 183, 183, 109, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 135, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 150, - - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 185, 0, 181, 5, + 186, 7, 186, 186, 10, 186, 13, 186, 186, 186, + + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 34, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 49, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 60, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 80, 186, 186, 88, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 104, 186, 186, 186, 109, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 135, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 150, + + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -643,20 +643,20 @@ static const flex_int16_t yy_accept[1368] = 2, 2, 2, 2, 2, 2, 2, 2, 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, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 20, 183, 22, 23, 24, 183, 183, 183, - 29, 183, 183, 183, 32, 35, 183, 183, 183, 183, - 183, 41, 183, 183, 183, 46, 47, 183, 183, 183, - 183, 183, 183, 183, 183, 57, 183, 183, 183, 183, - 63, 64, 183, 183, 68, 183, 70, 71, 183, 183, - - 183, 183, 183, 183, 84, 183, 87, 89, 90, 183, - 92, 183, 183, 95, 183, 183, 183, 183, 183, 106, - 183, 183, 183, 183, 115, 183, 183, 118, 183, 183, - 183, 183, 123, 183, 183, 183, 183, 183, 129, 183, - 183, 183, 183, 137, 138, 183, 183, 183, 183, 183, - 145, 146, 147, 183, 152, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 162, 183, 164, 183, 166, 167, + 2, 2, 0, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 20, 186, 22, 23, 24, 186, 186, 186, + 29, 186, 186, 186, 32, 35, 186, 186, 186, 186, + 186, 41, 186, 186, 186, 46, 47, 186, 186, 186, + 186, 186, 186, 186, 186, 57, 186, 186, 186, 186, + 63, 64, 186, 186, 68, 186, 70, 71, 186, 186, + + 186, 186, 186, 186, 84, 186, 87, 89, 90, 186, + 92, 186, 186, 95, 186, 186, 186, 186, 186, 106, + 186, 186, 186, 186, 115, 186, 186, 118, 186, 186, + 186, 186, 123, 186, 186, 186, 186, 186, 129, 186, + 186, 186, 186, 137, 138, 186, 186, 186, 186, 186, + 145, 146, 147, 186, 152, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 162, 186, 164, 186, 166, 167, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -672,16 +672,16 @@ static const flex_int16_t yy_accept[1368] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 6, - 8, 183, 11, 183, 15, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 31, 183, 183, 183, 183, 183, - 183, 40, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 56, 58, 183, 183, 183, 183, 66, - 183, 72, 74, 183, 77, 78, 183, 183, 183, 183, - 91, 93, 183, 96, 97, 183, 100, 183, 183, 183, - 183, 113, 114, 183, 183, 183, 183, 183, 122, 183, - 183, 183, 127, 183, 183, 183, 183, 136, 183, 183, - 183, 142, 183, 183, 183, 183, 183, 155, 183, 183, - 183, 159, 183, 183, 183, 165, 168, 2, 2, 2, + 8, 186, 11, 186, 15, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 31, 186, 186, 186, 186, 186, + 186, 40, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 56, 58, 186, 186, 186, 186, 66, + 186, 72, 74, 186, 77, 78, 186, 186, 186, 186, + 91, 93, 186, 96, 97, 186, 100, 186, 186, 186, + 186, 113, 114, 186, 186, 186, 186, 186, 122, 186, + 186, 186, 127, 186, 186, 186, 186, 136, 186, 186, + 186, 142, 186, 186, 186, 186, 186, 155, 186, 186, + 186, 159, 186, 186, 186, 165, 168, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -692,16 +692,16 @@ static const flex_int16_t yy_accept[1368] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 183, 14, 183, - - 17, 183, 183, 183, 25, 27, 183, 30, 183, 183, - 183, 183, 183, 39, 183, 43, 183, 45, 183, 50, - 51, 183, 53, 183, 183, 183, 183, 62, 65, 67, - 69, 75, 79, 183, 183, 183, 86, 94, 98, 101, - 183, 105, 183, 110, 183, 183, 183, 183, 183, 183, - 125, 183, 183, 130, 132, 134, 183, 140, 183, 143, - 183, 183, 183, 183, 183, 156, 157, 158, 160, 183, - 183, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 0, 186, 14, 186, + + 17, 186, 186, 186, 25, 27, 186, 30, 186, 186, + 186, 186, 186, 39, 186, 43, 186, 45, 186, 50, + 51, 186, 53, 186, 186, 186, 186, 62, 65, 67, + 69, 75, 79, 186, 186, 186, 86, 94, 98, 101, + 186, 105, 186, 110, 186, 186, 186, 186, 186, 186, + 125, 186, 186, 130, 132, 134, 186, 140, 186, 143, + 186, 186, 186, 186, 186, 156, 157, 158, 160, 186, + 186, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -710,30 +710,34 @@ static const flex_int16_t yy_accept[1368] = 2, 2, 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, 9, 16, 18, - 21, 183, 26, 28, 183, 183, 183, 37, 38, 183, - 183, 183, 52, 54, 55, 183, 61, 81, 183, 183, - 99, 102, 183, 183, 183, 183, 120, 121, 183, 183, - 183, 131, 133, 183, 141, 183, 183, 183, 183, 183, + 21, 186, 26, 28, 186, 186, 186, 37, 38, 186, + 186, 186, 52, 54, 55, 186, 61, 81, 186, 186, + 99, 102, 186, 186, 186, 186, 120, 121, 186, 186, + 186, 131, 133, 186, 141, 186, 186, 186, 186, 186, 161, 163, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 183, - 0, 33, 183, 42, 44, 48, 183, 183, 83, 107, - 183, 183, 183, 183, 126, 128, 139, 183, 183, 183, - 153, 183, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 0, 186, + 0, 186, 33, 186, 42, 44, 48, 186, 186, 83, + 107, 186, 186, 186, 186, 126, 128, 139, 186, 186, + 186, 153, 186, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 0, 183, 0, 183, - 59, 82, 183, 117, 119, 183, 144, 148, 183, 154, + 2, 2, 2, 2, 2, 2, 2, 2, 0, 186, + 0, 186, 186, 186, 59, 82, 186, 117, 119, 186, + 144, 148, 186, 154, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 0, 0, 0, 36, 116, 124, - 183, 2, 2, 2, 2, 2, 2, 2, 0, 0, - 169, 151, 2, 2, 2, 2, 0, 0, 2, 2, - 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, - 2, 2, 0, 0, 2, 2, 0, 170, 2, 2, - 0, 2, 0, 2, 180, 2, 0 + 0, 0, 0, 186, 186, 36, 116, 124, 186, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, + 169, 186, 186, 151, 2, 2, 2, 2, 2, 2, + 0, 0, 172, 173, 2, 2, 2, 2, 0, 0, + 186, 2, 2, 2, 0, 0, 186, 2, 2, 2, + 0, 0, 186, 2, 2, 2, 0, 0, 186, 2, + 2, 2, 0, 170, 171, 2, 2, 2, 0, 2, + 0, 2, 183, 2, 0 + } ; static const YY_CHAR yy_ec[256] = @@ -780,18 +784,18 @@ static const YY_CHAR yy_meta[77] = 5, 5, 5, 5, 5, 1 } ; -static const flex_int16_t yy_base[1375] = +static const flex_int16_t yy_base[1403] = { 0, - 0, 0, 852, 842, 76, 0, 842, 8955, 151, 153, - 786, 0, 8955, 8955, 149, 148, 160, 159, 778, 775, + 0, 0, 880, 852, 76, 0, 849, 9156, 151, 153, + 821, 0, 9156, 9156, 149, 148, 160, 159, 786, 778, 156, 156, 165, 210, 202, 255, 151, 163, 265, 152, 171, 215, 218, 244, 295, 257, 0, 309, 349, 392, - 163, 279, 226, 180, 676, 0, 741, 0, 237, 251, - 696, 702, 0, 0, 243, 378, 451, 237, 682, 680, + 163, 279, 226, 180, 720, 0, 745, 0, 237, 251, + 727, 712, 0, 0, 243, 378, 451, 237, 686, 682, 470, 546, 600, 652, 700, 752, 384, 458, 795, 466, 532, 533, 534, 846, 895, 944, 547, 602, 990, 1042, - 307, 650, 587, 651, 596, 301, 8955, 666, 8955, 636, - 1107, 1117, 1128, 8955, 8955, 8955, 8955, 0, 218, 243, + 307, 650, 587, 651, 625, 301, 9156, 667, 9156, 659, + 1107, 1117, 1128, 9156, 9156, 9156, 9156, 0, 218, 243, 300, 328, 250, 305, 379, 315, 319, 0, 376, 354, 694, 389, 345, 440, 710, 387, 388, 436, 439, 476, @@ -801,8 +805,8 @@ static const flex_int16_t yy_base[1375] = 717, 0, 751, 739, 757, 745, 764, 766, 755, 810, 769, 792, 770, 810, 811, 808, 817, 803, 822, 823, 842, 827, 820, 842, 871, 861, 858, 862, 866, 897, - 872, 859, 879, 8955, 0, 8955, 0, 396, 0, 631, - 0, 614, 1138, 1148, 1159, 0, 0, 0, 0, 942, + 872, 859, 879, 9156, 0, 9156, 0, 396, 0, 643, + 0, 624, 1138, 1148, 1159, 0, 0, 0, 0, 942, 945, 1029, 990, 1156, 1034, 1155, 1202, 934, 1030, 1168, 1199, 1218, 1258, 1251, 1270, 1285, 1337, 1334, 1345, 1372, @@ -812,7 +816,7 @@ static const flex_int16_t yy_base[1375] = 1817, 1838, 1861, 1830, 1874, 1897, 1712, 1909, 1941, 1730, 1916, 1993, 1946, 1972, 1990, 2042, 2015, 2033, 2059, 2081, 2093, 2095, 2127, 2123, 2145, 2147, 2183, 2230, 2191, 2177, - 2222, 2239, 2265, 2274, 2287, 0, 8955, 601, 2352, 0, + 2222, 2239, 2265, 2274, 2287, 0, 9156, 614, 2352, 0, 882, 0, 903, 900, 0, 933, 0, 940, 954, 941, 960, 988, 1001, 1156, 1038, 1038, 1050, 1044, 1137, 1162, @@ -827,7 +831,7 @@ static const flex_int16_t yy_base[1375] = 1867, 1880, 1875, 1876, 1887, 1888, 1886, 1918, 1932, 0, 1933, 1974, 1934, 1993, 1948, 1999, 1987, 1998, 2046, 2027, - 2032, 2064, 2045, 2074, 0, 600, 2362, 2355, 2356, 2357, + 2032, 2064, 2045, 2074, 0, 601, 2362, 2355, 2356, 2357, 2358, 2281, 2392, 2400, 2401, 2412, 2440, 2448, 2453, 2455, 2469, 2518, 2494, 2519, 2532, 2568, 2544, 2580, 2578, 2609, 2621, 2623, 2637, 2662, 2680, 2677, 2712, 2721, 2730, 2756, @@ -841,7 +845,7 @@ static const flex_int16_t yy_base[1375] = 3551, 3575, 3576, 3595, 3598, 3600, 3630, 3644, 3649, 3605, 3659, 3683, 3697, 3701, 3737, 3741, 3749, 3754, 3781, 3797, 3798, 3830, 3844, 3856, 3844, 3885, 3888, 3891, 3926, 3935, - 3944, 3970, 582, 2085, 2089, 2090, 2091, 2104, 2130, 2148, + 3944, 3970, 599, 2085, 2089, 2090, 2091, 2104, 2130, 2148, 2147, 2171, 0, 2192, 0, 0, 2193, 2197, 2215, 2208, 0, 2218, 2230, 2245, 2238, 0, 2248, 2273, 2277, 2283, 2303, 2290, 2306, 2302, 2356, 0, 0, 2365, 2359, 2360, @@ -855,7 +859,7 @@ static const flex_int16_t yy_base[1375] = 2795, 2834, 2868, 0, 0, 2862, 2877, 2882, 2892, 2883, 0, 0, 2883, 2904, 0, 2925, 2915, 2923, 2921, 2945, 2931, 2950, 2956, 2982, 0, 2973, 0, 2992, 0, 2982, - 544, 3979, 3988, 4017, 4026, 4039, 4026, 4051, 4076, 4077, + 582, 3979, 3988, 4017, 4026, 4039, 4026, 4051, 4076, 4077, 4089, 4111, 4119, 4133, 4145, 4159, 4171, 4197, 4185, 4199, 4206, 4223, 4249, 4235, 4249, 4270, 4293, 4306, 4336, 4344, @@ -868,7 +872,7 @@ static const flex_int16_t yy_base[1375] = 5168, 5187, 5209, 5212, 5238, 5250, 5241, 5263, 4970, 5294, 5289, 5302, 5307, 5024, 5321, 5343, 5346, 5351, 5365, 5387, 5392, 5396, 5422, 5441, 5438, 5464, 5483, 5497, 5494, 5525, - 5449, 5542, 5537, 5576, 5577, 5578, 5590, 5592, 543, 0, + 5449, 5542, 5537, 5576, 5577, 5578, 5590, 5592, 544, 0, 0, 3009, 0, 3040, 0, 3046, 3035, 3059, 3061, 3090, 3085, 3094, 3110, 3142, 0, 3135, 3144, 3152, 3176, 3195, @@ -879,7 +883,7 @@ static const flex_int16_t yy_base[1375] = 3454, 0, 0, 3472, 3458, 3489, 3478, 3485, 0, 3510, 3512, 3519, 0, 3530, 3550, 3567, 3575, 0, 3597, 3607, 3640, 3624, 3639, 3640, 3660, 3662, 3663, 0, 3694, 3704, - 3707, 0, 3695, 3717, 3718, 0, 0, 536, 5622, 5625, + 3707, 0, 3695, 3717, 3718, 0, 0, 543, 5622, 5625, 5633, 5636, 5676, 5684, 5685, 5710, 5738, 5729, 5764, 5763, 5764, 5792, 5814, 5816, 5808, 5828, 5846, 5864, 5862, 5882, @@ -890,7 +894,7 @@ static const flex_int16_t yy_base[1375] = 6407, 6411, 6419, 6434, 6459, 6460, 6488, 6489, 6513, 6514, 6527, 6539, 6542, 6567, 6581, 6568, 6593, 6596, 6622, 6635, 6627, 6667, 6670, 6691, 6719, 6683, 6727, 6739, 6752, 6744, - 6780, 6778, 6799, 6825, 6822, 6843, 526, 3718, 0, 3748, + 6780, 6778, 6799, 6825, 6822, 6843, 532, 3718, 0, 3748, 0, 3753, 3765, 3751, 3753, 0, 3765, 0, 3790, 3801, 3812, 3805, 3799, 0, 3822, 0, 3822, 0, 3819, 0, @@ -899,7 +903,7 @@ static const flex_int16_t yy_base[1375] = 3948, 0, 3968, 0, 3972, 3992, 4001, 4031, 4018, 4032, 0, 4044, 4049, 4061, 4077, 0, 4091, 0, 4094, 0, 4107, 4109, 4115, 4110, 4136, 0, 0, 0, 0, 4134, - 4144, 525, 6860, 6865, 6867, 6881, 6897, 6910, 6919, 6935, + 4144, 526, 6860, 6865, 6867, 6881, 6897, 6910, 6919, 6935, 6944, 6953, 6977, 6986, 6995, 7026, 7030, 7039, 7070, 7081, 7084, 7112, 7125, 7126, 7156, 7167, 7169, 7178, 7203, 7212, @@ -907,57 +911,61 @@ static const flex_int16_t yy_base[1375] = 7369, 7364, 7394, 7396, 7410, 7419, 7438, 7452, 7471, 7480, 7500, 7509, 7524, 7538, 7516, 7559, 7565, 7589, 7603, 7612, 7631, 7645, 7654, 7673, 7687, 7701, 7720, 7743, 7744, 7774, - 7785, 7788, 7804, 7818, 7834, 7837, 529, 0, 0, 0, - 0, 4157, 0, 0, 436, 4161, 4177, 0, 0, 4177, + 7785, 7788, 7804, 7818, 7834, 7837, 530, 0, 0, 0, + 0, 4157, 0, 0, 437, 4161, 4177, 0, 0, 4177, 4196, 4219, 0, 0, 0, 4258, 0, 0, 4276, 4280, 0, 0, 4284, 4299, 4293, 4301, 0, 0, 4319, 4304, 4316, 0, 0, 4320, 0, 4325, 4333, 4341, 4361, 4364, - 0, 0, 527, 7848, 7872, 7878, 7881, 7901, 7916, 7925, - - 7955, 7940, 7970, 7969, 7984, 7999, 8008, 8038, 8033, 8052, - 8074, 8013, 8054, 8084, 8108, 8095, 8131, 8139, 8150, 8151, - 8156, 8185, 8188, 8199, 8218, 8232, 8251, 8262, 8281, 8292, - 8295, 8311, 8335, 8341, 8358, 8380, 8388, 8393, 526, 4361, - 4434, 0, 4360, 0, 0, 0, 4377, 4374, 0, 0, - 4384, 4398, 4412, 4415, 0, 0, 0, 4405, 4419, 4429, - 0, 4436, 524, 8418, 4781, 8406, 8432, 8444, 8446, 8468, - 8480, 8498, 8506, 8524, 8546, 8551, 8555, 8568, 8590, 8598, - 8603, 8612, 8642, 8644, 8647, 8656, 514, 438, 4433, 4446, - 0, 0, 4434, 0, 0, 4469, 0, 0, 4477, 0, - - 506, 8710, 4493, 8688, 8696, 8697, 8731, 8739, 8742, 8745, - 8775, 8783, 8795, 8800, 470, 4558, 4499, 0, 0, 0, - 4522, 468, 4698, 4536, 8803, 8808, 8844, 8842, 465, 4563, - 8955, 0, 418, 4565, 0, 8851, 418, 4572, 390, 4578, - 388, 4583, 386, 4591, 347, 4609, 343, 4617, 338, 4628, - 335, 4636, 334, 4653, 332, 4679, 303, 8955, 293, 0, - 299, 286, 248, 243, 8955, 0, 8955, 8924, 8929, 201, - 8934, 8939, 8944, 8949 + 0, 0, 529, 7848, 7872, 7878, 7881, 7901, 7916, 7925, + + 7955, 7954, 7980, 7979, 7994, 8008, 8009, 8048, 8033, 8034, + 8062, 7932, 8069, 8077, 8110, 8107, 8113, 8131, 8155, 8166, + 8178, 8166, 8185, 8209, 8213, 8227, 8251, 8257, 8281, 8287, + 8300, 8311, 8330, 8341, 8252, 8358, 8359, 8384, 529, 4361, + 4434, 4415, 0, 4360, 0, 0, 0, 4377, 4374, 0, + 0, 4384, 4398, 4413, 4425, 0, 0, 0, 4413, 4424, + 4439, 0, 4447, 526, 8397, 4781, 8446, 8412, 8438, 8447, + 8482, 8487, 8496, 8495, 8531, 8536, 8544, 8384, 8563, 8549, + 8585, 8590, 8598, 8603, 8638, 8643, 8651, 8673, 521, 481, + 4438, 4487, 4483, 4503, 0, 0, 4493, 0, 0, 4503, + + 0, 0, 4521, 0, 514, 8691, 4523, 8709, 8717, 8731, + 8739, 8753, 8758, 8774, 8782, 8788, 8812, 8818, 8835, 8840, + 503, 4698, 4536, 4544, 4553, 0, 0, 0, 4566, 425, + 4707, 4567, 8865, 8889, 8874, 8913, 8915, 8854, 420, 4595, + 9156, 4603, 4611, 0, 418, 4617, 0, 8918, 8927, 8953, + 418, 4608, 0, 4623, 390, 4632, 8966, 8968, 388, 4661, + 4702, 386, 4701, 8992, 347, 4731, 4756, 343, 4756, 9016, + 338, 4754, 4760, 335, 4760, 9008, 334, 4776, 4780, 332, + 4795, 9044, 303, 9156, 0, 293, 0, 9052, 299, 286, + 248, 243, 9156, 0, 9156, 9125, 9130, 201, 9135, 9140, + + 9145, 9150 } ; -static const flex_int16_t yy_def[1375] = +static const flex_int16_t yy_def[1403] = { 0, - 1367, 1, 1368, 1368, 1367, 5, 1367, 1367, 1367, 1367, - 1367, 1369, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1367, 1371, 1367, 1372, 1372, 1367, - 1372, 1373, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, - 1374, 1374, 62, 62, 62, 63, 65, 62, 65, 62, + 1395, 1, 1396, 1396, 1395, 5, 1395, 1395, 1395, 1395, + 1395, 1397, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1395, 1399, 1395, 1400, 1400, 1395, + 1400, 1401, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1402, 1402, 62, 62, 62, 63, 65, 62, 65, 62, 62, 62, 62, 63, 63, 63, 62, 62, 62, 62, - 65, 62, 62, 62, 1372, 1367, 1367, 1369, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1370, 1370, 1370, - - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1367, 1371, 1367, 1372, 1372, 1372, 1373, - 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 62, + 65, 62, 62, 62, 1400, 1395, 1395, 1397, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1398, 1398, 1398, + + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1395, 1399, 1395, 1400, 1400, 1400, 1401, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 62, 62, 62, 65, 65, 65, 65, 65, 65, 62, 62, 65, 65, 65, 62, 62, 62, 65, 65, 65, 62, @@ -967,22 +975,22 @@ static const flex_int16_t yy_def[1375] = 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 65, 62, 62, 62, 63, 62, 62, 62, - 65, 62, 62, 62, 62, 1372, 1367, 1367, 1367, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1372, 1372, 1372, 62, 62, 62, + 65, 62, 62, 62, 62, 1400, 1395, 1395, 1395, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1400, 1400, 1400, 62, 62, 62, 62, 65, 65, 65, 65, 62, 62, 62, 62, 65, 65, 62, 62, 62, 62, 62, 62, 62, 65, 65, 62, 65, 65, 62, 62, 62, 62, 62, 62, 62, @@ -996,21 +1004,21 @@ static const flex_int16_t yy_def[1375] = 65, 65, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, 62, 65, 65, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, - 65, 65, 1367, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1372, 65, 65, 62, 62, 62, 65, 62, 65, 62, + 65, 65, 1395, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1400, 65, 65, 62, 62, 62, 65, 62, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 62, 62, 62, 65, 65, 65, 65, 65, 65, @@ -1023,18 +1031,18 @@ static const flex_int16_t yy_def[1375] = 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, 62, 62, 62, 65, 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 62, 62, 62, 62, 62, 62, 62, 65, 1367, 1370, - - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1372, 65, 65, + 62, 62, 62, 62, 62, 62, 62, 65, 1395, 1398, + + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1400, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 65, 65, 62, 62, 62, 65, 62, 62, 62, 65, 62, @@ -1045,16 +1053,16 @@ static const flex_int16_t yy_def[1375] = 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, - 62, 65, 65, 65, 65, 65, 1367, 1370, 1370, 1370, - - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1372, 62, 62, 65, 65, 65, 62, 62, 65, + 62, 65, 65, 65, 65, 65, 1395, 1398, 1398, 1398, + + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1400, 62, 62, 65, 65, 65, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 62, 62, 65, 65, @@ -1062,35 +1070,39 @@ static const flex_int16_t yy_def[1375] = 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 1367, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1372, 65, 65, 65, 65, 62, 62, 62, + 65, 65, 65, 65, 65, 65, 1395, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1400, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 62, 62, 62, 62, 1367, 1370, - 1367, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1372, 62, 1372, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 65, 65, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 1367, 1370, 1367, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, - - 1372, 62, 1372, 62, 62, 62, 65, 65, 65, 65, - 65, 65, 62, 62, 1367, 1367, 1367, 1370, 1370, 1370, - 1370, 1372, 1372, 1372, 62, 62, 62, 65, 1367, 1367, - 1367, 1370, 1372, 1372, 1372, 65, 1367, 1367, 1372, 1372, - 1367, 1367, 1372, 1372, 1367, 1367, 1372, 1372, 1367, 1367, - 1372, 1372, 1367, 1367, 1372, 1372, 1367, 1367, 1372, 1372, - 1367, 1372, 1367, 1372, 1367, 1372, 0, 1367, 1367, 1367, - 1367, 1367, 1367, 1367 + 65, 65, 65, 65, 62, 62, 62, 62, 1395, 1398, + 1395, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1400, 62, 1400, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 65, 65, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 1395, 1398, + 1395, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + + 1398, 1398, 1398, 1398, 1400, 62, 1400, 62, 62, 62, + 62, 62, 65, 65, 65, 65, 65, 65, 62, 62, + 1395, 1395, 1395, 1398, 1398, 1398, 1398, 1398, 1398, 1400, + 1400, 1400, 62, 62, 62, 62, 62, 65, 1395, 1395, + 1395, 1398, 1398, 1398, 1400, 1400, 1400, 62, 62, 62, + 1395, 1395, 1398, 1398, 1400, 1400, 62, 65, 1395, 1395, + 1398, 1400, 1400, 65, 1395, 1395, 1398, 1400, 1400, 65, + 1395, 1395, 1398, 1400, 1400, 65, 1395, 1395, 1398, 1400, + 1400, 65, 1395, 1395, 1398, 1400, 1400, 65, 1395, 1400, + 1395, 1400, 1395, 1400, 0, 1395, 1395, 1395, 1395, 1395, + + 1395, 1395 } ; -static const flex_int16_t yy_nxt[9032] = +static const flex_int16_t yy_nxt[9233] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, @@ -1120,375 +1132,375 @@ static const flex_int16_t yy_nxt[9032] = 178, 112, 114, 183, 113, 119, 115, 120, 188, 86, 116, 141, 121, 290, 144, 142, 117, 122, 145, 118, 191, 143, 86, 86, 146, 181, 182, 196, 197, 114, - 1366, 192, 119, 115, 120, 1365, 147, 116, 141, 121, + 1394, 192, 119, 115, 120, 1393, 147, 116, 141, 121, 290, 144, 142, 117, 122, 145, 118, 123, 143, 156, 148, 146, 181, 182, 291, 124, 149, 150, 125, 296, - 157, 126, 134, 147, 127, 1364, 158, 128, 135, 136, + 157, 126, 134, 147, 127, 1392, 158, 128, 135, 136, - 137, 179, 86, 86, 123, 138, 156, 148, 1363, 180, - 1362, 291, 124, 149, 150, 125, 296, 157, 126, 134, - 1361, 127, 151, 158, 128, 135, 136, 137, 179, 297, + 137, 179, 86, 86, 123, 138, 156, 148, 1391, 180, + 1390, 291, 124, 149, 150, 125, 296, 157, 126, 134, + 1389, 127, 151, 158, 128, 135, 136, 137, 179, 297, 152, 159, 138, 292, 153, 160, 180, 154, 155, 161, - 200, 293, 278, 301, 279, 162, 1359, 280, 1357, 151, - 294, 1355, 200, 295, 1353, 302, 297, 152, 159, 1351, - 292, 153, 160, 1349, 154, 155, 161, 200, 293, 278, + 200, 293, 278, 301, 279, 162, 1386, 280, 1383, 151, + 294, 1380, 200, 295, 1377, 302, 297, 152, 159, 1374, + 292, 153, 160, 1371, 154, 155, 161, 200, 293, 278, 301, 279, 162, 163, 280, 164, 305, 294, 165, 200, 295, 166, 302, 167, 312, 168, 169, 193, 193, 193, - 193, 193, 193, 193, 193, 193, 193, 188, 86, 1347, + 193, 193, 193, 193, 193, 193, 193, 188, 86, 1368, - 163, 1345, 164, 305, 1343, 165, 298, 299, 166, 303, + 163, 1365, 164, 305, 1362, 165, 298, 299, 166, 303, 167, 312, 168, 169, 170, 310, 304, 231, 171, 200, 300, 172, 173, 232, 200, 311, 320, 321, 174, 200, - 322, 175, 1341, 298, 299, 1339, 303, 1241, 1241, 1316, - 1316, 170, 310, 304, 231, 171, 200, 300, 172, 173, + 322, 175, 1359, 298, 299, 1355, 303, 1351, 1241, 1241, + 1345, 170, 310, 304, 231, 171, 200, 300, 172, 173, 232, 200, 311, 320, 321, 174, 200, 322, 175, 194, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 187, 187, 323, 187, 187, 187, 187, 187, 187, 324, - 233, 313, 1337, 1333, 200, 1329, 314, 327, 234, 187, + 233, 313, 1322, 1322, 200, 1242, 314, 327, 234, 187, 187, 187, 200, 333, 235, 201, 200, 202, 334, 323, 325, 326, 241, 203, 200, 204, 324, 233, 313, 205, - 206, 200, 200, 314, 327, 234, 335, 338, 1322, 200, - 333, 235, 201, 200, 202, 334, 1315, 325, 326, 241, - 203, 200, 204, 1301, 339, 1287, 205, 206, 1263, 200, - 1239, 1193, 1147, 335, 338, 187, 187, 187, 1072, 187, - 187, 187, 187, 187, 187, 997, 898, 340, 242, 243, + 206, 200, 200, 314, 327, 234, 335, 338, 1339, 200, + 333, 235, 201, 200, 202, 334, 1330, 325, 326, 241, + 203, 200, 204, 1321, 339, 1305, 205, 206, 1289, 200, + 1264, 1239, 1193, 335, 338, 187, 187, 187, 1147, 187, + 187, 187, 187, 187, 187, 1072, 997, 340, 242, 243, 246, 339, 200, 244, 247, 187, 187, 187, 200, 245, 248, 341, 207, 200, 344, 336, 208, 200, 200, 200, 200, 337, 209, 200, 340, 242, 243, 246, 345, 200, - 244, 247, 210, 200, 799, 200, 245, 248, 341, 207, + 244, 247, 210, 200, 898, 200, 245, 248, 341, 207, 200, 344, 336, 208, 200, 200, 200, 200, 337, 209, - 200, 671, 543, 200, 346, 345, 283, 284, 347, 210, - 200, 187, 211, 200, 261, 416, 200, 352, 262, 212, - 200, 342, 263, 200, 343, 415, 213, 353, 264, 214, - 200, 346, 215, 283, 284, 347, 200, 288, 200, 211, + 200, 799, 671, 200, 346, 345, 283, 284, 347, 210, + 200, 187, 211, 200, 261, 543, 200, 352, 262, 212, + 200, 342, 263, 200, 343, 416, 213, 353, 264, 214, + 200, 346, 215, 283, 284, 347, 200, 415, 200, 211, 200, 261, 348, 200, 352, 262, 212, 200, 342, 263, 200, 343, 349, 213, 353, 264, 214, 350, 351, 215, - 287, 286, 281, 200, 216, 200, 200, 285, 217, 348, + 288, 287, 281, 200, 216, 200, 200, 285, 217, 348, 282, 200, 218, 354, 355, 361, 200, 200, 219, 349, 356, 220, 357, 362, 350, 351, 200, 200, 200, 281, - 199, 216, 198, 200, 285, 217, 187, 282, 200, 218, - 354, 355, 361, 200, 200, 219, 189, 356, 220, 357, + 286, 216, 199, 200, 285, 217, 198, 282, 200, 218, + 354, 355, 361, 200, 200, 219, 187, 356, 220, 357, 362, 363, 364, 200, 200, 200, 200, 306, 307, 308, 200, 309, 315, 221, 316, 222, 200, 317, 367, 358, - 223, 359, 368, 318, 369, 224, 200, 186, 363, 364, - 319, 184, 360, 200, 306, 307, 308, 200, 309, 315, + 223, 359, 368, 318, 369, 224, 200, 189, 363, 364, + 319, 186, 360, 200, 306, 307, 308, 200, 309, 315, 221, 316, 222, 200, 317, 367, 358, 223, 359, 368, 318, 369, 224, 200, 225, 365, 370, 319, 366, 360, 371, 200, 226, 372, 373, 227, 374, 328, 228, 329, - 377, 229, 375, 330, 230, 97, 376, 382, 96, 385, + 377, 229, 375, 330, 230, 184, 376, 382, 97, 385, - 331, 225, 365, 370, 332, 366, 87, 371, 200, 226, + 331, 225, 365, 370, 332, 366, 96, 371, 200, 226, 372, 373, 227, 374, 328, 228, 329, 377, 229, 375, 330, 230, 236, 376, 382, 383, 385, 331, 237, 238, 239, 332, 378, 389, 386, 240, 384, 379, 391, 392, - 200, 1367, 393, 387, 394, 380, 395, 390, 47, 236, + 200, 87, 393, 387, 394, 380, 395, 390, 1395, 236, 381, 388, 383, 398, 399, 237, 238, 239, 47, 378, 389, 386, 240, 384, 379, 391, 392, 200, 249, 393, 387, 394, 380, 395, 390, 200, 396, 381, 388, 400, - 398, 399, 250, 406, 403, 200, 1367, 397, 251, 252, - 1367, 404, 407, 401, 405, 249, 1367, 1367, 412, 408, + 398, 399, 250, 406, 403, 200, 47, 397, 251, 252, + 1395, 404, 407, 401, 405, 249, 1395, 1395, 412, 408, - 413, 414, 200, 396, 1367, 409, 400, 1367, 544, 250, + 413, 414, 200, 396, 1395, 409, 400, 1395, 544, 250, 406, 403, 200, 402, 397, 251, 252, 200, 404, 407, 401, 405, 253, 410, 200, 412, 408, 413, 414, 545, - 254, 200, 409, 546, 255, 544, 411, 256, 257, 1367, - 402, 1367, 1367, 1367, 200, 1367, 1367, 1367, 1367, 253, - 410, 200, 1367, 1367, 1367, 547, 545, 254, 200, 1367, + 254, 200, 409, 546, 255, 544, 411, 256, 257, 1395, + 402, 1395, 1395, 1395, 200, 1395, 1395, 1395, 1395, 253, + 410, 200, 1395, 1395, 1395, 547, 545, 254, 200, 1395, 546, 255, 429, 411, 256, 257, 258, 200, 200, 200, 418, 200, 200, 200, 200, 200, 548, 259, 200, 200, - 200, 200, 547, 260, 549, 550, 200, 1367, 200, 429, - 551, 200, 1367, 258, 200, 200, 200, 418, 200, 200, + 200, 200, 547, 260, 549, 550, 200, 1395, 200, 429, + 551, 200, 1395, 258, 200, 200, 200, 418, 200, 200, - 200, 200, 200, 548, 259, 200, 200, 200, 200, 1367, + 200, 200, 200, 548, 259, 200, 200, 200, 200, 1395, 260, 549, 550, 200, 265, 200, 266, 551, 200, 267, - 200, 552, 268, 420, 269, 200, 270, 271, 1367, 1367, - 200, 421, 1367, 1367, 553, 200, 200, 1367, 1367, 1367, - 1367, 265, 1367, 266, 1367, 1367, 267, 200, 552, 268, + 200, 552, 268, 420, 269, 200, 270, 271, 1395, 1395, + 200, 421, 1395, 1395, 553, 200, 200, 1395, 1395, 1395, + 1395, 265, 1395, 266, 1395, 1395, 267, 200, 552, 268, 420, 269, 200, 270, 271, 200, 200, 200, 421, 200, 200, 553, 200, 200, 272, 200, 430, 200, 273, 200, 419, 274, 275, 424, 200, 200, 200, 557, 276, 200, - 558, 277, 200, 200, 559, 560, 200, 200, 200, 1367, - 1367, 272, 200, 430, 200, 273, 200, 419, 274, 275, + 558, 277, 200, 200, 559, 560, 200, 200, 200, 1395, + 1395, 272, 200, 430, 200, 273, 200, 419, 274, 275, - 424, 200, 200, 200, 557, 276, 200, 558, 277, 1367, - 1367, 559, 560, 1367, 1367, 200, 91, 91, 91, 91, + 424, 200, 200, 200, 557, 276, 200, 558, 277, 1395, + 1395, 559, 560, 1395, 1395, 200, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 194, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 422, 425, - 554, 423, 555, 561, 562, 563, 564, 1367, 200, 200, + 554, 423, 555, 561, 562, 563, 564, 1395, 200, 200, 200, 200, 565, 566, 200, 200, 200, 556, 200, 567, - 200, 200, 1367, 1367, 200, 422, 425, 554, 423, 555, + 200, 200, 1395, 1395, 200, 422, 425, 554, 423, 555, 561, 562, 563, 564, 200, 200, 200, 200, 200, 565, 566, 200, 200, 200, 556, 200, 567, 200, 200, 426, - 427, 200, 431, 568, 200, 200, 1367, 200, 569, 432, + 427, 200, 431, 568, 200, 200, 1395, 200, 569, 432, 433, 200, 200, 428, 200, 572, 573, 200, 574, 575, - 1367, 200, 576, 200, 1367, 577, 426, 427, 200, 431, - 568, 200, 200, 200, 200, 569, 432, 433, 1367, 200, + 1395, 200, 576, 200, 1395, 577, 426, 427, 200, 431, + 568, 200, 200, 200, 200, 569, 432, 433, 1395, 200, 428, 200, 572, 573, 200, 574, 575, 438, 200, 576, - 200, 200, 577, 578, 1367, 200, 570, 439, 1367, 1367, - 200, 434, 435, 436, 1367, 437, 200, 200, 200, 1367, + 200, 200, 577, 578, 1395, 200, 570, 439, 1395, 1395, + 200, 434, 435, 436, 1395, 437, 200, 200, 200, 1395, 200, 571, 579, 200, 438, 200, 200, 200, 200, 440, 578, 200, 452, 570, 439, 200, 200, 200, 434, 435, 436, 200, 437, 200, 200, 200, 441, 200, 571, 579, - 200, 442, 200, 200, 200, 580, 440, 1367, 200, 452, - 1367, 581, 200, 200, 200, 1367, 1367, 1367, 200, 582, - 1367, 1367, 1367, 441, 583, 1367, 584, 585, 442, 443, - 1367, 444, 580, 1367, 445, 586, 587, 200, 581, 200, - 446, 1367, 200, 448, 449, 1367, 582, 447, 200, 200, + 200, 442, 200, 200, 200, 580, 440, 1395, 200, 452, + 1395, 581, 200, 200, 200, 1395, 1395, 1395, 200, 582, + 1395, 1395, 1395, 441, 583, 1395, 584, 585, 442, 443, + 1395, 444, 580, 1395, 445, 586, 587, 200, 581, 200, + 446, 1395, 200, 448, 449, 1395, 582, 447, 200, 200, 200, 583, 200, 584, 585, 200, 443, 450, 444, 588, 200, 445, 586, 587, 200, 589, 200, 446, 200, 200, 448, 449, 200, 590, 447, 200, 200, 200, 451, 200, - 591, 592, 200, 593, 450, 455, 588, 200, 200, 1367, - 1367, 594, 589, 200, 200, 200, 200, 200, 1367, 200, + 591, 592, 200, 593, 450, 455, 588, 200, 200, 1395, + 1395, 594, 589, 200, 200, 200, 200, 200, 1395, 200, 590, 200, 461, 463, 200, 451, 200, 591, 592, 200, - 593, 595, 455, 200, 200, 200, 453, 454, 594, 1367, - 200, 200, 596, 200, 200, 200, 1367, 200, 200, 461, + 593, 595, 455, 200, 200, 200, 453, 454, 594, 1395, + 200, 200, 596, 200, 200, 200, 1395, 200, 200, 461, 463, 200, 200, 200, 597, 598, 200, 200, 595, 599, 200, 200, 600, 453, 454, 601, 462, 602, 200, 596, - 1367, 1367, 200, 200, 200, 1367, 1367, 1367, 200, 200, - 1367, 597, 598, 1367, 200, 456, 599, 457, 1367, 600, + 1395, 1395, 200, 200, 200, 1395, 1395, 1395, 200, 200, + 1395, 597, 598, 1395, 200, 456, 599, 457, 1395, 600, - 1367, 458, 601, 462, 602, 200, 603, 200, 459, 200, - 200, 606, 460, 200, 464, 200, 200, 200, 1367, 466, + 1395, 458, 601, 462, 602, 200, 603, 200, 459, 200, + 200, 606, 460, 200, 464, 200, 200, 200, 1395, 466, 465, 200, 456, 607, 457, 467, 200, 200, 458, 200, - 1367, 608, 200, 603, 200, 459, 200, 200, 606, 460, + 1395, 608, 200, 603, 200, 459, 200, 200, 606, 460, 200, 464, 609, 200, 200, 200, 466, 465, 200, 200, - 607, 1367, 467, 200, 200, 468, 200, 200, 608, 200, + 607, 1395, 467, 200, 200, 468, 200, 200, 608, 200, 610, 200, 611, 604, 200, 200, 614, 469, 200, 609, 200, 615, 200, 605, 616, 470, 200, 200, 471, 200, - 200, 472, 468, 1367, 200, 1367, 200, 610, 200, 611, + 200, 472, 468, 1395, 200, 1395, 200, 610, 200, 611, 604, 200, 200, 614, 469, 200, 617, 200, 615, 618, - 605, 616, 470, 1367, 200, 471, 200, 200, 472, 200, + 605, 616, 470, 1395, 200, 471, 200, 200, 472, 200, 200, 200, 200, 200, 619, 612, 200, 200, 200, 473, - 200, 200, 200, 617, 474, 613, 618, 1367, 1367, 1367, - 200, 1367, 1367, 1367, 1367, 620, 200, 200, 200, 200, + 200, 200, 200, 617, 474, 613, 618, 1395, 1395, 1395, + 200, 1395, 1395, 1395, 1395, 620, 200, 200, 200, 200, 200, 619, 612, 200, 200, 621, 473, 200, 200, 200, 200, 474, 613, 622, 200, 200, 200, 200, 480, 481, 200, 475, 620, 200, 623, 200, 624, 200, 200, 625, - 200, 1367, 621, 1367, 200, 200, 1367, 200, 200, 1367, - 622, 200, 200, 200, 200, 480, 481, 200, 475, 1367, + 200, 1395, 621, 1395, 200, 200, 1395, 200, 200, 1395, + 622, 200, 200, 200, 200, 480, 481, 200, 475, 1395, 200, 623, 200, 624, 482, 200, 625, 200, 476, 200, 483, 200, 200, 200, 626, 200, 200, 628, 477, 200, - 200, 200, 200, 478, 479, 1367, 489, 200, 200, 200, - 1367, 482, 200, 627, 1367, 476, 200, 483, 1367, 1367, - 200, 626, 1367, 200, 628, 477, 200, 200, 500, 200, + 200, 200, 200, 478, 479, 1395, 489, 200, 200, 200, + 1395, 482, 200, 627, 1395, 476, 200, 483, 1395, 1395, + 200, 626, 1395, 200, 628, 477, 200, 200, 500, 200, 478, 479, 200, 489, 200, 200, 200, 200, 200, 200, 627, 200, 200, 484, 490, 485, 503, 200, 200, 200, - 504, 631, 632, 1367, 200, 500, 200, 200, 1367, 200, - 1367, 1367, 633, 1367, 200, 200, 200, 629, 200, 200, + 504, 631, 632, 1395, 200, 500, 200, 200, 1395, 200, + 1395, 1395, 633, 1395, 200, 200, 200, 629, 200, 200, 484, 490, 485, 503, 200, 200, 200, 504, 631, 632, - 630, 200, 1367, 200, 200, 486, 634, 487, 200, 633, + 630, 200, 1395, 200, 200, 486, 634, 487, 200, 633, 491, 635, 636, 200, 629, 200, 200, 200, 488, 200, 200, 637, 638, 200, 200, 492, 639, 630, 200, 200, - 1367, 640, 486, 634, 487, 200, 641, 491, 635, 636, - 1367, 1367, 200, 200, 200, 488, 200, 200, 637, 638, - 200, 200, 492, 639, 1367, 200, 200, 200, 640, 200, - 495, 1367, 200, 641, 200, 493, 1367, 200, 494, 200, - 496, 1367, 200, 200, 642, 200, 643, 1367, 644, 1367, - 200, 200, 1367, 200, 200, 200, 200, 495, 200, 200, - 1367, 200, 493, 200, 200, 494, 200, 496, 497, 200, + 1395, 640, 486, 634, 487, 200, 641, 491, 635, 636, + 1395, 1395, 200, 200, 200, 488, 200, 200, 637, 638, + 200, 200, 492, 639, 1395, 200, 200, 200, 640, 200, + 495, 1395, 200, 641, 200, 493, 1395, 200, 494, 200, + 496, 1395, 200, 200, 642, 200, 643, 1395, 644, 1395, + 200, 200, 1395, 200, 200, 200, 200, 495, 200, 200, + 1395, 200, 493, 200, 200, 494, 200, 496, 497, 200, 200, 642, 200, 643, 200, 644, 200, 200, 200, 498, - 200, 200, 200, 1367, 645, 200, 200, 200, 1367, 200, - 200, 1367, 1367, 646, 200, 497, 647, 648, 1367, 200, - 649, 200, 1367, 200, 1367, 650, 498, 651, 200, 1367, + 200, 200, 200, 1395, 645, 200, 200, 200, 1395, 200, + 200, 1395, 1395, 646, 200, 497, 647, 648, 1395, 200, + 649, 200, 1395, 200, 1395, 650, 498, 651, 200, 1395, 200, 645, 200, 200, 200, 200, 200, 200, 499, 200, 646, 200, 200, 647, 648, 200, 200, 649, 501, 200, - 1367, 505, 650, 652, 651, 200, 200, 200, 653, 200, - 1367, 200, 200, 502, 200, 499, 200, 200, 654, 200, - 657, 200, 200, 1367, 510, 501, 200, 200, 505, 200, - 652, 200, 200, 200, 660, 653, 200, 200, 200, 1367, - 502, 200, 1367, 1367, 200, 654, 1367, 657, 200, 1367, - - 655, 510, 1367, 1367, 200, 511, 200, 200, 200, 656, - 1367, 660, 200, 200, 200, 506, 512, 200, 200, 513, - 507, 661, 662, 200, 1367, 200, 200, 655, 508, 658, + 1395, 505, 650, 652, 651, 200, 200, 200, 653, 200, + 1395, 200, 200, 502, 200, 499, 200, 200, 654, 200, + 657, 200, 200, 1395, 510, 501, 200, 200, 505, 200, + 652, 200, 200, 200, 660, 653, 200, 200, 200, 1395, + 502, 200, 1395, 1395, 200, 654, 1395, 657, 200, 1395, + + 655, 510, 1395, 1395, 200, 511, 200, 200, 200, 656, + 1395, 660, 200, 200, 200, 506, 512, 200, 200, 513, + 507, 661, 662, 200, 1395, 200, 200, 655, 508, 658, 200, 659, 511, 509, 200, 200, 656, 517, 200, 200, 663, 200, 506, 512, 200, 200, 513, 507, 661, 662, - 200, 518, 200, 200, 1367, 508, 658, 200, 659, 200, + 200, 518, 200, 200, 1395, 508, 658, 200, 659, 200, 509, 200, 200, 519, 517, 200, 514, 663, 200, 200, - 664, 665, 200, 666, 669, 515, 1367, 200, 518, 200, - 1367, 520, 200, 516, 1367, 200, 200, 200, 200, 200, - 519, 1367, 1367, 514, 1367, 200, 200, 664, 665, 667, + 664, 665, 200, 666, 669, 515, 1395, 200, 518, 200, + 1395, 520, 200, 516, 1395, 200, 200, 200, 200, 200, + 519, 1395, 1395, 514, 1395, 200, 200, 664, 665, 667, 666, 669, 515, 668, 200, 200, 200, 200, 520, 200, 516, 200, 200, 670, 200, 522, 200, 200, 523, 200, 521, 200, 200, 200, 800, 200, 667, 200, 801, 200, - 668, 200, 200, 1367, 200, 1367, 802, 803, 200, 200, + 668, 200, 200, 1395, 200, 1395, 802, 803, 200, 200, 670, 200, 522, 804, 200, 523, 200, 521, 200, 526, - 200, 800, 200, 200, 200, 801, 200, 1367, 200, 200, + 200, 800, 200, 200, 200, 801, 200, 1395, 200, 200, 200, 524, 200, 802, 803, 805, 200, 200, 200, 200, - 804, 200, 525, 200, 806, 200, 526, 200, 1367, 527, - 200, 200, 807, 200, 528, 1367, 200, 200, 524, 200, - 1367, 200, 805, 200, 200, 1367, 200, 808, 200, 525, + 804, 200, 525, 200, 806, 200, 526, 200, 1395, 527, + 200, 200, 807, 200, 528, 1395, 200, 200, 524, 200, + 1395, 200, 805, 200, 200, 1395, 200, 808, 200, 525, 200, 806, 200, 200, 200, 529, 527, 535, 200, 807, 200, 528, 200, 200, 809, 810, 534, 200, 200, 200, - 200, 200, 200, 200, 808, 530, 1367, 200, 1367, 1367, - 200, 811, 529, 1367, 535, 1367, 1367, 200, 1367, 200, + 200, 200, 200, 200, 808, 530, 1395, 200, 1395, 1395, + 200, 811, 529, 1395, 535, 1395, 1395, 200, 1395, 200, 200, 809, 810, 534, 200, 812, 200, 813, 200, 200, - 200, 1367, 530, 531, 200, 536, 200, 200, 811, 814, - 532, 537, 200, 533, 200, 538, 200, 200, 1367, 200, - 815, 816, 812, 1367, 813, 200, 200, 1367, 539, 817, + 200, 1395, 530, 531, 200, 536, 200, 200, 811, 814, + 532, 537, 200, 533, 200, 538, 200, 200, 1395, 200, + 815, 816, 812, 1395, 813, 200, 200, 1395, 539, 817, 531, 818, 536, 200, 200, 200, 814, 532, 537, 200, - 533, 540, 538, 200, 200, 200, 200, 815, 816, 1367, + 533, 540, 538, 200, 200, 200, 200, 815, 816, 1395, 200, 200, 200, 200, 200, 539, 817, 819, 818, 542, 200, 200, 200, 200, 674, 541, 200, 200, 540, 820, 200, 200, 200, 200, 821, 822, 200, 200, 200, 823, - 824, 200, 825, 200, 819, 1367, 542, 200, 200, 1367, - 200, 674, 541, 200, 200, 1367, 820, 200, 200, 1367, - 200, 821, 822, 200, 1367, 1367, 823, 824, 1367, 825, + 824, 200, 825, 200, 819, 1395, 542, 200, 200, 1395, + 200, 674, 541, 200, 200, 1395, 820, 200, 200, 1395, + 200, 821, 822, 200, 1395, 1395, 823, 824, 1395, 825, 200, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 200, 672, 200, 673, 200, 200, 200, 200, 826, - 827, 200, 200, 200, 200, 1367, 828, 829, 1367, 830, + 827, 200, 200, 200, 200, 1395, 828, 829, 1395, 830, - 1367, 200, 200, 200, 200, 1367, 1367, 1367, 200, 672, + 1395, 200, 200, 200, 200, 1395, 1395, 1395, 200, 672, 200, 673, 200, 200, 200, 200, 826, 827, 200, 200, 200, 200, 675, 828, 829, 200, 830, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 1367, - 200, 200, 200, 1367, 831, 200, 200, 1367, 676, 675, - 832, 1367, 200, 833, 200, 834, 1367, 1367, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 1395, + 200, 200, 200, 1395, 831, 200, 200, 1395, 676, 675, + 832, 1395, 200, 833, 200, 834, 1395, 1395, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 677, 831, 200, 200, 200, 676, 200, 832, 200, 200, - 833, 835, 834, 679, 200, 200, 200, 1367, 680, 200, + 833, 835, 834, 679, 200, 200, 200, 1395, 680, 200, 200, 836, 678, 200, 200, 200, 837, 677, 838, 200, 200, 200, 681, 200, 200, 200, 200, 839, 835, 200, 679, 200, 840, 200, 200, 680, 200, 200, 836, 678, - 200, 200, 200, 837, 200, 838, 200, 200, 1367, 681, - 200, 200, 1367, 685, 839, 1367, 200, 1367, 1367, 840, - 200, 200, 682, 1367, 683, 200, 841, 200, 200, 200, - 842, 200, 843, 1367, 200, 200, 844, 200, 200, 684, - 685, 686, 200, 1367, 200, 200, 687, 200, 200, 682, + 200, 200, 200, 837, 200, 838, 200, 200, 1395, 681, + 200, 200, 1395, 685, 839, 1395, 200, 1395, 1395, 840, + 200, 200, 682, 1395, 683, 200, 841, 200, 200, 200, + 842, 200, 843, 1395, 200, 200, 844, 200, 200, 684, + 685, 686, 200, 1395, 200, 200, 687, 200, 200, 682, 200, 683, 200, 841, 200, 200, 200, 842, 200, 843, - 200, 200, 200, 844, 1367, 200, 684, 1367, 686, 200, - 689, 200, 200, 687, 200, 200, 1367, 200, 200, 1367, + 200, 200, 200, 844, 1395, 200, 684, 1395, 686, 200, + 689, 200, 200, 687, 200, 200, 1395, 200, 200, 1395, 845, 200, 690, 846, 200, 200, 200, 200, 847, 688, - 200, 200, 1367, 200, 200, 1367, 200, 689, 691, 850, - 1367, 200, 1367, 200, 1367, 200, 200, 845, 848, 690, + 200, 200, 1395, 200, 200, 1395, 200, 689, 691, 850, + 1395, 200, 1395, 200, 1395, 200, 200, 845, 848, 690, 846, 200, 851, 200, 852, 847, 688, 200, 200, 849, 200, 200, 200, 200, 200, 691, 850, 693, 692, 200, 200, 200, 853, 200, 200, 848, 200, 200, 200, 851, - 854, 852, 857, 694, 858, 1367, 849, 200, 200, 200, - 695, 200, 200, 1367, 693, 692, 200, 200, 200, 853, - 1367, 200, 200, 200, 200, 200, 1367, 854, 200, 857, - 694, 858, 696, 859, 200, 200, 1367, 695, 200, 200, + 854, 852, 857, 694, 858, 1395, 849, 200, 200, 200, + 695, 200, 200, 1395, 693, 692, 200, 200, 200, 853, + 1395, 200, 200, 200, 200, 200, 1395, 854, 200, 857, + 694, 858, 696, 859, 200, 200, 1395, 695, 200, 200, 855, 856, 697, 698, 200, 860, 200, 200, 200, 200, - 200, 1367, 861, 200, 862, 200, 200, 863, 699, 696, - 859, 1367, 864, 200, 1367, 200, 200, 855, 856, 697, - 698, 1367, 860, 200, 200, 200, 700, 200, 200, 861, + 200, 1395, 861, 200, 862, 200, 200, 863, 699, 696, + 859, 1395, 864, 200, 1395, 200, 200, 855, 856, 697, + 698, 1395, 860, 200, 200, 200, 700, 200, 200, 861, 200, 862, 200, 200, 863, 699, 865, 701, 200, 864, - 200, 200, 1367, 200, 866, 1367, 200, 200, 200, 1367, - 200, 867, 868, 700, 869, 200, 200, 200, 1367, 200, - 1367, 702, 1367, 865, 701, 200, 200, 1367, 200, 703, - 1367, 866, 200, 200, 200, 200, 200, 200, 867, 868, - 1367, 869, 200, 200, 200, 705, 870, 200, 702, 200, + 200, 200, 1395, 200, 866, 1395, 200, 200, 200, 1395, + 200, 867, 868, 700, 869, 200, 200, 200, 1395, 200, + 1395, 702, 1395, 865, 701, 200, 200, 1395, 200, 703, + 1395, 866, 200, 200, 200, 200, 200, 200, 867, 868, + 1395, 869, 200, 200, 200, 705, 870, 200, 702, 200, 200, 200, 200, 200, 200, 200, 703, 200, 704, 200, - 706, 871, 872, 200, 1367, 200, 873, 200, 1367, 200, + 706, 871, 872, 200, 1395, 200, 873, 200, 1395, 200, 200, 874, 705, 870, 200, 875, 200, 200, 200, 200, - 876, 200, 200, 1367, 200, 704, 200, 706, 871, 872, + 876, 200, 200, 1395, 200, 704, 200, 706, 871, 872, 200, 707, 200, 873, 200, 200, 200, 200, 874, 200, - 708, 1367, 875, 1367, 200, 200, 200, 876, 877, 200, + 708, 1395, 875, 1395, 200, 200, 200, 876, 877, 200, 200, 200, 711, 200, 200, 200, 710, 200, 707, 200, - 200, 200, 200, 200, 200, 1367, 200, 708, 709, 1367, + 200, 200, 200, 200, 200, 1395, 200, 708, 709, 1395, 200, 200, 200, 200, 200, 877, 200, 200, 200, 711, - 200, 200, 200, 710, 878, 879, 200, 200, 200, 1367, + 200, 200, 200, 710, 878, 879, 200, 200, 200, 1395, 200, 200, 200, 880, 200, 709, 714, 200, 712, 200, 200, 200, 881, 200, 200, 200, 200, 200, 882, 883, 713, 878, 879, 884, 715, 200, 200, 200, 200, 200, - 880, 200, 200, 714, 1367, 712, 200, 200, 200, 881, + 880, 200, 200, 714, 1395, 712, 200, 200, 200, 881, 200, 200, 200, 200, 885, 882, 883, 713, 200, 886, 884, 715, 200, 200, 716, 200, 200, 887, 888, 200, - 717, 200, 1367, 889, 200, 200, 200, 890, 718, 200, - 200, 885, 891, 200, 1367, 200, 886, 719, 892, 200, - 200, 716, 893, 200, 887, 888, 1367, 717, 200, 200, - 889, 200, 1367, 200, 890, 718, 200, 200, 1367, 891, + 717, 200, 1395, 889, 200, 200, 200, 890, 718, 200, + 200, 885, 891, 200, 1395, 200, 886, 719, 892, 200, + 200, 716, 893, 200, 887, 888, 1395, 717, 200, 200, + 889, 200, 1395, 200, 890, 718, 200, 200, 1395, 891, 200, 720, 721, 200, 719, 892, 200, 200, 200, 893, - 1367, 894, 200, 200, 200, 895, 200, 1367, 896, 200, - 1367, 1367, 897, 1367, 200, 200, 1367, 200, 720, 721, - 200, 1367, 200, 1367, 722, 200, 1367, 200, 894, 200, + 1395, 894, 200, 200, 200, 895, 200, 1395, 896, 200, + 1395, 1395, 897, 1395, 200, 200, 1395, 200, 720, 721, + 200, 1395, 200, 1395, 722, 200, 1395, 200, 894, 200, 200, 200, 895, 200, 723, 896, 200, 724, 200, 897, - 200, 200, 200, 200, 200, 200, 998, 1367, 200, 200, - 200, 722, 200, 200, 200, 1367, 999, 1367, 200, 1367, - 200, 723, 1000, 725, 724, 200, 1001, 200, 200, 1367, + 200, 200, 200, 200, 200, 200, 998, 1395, 200, 200, + 200, 722, 200, 200, 200, 1395, 999, 1395, 200, 1395, + 200, 723, 1000, 725, 724, 200, 1001, 200, 200, 1395, 200, 1002, 200, 998, 200, 200, 1003, 200, 200, 200, - 200, 1367, 200, 999, 200, 200, 200, 726, 727, 1000, + 200, 1395, 200, 999, 200, 200, 200, 726, 727, 1000, - 725, 1367, 200, 1001, 200, 200, 200, 1367, 1002, 1367, - 200, 200, 200, 1003, 1004, 200, 728, 1367, 729, 200, - 1005, 200, 200, 200, 726, 727, 200, 1367, 200, 200, + 725, 1395, 200, 1001, 200, 200, 200, 1395, 1002, 1395, + 200, 200, 200, 1003, 1004, 200, 728, 1395, 729, 200, + 1005, 200, 200, 200, 726, 727, 200, 1395, 200, 200, 730, 200, 731, 200, 200, 1006, 200, 200, 200, 200, 200, 1004, 200, 728, 732, 729, 1007, 1005, 200, 200, - 200, 1367, 200, 200, 733, 200, 200, 730, 1367, 731, + 200, 1395, 200, 200, 733, 200, 200, 730, 1395, 731, 200, 200, 1006, 200, 200, 200, 200, 200, 1008, 200, 1009, 732, 734, 1007, 1010, 200, 200, 200, 200, 200, - 735, 733, 200, 200, 200, 200, 1367, 200, 1011, 200, - 200, 200, 1367, 200, 200, 1008, 1367, 1009, 1012, 734, + 735, 733, 200, 200, 200, 200, 1395, 200, 1011, 200, + 200, 200, 1395, 200, 200, 1008, 1395, 1009, 1012, 734, - 737, 1010, 1367, 200, 200, 200, 200, 735, 200, 200, + 737, 1010, 1395, 200, 200, 200, 200, 735, 200, 200, 200, 200, 200, 200, 736, 1011, 200, 200, 200, 200, 200, 200, 200, 738, 742, 1012, 200, 737, 1013, 200, - 1367, 200, 200, 200, 1367, 200, 1014, 200, 1015, 200, + 1395, 200, 200, 200, 1395, 200, 1014, 200, 1015, 200, 200, 736, 200, 739, 200, 200, 200, 200, 200, 200, 738, 742, 1016, 200, 200, 1013, 200, 200, 200, 200, 743, 200, 200, 1014, 200, 1015, 200, 200, 200, 200, - 739, 200, 745, 1367, 1017, 200, 1367, 200, 200, 1016, - 1018, 200, 1367, 1019, 200, 200, 1367, 743, 200, 200, - 1020, 200, 740, 200, 200, 200, 200, 200, 1367, 745, + 739, 200, 745, 1395, 1017, 200, 1395, 200, 200, 1016, + 1018, 200, 1395, 1019, 200, 200, 1395, 743, 200, 200, + 1020, 200, 740, 200, 200, 200, 200, 200, 1395, 745, 200, 1017, 741, 200, 200, 200, 200, 1018, 1021, 744, - 1019, 1367, 1022, 200, 1367, 1367, 200, 1020, 200, 740, + 1019, 1395, 1022, 200, 1395, 1395, 200, 1020, 200, 740, 200, 200, 200, 200, 200, 200, 1023, 200, 200, 741, 200, 200, 1024, 200, 746, 1021, 744, 1025, 200, 1022, - 200, 200, 747, 200, 1026, 200, 200, 1367, 200, 200, - 200, 1027, 200, 1023, 1367, 200, 200, 1028, 200, 1024, - 748, 746, 200, 1367, 1025, 200, 200, 200, 200, 747, - 1029, 1026, 200, 200, 200, 1367, 200, 200, 1027, 1367, - 749, 200, 1030, 200, 1028, 1367, 200, 748, 200, 200, - 200, 1031, 751, 200, 200, 750, 200, 1029, 1367, 200, - - 200, 200, 200, 200, 1367, 1032, 752, 749, 200, 1030, - 200, 1033, 200, 200, 1367, 200, 200, 200, 1031, 751, - 1367, 200, 750, 200, 1034, 200, 200, 200, 200, 200, - 756, 200, 1032, 752, 753, 200, 1367, 200, 1033, 200, - 200, 200, 1367, 200, 1037, 1038, 1367, 761, 200, 200, - 1367, 1034, 200, 200, 200, 200, 1367, 756, 200, 200, - 1039, 753, 200, 200, 759, 200, 1367, 200, 200, 754, - 200, 1037, 1038, 200, 761, 200, 200, 200, 1040, 1367, + 200, 200, 747, 200, 1026, 200, 200, 1395, 200, 200, + 200, 1027, 200, 1023, 1395, 200, 200, 1028, 200, 1024, + 748, 746, 200, 1395, 1025, 200, 200, 200, 200, 747, + 1029, 1026, 200, 200, 200, 1395, 200, 200, 1027, 1395, + 749, 200, 1030, 200, 1028, 1395, 200, 748, 200, 200, + 200, 1031, 751, 200, 200, 750, 200, 1029, 1395, 200, + + 200, 200, 200, 200, 1395, 1032, 752, 749, 200, 1030, + 200, 1033, 200, 200, 1395, 200, 200, 200, 1031, 751, + 1395, 200, 750, 200, 1034, 200, 200, 200, 200, 200, + 756, 200, 1032, 752, 753, 200, 1395, 200, 1033, 200, + 200, 200, 1395, 200, 1037, 1038, 1395, 761, 200, 200, + 1395, 1034, 200, 200, 200, 200, 1395, 756, 200, 200, + 1039, 753, 200, 200, 759, 200, 1395, 200, 200, 754, + 200, 1037, 1038, 200, 761, 200, 200, 200, 1040, 1395, 1041, 200, 1035, 200, 1042, 1036, 200, 1039, 755, 1043, - 200, 759, 200, 200, 1367, 1044, 754, 200, 1045, 1046, + 200, 759, 200, 200, 1395, 1044, 754, 200, 1045, 1046, - 200, 760, 200, 1367, 200, 1040, 200, 1041, 200, 1035, + 200, 760, 200, 1395, 200, 1040, 200, 1041, 200, 1035, 200, 1042, 1036, 200, 1047, 755, 1043, 1048, 200, 762, - 200, 757, 1044, 200, 1049, 1045, 1046, 1367, 760, 200, - 200, 1367, 200, 200, 758, 200, 1050, 200, 1051, 200, - 200, 1047, 200, 1367, 1048, 200, 762, 1367, 757, 1052, - 200, 1049, 1053, 1367, 763, 1367, 200, 200, 200, 200, - 1367, 758, 200, 1050, 200, 1051, 200, 200, 200, 200, - 200, 200, 1054, 765, 200, 1367, 1052, 200, 200, 1053, - 200, 763, 764, 1367, 766, 200, 200, 200, 1367, 200, - 200, 200, 1055, 1367, 200, 200, 200, 200, 200, 1054, - - 765, 200, 768, 1367, 200, 200, 200, 200, 200, 764, + 200, 757, 1044, 200, 1049, 1045, 1046, 1395, 760, 200, + 200, 1395, 200, 200, 758, 200, 1050, 200, 1051, 200, + 200, 1047, 200, 1395, 1048, 200, 762, 1395, 757, 1052, + 200, 1049, 1053, 1395, 763, 1395, 200, 200, 200, 200, + 1395, 758, 200, 1050, 200, 1051, 200, 200, 200, 200, + 200, 200, 1054, 765, 200, 1395, 1052, 200, 200, 1053, + 200, 763, 764, 1395, 766, 200, 200, 200, 1395, 200, + 200, 200, 1055, 1395, 200, 200, 200, 200, 200, 1054, + + 765, 200, 768, 1395, 200, 200, 200, 200, 200, 764, 200, 766, 200, 200, 200, 767, 1056, 200, 200, 1055, 200, 200, 200, 200, 770, 200, 200, 1057, 200, 768, 200, 769, 1058, 200, 200, 200, 200, 200, 774, 200, @@ -1500,595 +1512,617 @@ static const flex_int16_t yy_nxt[9032] = 200, 1060, 200, 200, 200, 200, 771, 200, 1065, 200, 775, 200, 200, 200, 200, 1061, 200, 200, 1062, 1063, - 1367, 1064, 200, 773, 1367, 772, 200, 200, 200, 200, + 1395, 1064, 200, 773, 1395, 772, 200, 200, 200, 200, 1066, 200, 200, 200, 776, 1065, 200, 775, 200, 1067, 777, 200, 200, 1068, 200, 1069, 200, 200, 778, 1070, - 1071, 200, 200, 200, 1148, 200, 200, 1066, 1367, 1367, - 200, 776, 1367, 1367, 1367, 200, 1067, 777, 1367, 200, + 1071, 200, 200, 200, 1148, 200, 200, 1066, 1395, 1395, + 200, 776, 1395, 1395, 1395, 200, 1067, 777, 1395, 200, 1068, 200, 1069, 200, 200, 778, 1070, 1071, 200, 200, 200, 1148, 200, 200, 200, 781, 780, 200, 779, 200, - 200, 200, 200, 1149, 200, 200, 200, 1367, 1150, 1367, - 200, 1151, 1152, 1153, 1367, 200, 1367, 200, 1154, 200, + 200, 200, 200, 1149, 200, 200, 200, 1395, 1150, 1395, + 200, 1151, 1152, 1153, 1395, 200, 1395, 200, 1154, 200, 200, 200, 781, 780, 200, 779, 200, 200, 200, 200, 1149, 200, 200, 200, 200, 1150, 782, 200, 1151, 1152, - 1153, 200, 200, 783, 200, 1154, 200, 200, 200, 1367, - 200, 1155, 784, 1367, 785, 1156, 1157, 200, 1158, 1367, - 1159, 200, 200, 782, 200, 1160, 1161, 1367, 200, 1367, - 783, 200, 1367, 200, 1162, 200, 200, 200, 1155, 784, + 1153, 200, 200, 783, 200, 1154, 200, 200, 200, 1395, + 200, 1155, 784, 1395, 785, 1156, 1157, 200, 1158, 1395, + 1159, 200, 200, 782, 200, 1160, 1161, 1395, 200, 1395, + 783, 200, 1395, 200, 1162, 200, 200, 200, 1155, 784, 200, 785, 1156, 1157, 200, 1158, 786, 1159, 787, 200, - 200, 200, 1160, 1161, 200, 1367, 200, 200, 789, 790, - 788, 1162, 200, 200, 200, 1367, 200, 200, 1163, 200, - 200, 1367, 200, 786, 1367, 787, 1367, 200, 1367, 1367, + 200, 200, 1160, 1161, 200, 1395, 200, 200, 789, 790, + 788, 1162, 200, 200, 200, 1395, 200, 200, 1163, 200, + 200, 1395, 200, 786, 1395, 787, 1395, 200, 1395, 1395, - 1367, 200, 200, 200, 200, 789, 790, 788, 1367, 200, + 1395, 200, 200, 200, 200, 789, 790, 788, 1395, 200, 1164, 200, 792, 200, 1165, 1163, 200, 200, 200, 200, 200, 200, 1166, 200, 200, 200, 200, 791, 200, 200, - 200, 200, 1367, 200, 1367, 793, 200, 1164, 1167, 792, - 1367, 1165, 1168, 1367, 1367, 200, 1367, 200, 200, 1166, + 200, 200, 1395, 200, 1395, 793, 200, 1164, 1167, 792, + 1395, 1165, 1168, 1395, 1395, 200, 1395, 200, 200, 1166, 200, 200, 200, 200, 791, 200, 1169, 200, 200, 200, 200, 200, 793, 200, 1170, 1167, 200, 794, 200, 1168, - 795, 200, 1171, 797, 796, 200, 1367, 200, 1367, 200, - 200, 1172, 1367, 1169, 200, 1367, 200, 1367, 200, 200, - 1173, 1170, 1367, 200, 794, 200, 1367, 795, 200, 1171, + 795, 200, 1171, 797, 796, 200, 1395, 200, 1395, 200, + 200, 1172, 1395, 1169, 200, 1395, 200, 1395, 200, 200, + 1173, 1170, 1395, 200, 794, 200, 1395, 795, 200, 1171, 797, 796, 200, 200, 200, 200, 200, 200, 1172, 798, 200, 200, 200, 1174, 200, 200, 200, 1173, 899, 200, - 1367, 200, 1175, 200, 200, 1367, 1367, 900, 200, 1367, - 200, 1176, 200, 200, 1367, 1367, 798, 200, 1367, 200, - 1174, 200, 200, 200, 1367, 899, 200, 200, 200, 1175, + 1395, 200, 1175, 200, 200, 1395, 1395, 900, 200, 1395, + 200, 1176, 200, 200, 1395, 1395, 798, 200, 1395, 200, + 1174, 200, 200, 200, 1395, 899, 200, 200, 200, 1175, 200, 200, 200, 200, 900, 200, 200, 1177, 1176, 200, 200, 904, 200, 901, 1178, 200, 200, 1179, 1180, 200, - 200, 200, 902, 1181, 200, 200, 1367, 905, 903, 200, - 200, 200, 1367, 200, 1177, 200, 200, 200, 904, 200, + 200, 200, 902, 1181, 200, 200, 1395, 905, 903, 200, + 200, 200, 1395, 200, 1177, 200, 200, 200, 904, 200, 901, 1178, 200, 200, 1179, 1180, 200, 200, 200, 902, - 1181, 1182, 200, 907, 905, 903, 1367, 200, 200, 200, - 1367, 906, 200, 200, 200, 200, 200, 1183, 1367, 200, - 1367, 200, 1367, 200, 200, 200, 1184, 1185, 1182, 1186, - 907, 1187, 1367, 908, 200, 200, 200, 200, 906, 1188, + 1181, 1182, 200, 907, 905, 903, 1395, 200, 200, 200, + 1395, 906, 200, 200, 200, 200, 200, 1183, 1395, 200, + 1395, 200, 1395, 200, 200, 200, 1184, 1185, 1182, 1186, + 907, 1187, 1395, 908, 200, 200, 200, 200, 906, 1188, 200, 200, 200, 200, 1183, 200, 200, 200, 200, 200, 200, 1189, 200, 1184, 1185, 200, 1186, 200, 1187, 200, 908, 1190, 200, 200, 200, 200, 1188, 909, 200, 200, - 1367, 200, 200, 1191, 200, 200, 200, 1192, 1189, 200, - 1367, 200, 200, 1240, 200, 200, 200, 1242, 1190, 200, - 200, 200, 200, 910, 909, 200, 200, 200, 200, 1243, - - 1191, 911, 200, 1244, 1192, 200, 200, 200, 200, 1367, - 1240, 200, 200, 1367, 1242, 200, 200, 200, 200, 1367, - 910, 200, 200, 200, 200, 200, 1243, 200, 911, 200, - 1244, 200, 200, 200, 200, 200, 912, 1245, 200, 200, - 913, 200, 200, 200, 200, 200, 914, 1246, 200, 915, - 200, 200, 200, 200, 200, 1367, 200, 1367, 200, 200, - 200, 200, 200, 912, 1245, 200, 200, 913, 200, 200, - 200, 200, 200, 914, 1246, 200, 915, 1367, 200, 200, - 200, 200, 917, 1367, 200, 200, 200, 200, 200, 200, - 916, 924, 200, 1247, 200, 200, 200, 200, 200, 1367, - - 1248, 1367, 200, 200, 918, 200, 200, 200, 200, 917, - 200, 200, 200, 1249, 200, 200, 200, 916, 924, 1367, - 1247, 200, 200, 1250, 200, 1251, 200, 1248, 200, 1252, - 200, 918, 200, 200, 200, 919, 1253, 200, 200, 200, - 1249, 200, 200, 1254, 1367, 1255, 200, 920, 1256, 1367, - 1250, 200, 1251, 200, 1367, 200, 1252, 1367, 921, 1367, - 200, 1257, 919, 1253, 1258, 200, 200, 1259, 200, 200, - 1254, 200, 1255, 200, 920, 1256, 200, 200, 200, 200, - 1367, 200, 1260, 922, 200, 921, 923, 1261, 1257, 200, - 1262, 1258, 1367, 1367, 1259, 200, 200, 200, 200, 1367, - - 1288, 1290, 200, 200, 200, 1291, 200, 200, 200, 1260, - 922, 200, 1367, 923, 1261, 1292, 200, 1262, 925, 200, - 200, 200, 200, 1293, 200, 200, 200, 1288, 1290, 200, - 200, 200, 1291, 1294, 200, 1241, 1241, 200, 1367, 200, - 1295, 1296, 1292, 1367, 200, 925, 200, 200, 200, 200, - 1293, 1297, 200, 200, 1367, 926, 1298, 200, 200, 1299, - 1294, 1300, 1367, 200, 200, 200, 200, 1295, 1296, 1317, - 200, 200, 1318, 1289, 1319, 200, 200, 200, 1297, 200, - 1367, 927, 926, 1298, 200, 1367, 1299, 1367, 1300, 200, - 200, 200, 200, 200, 1367, 928, 1317, 200, 200, 1318, - - 1289, 1319, 200, 200, 200, 200, 200, 200, 927, 1320, - 1367, 200, 200, 1321, 929, 1367, 200, 200, 200, 200, - 200, 200, 928, 1367, 931, 200, 200, 930, 1367, 1324, - 200, 200, 200, 1367, 200, 200, 1320, 200, 1367, 200, - 1321, 929, 200, 1331, 200, 933, 200, 200, 200, 200, - 932, 931, 1367, 200, 930, 200, 1324, 1332, 200, 1316, - 1316, 200, 200, 200, 200, 200, 1367, 1367, 200, 200, - 1331, 200, 933, 200, 200, 200, 200, 932, 1367, 200, - 1335, 200, 200, 200, 1332, 1338, 1367, 1340, 200, 200, - 200, 200, 200, 200, 934, 200, 1367, 200, 200, 200, - - 200, 1330, 200, 935, 1367, 200, 200, 1335, 200, 936, - 200, 1342, 1338, 200, 1340, 200, 200, 1344, 200, 937, - 200, 934, 1367, 200, 200, 200, 200, 200, 1330, 1346, - 935, 200, 200, 200, 1367, 200, 936, 1348, 1342, 1350, - 200, 200, 200, 200, 1344, 200, 937, 1352, 1367, 200, - 200, 200, 200, 938, 200, 200, 1346, 200, 200, 1367, - 200, 200, 200, 1354, 1348, 200, 1350, 200, 200, 1367, - 200, 1356, 200, 1367, 1352, 200, 200, 200, 200, 200, - 938, 1358, 200, 200, 200, 200, 939, 200, 200, 200, - 1354, 940, 200, 200, 200, 200, 200, 1367, 1356, 1323, - - 1316, 200, 200, 200, 200, 1367, 200, 1360, 1358, 1367, + 1395, 200, 200, 1191, 200, 200, 200, 1192, 1189, 200, + 1395, 200, 200, 1240, 200, 200, 200, 1243, 1190, 200, + 200, 200, 200, 910, 909, 200, 200, 200, 200, 1244, + + 1191, 911, 200, 1245, 1192, 200, 200, 200, 200, 1395, + 1240, 200, 200, 1395, 1243, 200, 200, 200, 200, 1395, + 910, 200, 200, 200, 200, 200, 1244, 200, 911, 200, + 1245, 200, 200, 200, 200, 200, 912, 1246, 200, 200, + 913, 200, 200, 200, 200, 200, 914, 1247, 200, 915, + 200, 200, 200, 200, 200, 1395, 200, 1395, 200, 200, + 200, 200, 200, 912, 1246, 200, 200, 913, 200, 200, + 200, 200, 200, 914, 1247, 200, 915, 1395, 200, 200, + 200, 200, 917, 1395, 200, 200, 200, 200, 200, 200, + 916, 924, 200, 1248, 200, 200, 200, 200, 200, 1395, + + 1249, 1395, 200, 200, 918, 200, 200, 200, 200, 917, + 200, 200, 200, 1250, 200, 200, 200, 916, 924, 1395, + 1248, 200, 200, 1251, 200, 1252, 200, 1249, 200, 1253, + 200, 918, 200, 200, 200, 919, 1254, 200, 200, 200, + 1250, 200, 200, 1255, 1395, 1256, 200, 920, 1257, 1395, + 1251, 200, 1252, 200, 1395, 200, 1253, 1395, 921, 1395, + 200, 1258, 919, 1254, 1259, 200, 200, 1260, 200, 200, + 1255, 200, 1256, 200, 920, 1257, 200, 200, 200, 200, + 1395, 200, 1261, 922, 200, 921, 923, 1262, 1258, 200, + 1263, 1259, 1395, 1395, 1260, 200, 200, 200, 200, 1395, + + 1290, 1294, 200, 200, 200, 1295, 200, 200, 200, 1261, + 922, 200, 1395, 923, 1262, 1296, 200, 1263, 925, 200, + 200, 200, 200, 1297, 200, 200, 200, 1290, 1294, 200, + 200, 200, 1295, 1298, 200, 1241, 1241, 200, 1395, 200, + 1292, 1299, 1296, 1395, 200, 925, 200, 200, 200, 200, + 1297, 1300, 200, 200, 1395, 926, 1293, 200, 200, 1301, + 1298, 1302, 1395, 200, 200, 200, 200, 1292, 1299, 1303, + 200, 200, 1304, 1291, 1323, 200, 200, 200, 1300, 200, + 1395, 927, 926, 1293, 200, 1395, 1301, 1395, 1302, 200, + 200, 200, 200, 200, 1395, 928, 1303, 200, 200, 1304, + + 1291, 1323, 200, 200, 200, 200, 200, 200, 927, 1324, + 1395, 200, 200, 1325, 929, 1395, 200, 200, 200, 200, + 200, 200, 928, 1395, 931, 200, 200, 930, 1395, 1326, + 200, 200, 200, 1327, 200, 200, 1324, 200, 1395, 200, + 1325, 929, 200, 1328, 200, 933, 200, 200, 200, 200, + 932, 931, 1395, 200, 930, 200, 1326, 1329, 200, 1332, + 1327, 200, 200, 200, 200, 200, 1395, 1395, 200, 200, + 1328, 200, 933, 200, 200, 200, 200, 932, 1395, 200, + 1341, 200, 200, 200, 1329, 1342, 1332, 1343, 200, 200, + 200, 200, 200, 200, 934, 200, 1395, 200, 200, 200, + + 200, 1344, 200, 935, 1395, 200, 200, 1341, 200, 936, + 200, 1347, 1342, 200, 1343, 200, 200, 1352, 200, 937, + 200, 934, 1395, 200, 200, 200, 200, 200, 1344, 1353, + 935, 200, 200, 200, 1395, 200, 936, 1354, 1347, 1356, + 200, 200, 200, 200, 1352, 200, 937, 1360, 1395, 200, + 200, 200, 200, 938, 200, 200, 1353, 200, 200, 1395, + 200, 200, 200, 1361, 1354, 200, 1356, 200, 200, 1395, + 200, 1363, 200, 1395, 1360, 200, 200, 200, 200, 200, + 938, 1395, 200, 200, 200, 200, 939, 200, 200, 200, + 1361, 940, 200, 200, 200, 200, 200, 1395, 1363, 1322, + + 1322, 200, 200, 200, 200, 1395, 200, 1366, 1331, 1322, 200, 942, 200, 939, 200, 200, 200, 200, 940, 200, - 200, 200, 200, 200, 200, 200, 1367, 200, 200, 200, - 200, 200, 941, 200, 1360, 200, 1367, 200, 942, 1367, - 200, 1334, 200, 1367, 200, 944, 200, 1367, 200, 1367, - 1367, 200, 200, 200, 200, 1367, 200, 200, 200, 941, - 200, 1367, 200, 200, 200, 1367, 943, 200, 1334, 200, - 1367, 200, 944, 200, 1367, 945, 200, 1367, 1367, 1367, - 200, 200, 1265, 1241, 200, 200, 1367, 200, 1367, 1367, - 200, 946, 200, 943, 1367, 1367, 200, 200, 200, 200, - - 200, 200, 945, 200, 1367, 1367, 200, 1367, 200, 1367, - 1367, 200, 200, 1367, 200, 1367, 1367, 1367, 946, 200, - 1303, 1367, 1367, 1367, 200, 947, 200, 949, 200, 200, - 200, 1367, 200, 200, 200, 1367, 948, 200, 200, 200, - 1367, 200, 200, 200, 1367, 1367, 1367, 1303, 200, 1367, - 1367, 1367, 947, 200, 949, 1367, 200, 200, 1367, 200, - 200, 200, 200, 948, 200, 1367, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 1367, 200, 1367, - 200, 200, 950, 200, 1367, 1367, 200, 200, 1367, 200, - 200, 1367, 200, 1367, 200, 1367, 1367, 200, 200, 200, - - 200, 200, 200, 200, 951, 200, 200, 1367, 200, 950, - 200, 200, 1367, 200, 1367, 1367, 200, 200, 1367, 200, - 1367, 1367, 952, 1367, 200, 1367, 200, 1367, 1367, 200, - 200, 951, 200, 200, 200, 953, 1367, 1367, 200, 200, - 200, 1367, 200, 200, 200, 200, 200, 1367, 1367, 952, + 200, 200, 200, 200, 200, 200, 1395, 200, 200, 200, + 200, 200, 941, 200, 1366, 200, 1395, 200, 942, 1395, + 200, 1340, 200, 1367, 200, 944, 200, 1369, 200, 1395, + 1346, 200, 200, 200, 200, 1395, 200, 200, 200, 941, + 200, 1372, 200, 200, 200, 1395, 943, 200, 1340, 200, + 1367, 200, 944, 200, 1369, 945, 200, 1346, 1373, 1395, + 200, 200, 1266, 1241, 200, 200, 1375, 200, 1372, 1378, + 200, 946, 200, 943, 1379, 1381, 200, 200, 200, 200, + + 200, 200, 945, 200, 1384, 1373, 200, 1395, 200, 1395, + 1395, 200, 200, 1375, 200, 1395, 1378, 1385, 946, 200, + 1307, 1379, 1381, 1387, 200, 947, 200, 949, 200, 200, + 200, 1384, 200, 200, 200, 1395, 948, 200, 200, 200, + 1395, 200, 200, 200, 1385, 1395, 1395, 1307, 200, 1395, + 1387, 1395, 947, 200, 949, 1395, 200, 200, 1395, 200, + 200, 200, 200, 948, 200, 1395, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1395, 200, 1395, + 200, 200, 950, 200, 1395, 1395, 200, 200, 1395, 200, + 200, 1395, 200, 1395, 200, 1395, 1395, 200, 200, 200, + + 200, 200, 200, 200, 951, 200, 200, 1395, 200, 950, + 200, 200, 1395, 200, 1395, 1395, 200, 200, 1395, 200, + 1395, 1395, 952, 1395, 200, 1395, 200, 1395, 1395, 200, + 200, 951, 200, 200, 200, 953, 1395, 1395, 200, 200, + 200, 1395, 200, 200, 200, 200, 200, 1395, 1395, 952, 200, 954, 955, 200, 956, 200, 200, 200, 200, 200, - 200, 200, 953, 1367, 1367, 200, 200, 200, 1367, 200, - 200, 200, 200, 200, 1367, 1367, 1367, 200, 954, 955, - 1367, 956, 200, 200, 200, 200, 200, 200, 1367, 200, - 957, 200, 200, 958, 200, 1367, 200, 200, 200, 200, + 200, 200, 953, 1395, 1395, 200, 200, 200, 1395, 200, + 200, 200, 200, 200, 1395, 1395, 1395, 200, 954, 955, + 1395, 956, 200, 200, 200, 200, 200, 200, 1395, 200, + 957, 200, 200, 958, 200, 1395, 200, 200, 200, 200, - 959, 1367, 200, 200, 200, 975, 200, 1367, 1367, 200, - 200, 200, 200, 200, 200, 200, 200, 957, 200, 1367, + 959, 1395, 200, 200, 200, 975, 200, 1395, 1395, 200, + 200, 200, 200, 200, 200, 200, 200, 957, 200, 1395, 958, 200, 200, 200, 960, 200, 200, 959, 200, 200, - 200, 200, 975, 200, 200, 1367, 200, 200, 1367, 200, - 1367, 200, 200, 200, 200, 1367, 1367, 200, 1367, 200, - 1367, 960, 1367, 200, 1367, 200, 961, 978, 1367, 200, - 1367, 200, 200, 200, 200, 1367, 200, 1367, 1367, 200, - 200, 200, 200, 1367, 200, 962, 1367, 200, 1367, 1367, - 200, 200, 200, 961, 978, 1367, 200, 200, 1367, 200, - 200, 200, 1367, 200, 1367, 1367, 200, 200, 1367, 200, - - 1367, 1367, 962, 200, 200, 1367, 200, 200, 200, 200, - 964, 963, 1367, 200, 200, 200, 200, 1367, 1367, 200, - 1367, 1367, 1367, 200, 200, 200, 200, 1367, 1367, 1367, - 200, 1367, 1367, 200, 200, 200, 1367, 964, 963, 1367, - 200, 965, 200, 200, 1367, 200, 200, 1367, 1367, 1367, - 200, 200, 200, 200, 1367, 966, 967, 1367, 1367, 200, - 200, 200, 200, 200, 200, 1367, 1367, 1367, 965, 200, - 200, 1367, 200, 1367, 1367, 1367, 1367, 1367, 200, 200, - 200, 1367, 966, 967, 1367, 968, 200, 200, 200, 200, - 200, 200, 1367, 1367, 200, 200, 200, 200, 200, 1367, - - 1367, 1367, 1367, 1367, 200, 200, 200, 200, 1367, 1367, - 1367, 1367, 968, 200, 200, 1367, 200, 200, 1367, 1367, - 1367, 200, 200, 200, 1367, 200, 969, 1367, 1367, 1367, - 1367, 200, 200, 200, 1367, 200, 1367, 1367, 200, 200, - 200, 200, 200, 970, 200, 200, 1367, 1367, 200, 1367, - 200, 971, 1367, 969, 1367, 200, 1367, 1367, 200, 1367, - 200, 1367, 200, 1367, 200, 200, 200, 200, 200, 200, + 200, 200, 975, 200, 200, 1395, 200, 200, 1395, 200, + 1395, 200, 200, 200, 200, 1395, 1395, 200, 1395, 200, + 1395, 960, 1395, 200, 1395, 200, 961, 978, 1395, 200, + 1395, 200, 200, 200, 200, 1395, 200, 1395, 1395, 200, + 200, 200, 200, 1395, 200, 962, 1395, 200, 1395, 1395, + 200, 200, 200, 961, 978, 1395, 200, 200, 1395, 200, + 200, 200, 1395, 200, 1395, 1395, 200, 200, 1395, 200, + + 1395, 1395, 962, 200, 200, 1395, 200, 200, 200, 200, + 964, 963, 1395, 200, 200, 200, 200, 1395, 1395, 200, + 1395, 1395, 1395, 200, 200, 200, 200, 1395, 1395, 1395, + 200, 1395, 1395, 200, 200, 200, 1395, 964, 963, 1395, + 200, 965, 200, 200, 1395, 200, 200, 1395, 1395, 1395, + 200, 200, 200, 200, 1395, 966, 967, 1395, 1395, 200, + 200, 200, 200, 200, 200, 1395, 1395, 1395, 965, 200, + 200, 1395, 200, 1395, 1395, 1395, 1395, 1395, 200, 200, + 200, 1395, 966, 967, 1395, 968, 200, 200, 200, 200, + 200, 200, 1395, 1395, 200, 200, 200, 200, 200, 1395, + + 1395, 1395, 1395, 1395, 200, 200, 200, 200, 1395, 1395, + 1395, 1395, 968, 200, 200, 1395, 200, 200, 1395, 1395, + 1395, 200, 200, 200, 1395, 200, 969, 1395, 1395, 1395, + 1395, 200, 200, 200, 1395, 200, 1395, 1395, 200, 200, + 200, 200, 200, 970, 200, 200, 1395, 1395, 200, 1395, + 200, 971, 1395, 969, 1395, 200, 1395, 1395, 200, 1395, + 200, 1395, 200, 1395, 200, 200, 200, 200, 200, 200, 970, 200, 200, 973, 200, 200, 200, 200, 971, 972, - 200, 1367, 200, 1367, 200, 200, 200, 200, 1367, 200, - 1367, 200, 1367, 200, 200, 200, 200, 974, 200, 200, - - 973, 200, 1367, 200, 200, 1367, 972, 200, 1367, 200, - 1367, 200, 1367, 200, 200, 977, 200, 1367, 976, 200, - 200, 1367, 1367, 200, 974, 200, 200, 200, 200, 200, - 1367, 1367, 200, 200, 200, 200, 200, 200, 200, 200, - 1367, 1367, 977, 200, 1367, 976, 200, 979, 200, 1367, - 1367, 200, 200, 200, 200, 200, 200, 200, 1367, 200, - 200, 200, 200, 1367, 200, 200, 200, 200, 1367, 200, - 200, 1367, 981, 980, 979, 200, 200, 200, 200, 200, - 200, 200, 200, 1367, 200, 1367, 1367, 982, 1367, 200, - 1367, 200, 200, 1367, 200, 200, 200, 200, 1367, 981, - - 980, 200, 1367, 200, 200, 1367, 200, 1367, 200, 200, - 1367, 200, 1367, 200, 982, 1367, 200, 200, 200, 200, - 1367, 1367, 200, 200, 200, 200, 1367, 200, 200, 200, - 1367, 200, 983, 200, 1367, 1367, 984, 200, 200, 1367, - 200, 200, 1367, 1367, 200, 1367, 1367, 1367, 1367, 1367, - 200, 1367, 200, 1367, 200, 200, 200, 200, 200, 983, - 200, 1367, 200, 984, 200, 985, 1367, 200, 200, 1367, - 1367, 200, 1367, 200, 200, 992, 200, 1367, 200, 200, - 986, 200, 200, 200, 200, 200, 200, 1367, 1367, 200, - 1367, 1367, 985, 1367, 200, 200, 1367, 200, 200, 987, + 200, 1395, 200, 1395, 200, 200, 200, 200, 1395, 200, + 1395, 200, 1395, 200, 200, 200, 200, 974, 200, 200, + + 973, 200, 1395, 200, 200, 1395, 972, 200, 1395, 200, + 1395, 200, 1395, 200, 200, 977, 200, 1395, 976, 200, + 200, 1395, 1395, 200, 974, 200, 200, 200, 200, 200, + 1395, 1395, 200, 200, 200, 200, 200, 200, 200, 200, + 1395, 1395, 977, 200, 1395, 976, 200, 979, 200, 1395, + 1395, 200, 200, 200, 200, 200, 200, 200, 1395, 200, + 200, 200, 200, 1395, 200, 200, 200, 200, 1395, 200, + 200, 1395, 981, 980, 979, 200, 200, 200, 200, 200, + 200, 200, 200, 1395, 200, 1395, 1395, 982, 1395, 200, + 1395, 200, 200, 1395, 200, 200, 200, 200, 1395, 981, + + 980, 200, 1395, 200, 200, 1395, 200, 1395, 200, 200, + 1395, 200, 1395, 200, 982, 1395, 200, 200, 200, 200, + 1395, 1395, 200, 200, 200, 200, 1395, 200, 200, 200, + 1395, 200, 983, 200, 1395, 1395, 984, 200, 200, 1395, + 200, 200, 1395, 1395, 200, 1395, 1395, 1395, 1395, 1395, + 200, 1395, 200, 1395, 200, 200, 200, 200, 200, 983, + 200, 1395, 200, 984, 200, 985, 1395, 200, 200, 1395, + 1395, 200, 1395, 200, 200, 992, 200, 1395, 200, 200, + 986, 200, 200, 200, 200, 200, 200, 1395, 1395, 200, + 1395, 1395, 985, 1395, 200, 200, 1395, 200, 200, 987, 200, 200, 992, 200, 200, 200, 200, 986, 200, 200, - 200, 1367, 200, 200, 1367, 1367, 200, 1367, 200, 989, - 1367, 1367, 200, 200, 200, 988, 987, 200, 200, 200, - 200, 200, 200, 1367, 200, 990, 200, 200, 1367, 200, - 1367, 1367, 200, 200, 1367, 200, 989, 1367, 1367, 1367, - 200, 1367, 988, 991, 200, 200, 200, 200, 200, 200, + 200, 1395, 200, 200, 1395, 1395, 200, 1395, 200, 989, + 1395, 1395, 200, 200, 200, 988, 987, 200, 200, 200, + 200, 200, 200, 1395, 200, 990, 200, 200, 1395, 200, + 1395, 1395, 200, 200, 1395, 200, 989, 1395, 1395, 1395, + 200, 1395, 988, 991, 200, 200, 200, 200, 200, 200, 200, 200, 990, 200, 200, 200, 200, 200, 200, 200, - 200, 993, 200, 200, 1367, 1367, 1367, 1367, 200, 1367, - 991, 1367, 1367, 200, 1367, 200, 1367, 200, 200, 1367, - 200, 1367, 200, 1367, 200, 200, 1367, 200, 993, 200, - - 200, 1367, 200, 200, 995, 200, 200, 200, 200, 1367, - 200, 1367, 200, 200, 200, 200, 200, 1367, 994, 1367, - 200, 1367, 200, 200, 200, 200, 200, 200, 1367, 200, - 200, 995, 996, 200, 200, 200, 200, 200, 1367, 200, - 200, 200, 1367, 200, 1367, 994, 1367, 200, 1367, 200, - 200, 200, 200, 200, 200, 200, 1367, 200, 200, 996, - 200, 1367, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 1367, 200, 1367, 1367, 200, 1367, 200, 1367, - 1073, 200, 200, 1367, 200, 200, 1367, 200, 1367, 200, - 1367, 1367, 200, 200, 200, 200, 200, 200, 200, 1367, - - 200, 1367, 1074, 200, 1367, 200, 200, 1073, 200, 1367, - 200, 1075, 200, 1367, 200, 200, 1367, 1367, 1367, 1367, - 200, 200, 200, 1367, 1367, 1367, 1367, 1367, 1367, 1074, - 200, 200, 1367, 200, 1367, 1367, 200, 200, 1075, 200, - 200, 200, 200, 1367, 1367, 1367, 200, 200, 200, 200, - 1367, 1076, 1367, 1367, 1078, 200, 200, 200, 200, 200, - 1077, 1367, 1367, 200, 200, 200, 1367, 200, 200, 1367, - 1367, 1367, 1367, 200, 200, 200, 1367, 1367, 1076, 1367, - 1367, 1078, 200, 200, 200, 1367, 200, 1077, 1079, 1367, - 200, 200, 200, 1367, 200, 200, 200, 200, 1080, 200, - - 200, 200, 200, 200, 200, 1081, 1367, 1367, 200, 200, - 200, 200, 1367, 1367, 1367, 1079, 1367, 200, 200, 1367, - 1367, 200, 200, 200, 200, 1080, 200, 200, 1082, 1367, - 200, 200, 1081, 1367, 1367, 200, 200, 200, 200, 1367, - 1083, 200, 200, 1084, 200, 200, 200, 1367, 200, 200, - 200, 1367, 200, 200, 200, 1082, 1367, 1367, 1085, 1367, - 200, 1367, 200, 1367, 200, 200, 1367, 1083, 200, 200, - 1084, 200, 200, 200, 200, 200, 200, 200, 1367, 200, - 200, 200, 1086, 1367, 1367, 1085, 1087, 200, 1367, 200, - 200, 200, 200, 1367, 200, 1088, 1367, 200, 1367, 200, - - 200, 200, 200, 200, 1367, 1367, 1367, 200, 1089, 1086, - 200, 1367, 200, 1087, 1367, 1367, 200, 200, 200, 200, - 200, 200, 1088, 1367, 200, 1367, 200, 200, 200, 200, - 1367, 1367, 1367, 1367, 200, 1089, 200, 200, 200, 200, - 1367, 1367, 1090, 200, 1367, 200, 200, 200, 200, 1367, - 200, 1367, 200, 200, 1092, 200, 200, 1367, 200, 200, - 1367, 1091, 1367, 200, 200, 200, 200, 1367, 1367, 1090, - 1093, 1367, 200, 200, 200, 200, 1094, 200, 1367, 200, - 200, 1092, 200, 200, 1367, 200, 200, 1367, 1091, 1367, - 200, 200, 200, 200, 1095, 1367, 200, 1093, 200, 200, - - 200, 200, 1367, 1094, 200, 1367, 200, 200, 1367, 200, - 1367, 1096, 1367, 1367, 200, 1367, 200, 200, 1367, 200, - 200, 1095, 1367, 200, 200, 200, 1367, 200, 1367, 1367, - 200, 200, 200, 200, 200, 1097, 1367, 1367, 1096, 1098, - 200, 200, 1367, 200, 200, 200, 1100, 200, 200, 1099, - 200, 200, 200, 1367, 200, 200, 1367, 200, 200, 200, - 200, 200, 1097, 1367, 1367, 200, 1098, 200, 200, 1367, + 200, 993, 200, 200, 1395, 1395, 1395, 1395, 200, 1395, + 991, 1395, 1395, 200, 1395, 200, 1395, 200, 200, 1395, + 200, 1395, 200, 1395, 200, 200, 1395, 200, 993, 200, + + 200, 1395, 200, 200, 995, 200, 200, 200, 200, 1395, + 200, 1395, 200, 200, 200, 200, 200, 1395, 994, 1395, + 200, 1395, 200, 200, 200, 200, 200, 200, 1395, 200, + 200, 995, 996, 200, 200, 200, 200, 200, 1395, 200, + 200, 200, 1395, 200, 1395, 994, 1395, 200, 1395, 200, + 200, 200, 200, 200, 200, 200, 1395, 200, 200, 996, + 200, 1395, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 1395, 200, 1395, 1395, 200, 1395, 200, 1395, + 1073, 200, 200, 1395, 200, 200, 1395, 200, 1395, 200, + 1395, 1395, 200, 200, 200, 200, 200, 200, 200, 1395, + + 200, 1395, 1074, 200, 1395, 200, 200, 1073, 200, 1395, + 200, 1075, 200, 1395, 200, 200, 1395, 1395, 1395, 1395, + 200, 200, 200, 1395, 1395, 1395, 1395, 1395, 1395, 1074, + 200, 200, 1395, 200, 1395, 1395, 200, 200, 1075, 200, + 200, 200, 200, 1395, 1395, 1395, 200, 200, 200, 200, + 1395, 1076, 1395, 1395, 1078, 200, 200, 200, 200, 200, + 1077, 1395, 1395, 200, 200, 200, 1395, 200, 200, 1395, + 1395, 1395, 1395, 200, 200, 200, 1395, 1395, 1076, 1395, + 1395, 1078, 200, 200, 200, 1395, 200, 1077, 1079, 1395, + 200, 200, 200, 1395, 200, 200, 200, 200, 1080, 200, + + 200, 200, 200, 200, 200, 1081, 1395, 1395, 200, 200, + 200, 200, 1395, 1395, 1395, 1079, 1395, 200, 200, 1395, + 1395, 200, 200, 200, 200, 1080, 200, 200, 1082, 1395, + 200, 200, 1081, 1395, 1395, 200, 200, 200, 200, 1395, + 1083, 200, 200, 1084, 200, 200, 200, 1395, 200, 200, + 200, 1395, 200, 200, 200, 1082, 1395, 1395, 1085, 1395, + 200, 1395, 200, 1395, 200, 200, 1395, 1083, 200, 200, + 1084, 200, 200, 200, 200, 200, 200, 200, 1395, 200, + 200, 200, 1086, 1395, 1395, 1085, 1087, 200, 1395, 200, + 200, 200, 200, 1395, 200, 1088, 1395, 200, 1395, 200, + + 200, 200, 200, 200, 1395, 1395, 1395, 200, 1089, 1086, + 200, 1395, 200, 1087, 1395, 1395, 200, 200, 200, 200, + 200, 200, 1088, 1395, 200, 1395, 200, 200, 200, 200, + 1395, 1395, 1395, 1395, 200, 1089, 200, 200, 200, 200, + 1395, 1395, 1090, 200, 1395, 200, 200, 200, 200, 1395, + 200, 1395, 200, 200, 1092, 200, 200, 1395, 200, 200, + 1395, 1091, 1395, 200, 200, 200, 200, 1395, 1395, 1090, + 1093, 1395, 200, 200, 200, 200, 1094, 200, 1395, 200, + 200, 1092, 200, 200, 1395, 200, 200, 1395, 1091, 1395, + 200, 200, 200, 200, 1095, 1395, 200, 1093, 200, 200, + + 200, 200, 1395, 1094, 200, 1395, 200, 200, 1395, 200, + 1395, 1096, 1395, 1395, 200, 1395, 200, 200, 1395, 200, + 200, 1095, 1395, 200, 200, 200, 1395, 200, 1395, 1395, + 200, 200, 200, 200, 200, 1097, 1395, 1395, 1096, 1098, + 200, 200, 1395, 200, 200, 200, 1100, 200, 200, 1099, + 200, 200, 200, 1395, 200, 200, 1395, 200, 200, 200, + 200, 200, 1097, 1395, 1395, 200, 1098, 200, 200, 1395, 200, 200, 200, 1100, 200, 200, 1099, 200, 200, 200, - 1367, 200, 200, 1367, 200, 200, 200, 200, 1367, 200, - 200, 1102, 200, 200, 200, 200, 200, 200, 1367, 200, - - 1104, 200, 200, 1367, 1101, 200, 200, 200, 1367, 200, - 1367, 200, 200, 200, 1367, 200, 200, 200, 1102, 200, - 200, 200, 1367, 200, 1367, 200, 200, 1104, 1367, 200, - 1103, 1101, 1367, 200, 200, 200, 200, 1367, 200, 200, - 200, 200, 200, 200, 1106, 1105, 200, 1367, 200, 200, - 200, 200, 200, 200, 1367, 1367, 200, 1103, 1367, 1367, - 1367, 200, 200, 1367, 1367, 200, 1367, 200, 200, 1367, - 200, 1106, 1105, 1367, 1367, 200, 200, 200, 200, 200, + 1395, 200, 200, 1395, 200, 200, 200, 200, 1395, 200, + 200, 1102, 200, 200, 200, 200, 200, 200, 1395, 200, + + 1104, 200, 200, 1395, 1101, 200, 200, 200, 1395, 200, + 1395, 200, 200, 200, 1395, 200, 200, 200, 1102, 200, + 200, 200, 1395, 200, 1395, 200, 200, 1104, 1395, 200, + 1103, 1101, 1395, 200, 200, 200, 200, 1395, 200, 200, + 200, 200, 200, 200, 1106, 1105, 200, 1395, 200, 200, + 200, 200, 200, 200, 1395, 1395, 200, 1103, 1395, 1395, + 1395, 200, 200, 1395, 1395, 200, 1395, 200, 200, 1395, + 200, 1106, 1105, 1395, 1395, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 1107, 200, 200, 200, 200, 200, 1367, 200, 1367, 1367, - - 200, 1367, 1367, 1367, 1367, 200, 200, 1367, 200, 200, - 1367, 200, 200, 200, 200, 1367, 200, 1107, 200, 200, - 200, 200, 200, 200, 200, 200, 1367, 200, 1367, 1109, - 200, 1108, 200, 200, 200, 200, 200, 1367, 1367, 200, - 1367, 1110, 1367, 1367, 1111, 1367, 200, 1367, 1367, 200, - 200, 1367, 200, 1367, 1367, 1367, 1109, 200, 1108, 1367, - 200, 200, 200, 200, 1367, 1112, 200, 200, 1110, 1367, - 1367, 1111, 200, 200, 1367, 1367, 200, 200, 200, 200, - 200, 200, 1367, 1367, 1367, 200, 200, 1367, 1367, 1367, - 200, 200, 1112, 1367, 200, 1367, 1367, 1367, 1367, 200, - - 1367, 1113, 1367, 1367, 200, 200, 200, 200, 200, 200, - 1367, 200, 200, 200, 1367, 1367, 200, 200, 200, 1367, - 200, 200, 200, 200, 1367, 200, 1367, 200, 1113, 1367, - 200, 1367, 200, 1367, 1367, 200, 200, 1367, 200, 1367, - 1367, 1114, 1367, 200, 1367, 200, 1367, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 1116, 200, 1367, 200, - 1115, 200, 200, 1367, 1367, 200, 1367, 200, 1114, 200, - 1367, 1367, 200, 1367, 200, 1367, 1367, 1367, 200, 200, - 200, 1367, 200, 1116, 1367, 1367, 1367, 1115, 200, 1367, - 1367, 200, 200, 200, 200, 1367, 200, 1367, 200, 1117, - - 200, 200, 200, 200, 1367, 1118, 200, 200, 1119, 200, - 1367, 200, 200, 1367, 1367, 1367, 200, 1367, 200, 1367, - 200, 200, 1367, 1367, 1367, 200, 1117, 200, 1367, 200, - 200, 1367, 1118, 1367, 200, 1119, 200, 1367, 200, 200, - 200, 1367, 200, 200, 200, 1120, 200, 200, 200, 200, - 1367, 200, 200, 1367, 1367, 200, 200, 1367, 1367, 1367, - 200, 1367, 1367, 1367, 200, 200, 1367, 200, 1367, 200, - 200, 200, 1120, 200, 200, 1121, 200, 1367, 200, 200, - 200, 1367, 200, 200, 1122, 200, 200, 200, 1367, 200, - 200, 200, 200, 1367, 1367, 200, 200, 200, 1367, 1123, - - 1367, 1367, 1121, 1367, 1367, 200, 200, 200, 1367, 1367, - 1367, 1122, 200, 200, 200, 200, 200, 200, 200, 200, - 1367, 1367, 200, 200, 200, 200, 1123, 1124, 1367, 1367, - 1367, 1367, 200, 200, 200, 200, 1367, 1367, 1367, 1125, - 1126, 200, 200, 200, 200, 200, 200, 1367, 1367, 200, - 200, 200, 200, 200, 1124, 1367, 1367, 1127, 1367, 200, + 1107, 200, 200, 200, 200, 200, 1395, 200, 1395, 1395, + + 200, 1395, 1395, 1395, 1395, 200, 200, 1395, 200, 200, + 1395, 200, 200, 200, 200, 1395, 200, 1107, 200, 200, + 200, 200, 200, 200, 200, 200, 1395, 200, 1395, 1109, + 200, 1108, 200, 200, 200, 200, 200, 1395, 1395, 200, + 1395, 1110, 1395, 1395, 1111, 1395, 200, 1395, 1395, 200, + 200, 1395, 200, 1395, 1395, 1395, 1109, 200, 1108, 1395, + 200, 200, 200, 200, 1395, 1112, 200, 200, 1110, 1395, + 1395, 1111, 200, 200, 1395, 1395, 200, 200, 200, 200, + 200, 200, 1395, 1395, 1395, 200, 200, 1395, 1395, 1395, + 200, 200, 1112, 1395, 200, 1395, 1395, 1395, 1395, 200, + + 1395, 1113, 1395, 1395, 200, 200, 200, 200, 200, 200, + 1395, 200, 200, 200, 1395, 1395, 200, 200, 200, 1395, + 200, 200, 200, 200, 1395, 200, 1395, 200, 1113, 1395, + 200, 1395, 200, 1395, 1395, 200, 200, 1395, 200, 1395, + 1395, 1114, 1395, 200, 1395, 200, 1395, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 1116, 200, 1395, 200, + 1115, 200, 200, 1395, 1395, 200, 1395, 200, 1114, 200, + 1395, 1395, 200, 1395, 200, 1395, 1395, 1395, 200, 200, + 200, 1395, 200, 1116, 1395, 1395, 1395, 1115, 200, 1395, + 1395, 200, 200, 200, 200, 1395, 200, 1395, 200, 1117, + + 200, 200, 200, 200, 1395, 1118, 200, 200, 1119, 200, + 1395, 200, 200, 1395, 1395, 1395, 200, 1395, 200, 1395, + 200, 200, 1395, 1395, 1395, 200, 1117, 200, 1395, 200, + 200, 1395, 1118, 1395, 200, 1119, 200, 1395, 200, 200, + 200, 1395, 200, 200, 200, 1120, 200, 200, 200, 200, + 1395, 200, 200, 1395, 1395, 200, 200, 1395, 1395, 1395, + 200, 1395, 1395, 1395, 200, 200, 1395, 200, 1395, 200, + 200, 200, 1120, 200, 200, 1121, 200, 1395, 200, 200, + 200, 1395, 200, 200, 1122, 200, 200, 200, 1395, 200, + 200, 200, 200, 1395, 1395, 200, 200, 200, 1395, 1123, + + 1395, 1395, 1121, 1395, 1395, 200, 200, 200, 1395, 1395, + 1395, 1122, 200, 200, 200, 200, 200, 200, 200, 200, + 1395, 1395, 200, 200, 200, 200, 1123, 1124, 1395, 1395, + 1395, 1395, 200, 200, 200, 200, 1395, 1395, 1395, 1125, + 1126, 200, 200, 200, 200, 200, 200, 1395, 1395, 200, + 200, 200, 200, 200, 1124, 1395, 1395, 1127, 1395, 200, 200, 200, 200, 200, 1128, 200, 1125, 1126, 200, 200, - 200, 200, 200, 200, 1367, 200, 200, 200, 200, 1367, - 200, 1367, 1367, 1367, 1127, 200, 200, 200, 200, 1129, + 200, 200, 200, 200, 1395, 200, 200, 200, 200, 1395, + 200, 1395, 1395, 1395, 1127, 200, 200, 200, 200, 1129, 200, 1128, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 1367, 200, 200, 200, 200, 1130, 200, 1367, 1131, - 1367, 200, 200, 200, 200, 200, 1129, 200, 1367, 200, - 200, 200, 200, 200, 200, 200, 1132, 200, 1367, 200, - 200, 200, 200, 1130, 200, 1367, 1131, 1367, 200, 200, - 200, 200, 200, 1367, 200, 1367, 200, 1133, 200, 200, - 200, 1367, 200, 1132, 200, 1367, 200, 1134, 200, 200, - 200, 200, 200, 1367, 1367, 200, 200, 1135, 200, 200, - 1367, 200, 200, 1367, 1133, 200, 1367, 1367, 1367, 200, - 1367, 200, 1367, 1367, 1134, 200, 1367, 200, 200, 200, - 1367, 1367, 200, 1367, 1135, 200, 1367, 1367, 200, 200, - - 200, 1367, 200, 200, 1367, 200, 1136, 200, 200, 1367, - 200, 1137, 200, 1138, 1367, 200, 200, 1367, 1140, 1367, - 1367, 1367, 1367, 200, 200, 1367, 200, 200, 200, 200, - 200, 200, 200, 1136, 200, 1367, 200, 200, 1137, 200, - 1138, 1139, 200, 200, 1367, 1140, 1367, 1367, 1367, 1367, - 200, 200, 200, 200, 200, 200, 1367, 1367, 200, 200, - 200, 1367, 200, 200, 200, 1141, 1367, 200, 1139, 200, - 1143, 1367, 200, 1367, 200, 200, 1367, 1142, 200, 200, - 200, 200, 200, 1367, 1367, 200, 200, 200, 200, 200, - 200, 200, 1141, 1367, 200, 1367, 200, 1143, 200, 200, - - 1367, 200, 200, 1367, 1142, 200, 200, 200, 1367, 200, - 200, 200, 200, 200, 1367, 200, 200, 200, 1144, 1367, - 1367, 1145, 1367, 200, 1367, 200, 200, 1367, 1367, 1367, - 1367, 1367, 200, 200, 200, 1367, 1367, 200, 200, 200, - 200, 1367, 1367, 200, 200, 1144, 1367, 1146, 1145, 1367, - 200, 1367, 1367, 200, 1367, 200, 1367, 200, 200, 200, - 200, 200, 200, 1367, 1367, 200, 200, 200, 1367, 1367, - 200, 200, 1367, 1367, 1146, 1367, 200, 1367, 200, 1367, - 1367, 1367, 200, 200, 200, 200, 1194, 200, 200, 200, - 200, 200, 200, 1367, 200, 200, 200, 200, 1367, 1367, - - 200, 200, 1195, 200, 1367, 200, 200, 200, 1367, 1367, - 200, 200, 200, 1194, 200, 200, 200, 200, 200, 1367, - 1367, 200, 200, 200, 1367, 1367, 200, 200, 200, 1195, - 200, 1367, 1196, 200, 200, 1367, 1197, 200, 200, 200, - 200, 200, 200, 200, 1367, 200, 200, 1367, 200, 200, - 1367, 1367, 1367, 200, 1367, 200, 200, 200, 1367, 1196, - 1198, 1367, 1367, 1197, 200, 200, 1367, 200, 200, 200, - 200, 1367, 200, 200, 1367, 1199, 200, 200, 1367, 200, - 200, 1367, 200, 200, 200, 1367, 1200, 1198, 200, 200, - 1367, 1367, 200, 200, 1367, 200, 1367, 200, 200, 1367, - - 1367, 1367, 1199, 1367, 200, 1367, 200, 200, 1367, 1367, - 200, 200, 200, 1200, 1367, 200, 200, 200, 1367, 200, - 200, 200, 200, 1367, 1367, 200, 200, 1201, 200, 1202, - 200, 200, 1367, 1367, 1367, 200, 1367, 200, 1367, 200, - 200, 1367, 1367, 1367, 200, 1367, 200, 1367, 200, 200, - 1203, 1367, 1367, 200, 1201, 200, 1202, 200, 200, 200, - 1367, 200, 200, 1204, 1367, 200, 200, 200, 1367, 1367, - 200, 200, 200, 1367, 200, 200, 1367, 1203, 1367, 200, - 1205, 1367, 1367, 1367, 200, 1367, 200, 1367, 200, 1367, - 1204, 1367, 200, 200, 1367, 1367, 1367, 200, 200, 200, - - 1367, 200, 200, 200, 1206, 200, 200, 1205, 1367, 1367, - 200, 200, 1367, 1367, 200, 200, 200, 200, 1367, 200, - 1367, 200, 1367, 1367, 200, 1367, 200, 1367, 1367, 200, - 200, 1206, 200, 1367, 1367, 1367, 1207, 200, 1367, 1367, - 1367, 200, 200, 200, 200, 200, 200, 200, 200, 1367, - 1367, 200, 200, 200, 1367, 1367, 200, 200, 200, 200, - 200, 1208, 1367, 1207, 1367, 200, 200, 1367, 1367, 1367, - 200, 200, 200, 1367, 200, 1367, 1367, 1367, 1367, 200, - 1367, 1367, 1367, 1367, 200, 200, 200, 200, 1208, 200, - 1367, 200, 200, 200, 1367, 1209, 200, 200, 200, 200, - - 200, 200, 200, 1367, 200, 200, 1367, 200, 200, 1367, - 1367, 1367, 200, 1367, 200, 200, 200, 1367, 200, 1367, - 1367, 1367, 1209, 200, 200, 1367, 200, 200, 200, 200, - 1367, 200, 200, 1367, 200, 200, 200, 1367, 1210, 200, - 200, 200, 200, 200, 1212, 200, 1367, 200, 200, 1367, - 200, 200, 200, 1211, 200, 1367, 1213, 200, 1367, 1367, - 200, 200, 1367, 200, 1367, 1210, 200, 200, 1367, 1367, - 200, 1212, 200, 1367, 200, 200, 1367, 200, 1367, 200, - 1211, 200, 1367, 1213, 200, 1367, 1367, 200, 200, 200, - 200, 200, 200, 200, 1367, 1367, 200, 200, 200, 1367, - - 200, 200, 200, 1367, 1367, 200, 1367, 1367, 1367, 1367, - 200, 1367, 1367, 1367, 1367, 1367, 200, 200, 200, 200, - 1367, 1367, 1367, 200, 200, 200, 1367, 200, 200, 200, - 1367, 200, 200, 200, 200, 1367, 200, 200, 200, 1367, - 200, 200, 200, 200, 1367, 1367, 200, 200, 1367, 1367, - 1367, 1367, 200, 1367, 1367, 1367, 1367, 1367, 200, 1367, - 200, 200, 1367, 200, 1367, 200, 1367, 200, 200, 200, - 200, 1367, 1367, 200, 200, 200, 1215, 200, 1367, 200, - 200, 1214, 200, 1367, 1367, 1367, 200, 200, 1367, 1367, - 200, 1216, 1367, 1367, 200, 200, 200, 1367, 1367, 200, - - 200, 1367, 200, 1215, 200, 200, 1367, 200, 1214, 200, - 200, 1367, 1367, 200, 200, 200, 1367, 200, 1216, 1367, - 200, 200, 200, 200, 200, 1367, 200, 200, 1367, 200, - 200, 200, 200, 1367, 1367, 1367, 1217, 200, 1367, 1367, - 200, 200, 200, 200, 1367, 200, 1367, 200, 1367, 1367, - 200, 200, 1218, 1367, 200, 200, 200, 200, 200, 200, - 1367, 1367, 1367, 1217, 200, 1367, 1367, 200, 200, 1367, - 200, 200, 200, 200, 1219, 1367, 1367, 200, 200, 1218, - 1367, 200, 200, 200, 1367, 200, 200, 200, 1367, 1367, - 1367, 200, 200, 1367, 1367, 1367, 1367, 200, 200, 1367, - - 200, 1219, 1367, 1367, 200, 200, 200, 1367, 1367, 1367, - 200, 200, 200, 200, 200, 200, 200, 1367, 1367, 200, - 200, 1220, 1367, 1367, 200, 200, 200, 1367, 1367, 1367, - 1221, 200, 1367, 200, 1367, 200, 200, 1367, 200, 1222, - 200, 1367, 200, 200, 1367, 200, 200, 200, 1220, 200, - 1223, 1225, 200, 200, 200, 200, 200, 1221, 1367, 1367, - 200, 200, 200, 200, 200, 1367, 1222, 1367, 200, 1367, - 200, 1367, 200, 200, 200, 1367, 200, 1223, 1225, 1367, - 1367, 200, 200, 200, 1224, 1367, 1367, 200, 200, 1226, - 1367, 200, 200, 1367, 200, 200, 1367, 200, 200, 200, - - 200, 200, 1367, 1367, 200, 200, 1367, 1367, 1367, 1367, - 200, 1224, 1367, 1227, 1367, 1367, 1226, 1367, 1367, 200, - 1367, 200, 200, 1367, 200, 200, 200, 200, 1367, 200, - 1367, 200, 200, 1367, 200, 1367, 200, 200, 200, 1367, - 1227, 1367, 1367, 1228, 1367, 200, 1367, 200, 200, 200, - 1367, 200, 1229, 1367, 1367, 1367, 200, 200, 1367, 1367, - 1367, 200, 1367, 200, 200, 200, 200, 1367, 1367, 1367, - 1228, 200, 200, 1367, 200, 200, 200, 1367, 200, 1229, - 1230, 1367, 1367, 1367, 200, 200, 1367, 200, 1367, 200, - 200, 200, 1367, 200, 200, 1367, 1367, 1367, 200, 200, - - 1367, 1367, 1367, 200, 1367, 200, 1231, 1230, 200, 1367, - 1367, 1367, 200, 200, 200, 1367, 200, 200, 200, 1367, - 200, 200, 200, 1232, 1367, 1367, 200, 200, 1367, 1367, - 1367, 1367, 200, 1231, 200, 200, 200, 1367, 1367, 1367, - 200, 200, 1233, 1367, 1367, 200, 200, 200, 1367, 200, - 1232, 1367, 1367, 200, 200, 200, 1367, 1367, 1367, 200, - 200, 200, 1367, 200, 1367, 200, 1367, 1234, 200, 1233, - 1367, 1367, 1367, 200, 1367, 1367, 200, 200, 200, 200, - 200, 1367, 200, 200, 200, 1235, 1367, 200, 200, 200, - 1367, 1367, 200, 1367, 1234, 1367, 1367, 1367, 1367, 1236, - - 1367, 1367, 1367, 200, 200, 200, 200, 200, 1367, 200, - 200, 200, 1235, 1367, 200, 200, 200, 1367, 200, 200, - 200, 200, 1367, 200, 1367, 200, 1236, 1367, 200, 1367, - 200, 1367, 1367, 200, 200, 1367, 200, 200, 1367, 200, - 1367, 200, 1367, 1367, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 1367, 200, 1367, 200, 200, 1367, - 200, 1367, 1367, 200, 200, 1367, 200, 200, 1367, 200, - 1238, 200, 200, 1237, 200, 1367, 200, 200, 200, 200, - 200, 200, 200, 200, 1367, 200, 1367, 1367, 200, 1367, - 200, 1367, 1367, 200, 200, 1367, 200, 1238, 1367, 200, - - 1237, 200, 1367, 1367, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 1367, - 200, 200, 1367, 200, 1367, 1367, 200, 1264, 1367, 1367, - 1367, 200, 200, 1367, 200, 1367, 1367, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 1367, - 200, 200, 200, 200, 1264, 200, 1265, 1241, 200, 1367, - 1367, 200, 200, 1367, 200, 1367, 1266, 1367, 1367, 200, - 200, 200, 1367, 200, 200, 1367, 200, 1367, 200, 200, - 1367, 200, 200, 1367, 1367, 200, 200, 1367, 200, 200, - 1367, 200, 1267, 1266, 1367, 200, 200, 200, 200, 200, - - 200, 200, 1367, 200, 1367, 200, 200, 1367, 200, 1367, - 200, 1367, 200, 200, 200, 200, 200, 1367, 200, 1267, - 200, 1367, 200, 200, 1367, 1268, 200, 200, 200, 200, - 200, 1367, 200, 200, 200, 200, 1367, 200, 200, 1367, - 1367, 200, 200, 200, 200, 200, 200, 200, 1271, 1269, - 1367, 1367, 1268, 200, 200, 1367, 200, 200, 200, 200, - 1367, 200, 200, 200, 200, 200, 1270, 1367, 200, 200, - 1367, 200, 200, 200, 200, 1271, 1269, 1367, 200, 200, - 200, 200, 200, 1367, 200, 200, 200, 200, 200, 200, - 200, 200, 1367, 1270, 200, 200, 200, 1367, 200, 200, - - 200, 200, 1367, 1367, 200, 200, 200, 1367, 1367, 200, - 200, 200, 1367, 1367, 200, 200, 200, 200, 1367, 200, - 200, 200, 1367, 1367, 200, 200, 200, 200, 1273, 200, - 200, 200, 1272, 1367, 1367, 200, 1367, 200, 1367, 1367, - 200, 200, 1367, 200, 200, 1367, 200, 200, 200, 1367, - 1367, 200, 1367, 200, 1367, 1273, 200, 200, 1367, 1272, - 1367, 1367, 200, 1367, 200, 1367, 200, 200, 200, 1367, - 200, 200, 200, 1367, 200, 200, 200, 1275, 1367, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 1367, 1274, - 200, 200, 1276, 200, 1367, 200, 1367, 200, 200, 200, - - 1367, 200, 200, 200, 1275, 1367, 200, 1367, 200, 200, - 200, 200, 200, 200, 200, 1367, 1274, 200, 200, 1276, - 1277, 200, 200, 200, 200, 200, 1367, 1367, 200, 200, - 200, 1367, 200, 200, 200, 1367, 1367, 1367, 1367, 200, - 1367, 1367, 1278, 1367, 200, 200, 1367, 1277, 200, 1367, - 200, 200, 200, 200, 1367, 200, 1367, 200, 200, 200, - 200, 200, 1367, 200, 1367, 200, 200, 200, 1367, 1278, - 1367, 200, 200, 1279, 1367, 1367, 1367, 200, 200, 1367, - 200, 1367, 1367, 1280, 200, 200, 200, 1367, 1367, 1367, - 200, 200, 200, 1367, 200, 200, 200, 200, 1367, 200, - - 1279, 1367, 200, 1367, 200, 1367, 1367, 200, 1367, 1367, - 1280, 200, 1367, 200, 200, 1367, 200, 1367, 200, 1367, - 1367, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 1367, 200, 1281, 200, 200, 1367, 200, 1367, 1367, - 200, 200, 1367, 200, 200, 1367, 200, 1367, 200, 1367, - 1282, 200, 200, 200, 200, 200, 200, 200, 1367, 200, - 1281, 1367, 200, 1367, 200, 1367, 1367, 200, 200, 1283, - 200, 200, 1367, 200, 200, 200, 200, 1282, 200, 1367, - 200, 200, 1284, 200, 1285, 1367, 200, 1367, 200, 1367, - 1367, 1367, 1367, 1367, 200, 200, 1283, 200, 1367, 1367, - - 1367, 200, 200, 200, 200, 1367, 1286, 200, 200, 1284, - 200, 1285, 1367, 200, 200, 200, 200, 1367, 200, 200, - 1367, 200, 1367, 200, 200, 1367, 200, 1367, 1367, 200, - 1367, 200, 200, 1286, 200, 1367, 200, 200, 1367, 200, - 1367, 200, 200, 200, 200, 200, 200, 1367, 200, 1367, - 200, 200, 200, 200, 200, 1367, 200, 1302, 200, 200, - 1367, 200, 200, 200, 200, 1367, 200, 1367, 200, 200, - 200, 200, 200, 1304, 200, 200, 200, 1367, 200, 200, - 200, 200, 200, 1367, 1302, 200, 1367, 1367, 1367, 200, - 200, 200, 200, 1367, 200, 200, 1367, 200, 200, 200, - - 1304, 200, 1367, 200, 200, 200, 200, 200, 1305, 200, - 200, 1367, 1367, 1367, 200, 1367, 200, 200, 1367, 200, - 1367, 200, 1367, 1367, 200, 200, 200, 1367, 200, 1367, - 1367, 200, 200, 200, 200, 1305, 200, 200, 1367, 1306, - 1367, 200, 200, 200, 200, 1367, 1367, 1367, 1367, 1367, - 200, 200, 200, 200, 200, 200, 1367, 1367, 1367, 200, - 200, 200, 1367, 200, 1367, 1367, 1306, 1367, 1367, 200, - 200, 200, 200, 1367, 1367, 1367, 200, 200, 1367, 200, - 1367, 200, 200, 1309, 200, 1307, 1308, 200, 200, 1367, - 200, 200, 200, 1367, 1310, 200, 200, 200, 200, 200, - - 200, 1367, 1367, 200, 200, 1367, 1367, 1367, 1367, 200, - 1309, 200, 1307, 1308, 200, 200, 200, 200, 200, 200, - 200, 1310, 200, 200, 200, 200, 200, 200, 200, 200, - 1367, 200, 1367, 200, 200, 1367, 200, 1367, 200, 200, - 1367, 200, 200, 200, 200, 1367, 1367, 200, 200, 200, - 1367, 200, 1367, 200, 1367, 200, 200, 1367, 1311, 1367, - 200, 200, 1367, 200, 1367, 200, 200, 1367, 200, 200, - 200, 200, 200, 200, 1313, 200, 200, 200, 200, 1312, - 200, 1314, 200, 200, 1367, 1311, 200, 1367, 200, 1367, - 200, 1367, 200, 200, 1367, 200, 1367, 200, 1367, 200, - - 200, 1313, 200, 1367, 200, 200, 1312, 200, 1314, 200, - 200, 1323, 1316, 200, 1325, 200, 1367, 200, 200, 200, - 200, 1367, 200, 200, 200, 1367, 200, 200, 1367, 200, - 1367, 1367, 200, 200, 200, 1367, 200, 1367, 1367, 1367, - 200, 1325, 200, 200, 1367, 200, 200, 1367, 1367, 200, - 200, 200, 1367, 200, 200, 1367, 200, 1367, 1367, 200, - 200, 200, 1367, 200, 200, 1367, 200, 200, 1367, 200, - 200, 1326, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 1367, 200, 200, 200, 1327, 1367, 200, 1367, 1367, - 200, 200, 1367, 200, 1367, 1367, 1367, 1367, 1326, 200, - - 1367, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 1327, 1367, 200, 200, 200, 200, 200, 1367, - 200, 200, 1367, 200, 1367, 200, 200, 1367, 200, 200, - 200, 1328, 1367, 200, 200, 200, 200, 200, 200, 200, - 1367, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 1367, 200, 200, 200, 200, 200, 200, 1328, 1367, - 200, 200, 1367, 200, 1367, 200, 200, 1367, 200, 1367, - 200, 200, 1367, 200, 200, 200, 200, 1336, 1367, 1367, - 200, 200, 200, 1367, 200, 1367, 200, 200, 1367, 1367, - 200, 200, 1367, 1367, 1367, 1367, 200, 200, 1367, 1367, - - 1367, 200, 200, 1367, 1336, 1367, 1367, 200, 1367, 200, - 1367, 200, 1367, 200, 200, 1367, 1367, 200, 200, 1367, - 1367, 1367, 1367, 200, 46, 46, 46, 46, 46, 88, - 1367, 1367, 88, 88, 185, 185, 185, 1367, 185, 187, - 1367, 187, 187, 187, 190, 1367, 190, 190, 190, 200, - 1367, 200, 200, 200, 7, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367 + 200, 1395, 200, 200, 200, 200, 1130, 200, 1395, 1131, + 1395, 200, 200, 200, 200, 200, 1129, 200, 1395, 200, + 200, 200, 200, 200, 200, 200, 1132, 200, 1395, 200, + 200, 200, 200, 1130, 200, 1395, 1131, 1395, 200, 200, + 200, 200, 200, 1395, 200, 1395, 200, 1133, 200, 200, + 200, 1395, 200, 1132, 200, 1395, 200, 1134, 200, 200, + 200, 200, 200, 1395, 1395, 200, 200, 1135, 200, 200, + 1395, 200, 200, 1395, 1133, 200, 1395, 1395, 1395, 200, + 1395, 200, 1395, 1395, 1134, 200, 1395, 200, 200, 200, + 1395, 1395, 200, 1395, 1135, 200, 1395, 1395, 200, 200, + + 200, 1395, 200, 200, 1395, 200, 1136, 200, 200, 1395, + 200, 1137, 200, 1138, 1395, 200, 200, 1395, 1140, 1395, + 1395, 1395, 1395, 200, 200, 1395, 200, 200, 200, 200, + 200, 200, 200, 1136, 200, 1395, 200, 200, 1137, 200, + 1138, 1139, 200, 200, 1395, 1140, 1395, 1395, 1395, 1395, + 200, 200, 200, 200, 200, 200, 1395, 1395, 200, 200, + 200, 1395, 200, 200, 200, 1141, 1395, 200, 1139, 200, + 1143, 1395, 200, 1395, 200, 200, 1395, 1142, 200, 200, + 200, 200, 200, 1395, 1395, 200, 200, 200, 200, 200, + 200, 200, 1141, 1395, 200, 1395, 200, 1143, 200, 200, + + 1395, 200, 200, 1395, 1142, 200, 200, 200, 1395, 200, + 200, 200, 200, 200, 1395, 200, 200, 200, 1144, 1395, + 1395, 1145, 1395, 200, 1395, 200, 200, 1395, 1395, 1395, + 1395, 1395, 200, 200, 200, 1395, 1395, 200, 200, 200, + 200, 1395, 1395, 200, 200, 1144, 1395, 1146, 1145, 1395, + 200, 1395, 1395, 200, 1395, 200, 1395, 200, 200, 200, + 200, 200, 200, 1395, 1395, 200, 200, 200, 1395, 1395, + 200, 200, 1395, 1395, 1146, 1395, 200, 1395, 200, 1395, + 1395, 1395, 200, 200, 200, 200, 1194, 200, 200, 200, + 200, 200, 200, 1395, 200, 200, 200, 200, 1395, 1395, + + 200, 200, 1195, 200, 1395, 200, 200, 200, 1395, 1395, + 200, 200, 200, 1194, 200, 200, 200, 200, 200, 1395, + 1395, 200, 200, 200, 1395, 1395, 200, 200, 200, 1195, + 200, 1395, 1196, 200, 200, 1395, 1197, 200, 200, 200, + 200, 200, 200, 200, 1395, 200, 200, 1395, 200, 200, + 1395, 1395, 1395, 200, 1395, 200, 200, 200, 1395, 1196, + 1198, 1395, 1395, 1197, 200, 200, 1395, 200, 200, 200, + 200, 1395, 200, 200, 1395, 1199, 200, 200, 1395, 200, + 200, 1395, 200, 200, 200, 1395, 1200, 1198, 200, 200, + 1395, 1395, 200, 200, 1395, 200, 1395, 200, 200, 1395, + + 1395, 1395, 1199, 1395, 200, 1395, 200, 200, 1395, 1395, + 200, 200, 200, 1200, 1395, 200, 200, 200, 1395, 200, + 200, 200, 200, 1395, 1395, 200, 200, 1201, 200, 1202, + 200, 200, 1395, 1395, 1395, 200, 1395, 200, 1395, 200, + 200, 1395, 1395, 1395, 200, 1395, 200, 1395, 200, 200, + 1203, 1395, 1395, 200, 1201, 200, 1202, 200, 200, 200, + 1395, 200, 200, 1204, 1395, 200, 200, 200, 1395, 1395, + 200, 200, 200, 1395, 200, 200, 1395, 1203, 1395, 200, + 1205, 1395, 1395, 1395, 200, 1395, 200, 1395, 200, 1395, + 1204, 1395, 200, 200, 1395, 1395, 1395, 200, 200, 200, + + 1395, 200, 200, 200, 1206, 200, 200, 1205, 1395, 1395, + 200, 200, 1395, 1395, 200, 200, 200, 200, 1395, 200, + 1395, 200, 1395, 1395, 200, 1395, 200, 1395, 1395, 200, + 200, 1206, 200, 1395, 1395, 1395, 1207, 200, 1395, 1395, + 1395, 200, 200, 200, 200, 200, 200, 200, 200, 1395, + 1395, 200, 200, 200, 1395, 1395, 200, 200, 200, 200, + 200, 1208, 1395, 1207, 1395, 200, 200, 1395, 1395, 1395, + 200, 200, 200, 1395, 200, 1395, 1395, 1395, 1395, 200, + 1395, 1395, 1395, 1395, 200, 200, 200, 200, 1208, 200, + 1395, 200, 200, 200, 1395, 1209, 200, 200, 200, 200, + + 200, 200, 200, 1395, 200, 200, 1395, 200, 200, 1395, + 1395, 1395, 200, 1395, 200, 200, 200, 1395, 200, 1395, + 1395, 1395, 1209, 200, 200, 1395, 200, 200, 200, 200, + 1395, 200, 200, 1395, 200, 200, 200, 1395, 1210, 200, + 200, 200, 200, 200, 1212, 200, 1395, 200, 200, 1395, + 200, 200, 200, 1211, 200, 1395, 1213, 200, 1395, 1395, + 200, 200, 1395, 200, 1395, 1210, 200, 200, 1395, 1395, + 200, 1212, 200, 1395, 200, 200, 1395, 200, 1395, 200, + 1211, 200, 1395, 1213, 200, 1395, 1395, 200, 200, 200, + 200, 200, 200, 200, 1395, 1395, 200, 200, 200, 1395, + + 200, 200, 200, 1395, 1395, 200, 1395, 1395, 1395, 1395, + 200, 1395, 1395, 1395, 1395, 1395, 200, 200, 200, 200, + 1395, 1395, 1395, 200, 200, 200, 1395, 200, 200, 200, + 1395, 200, 200, 200, 200, 1395, 200, 200, 200, 1395, + 200, 200, 200, 200, 1395, 1395, 200, 200, 1395, 1395, + 1395, 1395, 200, 1395, 1395, 1395, 1395, 1395, 200, 1395, + 200, 200, 1395, 200, 1395, 200, 1395, 200, 200, 200, + 200, 1395, 1395, 200, 200, 200, 1215, 200, 1395, 200, + 200, 1214, 200, 1395, 1395, 1395, 200, 200, 1395, 1395, + 200, 1216, 1395, 1395, 200, 200, 200, 1395, 1395, 200, + + 200, 1395, 200, 1215, 200, 200, 1395, 200, 1214, 200, + 200, 1395, 1395, 200, 200, 200, 1395, 200, 1216, 1395, + 200, 200, 200, 200, 200, 1395, 200, 200, 1395, 200, + 200, 200, 200, 1395, 1395, 1395, 1217, 200, 1395, 1395, + 200, 200, 200, 200, 1395, 200, 1395, 200, 1395, 1395, + 200, 200, 1218, 1395, 200, 200, 200, 200, 200, 200, + 1395, 1395, 1395, 1217, 200, 1395, 1395, 200, 200, 1395, + 200, 200, 200, 200, 1219, 1395, 1395, 200, 200, 1218, + 1395, 200, 200, 200, 1395, 200, 200, 200, 1395, 1395, + 1395, 200, 200, 1395, 1395, 1395, 1395, 200, 200, 1395, + + 200, 1219, 1395, 1395, 200, 200, 200, 1395, 1395, 1395, + 200, 200, 200, 200, 200, 200, 200, 1395, 1395, 200, + 200, 1220, 1395, 1395, 200, 200, 200, 1395, 1395, 1395, + 1221, 200, 1395, 200, 1395, 200, 200, 1395, 200, 1222, + 200, 1395, 200, 200, 1395, 200, 200, 200, 1220, 200, + 1223, 1225, 200, 200, 200, 200, 200, 1221, 1395, 1395, + 200, 200, 200, 200, 200, 1395, 1222, 1395, 200, 1395, + 200, 1395, 200, 200, 200, 1395, 200, 1223, 1225, 1395, + 1395, 200, 200, 200, 1224, 1395, 1395, 200, 200, 1226, + 1395, 200, 200, 1395, 200, 200, 1395, 200, 200, 200, + + 200, 200, 1395, 1395, 200, 200, 1395, 1395, 1395, 1395, + 200, 1224, 1395, 1227, 1395, 1395, 1226, 1395, 1395, 200, + 1395, 200, 200, 1395, 200, 200, 200, 200, 1395, 200, + 1395, 200, 200, 1395, 200, 1395, 200, 200, 200, 1395, + 1227, 1395, 1395, 1228, 1395, 200, 1395, 200, 200, 200, + 1395, 200, 1229, 1395, 1395, 1395, 200, 200, 1395, 1395, + 1395, 200, 1395, 200, 200, 200, 200, 1395, 1395, 1395, + 1228, 200, 200, 1395, 200, 200, 200, 1395, 200, 1229, + 1230, 1395, 1395, 1395, 200, 200, 1395, 200, 1395, 200, + 200, 200, 1395, 200, 200, 1395, 1395, 1395, 200, 200, + + 1395, 1395, 1395, 200, 1395, 200, 1231, 1230, 200, 1395, + 1395, 1395, 200, 200, 200, 1395, 200, 200, 200, 1395, + 200, 200, 200, 1232, 1395, 1395, 200, 200, 1395, 1395, + 1395, 1395, 200, 1231, 200, 200, 200, 1395, 1395, 1395, + 200, 200, 1233, 1395, 1395, 200, 200, 200, 1395, 200, + 1232, 1395, 1395, 200, 200, 200, 1395, 1395, 1395, 200, + 200, 200, 1395, 200, 1395, 200, 1395, 1234, 200, 1233, + 1395, 1395, 1395, 200, 1395, 1395, 200, 200, 200, 200, + 200, 1395, 200, 200, 200, 1235, 1395, 200, 200, 200, + 1395, 1395, 200, 1395, 1234, 1395, 1395, 1395, 1395, 1236, + + 1395, 1395, 1395, 200, 200, 200, 200, 200, 1395, 200, + 200, 200, 1235, 1395, 200, 200, 200, 1395, 200, 200, + 200, 200, 1395, 200, 1395, 200, 1236, 1395, 200, 1395, + 200, 1395, 1395, 200, 200, 1395, 200, 200, 1395, 200, + 1395, 200, 1395, 1395, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 1395, 200, 1395, 200, 200, 1395, + 200, 1395, 1395, 200, 200, 1395, 200, 200, 1395, 200, + 1238, 200, 200, 1237, 200, 1395, 200, 200, 200, 200, + 200, 200, 200, 200, 1395, 200, 1395, 1395, 200, 1395, + 200, 1395, 1395, 200, 200, 1395, 200, 1238, 1395, 200, + + 1237, 200, 1395, 1395, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 1395, + 200, 200, 1395, 200, 1395, 1395, 200, 1265, 1395, 1395, + 1395, 200, 200, 1395, 200, 1395, 1395, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 1395, + 200, 200, 200, 200, 1265, 200, 1266, 1241, 200, 1395, + 1395, 200, 200, 1395, 200, 200, 1395, 1273, 1395, 200, + 1395, 200, 200, 200, 200, 1395, 1395, 200, 200, 200, + 1268, 200, 200, 1395, 200, 200, 1395, 1395, 200, 200, + 200, 200, 200, 1395, 1273, 1395, 1395, 1395, 200, 200, + + 200, 200, 1269, 1267, 200, 200, 200, 1268, 200, 200, + 200, 200, 200, 1395, 1395, 200, 200, 200, 200, 1395, + 200, 1395, 1395, 1395, 200, 200, 200, 200, 200, 1269, + 200, 1395, 200, 200, 1270, 200, 200, 200, 200, 200, + 200, 1395, 200, 200, 200, 200, 1395, 200, 1395, 1395, + 1271, 200, 200, 200, 200, 200, 1395, 200, 1395, 200, + 200, 1270, 200, 200, 200, 200, 200, 200, 1395, 200, + 200, 200, 200, 1395, 200, 1395, 1272, 1271, 200, 200, + 200, 200, 200, 1395, 200, 1395, 200, 200, 200, 1395, + 200, 200, 200, 1395, 200, 1395, 200, 200, 200, 1395, + + 1395, 200, 200, 1272, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 1395, 200, 200, 1395, 200, 1395, 200, + 1395, 200, 200, 1395, 1395, 200, 1395, 1395, 1395, 200, + 1395, 200, 1395, 1395, 1274, 200, 200, 200, 1395, 200, + 1275, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 1395, 200, 200, 1395, 200, 1395, 1395, 200, 1395, + 1395, 1274, 1395, 1395, 200, 1395, 200, 1275, 1395, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 1395, 200, + 200, 1395, 200, 1395, 1395, 200, 1395, 1395, 200, 1395, + 200, 200, 1277, 200, 1276, 200, 200, 1395, 200, 200, + + 200, 1279, 200, 200, 200, 1395, 200, 1395, 200, 1395, + 1395, 200, 200, 1395, 1278, 200, 1395, 200, 200, 1277, + 200, 1276, 200, 200, 200, 200, 200, 200, 1279, 200, + 200, 200, 1395, 200, 1395, 200, 1395, 1280, 200, 200, + 1395, 1278, 200, 1395, 200, 200, 200, 200, 200, 200, + 1395, 200, 200, 200, 200, 1395, 1395, 200, 200, 1395, + 200, 1395, 200, 1395, 1280, 1395, 1395, 200, 1281, 200, + 1395, 200, 200, 200, 1395, 200, 200, 1395, 1287, 1395, + 200, 200, 200, 1282, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 1395, 200, 1281, 200, 200, 200, 200, + + 1395, 1395, 200, 1395, 1395, 1287, 1395, 1395, 1395, 200, + 1282, 200, 1395, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 1283, 200, + 1395, 1395, 200, 200, 1395, 200, 1395, 1395, 1395, 1395, + 200, 200, 1395, 200, 200, 200, 200, 200, 200, 200, + 1284, 200, 1395, 200, 200, 1283, 200, 1395, 1395, 200, + 200, 1395, 200, 200, 1285, 200, 1395, 200, 1395, 1395, + 200, 200, 200, 200, 200, 200, 200, 1284, 200, 1395, + 1395, 200, 1286, 200, 1288, 200, 200, 1395, 200, 200, + 200, 1285, 200, 1395, 200, 200, 1395, 200, 1395, 1395, + + 1395, 200, 200, 200, 200, 200, 1395, 1395, 200, 1286, + 200, 1288, 200, 200, 200, 200, 200, 200, 1395, 1314, + 200, 200, 200, 200, 200, 1395, 1395, 200, 1395, 200, + 200, 200, 200, 200, 1395, 1395, 1306, 200, 200, 1395, + 1395, 200, 200, 200, 200, 1395, 1314, 200, 200, 1395, + 200, 200, 1395, 1395, 200, 1395, 200, 200, 200, 1395, + 200, 1395, 1395, 1306, 200, 200, 1395, 1395, 200, 200, + 200, 1308, 200, 200, 200, 200, 200, 200, 1395, 1310, + 1395, 1395, 200, 200, 200, 200, 1395, 1309, 1395, 1395, + 1395, 200, 200, 200, 1395, 200, 1395, 1395, 1308, 200, + + 200, 200, 1395, 200, 200, 1395, 1310, 1395, 200, 200, + 200, 200, 200, 200, 1309, 1395, 1395, 200, 200, 200, + 200, 200, 200, 200, 1311, 200, 200, 1395, 200, 1395, + 1395, 200, 200, 200, 1395, 200, 1312, 1395, 1395, 200, + 200, 200, 200, 1395, 200, 200, 1395, 1395, 200, 200, + 200, 1311, 200, 200, 1395, 200, 1395, 200, 200, 200, + 200, 200, 200, 1312, 1395, 1395, 200, 200, 200, 200, + 200, 1395, 200, 1395, 200, 1316, 1395, 200, 1395, 200, + 200, 1395, 200, 1313, 200, 200, 1395, 1395, 200, 200, + 200, 1315, 1395, 200, 200, 200, 200, 200, 200, 200, + + 1395, 200, 1316, 200, 200, 1395, 200, 200, 200, 200, + 1313, 200, 200, 1395, 1395, 200, 200, 200, 1315, 1395, + 200, 200, 200, 200, 200, 200, 200, 1395, 200, 200, + 200, 200, 1395, 200, 200, 200, 200, 1395, 200, 200, + 1395, 1395, 200, 200, 200, 1395, 1395, 200, 200, 1317, + 1395, 200, 1395, 200, 1395, 200, 200, 1395, 200, 1395, + 200, 200, 1395, 200, 200, 1395, 200, 1395, 200, 200, + 1395, 200, 1395, 1319, 200, 1318, 1317, 200, 1395, 200, + 1395, 200, 1395, 1395, 200, 1395, 1395, 200, 1395, 200, + 1395, 200, 1331, 1322, 1395, 200, 200, 200, 1320, 200, + + 1319, 200, 1318, 200, 200, 1395, 200, 1395, 200, 200, + 1395, 200, 1395, 1395, 200, 1395, 200, 200, 1395, 200, + 1395, 200, 1395, 1395, 200, 1320, 200, 200, 1395, 1395, + 200, 1333, 1395, 1395, 1395, 200, 200, 200, 1395, 200, + 1395, 1395, 1395, 200, 200, 200, 200, 1334, 200, 1395, + 1395, 1395, 1395, 200, 200, 200, 1395, 1335, 1333, 1395, + 1395, 200, 200, 200, 200, 200, 200, 200, 1395, 200, + 200, 1395, 200, 1395, 1334, 200, 1395, 200, 1395, 200, + 200, 1395, 200, 200, 1335, 200, 1395, 1395, 200, 200, + 200, 200, 200, 200, 200, 1395, 200, 1395, 1336, 200, + + 1395, 1395, 200, 200, 200, 1395, 200, 200, 1395, 200, + 200, 1395, 200, 1395, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 1395, 1336, 200, 200, 1337, 1395, + 200, 1395, 1395, 200, 200, 1395, 200, 1395, 1395, 1395, + 1395, 200, 200, 1395, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 1337, 1395, 200, 200, 1395, + 200, 200, 1395, 200, 1395, 200, 200, 1395, 1395, 1395, + 200, 1338, 200, 1395, 200, 1395, 200, 1395, 200, 200, + 200, 200, 1395, 1395, 200, 200, 200, 200, 200, 1350, + 200, 200, 200, 200, 200, 200, 1395, 200, 1338, 200, + + 200, 200, 1395, 200, 200, 1395, 1348, 1395, 200, 1395, + 200, 200, 1395, 200, 200, 200, 1350, 1395, 200, 200, + 200, 200, 200, 1349, 1395, 200, 200, 200, 200, 1395, + 1395, 200, 1395, 1348, 1395, 200, 1395, 200, 200, 200, + 1395, 200, 200, 200, 1357, 200, 200, 200, 200, 200, + 1349, 200, 200, 1358, 200, 1395, 1395, 200, 1395, 200, + 1395, 200, 200, 200, 200, 1395, 200, 1395, 200, 1395, + 200, 1357, 200, 200, 1395, 200, 200, 1395, 200, 200, + 1358, 200, 1395, 200, 200, 1395, 200, 1395, 200, 200, + 200, 200, 200, 1395, 1395, 1395, 200, 1395, 1395, 200, + + 200, 200, 200, 200, 1395, 1395, 200, 1395, 1364, 1395, + 200, 1395, 200, 200, 1395, 1395, 200, 1395, 1395, 200, + 1395, 1395, 1395, 200, 1395, 200, 200, 200, 200, 200, + 200, 1395, 200, 1370, 1395, 1364, 1395, 200, 1376, 200, + 200, 200, 1382, 200, 1395, 1395, 1395, 1395, 200, 200, + 1395, 200, 200, 200, 200, 1395, 200, 1395, 1395, 200, + 1370, 200, 1395, 1395, 200, 1376, 1395, 1395, 200, 1382, + 200, 1395, 1395, 1395, 1395, 200, 200, 200, 200, 200, + 200, 1388, 1395, 200, 200, 200, 1395, 200, 200, 200, + 1395, 1395, 200, 1395, 1395, 1395, 1395, 200, 1395, 1395, + + 1395, 1395, 1395, 1395, 200, 1395, 200, 1395, 1388, 1395, + 1395, 200, 200, 1395, 200, 1395, 200, 1395, 1395, 200, + 1395, 1395, 1395, 1395, 200, 46, 46, 46, 46, 46, + 88, 1395, 1395, 88, 88, 185, 185, 185, 1395, 185, + 187, 1395, 187, 187, 187, 190, 1395, 190, 190, 190, + 200, 1395, 200, 200, 200, 7, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395 } ; -static const flex_int16_t yy_chk[9032] = +static const flex_int16_t yy_chk[9233] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2112,81 +2146,81 @@ static const flex_int16_t yy_chk[9032] = 18, 21, 22, 21, 27, 28, 22, 23, 30, 21, 27, 21, 22, 28, 23, 21, 21, 31, 41, 28, - 41, 23, 22, 41, 23, 1370, 44, 23, 21, 22, + 41, 23, 22, 41, 23, 1398, 44, 23, 21, 22, 21, 27, 28, 22, 23, 30, 21, 27, 21, 22, 28, 23, 21, 21, 31, 41, 28, 41, 23, 22, 41, 23, 24, 44, 23, 25, 24, 25, 49, 49, 24, 32, 25, 99, 33, 32, 24, 25, 33, 24, 55, 32, 50, 50, 33, 43, 43, 58, 58, 24, - 1364, 55, 25, 24, 25, 1363, 34, 24, 32, 25, + 1392, 55, 25, 24, 25, 1391, 34, 24, 32, 25, 99, 33, 32, 24, 25, 33, 24, 26, 32, 36, 34, 33, 43, 43, 100, 26, 34, 34, 26, 103, - 36, 26, 29, 34, 26, 1362, 36, 26, 29, 29, + 36, 26, 29, 34, 26, 1390, 36, 26, 29, 29, - 29, 42, 86, 86, 26, 29, 36, 34, 1361, 42, - 1359, 100, 26, 34, 34, 26, 103, 36, 26, 29, - 1357, 26, 35, 36, 26, 29, 29, 29, 42, 104, + 29, 42, 86, 86, 26, 29, 36, 34, 1389, 42, + 1386, 100, 26, 34, 34, 26, 103, 36, 26, 29, + 1383, 26, 35, 36, 26, 29, 29, 29, 42, 104, 35, 38, 29, 101, 35, 38, 42, 35, 35, 38, - 81, 101, 81, 106, 81, 38, 1355, 81, 1353, 35, - 102, 1351, 81, 102, 1349, 107, 104, 35, 38, 1347, - 101, 35, 38, 1345, 35, 35, 38, 81, 101, 81, + 81, 101, 81, 106, 81, 38, 1380, 81, 1377, 35, + 102, 1374, 81, 102, 1371, 107, 104, 35, 38, 1368, + 101, 35, 38, 1365, 35, 35, 38, 81, 101, 81, 106, 81, 38, 39, 81, 39, 110, 102, 39, 81, 102, 39, 107, 39, 113, 39, 39, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 188, 188, 1343, + 56, 56, 56, 56, 56, 56, 56, 188, 188, 1362, - 39, 1341, 39, 110, 1339, 39, 105, 105, 39, 109, + 39, 1359, 39, 110, 1355, 39, 105, 105, 39, 109, 39, 113, 39, 39, 40, 112, 109, 67, 40, 67, 105, 40, 40, 67, 67, 112, 116, 116, 40, 67, - 117, 40, 1337, 105, 105, 1333, 109, 1155, 1155, 1288, - 1288, 40, 112, 109, 67, 40, 67, 105, 40, 40, + 117, 40, 1351, 105, 105, 1345, 109, 1339, 1155, 1155, + 1330, 40, 112, 109, 67, 40, 67, 105, 40, 40, 67, 67, 112, 116, 116, 40, 67, 117, 40, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 61, 118, 61, 61, 61, 61, 61, 61, 119, - 68, 114, 1329, 1322, 68, 1315, 114, 121, 68, 61, + 68, 114, 1290, 1290, 68, 1155, 114, 121, 68, 61, 61, 61, 70, 123, 68, 61, 70, 61, 124, 118, 120, 120, 70, 61, 68, 61, 119, 68, 114, 61, - 61, 68, 70, 114, 121, 68, 125, 127, 1301, 70, - 123, 68, 61, 70, 61, 124, 1287, 120, 120, 70, - 61, 68, 61, 1263, 128, 1239, 61, 61, 1193, 70, - 1147, 1072, 997, 125, 127, 61, 62, 62, 898, 62, - 62, 62, 62, 62, 62, 799, 671, 129, 71, 72, + 61, 68, 70, 114, 121, 68, 125, 127, 1321, 70, + 123, 68, 61, 70, 61, 124, 1305, 120, 120, 70, + 61, 68, 61, 1289, 128, 1264, 61, 61, 1239, 70, + 1193, 1147, 1072, 125, 127, 61, 62, 62, 997, 62, + 62, 62, 62, 62, 62, 898, 799, 129, 71, 72, 73, 128, 71, 72, 73, 62, 62, 62, 71, 72, 73, 130, 62, 77, 132, 126, 62, 77, 71, 72, 73, 126, 62, 77, 129, 71, 72, 73, 133, 71, - 72, 73, 62, 77, 543, 71, 72, 73, 130, 62, + 72, 73, 62, 77, 671, 71, 72, 73, 130, 62, 77, 132, 126, 62, 77, 71, 72, 73, 126, 62, - 77, 416, 288, 83, 135, 133, 83, 83, 136, 62, - 77, 62, 63, 83, 78, 192, 63, 138, 78, 63, - 63, 131, 78, 83, 131, 190, 63, 139, 78, 63, - 83, 135, 63, 83, 83, 136, 63, 90, 78, 63, + 77, 543, 416, 83, 135, 133, 83, 83, 136, 62, + 77, 62, 63, 83, 78, 288, 63, 138, 78, 63, + 63, 131, 78, 83, 131, 192, 63, 139, 78, 63, + 83, 135, 63, 83, 83, 136, 63, 190, 78, 63, 83, 78, 137, 63, 138, 78, 63, 63, 131, 78, 83, 131, 137, 63, 139, 78, 63, 137, 137, 63, - 88, 85, 82, 63, 64, 78, 82, 84, 64, 137, + 90, 88, 82, 63, 64, 78, 82, 84, 64, 137, 82, 84, 64, 140, 141, 144, 82, 84, 64, 137, 142, 64, 142, 145, 137, 137, 82, 84, 64, 82, - 60, 64, 59, 82, 84, 64, 52, 82, 84, 64, - 140, 141, 144, 82, 84, 64, 51, 142, 64, 142, + 85, 64, 60, 82, 84, 64, 59, 82, 84, 64, + 140, 141, 144, 82, 84, 64, 52, 142, 64, 142, 145, 146, 147, 82, 84, 64, 65, 111, 111, 111, 65, 111, 115, 65, 115, 65, 65, 115, 149, 143, - 65, 143, 150, 115, 151, 65, 65, 47, 146, 147, - 115, 45, 143, 65, 111, 111, 111, 65, 111, 115, + 65, 143, 150, 115, 151, 65, 65, 51, 146, 147, + 115, 47, 143, 65, 111, 111, 111, 65, 111, 115, 65, 115, 65, 65, 115, 149, 143, 65, 143, 150, 115, 151, 65, 65, 66, 148, 153, 115, 148, 143, 154, 66, 66, 155, 156, 66, 157, 122, 66, 122, - 159, 66, 158, 122, 66, 20, 158, 161, 19, 163, + 159, 66, 158, 122, 66, 45, 158, 161, 20, 163, - 122, 66, 148, 153, 122, 148, 11, 154, 66, 66, + 122, 66, 148, 153, 122, 148, 19, 154, 66, 66, 155, 156, 66, 157, 122, 66, 122, 159, 66, 158, 122, 66, 69, 158, 161, 162, 163, 122, 69, 69, 69, 122, 160, 165, 164, 69, 162, 160, 166, 167, - 69, 7, 168, 164, 169, 160, 170, 165, 4, 69, - 160, 164, 162, 172, 173, 69, 69, 69, 3, 160, + 69, 11, 168, 164, 169, 160, 170, 165, 7, 69, + 160, 164, 162, 172, 173, 69, 69, 69, 4, 160, 165, 164, 69, 162, 160, 166, 167, 69, 74, 168, 164, 169, 160, 170, 165, 74, 171, 160, 164, 174, - 172, 173, 74, 177, 176, 74, 0, 171, 74, 74, + 172, 173, 74, 177, 176, 74, 3, 171, 74, 74, 0, 176, 178, 175, 176, 74, 0, 0, 181, 179, 182, 183, 74, 171, 0, 179, 174, 0, 291, 74, @@ -2574,56 +2608,56 @@ static const flex_int16_t yy_chk[9032] = 0, 699, 1188, 700, 700, 699, 701, 1189, 1184, 700, 1190, 1186, 0, 0, 1187, 701, 699, 701, 699, 0, - 1240, 1243, 701, 699, 700, 1247, 700, 701, 699, 1188, - 700, 700, 0, 701, 1189, 1248, 700, 1190, 703, 704, - 703, 704, 701, 1251, 701, 703, 704, 1240, 1243, 701, - 703, 704, 1247, 1252, 701, 1241, 1241, 705, 0, 705, - 1253, 1254, 1248, 0, 705, 703, 704, 703, 704, 705, - 1251, 1258, 703, 704, 0, 706, 1259, 703, 704, 1260, - 1252, 1262, 0, 706, 705, 706, 705, 1253, 1254, 1289, - 706, 705, 1290, 1241, 1293, 706, 705, 707, 1258, 707, - 0, 707, 706, 1259, 707, 0, 1260, 0, 1262, 707, - 706, 708, 706, 708, 0, 708, 1289, 706, 708, 1290, - - 1241, 1293, 706, 708, 707, 709, 707, 709, 707, 1296, - 0, 707, 709, 1299, 709, 0, 707, 709, 708, 710, - 708, 710, 708, 0, 711, 708, 710, 710, 0, 1303, - 708, 710, 709, 0, 709, 711, 1296, 711, 0, 709, - 1299, 709, 711, 1317, 709, 713, 710, 711, 710, 713, - 712, 711, 0, 710, 710, 713, 1303, 1321, 710, 1316, - 1316, 712, 711, 712, 711, 713, 0, 0, 712, 711, - 1317, 714, 713, 712, 711, 714, 713, 712, 0, 715, - 1324, 714, 713, 715, 1321, 1330, 0, 1334, 712, 715, + 1240, 1244, 701, 699, 700, 1248, 700, 701, 699, 1188, + 700, 700, 0, 701, 1189, 1249, 700, 1190, 703, 704, + 703, 704, 701, 1252, 701, 703, 704, 1240, 1244, 701, + 703, 704, 1248, 1253, 701, 1241, 1241, 705, 0, 705, + 1242, 1254, 1249, 0, 705, 703, 704, 703, 704, 705, + 1252, 1255, 703, 704, 0, 706, 1242, 703, 704, 1259, + 1253, 1260, 0, 706, 705, 706, 705, 1242, 1254, 1261, + 706, 705, 1263, 1241, 1291, 706, 705, 707, 1255, 707, + 0, 707, 706, 1242, 707, 0, 1259, 0, 1260, 707, + 706, 708, 706, 708, 0, 708, 1261, 706, 708, 1263, + + 1241, 1291, 706, 708, 707, 709, 707, 709, 707, 1292, + 0, 707, 709, 1293, 709, 0, 707, 709, 708, 710, + 708, 710, 708, 0, 711, 708, 710, 710, 0, 1294, + 708, 710, 709, 1297, 709, 711, 1292, 711, 0, 709, + 1293, 709, 711, 1300, 709, 713, 710, 711, 710, 713, + 712, 711, 0, 710, 710, 713, 1294, 1303, 710, 1307, + 1297, 712, 711, 712, 711, 713, 0, 0, 712, 711, + 1300, 714, 713, 712, 711, 714, 713, 712, 0, 715, + 1323, 714, 713, 715, 1303, 1324, 1307, 1325, 712, 715, 712, 714, 713, 716, 715, 712, 0, 716, 714, 715, - 712, 1316, 714, 716, 0, 717, 715, 1324, 714, 717, - 715, 1338, 1330, 716, 1334, 717, 715, 1340, 714, 718, - 716, 715, 0, 718, 716, 717, 715, 718, 1316, 1342, - 716, 719, 717, 718, 0, 719, 717, 1344, 1338, 1346, - 716, 719, 717, 718, 1340, 720, 718, 1348, 0, 720, + 712, 1329, 714, 716, 0, 717, 715, 1323, 714, 717, + 715, 1332, 1324, 716, 1325, 717, 715, 1340, 714, 718, + 716, 715, 0, 718, 716, 717, 715, 718, 1329, 1342, + 716, 719, 717, 718, 0, 719, 717, 1343, 1332, 1346, + 716, 719, 717, 718, 1340, 720, 718, 1352, 0, 720, 718, 719, 717, 721, 718, 720, 1342, 721, 719, 0, - 718, 721, 719, 1350, 1344, 720, 1346, 721, 719, 0, - 718, 1352, 720, 0, 1348, 722, 720, 721, 719, 722, - 721, 1354, 720, 723, 721, 722, 722, 723, 721, 724, - 1350, 724, 720, 723, 721, 722, 724, 0, 1352, 1323, + 718, 721, 719, 1354, 1343, 720, 1346, 721, 719, 0, + 718, 1356, 720, 0, 1352, 722, 720, 721, 719, 722, + 721, 0, 720, 723, 721, 722, 722, 723, 721, 724, + 1354, 724, 720, 723, 721, 722, 724, 0, 1356, 1322, - 1323, 724, 722, 723, 721, 0, 722, 1356, 1354, 0, + 1322, 724, 722, 723, 721, 0, 722, 1360, 1331, 1331, 723, 727, 722, 722, 723, 727, 724, 725, 724, 725, 723, 727, 722, 724, 725, 726, 0, 726, 724, 725, - 723, 727, 726, 729, 1356, 729, 0, 726, 727, 0, - 729, 1323, 727, 0, 725, 729, 725, 0, 727, 0, - 0, 725, 726, 728, 726, 0, 725, 728, 727, 726, - 729, 0, 729, 728, 726, 0, 728, 729, 1323, 730, - 0, 730, 729, 728, 0, 730, 730, 0, 0, 0, - 728, 730, 1265, 1265, 728, 731, 0, 731, 0, 0, - 728, 731, 731, 728, 0, 0, 730, 731, 730, 733, - - 728, 733, 730, 730, 0, 0, 733, 0, 730, 0, - 0, 733, 731, 0, 731, 0, 0, 0, 731, 731, - 1265, 0, 0, 0, 731, 732, 733, 734, 733, 734, - 732, 0, 732, 733, 734, 0, 732, 732, 733, 734, - 0, 735, 732, 735, 0, 0, 0, 1265, 735, 0, - 0, 0, 732, 735, 734, 0, 734, 732, 0, 732, + 723, 727, 726, 729, 1360, 729, 0, 726, 727, 0, + 729, 1322, 727, 1361, 725, 729, 725, 1363, 727, 0, + 1331, 725, 726, 728, 726, 0, 725, 728, 727, 726, + 729, 1366, 729, 728, 726, 0, 728, 729, 1322, 730, + 1361, 730, 729, 728, 1363, 730, 730, 1331, 1367, 0, + 728, 730, 1266, 1266, 728, 731, 1369, 731, 1366, 1372, + 728, 731, 731, 728, 1373, 1375, 730, 731, 730, 733, + + 728, 733, 730, 730, 1378, 1367, 733, 0, 730, 0, + 0, 733, 731, 1369, 731, 0, 1372, 1379, 731, 731, + 1266, 1373, 1375, 1381, 731, 732, 733, 734, 733, 734, + 732, 1378, 732, 733, 734, 0, 732, 732, 733, 734, + 0, 735, 732, 735, 1379, 0, 0, 1266, 735, 0, + 1381, 0, 732, 735, 734, 0, 734, 732, 0, 732, 736, 734, 736, 732, 732, 0, 734, 736, 735, 732, 735, 737, 736, 737, 738, 735, 738, 0, 737, 0, 735, 738, 738, 737, 0, 0, 738, 736, 0, 736, @@ -2965,125 +2999,147 @@ static const flex_int16_t yy_chk[9032] = 0, 1198, 1195, 0, 1195, 0, 0, 1198, 1196, 1195, 1196, 1197, 1199, 1197, 1195, 1196, 1199, 1198, 1197, 0, 1196, 1200, 1199, 1197, 1198, 1200, 1201, 1201, 1198, 0, - 0, 1200, 1199, 0, 1198, 0, 1202, 0, 0, 1199, - 1202, 1200, 0, 1199, 1198, 0, 1202, 0, 1200, 1199, - 0, 1201, 1200, 0, 0, 1201, 1202, 0, 1200, 1199, - 0, 1201, 1203, 1202, 0, 1204, 1203, 1202, 1200, 1204, - - 1203, 1201, 0, 1202, 0, 1204, 1203, 0, 1201, 0, - 1205, 0, 1201, 1202, 1205, 1204, 1203, 0, 1201, 1203, - 1205, 0, 1204, 1203, 0, 1206, 1204, 1203, 1201, 1206, - 1205, 0, 1204, 1203, 1207, 1206, 0, 1205, 1207, 0, - 0, 1205, 1204, 1203, 1207, 1206, 1212, 1205, 1212, 1207, - 0, 0, 1206, 1212, 1207, 0, 1206, 1205, 1212, 1209, - 0, 1207, 1206, 1209, 1208, 1207, 1208, 0, 1208, 1209, - 0, 1207, 1206, 1212, 1208, 1212, 1207, 0, 1210, 1209, - 1212, 1207, 1210, 0, 1208, 1212, 1209, 1213, 1210, 1213, - 1209, 1208, 0, 1208, 1213, 1208, 1209, 0, 1210, 1213, - - 1211, 1208, 0, 0, 1211, 1210, 1209, 0, 0, 1210, - 1211, 1208, 0, 0, 1213, 1210, 1213, 1214, 0, 1214, - 1211, 1213, 0, 0, 1214, 1210, 1213, 1211, 1216, 1214, - 1216, 1211, 1215, 0, 0, 1216, 0, 1211, 0, 0, - 1216, 1215, 0, 1215, 1214, 0, 1214, 1211, 1215, 0, - 0, 1214, 0, 1215, 0, 1216, 1214, 1216, 0, 1215, - 0, 0, 1216, 0, 1217, 0, 1217, 1216, 1215, 0, - 1215, 1217, 1218, 0, 1218, 1215, 1217, 1220, 0, 1218, - 1215, 1220, 1221, 1219, 1218, 1219, 1221, 1220, 0, 1219, - 1219, 1217, 1221, 1217, 0, 1219, 0, 1220, 1217, 1218, - - 0, 1218, 1221, 1217, 1220, 0, 1218, 0, 1220, 1221, - 1219, 1218, 1219, 1221, 1220, 0, 1219, 1219, 1222, 1221, - 1222, 1223, 1219, 1223, 1220, 1222, 0, 0, 1223, 1221, - 1222, 0, 1224, 1223, 1224, 0, 0, 0, 0, 1224, - 0, 0, 1225, 0, 1224, 1222, 0, 1222, 1223, 0, - 1223, 1225, 1222, 1225, 0, 1223, 0, 1222, 1225, 1224, - 1223, 1224, 0, 1225, 0, 1226, 1224, 1226, 0, 1225, - 0, 1224, 1226, 1226, 0, 0, 0, 1226, 1225, 0, - 1225, 0, 0, 1227, 1227, 1225, 1227, 0, 0, 0, - 1225, 1227, 1226, 0, 1226, 1228, 1227, 1228, 0, 1226, - - 1226, 0, 1228, 0, 1226, 0, 0, 1228, 0, 0, - 1227, 1227, 0, 1227, 1229, 0, 1229, 0, 1227, 0, - 0, 1229, 1228, 1227, 1228, 1230, 1229, 1230, 1231, 1228, - 1231, 0, 1230, 1230, 1228, 1231, 0, 1230, 0, 0, - 1231, 1229, 0, 1229, 1232, 0, 1232, 0, 1229, 0, - 1232, 1232, 1230, 1229, 1230, 1231, 1232, 1231, 0, 1230, - 1230, 0, 1231, 0, 1230, 0, 0, 1231, 1233, 1233, - 1233, 1232, 0, 1232, 1234, 1233, 1234, 1232, 1232, 0, - 1233, 1234, 1234, 1232, 1235, 0, 1234, 0, 1235, 0, - 0, 0, 0, 0, 1235, 1233, 1233, 1233, 0, 0, - - 0, 1234, 1233, 1234, 1235, 0, 1236, 1233, 1234, 1234, - 1236, 1235, 0, 1234, 1237, 1235, 1236, 0, 1237, 1238, - 0, 1235, 0, 1238, 1237, 0, 1236, 0, 0, 1238, - 0, 1235, 1266, 1236, 1237, 0, 1266, 1236, 0, 1238, - 0, 1237, 1266, 1236, 1264, 1237, 1238, 0, 1264, 0, - 1238, 1237, 1266, 1236, 1264, 0, 1238, 1264, 1267, 1266, - 0, 1237, 1267, 1266, 1264, 0, 1238, 0, 1267, 1266, - 1268, 1264, 1269, 1267, 1268, 1264, 1269, 0, 1267, 1266, - 1268, 1264, 1269, 0, 1264, 1267, 0, 0, 0, 1267, - 1268, 1264, 1269, 0, 1270, 1267, 0, 1268, 1270, 1269, - - 1267, 1268, 0, 1269, 1270, 1267, 1271, 1268, 1271, 1269, - 1271, 0, 0, 0, 1270, 0, 1271, 1268, 0, 1269, - 0, 1270, 0, 0, 1272, 1270, 1271, 0, 1272, 0, - 0, 1270, 1273, 1271, 1272, 1271, 1273, 1271, 0, 1272, - 0, 1270, 1273, 1271, 1272, 0, 0, 0, 0, 0, - 1274, 1272, 1273, 1271, 1274, 1272, 0, 0, 0, 1273, - 1274, 1272, 0, 1273, 0, 0, 1272, 0, 0, 1273, - 1274, 1272, 1275, 0, 0, 0, 1275, 1274, 0, 1273, - 0, 1274, 1275, 1277, 1276, 1275, 1276, 1274, 1277, 0, - 1277, 1276, 1275, 0, 1278, 1277, 1276, 1274, 1278, 1275, - - 1277, 0, 0, 1275, 1278, 0, 0, 0, 0, 1275, - 1277, 1276, 1275, 1276, 1278, 1277, 1279, 1277, 1276, 1275, - 1279, 1278, 1277, 1276, 1280, 1278, 1279, 1277, 1280, 1281, - 0, 1278, 0, 1281, 1280, 0, 1279, 0, 1282, 1281, - 0, 1278, 1282, 1279, 1280, 0, 0, 1279, 1282, 1281, - 0, 1280, 0, 1279, 0, 1280, 1281, 0, 1282, 0, - 1281, 1280, 0, 1279, 0, 1282, 1281, 0, 1283, 1282, - 1284, 1280, 1283, 1285, 1284, 1282, 1281, 1285, 1283, 1283, - 1284, 1286, 1286, 1285, 0, 1282, 1286, 0, 1283, 0, - 1284, 0, 1286, 1285, 0, 1283, 0, 1284, 0, 1283, - - 1285, 1284, 1286, 0, 1285, 1283, 1283, 1284, 1286, 1286, - 1285, 1302, 1302, 1286, 1304, 1283, 0, 1284, 1304, 1286, - 1285, 0, 1305, 1306, 1304, 0, 1305, 1306, 0, 1286, - 0, 0, 1305, 1306, 1304, 0, 1302, 0, 0, 0, - 1302, 1304, 1305, 1306, 0, 1304, 1302, 0, 0, 1305, - 1306, 1304, 0, 1305, 1306, 0, 1302, 0, 0, 1305, - 1306, 1304, 0, 1302, 1307, 0, 1307, 1302, 0, 1305, - 1306, 1307, 1308, 1302, 1308, 1309, 1307, 1309, 1310, 1308, - 1310, 0, 1309, 1302, 1308, 1310, 0, 1309, 0, 0, - 1310, 1307, 0, 1307, 0, 0, 0, 0, 1307, 1308, - - 0, 1308, 1309, 1307, 1309, 1310, 1308, 1310, 1311, 1309, - 1311, 1308, 1310, 0, 1309, 1311, 1312, 1310, 1312, 0, - 1311, 1313, 0, 1312, 0, 1313, 1314, 0, 1312, 1325, - 1314, 1313, 0, 1325, 1326, 1311, 1314, 1311, 1326, 1325, - 0, 1313, 1311, 1312, 1326, 1312, 1314, 1311, 1313, 1325, - 1312, 0, 1313, 1314, 1326, 1312, 1325, 1314, 1313, 0, - 1325, 1326, 0, 1314, 0, 1326, 1325, 0, 1313, 0, - 1327, 1326, 0, 1314, 1327, 1328, 1325, 1328, 0, 0, - 1327, 1326, 1328, 0, 1336, 0, 1336, 1328, 0, 0, - 1327, 1336, 0, 0, 0, 0, 1336, 1327, 0, 0, - - 0, 1327, 1328, 0, 1328, 0, 0, 1327, 0, 1328, - 0, 1336, 0, 1336, 1328, 0, 0, 1327, 1336, 0, - 0, 0, 0, 1336, 1368, 1368, 1368, 1368, 1368, 1369, - 0, 0, 1369, 1369, 1371, 1371, 1371, 0, 1371, 1372, - 0, 1372, 1372, 1372, 1373, 0, 1373, 1373, 1373, 1374, - 0, 1374, 1374, 1374, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367 + 0, 1200, 1199, 0, 1198, 1212, 0, 1212, 0, 1199, + 0, 1200, 1212, 1199, 1198, 0, 0, 1212, 1200, 1199, + 1202, 1201, 1200, 0, 1202, 1201, 0, 0, 1200, 1199, + 1202, 1201, 1212, 0, 1212, 0, 0, 0, 1200, 1212, + + 1202, 1201, 1203, 1201, 1212, 1204, 1203, 1202, 1201, 1204, + 1203, 1202, 1201, 0, 0, 1204, 1203, 1202, 1201, 0, + 1205, 0, 0, 0, 1205, 1204, 1203, 1202, 1201, 1203, + 1205, 0, 1204, 1203, 1206, 1207, 1204, 1203, 1206, 1207, + 1205, 0, 1204, 1203, 1206, 1207, 0, 1205, 0, 0, + 1207, 1205, 1204, 1203, 1206, 1207, 0, 1205, 0, 1209, + 1210, 1206, 1207, 1209, 1210, 1206, 1207, 1205, 0, 1209, + 1210, 1206, 1207, 0, 1208, 0, 1208, 1207, 1208, 1209, + 1210, 1206, 1207, 0, 1208, 0, 1209, 1210, 1211, 0, + 1209, 1210, 1211, 0, 1208, 0, 1209, 1210, 1211, 0, + + 0, 1208, 1213, 1208, 1213, 1208, 1209, 1210, 1211, 1213, + 1214, 1208, 1214, 0, 1213, 1211, 0, 1214, 0, 1211, + 0, 1208, 1214, 0, 0, 1211, 0, 0, 0, 1213, + 0, 1213, 0, 0, 1215, 1211, 1213, 1214, 0, 1214, + 1216, 1213, 1216, 1215, 1214, 1215, 1217, 1216, 1217, 1214, + 1215, 0, 1216, 1217, 0, 1215, 0, 0, 1217, 0, + 0, 1215, 0, 0, 1218, 0, 1218, 1216, 0, 1216, + 1215, 1218, 1215, 1217, 1216, 1217, 1218, 1215, 0, 1216, + 1217, 0, 1215, 0, 0, 1217, 0, 0, 1219, 0, + 1219, 1218, 1220, 1218, 1219, 1219, 1220, 0, 1218, 1222, + + 1219, 1222, 1220, 1218, 1221, 0, 1222, 0, 1221, 0, + 0, 1222, 1220, 0, 1221, 1219, 0, 1219, 1223, 1220, + 1223, 1219, 1219, 1220, 1221, 1223, 1222, 1219, 1222, 1220, + 1223, 1221, 0, 1222, 0, 1221, 0, 1225, 1222, 1220, + 0, 1221, 1224, 0, 1224, 1223, 1225, 1223, 1225, 1224, + 0, 1221, 1223, 1225, 1224, 0, 0, 1223, 1225, 0, + 1226, 0, 1226, 0, 1225, 0, 0, 1226, 1226, 1224, + 0, 1224, 1226, 1225, 0, 1225, 1224, 0, 1235, 0, + 1225, 1224, 1235, 1227, 1227, 1225, 1227, 1226, 1235, 1226, + 1228, 1227, 1228, 0, 1226, 1226, 1227, 1228, 1235, 1226, + + 0, 0, 1228, 0, 0, 1235, 0, 0, 0, 1235, + 1227, 1227, 0, 1227, 1229, 1235, 1229, 1228, 1227, 1228, + 1230, 1229, 1230, 1227, 1228, 1235, 1229, 1230, 1230, 1228, + 0, 0, 1230, 1231, 0, 1231, 0, 0, 0, 0, + 1231, 1229, 0, 1229, 1232, 1231, 1232, 1230, 1229, 1230, + 1232, 1232, 0, 1229, 1230, 1230, 1232, 0, 0, 1230, + 1231, 0, 1231, 1233, 1233, 1233, 0, 1231, 0, 0, + 1233, 1232, 1231, 1232, 1234, 1233, 1234, 1232, 1232, 0, + 0, 1234, 1234, 1232, 1236, 1237, 1234, 0, 1236, 1237, + 1233, 1233, 1233, 0, 1236, 1237, 0, 1233, 0, 0, + + 0, 1234, 1233, 1234, 1236, 1237, 0, 0, 1234, 1234, + 1238, 1236, 1237, 1234, 1238, 1236, 1237, 1278, 0, 1278, + 1238, 1236, 1237, 1265, 1278, 0, 0, 1265, 0, 1278, + 1238, 1236, 1237, 1265, 0, 0, 1265, 1238, 1268, 0, + 0, 1238, 1268, 1265, 1278, 0, 1278, 1238, 1268, 0, + 1265, 1278, 0, 0, 1265, 0, 1278, 1238, 1268, 0, + 1265, 0, 0, 1265, 1269, 1268, 0, 0, 1269, 1268, + 1265, 1267, 1267, 1270, 1269, 1268, 1267, 1270, 0, 1269, + 0, 0, 1267, 1270, 1269, 1268, 0, 1267, 0, 0, + 0, 1269, 1267, 1270, 0, 1269, 0, 0, 1267, 1267, + + 1270, 1269, 0, 1267, 1270, 0, 1269, 0, 1271, 1267, + 1270, 1269, 1271, 1272, 1267, 0, 0, 1272, 1271, 1267, + 1270, 1274, 1273, 1272, 1273, 1274, 1273, 0, 1271, 0, + 0, 1274, 1273, 1272, 0, 1271, 1274, 0, 0, 1271, + 1272, 1274, 1273, 0, 1272, 1271, 0, 0, 1274, 1273, + 1272, 1273, 1274, 1273, 0, 1271, 0, 1275, 1274, 1273, + 1272, 1275, 1276, 1274, 0, 0, 1276, 1275, 1274, 1273, + 1277, 0, 1276, 0, 1277, 1280, 0, 1275, 0, 1280, + 1277, 0, 1276, 1277, 1275, 1280, 0, 0, 1275, 1276, + 1277, 1279, 0, 1276, 1275, 1280, 1279, 1277, 1279, 1276, + + 0, 1277, 1280, 1279, 1275, 0, 1280, 1277, 1279, 1276, + 1277, 1281, 1280, 0, 0, 1281, 1282, 1277, 1279, 0, + 1282, 1281, 1280, 1279, 1283, 1279, 1282, 0, 1283, 1284, + 1279, 1281, 0, 1284, 1283, 1279, 1282, 0, 1281, 1284, + 0, 0, 1281, 1282, 1283, 0, 0, 1282, 1281, 1284, + 0, 1283, 0, 1282, 0, 1283, 1284, 0, 1281, 0, + 1284, 1283, 0, 1282, 1285, 0, 1284, 0, 1285, 1286, + 0, 1283, 0, 1286, 1285, 1285, 1284, 1287, 0, 1286, + 0, 1287, 0, 0, 1285, 0, 0, 1287, 0, 1286, + 0, 1285, 1306, 1306, 0, 1285, 1286, 1287, 1288, 1288, + + 1286, 1285, 1285, 1288, 1287, 0, 1286, 0, 1287, 1288, + 0, 1285, 0, 0, 1287, 0, 1286, 1306, 0, 1288, + 0, 1306, 0, 0, 1287, 1288, 1288, 1306, 0, 0, + 1288, 1308, 0, 0, 0, 1308, 1288, 1306, 0, 1308, + 0, 0, 0, 1309, 1306, 1308, 1288, 1309, 1306, 0, + 0, 0, 0, 1309, 1306, 1308, 0, 1310, 1308, 0, + 0, 1310, 1308, 1309, 1306, 1311, 1308, 1310, 0, 1311, + 1309, 0, 1308, 0, 1309, 1311, 0, 1310, 0, 1312, + 1309, 0, 1308, 1312, 1310, 1311, 0, 0, 1310, 1312, + 1309, 1313, 1311, 1313, 1310, 0, 1311, 0, 1313, 1312, + + 0, 0, 1311, 1313, 1310, 0, 1312, 1314, 0, 1314, + 1312, 0, 1311, 0, 1314, 1315, 1312, 1315, 1313, 1314, + 1313, 1316, 1315, 1316, 0, 1313, 1312, 1315, 1316, 0, + 1313, 0, 0, 1316, 1314, 0, 1314, 0, 0, 0, + 0, 1314, 1315, 0, 1315, 1317, 1314, 1317, 1316, 1315, + 1316, 1318, 1317, 1318, 1315, 1316, 0, 1317, 1318, 0, + 1316, 1319, 0, 1318, 0, 1319, 1320, 0, 0, 0, + 1320, 1319, 1317, 0, 1317, 0, 1320, 0, 1318, 1317, + 1318, 1319, 0, 0, 1317, 1318, 1320, 1338, 1319, 1338, + 1318, 1333, 1319, 1320, 1338, 1333, 0, 1320, 1319, 1338, + + 1335, 1333, 0, 1320, 1335, 0, 1333, 0, 1319, 0, + 1335, 1333, 0, 1320, 1338, 1334, 1338, 0, 1333, 1334, + 1335, 1338, 1333, 1334, 0, 1334, 1338, 1335, 1333, 0, + 0, 1335, 0, 1333, 0, 1334, 0, 1335, 1333, 1336, + 0, 1337, 1334, 1336, 1348, 1337, 1334, 1335, 1348, 1336, + 1334, 1337, 1334, 1349, 1348, 0, 0, 1349, 0, 1336, + 0, 1337, 1334, 1349, 1348, 0, 1336, 0, 1337, 0, + 1336, 1348, 1337, 1349, 0, 1348, 1336, 0, 1337, 1350, + 1349, 1348, 0, 1350, 1349, 0, 1336, 0, 1337, 1350, + 1349, 1348, 1357, 0, 0, 0, 1357, 0, 0, 1350, + + 1349, 1358, 1357, 1358, 0, 0, 1350, 0, 1358, 0, + 1350, 0, 1357, 1358, 0, 0, 1350, 0, 0, 1357, + 0, 0, 0, 1357, 0, 1364, 1350, 1364, 1358, 1357, + 1358, 0, 1364, 1364, 0, 1358, 0, 1364, 1370, 1357, + 1358, 1376, 1376, 1376, 0, 0, 0, 0, 1376, 1370, + 0, 1370, 1364, 1376, 1364, 0, 1370, 0, 0, 1364, + 1364, 1370, 0, 0, 1364, 1370, 0, 0, 1376, 1376, + 1376, 0, 0, 0, 0, 1376, 1370, 1382, 1370, 1382, + 1376, 1382, 0, 1370, 1382, 1388, 0, 1388, 1370, 1382, + 0, 0, 1388, 0, 0, 0, 0, 1388, 0, 0, + + 0, 0, 0, 0, 1382, 0, 1382, 0, 1382, 0, + 0, 1382, 1388, 0, 1388, 0, 1382, 0, 0, 1388, + 0, 0, 0, 0, 1388, 1396, 1396, 1396, 1396, 1396, + 1397, 0, 0, 1397, 1397, 1399, 1399, 1399, 0, 1399, + 1400, 0, 1400, 1400, 1400, 1401, 0, 1401, 1401, 1401, + 1402, 0, 1402, 1402, 1402, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395 } ; /* The intent behind this definition is that it'll catch @@ -3114,7 +3170,7 @@ static const flex_int16_t yy_chk[9032] = static thread_local std::stringstream strbuf; -#line 3117 "flex_lexer.cpp" +#line 3174 "flex_lexer.cpp" /*************************** ** Section 2: Rules @@ -3128,7 +3184,7 @@ static thread_local std::stringstream strbuf; /*************************** ** Section 3: Rules ***************************/ -#line 3131 "flex_lexer.cpp" +#line 3188 "flex_lexer.cpp" #define INITIAL 0 #define singlequotedstring 1 @@ -3415,7 +3471,7 @@ YY_DECL #line 57 "flex_lexer.l" -#line 3418 "flex_lexer.cpp" +#line 3475 "flex_lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3442,13 +3498,13 @@ 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 >= 1368 ) + if ( yy_current_state >= 1396 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1367 ); + while ( yy_current_state != 1395 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -4322,47 +4378,62 @@ YY_RULE_SETUP #line 231 "flex_lexer.l" TOKEN(CHARACTER_VARYING) YY_BREAK -/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 171: YY_RULE_SETUP -#line 234 "flex_lexer.l" -TOKEN(EQUALS) +#line 232 "flex_lexer.l" +TOKEN(CURRENT_TIMESTAMP) YY_BREAK case 172: YY_RULE_SETUP -#line 235 "flex_lexer.l" -TOKEN(NOTEQUALS) +#line 233 "flex_lexer.l" +TOKEN(CURRENT_DATE) YY_BREAK case 173: YY_RULE_SETUP -#line 236 "flex_lexer.l" -TOKEN(NOTEQUALS) +#line 234 "flex_lexer.l" +TOKEN(CURRENT_TIME) YY_BREAK +/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 174: YY_RULE_SETUP #line 237 "flex_lexer.l" -TOKEN(LESSEQ) +TOKEN(EQUALS) YY_BREAK case 175: YY_RULE_SETUP #line 238 "flex_lexer.l" -TOKEN(GREATEREQ) +TOKEN(NOTEQUALS) YY_BREAK case 176: YY_RULE_SETUP #line 239 "flex_lexer.l" -TOKEN(CONCAT) +TOKEN(NOTEQUALS) YY_BREAK case 177: YY_RULE_SETUP -#line 241 "flex_lexer.l" -{ return yytext[0]; } +#line 240 "flex_lexer.l" +TOKEN(LESSEQ) YY_BREAK case 178: -#line 244 "flex_lexer.l" +YY_RULE_SETUP +#line 241 "flex_lexer.l" +TOKEN(GREATEREQ) + YY_BREAK case 179: YY_RULE_SETUP +#line 242 "flex_lexer.l" +TOKEN(CONCAT) + YY_BREAK +case 180: +YY_RULE_SETUP #line 244 "flex_lexer.l" +{ return yytext[0]; } + YY_BREAK +case 181: +#line 247 "flex_lexer.l" +case 182: +YY_RULE_SETUP +#line 247 "flex_lexer.l" { yylval->fval = atof(yytext); return SQL_FLOATVAL; @@ -4373,17 +4444,17 @@ YY_RULE_SETUP * positive equivalent. We thus match for LLONG_MIN specifically. This is not an issue for floats, where * numeric_limits::lowest() == -numeric_limits::max(); */ -case 180: +case 183: YY_RULE_SETUP -#line 254 "flex_lexer.l" +#line 257 "flex_lexer.l" { yylval->ival = LLONG_MIN; return SQL_INTVAL; } YY_BREAK -case 181: +case 184: YY_RULE_SETUP -#line 259 "flex_lexer.l" +#line 262 "flex_lexer.l" { errno = 0; yylval->ival = strtoll(yytext, nullptr, 0); @@ -4394,59 +4465,59 @@ YY_RULE_SETUP return SQL_INTVAL; } YY_BREAK -case 182: +case 185: YY_RULE_SETUP -#line 269 "flex_lexer.l" +#line 272 "flex_lexer.l" { // Crop the leading and trailing quote char yylval->sval = hsql::substr(yytext, 1, strlen(yytext)-1); return SQL_IDENTIFIER; } YY_BREAK -case 183: +case 186: YY_RULE_SETUP -#line 275 "flex_lexer.l" +#line 278 "flex_lexer.l" { yylval->sval = strdup(yytext); return SQL_IDENTIFIER; } YY_BREAK -case 184: +case 187: YY_RULE_SETUP -#line 280 "flex_lexer.l" +#line 283 "flex_lexer.l" { BEGIN singlequotedstring; strbuf.clear(); strbuf.str(""); } // Clear strbuf manually, see #170 YY_BREAK -case 185: +case 188: YY_RULE_SETUP -#line 281 "flex_lexer.l" +#line 284 "flex_lexer.l" { strbuf << '\''; } YY_BREAK -case 186: -/* rule 186 can match eol */ +case 189: +/* rule 189 can match eol */ YY_RULE_SETUP -#line 282 "flex_lexer.l" +#line 285 "flex_lexer.l" { strbuf << yytext; } YY_BREAK -case 187: +case 190: YY_RULE_SETUP -#line 283 "flex_lexer.l" +#line 286 "flex_lexer.l" { BEGIN 0; yylval->sval = strdup(strbuf.str().c_str()); return SQL_STRING; } YY_BREAK case YY_STATE_EOF(singlequotedstring): -#line 284 "flex_lexer.l" +#line 287 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unterminated string\n"); return 0; } YY_BREAK -case 188: +case 191: YY_RULE_SETUP -#line 286 "flex_lexer.l" +#line 289 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); return 0; } YY_BREAK -case 189: +case 192: YY_RULE_SETUP -#line 288 "flex_lexer.l" +#line 291 "flex_lexer.l" ECHO; YY_BREAK -#line 4449 "flex_lexer.cpp" +#line 4521 "flex_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): yyterminate(); @@ -4747,7 +4818,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1368 ) + if ( yy_current_state >= 1396 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -4776,11 +4847,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1368 ) + if ( yy_current_state >= 1396 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1367); + yy_is_jam = (yy_current_state == 1395); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -5603,7 +5674,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 288 "flex_lexer.l" +#line 291 "flex_lexer.l" /*************************** ** Section 3: User code diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index 40aa36a4..1ce7b61c 100644 --- a/src/parser/flex_lexer.h +++ b/src/parser/flex_lexer.h @@ -2,9 +2,9 @@ #define hsql_HEADER_H 1 #define hsql_IN_HEADER 1 -#line 5 "flex_lexer.h" +#line 6 "flex_lexer.h" -#line 7 "flex_lexer.h" +#line 8 "flex_lexer.h" #define YY_INT_ALIGNED short int @@ -730,9 +730,9 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 288 "flex_lexer.l" +#line 291 "flex_lexer.l" -#line 736 "flex_lexer.h" +#line 737 "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 f4cd348c..ae4a70ad 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -229,6 +229,9 @@ YEARS TOKEN(YEARS) CURRENT[ \t\n]+ROW TOKEN(CURRENT_ROW) CHARACTER[ \t\n]+VARYING TOKEN(CHARACTER_VARYING) +CURRENT_TIMESTAMP TOKEN(CURRENT_TIMESTAMP) +CURRENT_DATE TOKEN(CURRENT_DATE) +CURRENT_TIME TOKEN(CURRENT_TIME) /* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ "==" TOKEN(EQUALS) diff --git a/src/parser/sql_keywords.txt b/src/parser/sql_keywords.txt index ba4bfa19..0de04306 100644 --- a/src/parser/sql_keywords.txt +++ b/src/parser/sql_keywords.txt @@ -161,3 +161,4 @@ INT DOUBLE NVARCHAR TEXT +INTERVAL diff --git a/src/sql/ColumnType.h b/src/sql/ColumnType.h index 127f84b5..b9365f54 100644 --- a/src/sql/ColumnType.h +++ b/src/sql/ColumnType.h @@ -16,6 +16,7 @@ enum class DataType { DOUBLE, FLOAT, INT, + INTERVAL, LONG, REAL, SMALLINT, diff --git a/src/sql/Expr.cpp b/src/sql/Expr.cpp index 236d79f1..896792da 100644 --- a/src/sql/Expr.cpp +++ b/src/sql/Expr.cpp @@ -179,6 +179,18 @@ Expr* Expr::makeDateLiteral(char* string) { return e; } +Expr* Expr::makeTimestampLiteral(char* string) { + Expr* e = new Expr(kExprLiteralTimestamp); + e->name = string; + return e; +} + +Expr* Expr::makeTimeLiteral(char* string) { + Expr* e = new Expr(kExprLiteralTime); + e->name = string; + return e; +} + Expr* Expr::makeIntervalLiteral(int64_t duration, DatetimeField unit) { Expr* e = new Expr(kExprLiteralInterval); e->ival = duration; @@ -186,6 +198,21 @@ Expr* Expr::makeIntervalLiteral(int64_t duration, DatetimeField unit) { return e; } +Expr* Expr::makeCurrentTimestamp() { + Expr* e = new Expr(kExprCurrentTimestamp); + return e; +} + +Expr* Expr::makeCurrentDate() { + Expr* e = new Expr(kExprCurrentDate); + return e; +} + +Expr* Expr::makeCurrentTime() { + Expr* e = new Expr(kExprCurrentTime); + return e; +} + Expr* Expr::makeColumnRef(char* name) { Expr* e = new Expr(kExprColumnRef); e->name = name; @@ -287,7 +314,8 @@ bool Expr::isType(ExprType exprType) const { return exprType == type; } bool Expr::isLiteral() const { return isType(kExprLiteralInt) || isType(kExprLiteralFloat) || isType(kExprLiteralString) || isType(kExprParameter) || - isType(kExprLiteralNull) || isType(kExprLiteralDate) || isType(kExprLiteralInterval); + isType(kExprLiteralNull) || isType(kExprLiteralDate) || isType(kExprLiteralInterval) || + isType(kExprLiteralTimestamp) || isType(kExprLiteralTime); } bool Expr::hasAlias() const { return alias != nullptr; } diff --git a/src/sql/Expr.h b/src/sql/Expr.h index e44c42ca..ddf41ee9 100644 --- a/src/sql/Expr.h +++ b/src/sql/Expr.h @@ -21,6 +21,11 @@ enum ExprType { kExprLiteralNull, kExprLiteralDate, kExprLiteralInterval, + kExprLiteralTimestamp, + kExprLiteralTime, + kExprCurrentTimestamp, + kExprCurrentDate, + kExprCurrentTime, kExprStar, kExprParameter, kExprColumnRef, @@ -188,8 +193,18 @@ struct Expr { static Expr* makeDateLiteral(char* val); + static Expr* makeTimestampLiteral(char* val); + + static Expr* makeTimeLiteral(char* val); + static Expr* makeIntervalLiteral(int64_t duration, DatetimeField unit); + static Expr* makeCurrentTimestamp(); + + static Expr* makeCurrentDate(); + + static Expr* makeCurrentTime(); + static Expr* makeColumnRef(char* name); static Expr* makeColumnRef(char* table, char* name); diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index e502665c..65a41cae 100644 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -69,6 +69,9 @@ std::ostream& operator<<(std::ostream& stream, const ColumnType& column_type) { case DataType::BOOLEAN: stream << "BOOLEAN"; break; + case DataType::INTERVAL: + stream << "INTERVAL"; + break; } return stream; } diff --git a/test/queries/queries-good.sql b/test/queries/queries-good.sql index ca210875..eb3d3142 100755 --- a/test/queries/queries-good.sql +++ b/test/queries/queries-good.sql @@ -1,4 +1,4 @@ -# This file contains a list of strings that are NOT valid SQL queries. +# This file contains a list of strings that are valid SQL queries. # Each line contains a single SQL query. # SELECT statement SELECT * FROM orders; @@ -18,6 +18,11 @@ SELECT * FROM t WHERE a = ? AND b = ?; SELECT City.name, Product.category, SUM(price) FROM fact INNER JOIN City ON fact.city_id = City.id INNER JOIN Product ON fact.product_id = Product.id GROUP BY City.name, Product.category; SELECT SUBSTR(a, 3, 5) FROM t; SELECT * FROM t WHERE a = DATE '1996-12-31'; +SELECT * FROM t WHERE a = TIMESTAMP '1996-12-31 12:11:10'; +SELECT * FROM t WHERE a = TIME '12:11:10'; +SELECT * FROM t WHERE a = CURRENT_DATE; +SELECT * FROM t WHERE a = CURRENT_TIMESTAMP; +SELECT * FROM t WHERE a = CURRENT_TIME; # JOIN SELECT t1.a, t1.b, t2.c FROM "table" AS t1 JOIN (SELECT * FROM foo JOIN bar ON foo.id = bar.id) t2 ON t1.a = t2.b WHERE (t1.b OR NOT t1.a) AND t2.c = 12.5 SELECT * FROM t1 JOIN t2 ON c1 = c2; @@ -37,6 +42,7 @@ CREATE TABLE foo (a int, b int REFERENCES bar REFERENCES baz); CREATE TABLE foo (a int, b int REFERENCES bar (x) REFERENCES baz (y)); CREATE TABLE foo (a int, b int, FOREIGN KEY (b) REFERENCES bar, FOREIGN KEY (b) REFERENCES baz); CREATE TABLE foo (a int, b int, FOREIGN KEY (b) REFERENCES bar (x), FOREIGN KEY (b) REFERENCES baz (y)); +CREATE TABLE foo (i INTERVAL); # Multiple statements CREATE TABLE "table" FROM TBL FILE 'students.tbl'; SELECT * FROM "table"; # INSERT diff --git a/test/sql_tests.cpp b/test/sql_tests.cpp index df70b522..6ff5b9a4 100644 --- a/test/sql_tests.cpp +++ b/test/sql_tests.cpp @@ -778,6 +778,219 @@ TEST(CastAsType) { ASSERT_EQ(stmt->selectList->front()->columnType.length, 8); } +TEST(IntervalColumnTypeTest) { + auto result = SQLParserResult{}; + SQLParser::parse( + "CREATE TABLE interval_table (c_interval INTERVAL )", + &result); + + ASSERT(result.isValid()); + ASSERT_EQ(result.size(), 1); + ASSERT_EQ(result.getStatement(0)->type(), kStmtCreate); + + const CreateStatement* stmt = (const CreateStatement*)result.getStatement(0); + ASSERT_EQ(stmt->type, kCreateTable); + ASSERT_STREQ(stmt->tableName, "interval_table"); + ASSERT_NOTNULL(stmt->columns); + + // c_interval INTERVAL + ASSERT_STREQ(stmt->columns->at(0)->name, "c_interval"); + ASSERT_EQ(stmt->columns->at(0)->type, (ColumnType{DataType::INTERVAL})); + ASSERT_EQ(stmt->columns->at(0)->nullable, true); +} + +TEST(IntervalInsertTest) { + TEST_PARSE_SINGLE_SQL( + "INSERT INTO interval_table VALUES (INTERVAL '1' YEAR)", + kStmtInsert, InsertStatement, result_year, stmt_year); + + // INTERVAL '1' YEAR + ASSERT_EQ(stmt_year->values->at(0)->type, kExprLiteralInterval); + ASSERT_EQ(stmt_year->values->at(0)->ival, 1); + ASSERT_EQ(stmt_year->values->at(0)->datetimeField, kDatetimeYear); +} + +TEST(CurrentDateTest) { + TEST_PARSE_SINGLE_SQL("SELECT * FROM students WHERE graduation_date = CURRENT_DATE;", + kStmtSelect, SelectStatement, result, stmt); + + ASSERT_TRUE(result.isValid()); + ASSERT_NOTNULL(stmt->whereClause); + ASSERT_EQ(stmt->whereClause->opType, kOpEquals); + ASSERT_STREQ(stmt->whereClause->expr->name, "graduation_date"); + ASSERT_EQ(stmt->whereClause->expr2->type, kExprCurrentDate); +} + +TEST(CurrentTimeTest) { + TEST_PARSE_SINGLE_SQL("SELECT * FROM students WHERE class_time = CURRENT_TIME;", + kStmtSelect, SelectStatement, result, stmt); + + ASSERT_TRUE(result.isValid()); + ASSERT_NOTNULL(stmt->whereClause); + ASSERT_EQ(stmt->whereClause->opType, kOpEquals); + ASSERT_STREQ(stmt->whereClause->expr->name, "class_time"); + ASSERT_EQ(stmt->whereClause->expr2->type, kExprCurrentTime); +} + +TEST(CurrentTimestampTest) { + TEST_PARSE_SINGLE_SQL("SELECT * FROM students WHERE last_update = CURRENT_TIMESTAMP;", + kStmtSelect, SelectStatement, result, stmt); + + ASSERT_TRUE(result.isValid()); + ASSERT_NOTNULL(stmt->whereClause); + ASSERT_EQ(stmt->whereClause->opType, kOpEquals); + ASSERT_STREQ(stmt->whereClause->expr->name, "last_update"); + ASSERT_EQ(stmt->whereClause->expr2->type, kExprCurrentTimestamp); +} + +TEST(CurrentDateTimeFunctionsInInsertTest) { + TEST_PARSE_SINGLE_SQL("INSERT INTO logs VALUES (101, CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME);", + kStmtInsert, InsertStatement, result, stmt); + + ASSERT_TRUE(result.isValid()); + ASSERT_EQ(stmt->values->size(), 4); + + // First value is a regular integer + ASSERT_EQ(stmt->values->at(0)->type, kExprLiteralInt); + ASSERT_EQ(stmt->values->at(0)->ival, 101); + + // CURRENT_TIMESTAMP + ASSERT_EQ(stmt->values->at(1)->type, kExprCurrentTimestamp); + + // CURRENT_DATE + ASSERT_EQ(stmt->values->at(2)->type, kExprCurrentDate); + + // CURRENT_TIME + ASSERT_EQ(stmt->values->at(3)->type, kExprCurrentTime); +} + +TEST(CurrentDateTimeFunctionsInUpdateTest) { + TEST_PARSE_SINGLE_SQL("UPDATE logs SET timestamp_col = CURRENT_TIMESTAMP, date_col = CURRENT_DATE, time_col = CURRENT_TIME WHERE id = 101;", + kStmtUpdate, UpdateStatement, result, stmt); + + ASSERT_TRUE(result.isValid()); + ASSERT_EQ(stmt->updates->size(), 3); + + // CURRENT_TIMESTAMP + ASSERT_STREQ(stmt->updates->at(0)->column, "timestamp_col"); + ASSERT_EQ(stmt->updates->at(0)->value->type, kExprCurrentTimestamp); + + // CURRENT_DATE + ASSERT_STREQ(stmt->updates->at(1)->column, "date_col"); + ASSERT_EQ(stmt->updates->at(1)->value->type, kExprCurrentDate); + + // CURRENT_TIME + ASSERT_STREQ(stmt->updates->at(2)->column, "time_col"); + ASSERT_EQ(stmt->updates->at(2)->value->type, kExprCurrentTime); +} + +TEST(CurrentDateWithIntervalTest) { + TEST_PARSE_SINGLE_SQL("SELECT * FROM students WHERE graduation_date = CURRENT_DATE + INTERVAL '1' YEAR;", + kStmtSelect, SelectStatement, result, stmt); + + ASSERT_TRUE(result.isValid()); + ASSERT_NOTNULL(stmt->whereClause); + ASSERT_EQ(stmt->whereClause->opType, kOpEquals); + ASSERT_STREQ(stmt->whereClause->expr->name, "graduation_date"); + ASSERT_EQ(stmt->whereClause->expr2->type, kExprOperator); + ASSERT_EQ(stmt->whereClause->expr2->opType, kOpPlus); + ASSERT_EQ(stmt->whereClause->expr2->expr->type, kExprCurrentDate); + ASSERT_EQ(stmt->whereClause->expr2->expr2->type, kExprLiteralInterval); + ASSERT_EQ(stmt->whereClause->expr2->expr2->ival, 1); + ASSERT_EQ(stmt->whereClause->expr2->expr2->datetimeField, kDatetimeYear); +} + +TEST(IntervalYearTest) { + TEST_PARSE_SINGLE_SQL("SELECT * FROM students WHERE graduation_date = DATE '2025-04-04' + INTERVAL '1' YEAR;", + kStmtSelect, SelectStatement, result, stmt); + + ASSERT_TRUE(result.isValid()); + ASSERT_NOTNULL(stmt->whereClause); + ASSERT_EQ(stmt->whereClause->opType, kOpEquals); + ASSERT_STREQ(stmt->whereClause->expr->name, "graduation_date"); + ASSERT_EQ(stmt->whereClause->expr2->type, kExprOperator); + ASSERT_EQ(stmt->whereClause->expr2->opType, kOpPlus); + ASSERT_EQ(stmt->whereClause->expr2->expr->type, kExprLiteralDate); + ASSERT_STREQ(stmt->whereClause->expr2->expr->name, "2025-04-04"); + ASSERT_EQ(stmt->whereClause->expr2->expr2->type, kExprLiteralInterval); + ASSERT_EQ(stmt->whereClause->expr2->expr2->ival, 1); + ASSERT_EQ(stmt->whereClause->expr2->expr2->datetimeField, kDatetimeYear); +} + +TEST(IntervalYearToMonthTest) { + TEST_PARSE_SINGLE_SQL("SELECT * FROM students WHERE graduation_date = DATE '2025-04-04' + INTERVAL '1' MONTH;", + kStmtSelect, SelectStatement, result, stmt); + + ASSERT_TRUE(result.isValid()); + ASSERT_NOTNULL(stmt->whereClause); + ASSERT_EQ(stmt->whereClause->opType, kOpEquals); + ASSERT_STREQ(stmt->whereClause->expr->name, "graduation_date"); + ASSERT_EQ(stmt->whereClause->expr2->type, kExprOperator); + ASSERT_EQ(stmt->whereClause->expr2->opType, kOpPlus); + ASSERT_EQ(stmt->whereClause->expr2->expr->type, kExprLiteralDate); + ASSERT_STREQ(stmt->whereClause->expr2->expr->name, "2025-04-04"); + ASSERT_EQ(stmt->whereClause->expr2->expr2->type, kExprLiteralInterval); + ASSERT_EQ(stmt->whereClause->expr2->expr2->ival, 1); + ASSERT_EQ(stmt->whereClause->expr2->expr2->datetimeField, kDatetimeMonth); +} + +TEST(IntervalDayToSecondTest) { + TEST_PARSE_SINGLE_SQL("SELECT * FROM students WHERE graduation_date = DATE '2025-04-04' + INTERVAL '45' SECOND;", + kStmtSelect, SelectStatement, result, stmt); + + ASSERT_TRUE(result.isValid()); + ASSERT_NOTNULL(stmt->whereClause); + ASSERT_EQ(stmt->whereClause->opType, kOpEquals); + ASSERT_STREQ(stmt->whereClause->expr->name, "graduation_date"); + ASSERT_EQ(stmt->whereClause->expr2->type, kExprOperator); + ASSERT_EQ(stmt->whereClause->expr2->opType, kOpPlus); + ASSERT_EQ(stmt->whereClause->expr2->expr->type, kExprLiteralDate); + ASSERT_STREQ(stmt->whereClause->expr2->expr->name, "2025-04-04"); + ASSERT_EQ(stmt->whereClause->expr2->expr2->type, kExprLiteralInterval); + ASSERT_EQ(stmt->whereClause->expr2->expr2->ival, 45); // seconds + ASSERT_EQ(stmt->whereClause->expr2->expr2->datetimeField, kDatetimeSecond); +} + +TEST(NegativeIntervalTest) { + TEST_PARSE_SINGLE_SQL("SELECT * FROM students WHERE graduation_date = DATE '2025-04-04' - INTERVAL '1' YEAR;", + kStmtSelect, SelectStatement, result, stmt); + + ASSERT_TRUE(result.isValid()); + ASSERT_NOTNULL(stmt->whereClause); + ASSERT_EQ(stmt->whereClause->opType, kOpEquals); + ASSERT_STREQ(stmt->whereClause->expr->name, "graduation_date"); + ASSERT_EQ(stmt->whereClause->expr2->type, kExprOperator); + ASSERT_EQ(stmt->whereClause->expr2->opType, kOpMinus); + ASSERT_EQ(stmt->whereClause->expr2->expr->type, kExprLiteralDate); + ASSERT_STREQ(stmt->whereClause->expr2->expr->name, "2025-04-04"); + ASSERT_EQ(stmt->whereClause->expr2->expr2->type, kExprLiteralInterval); + ASSERT_EQ(stmt->whereClause->expr2->expr2->ival, 1); + ASSERT_EQ(stmt->whereClause->expr2->expr2->datetimeField, kDatetimeYear); +} + +TEST(IntervalLiteralsInInsertTest) { + TEST_PARSE_SINGLE_SQL("INSERT INTO interval_table VALUES (INTERVAL '1 YEAR', INTERVAL '2 MONTHS', INTERVAL '1 DAY');", + kStmtInsert, InsertStatement, result, stmt); + + ASSERT_TRUE(result.isValid()); + ASSERT_EQ(stmt->values->size(), 3); + + // INTERVAL '1 YEAR' + ASSERT_EQ(stmt->values->at(0)->type, kExprLiteralInterval); + ASSERT_EQ(stmt->values->at(0)->ival, 1); + ASSERT_EQ(stmt->values->at(0)->datetimeField, kDatetimeYear); + + // INTERVAL '2 MONTHS' + ASSERT_EQ(stmt->values->at(1)->type, kExprLiteralInterval); + ASSERT_EQ(stmt->values->at(1)->ival, 2); + ASSERT_EQ(stmt->values->at(1)->datetimeField, kDatetimeMonth); + + // INTERVAL '1 DAY' + ASSERT_EQ(stmt->values->at(2)->type, kExprLiteralInterval); + ASSERT_EQ(stmt->values->at(2)->ival, 1); // days + ASSERT_EQ(stmt->values->at(2)->datetimeField, kDatetimeDay); +} + } // namespace hsql TEST_MAIN();