diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 1e6fcad9..a650db06 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.7.5. */ +/* A Bison parser, made by GNU Bison 3.8.1. */ /* Bison implementation for Yacc-like parsers in C @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -46,10 +46,10 @@ USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ -#define YYBISON 30705 +#define YYBISON 30801 /* Bison version string. */ -#define YYBISON_VERSION "3.7.5" +#define YYBISON_VERSION "3.8.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -160,263 +160,277 @@ enum yysymbol_kind_t YYSYMBOL_PREPARE = 26, /* PREPARE */ YYSYMBOL_PRIMARY = 27, /* PRIMARY */ YYSYMBOL_SCHEMAS = 28, /* SCHEMAS */ - YYSYMBOL_SPATIAL = 29, /* SPATIAL */ - YYSYMBOL_VARCHAR = 30, /* VARCHAR */ - YYSYMBOL_VIRTUAL = 31, /* VIRTUAL */ - YYSYMBOL_DESCRIBE = 32, /* DESCRIBE */ - YYSYMBOL_BEFORE = 33, /* BEFORE */ - YYSYMBOL_COLUMN = 34, /* COLUMN */ - YYSYMBOL_CREATE = 35, /* CREATE */ - YYSYMBOL_DELETE = 36, /* DELETE */ - YYSYMBOL_DIRECT = 37, /* DIRECT */ - YYSYMBOL_DOUBLE = 38, /* DOUBLE */ - YYSYMBOL_ESCAPE = 39, /* ESCAPE */ - YYSYMBOL_EXCEPT = 40, /* EXCEPT */ - YYSYMBOL_EXISTS = 41, /* EXISTS */ - YYSYMBOL_EXTRACT = 42, /* EXTRACT */ - YYSYMBOL_CAST = 43, /* CAST */ - YYSYMBOL_FORMAT = 44, /* FORMAT */ - YYSYMBOL_GLOBAL = 45, /* GLOBAL */ - YYSYMBOL_HAVING = 46, /* HAVING */ - YYSYMBOL_IMPORT = 47, /* IMPORT */ - YYSYMBOL_INSERT = 48, /* INSERT */ - YYSYMBOL_ISNULL = 49, /* ISNULL */ - YYSYMBOL_OFFSET = 50, /* OFFSET */ - YYSYMBOL_RENAME = 51, /* RENAME */ - YYSYMBOL_SCHEMA = 52, /* SCHEMA */ - YYSYMBOL_SELECT = 53, /* SELECT */ - YYSYMBOL_SORTED = 54, /* SORTED */ - YYSYMBOL_TABLES = 55, /* TABLES */ - YYSYMBOL_UNIQUE = 56, /* UNIQUE */ - YYSYMBOL_UNLOAD = 57, /* UNLOAD */ - YYSYMBOL_UPDATE = 58, /* UPDATE */ - YYSYMBOL_VALUES = 59, /* VALUES */ - YYSYMBOL_AFTER = 60, /* AFTER */ - YYSYMBOL_ALTER = 61, /* ALTER */ - YYSYMBOL_CROSS = 62, /* CROSS */ - YYSYMBOL_DELTA = 63, /* DELTA */ - YYSYMBOL_FLOAT = 64, /* FLOAT */ - YYSYMBOL_GROUP = 65, /* GROUP */ - YYSYMBOL_INDEX = 66, /* INDEX */ - YYSYMBOL_INNER = 67, /* INNER */ - YYSYMBOL_LIMIT = 68, /* LIMIT */ - YYSYMBOL_LOCAL = 69, /* LOCAL */ - YYSYMBOL_MERGE = 70, /* MERGE */ - YYSYMBOL_MINUS = 71, /* MINUS */ - YYSYMBOL_ORDER = 72, /* ORDER */ - YYSYMBOL_OUTER = 73, /* OUTER */ - YYSYMBOL_RIGHT = 74, /* RIGHT */ - YYSYMBOL_TABLE = 75, /* TABLE */ - YYSYMBOL_UNION = 76, /* UNION */ - YYSYMBOL_USING = 77, /* USING */ - YYSYMBOL_WHERE = 78, /* WHERE */ - YYSYMBOL_CALL = 79, /* CALL */ - YYSYMBOL_CASE = 80, /* CASE */ - YYSYMBOL_CHAR = 81, /* CHAR */ - YYSYMBOL_COPY = 82, /* COPY */ - YYSYMBOL_DATE = 83, /* DATE */ - YYSYMBOL_DATETIME = 84, /* DATETIME */ - YYSYMBOL_DESC = 85, /* DESC */ - YYSYMBOL_DROP = 86, /* DROP */ - YYSYMBOL_ELSE = 87, /* ELSE */ - YYSYMBOL_FILE = 88, /* FILE */ - YYSYMBOL_FROM = 89, /* FROM */ - YYSYMBOL_FULL = 90, /* FULL */ - YYSYMBOL_HASH = 91, /* HASH */ - YYSYMBOL_HINT = 92, /* HINT */ - YYSYMBOL_INTO = 93, /* INTO */ - YYSYMBOL_JOIN = 94, /* JOIN */ - YYSYMBOL_LEFT = 95, /* LEFT */ - YYSYMBOL_LIKE = 96, /* LIKE */ - YYSYMBOL_LOAD = 97, /* LOAD */ - YYSYMBOL_LONG = 98, /* LONG */ - YYSYMBOL_NULL = 99, /* NULL */ - YYSYMBOL_PLAN = 100, /* PLAN */ - YYSYMBOL_SHOW = 101, /* SHOW */ - YYSYMBOL_TEXT = 102, /* TEXT */ - YYSYMBOL_THEN = 103, /* THEN */ - YYSYMBOL_TIME = 104, /* TIME */ - YYSYMBOL_VIEW = 105, /* VIEW */ - YYSYMBOL_WHEN = 106, /* WHEN */ - YYSYMBOL_WITH = 107, /* WITH */ - YYSYMBOL_ADD = 108, /* ADD */ - YYSYMBOL_ALL = 109, /* ALL */ - YYSYMBOL_AND = 110, /* AND */ - YYSYMBOL_ASC = 111, /* ASC */ - YYSYMBOL_END = 112, /* END */ - YYSYMBOL_FOR = 113, /* FOR */ - YYSYMBOL_INT = 114, /* INT */ - YYSYMBOL_KEY = 115, /* KEY */ - YYSYMBOL_NOT = 116, /* NOT */ - YYSYMBOL_OFF = 117, /* OFF */ - YYSYMBOL_SET = 118, /* SET */ - YYSYMBOL_TOP = 119, /* TOP */ - YYSYMBOL_AS = 120, /* AS */ - YYSYMBOL_BY = 121, /* BY */ - YYSYMBOL_IF = 122, /* IF */ - YYSYMBOL_IN = 123, /* IN */ - YYSYMBOL_IS = 124, /* IS */ - YYSYMBOL_OF = 125, /* OF */ - YYSYMBOL_ON = 126, /* ON */ - YYSYMBOL_OR = 127, /* OR */ - YYSYMBOL_TO = 128, /* TO */ - YYSYMBOL_ARRAY = 129, /* ARRAY */ - YYSYMBOL_CONCAT = 130, /* CONCAT */ - YYSYMBOL_ILIKE = 131, /* ILIKE */ - YYSYMBOL_SECOND = 132, /* SECOND */ - YYSYMBOL_MINUTE = 133, /* MINUTE */ - YYSYMBOL_HOUR = 134, /* HOUR */ - YYSYMBOL_DAY = 135, /* DAY */ - YYSYMBOL_MONTH = 136, /* MONTH */ - YYSYMBOL_YEAR = 137, /* YEAR */ - YYSYMBOL_SECONDS = 138, /* SECONDS */ - YYSYMBOL_MINUTES = 139, /* MINUTES */ - YYSYMBOL_HOURS = 140, /* HOURS */ - YYSYMBOL_DAYS = 141, /* DAYS */ - YYSYMBOL_MONTHS = 142, /* MONTHS */ - YYSYMBOL_YEARS = 143, /* YEARS */ - YYSYMBOL_INTERVAL = 144, /* INTERVAL */ - YYSYMBOL_TRUE = 145, /* TRUE */ - YYSYMBOL_FALSE = 146, /* FALSE */ - YYSYMBOL_TRANSACTION = 147, /* TRANSACTION */ - YYSYMBOL_BEGIN = 148, /* BEGIN */ - YYSYMBOL_COMMIT = 149, /* COMMIT */ - YYSYMBOL_ROLLBACK = 150, /* ROLLBACK */ - YYSYMBOL_151_ = 151, /* '=' */ - YYSYMBOL_EQUALS = 152, /* EQUALS */ - YYSYMBOL_NOTEQUALS = 153, /* NOTEQUALS */ - YYSYMBOL_154_ = 154, /* '<' */ - YYSYMBOL_155_ = 155, /* '>' */ - YYSYMBOL_LESS = 156, /* LESS */ - YYSYMBOL_GREATER = 157, /* GREATER */ - YYSYMBOL_LESSEQ = 158, /* LESSEQ */ - YYSYMBOL_GREATEREQ = 159, /* GREATEREQ */ - YYSYMBOL_NOTNULL = 160, /* NOTNULL */ - YYSYMBOL_161_ = 161, /* '+' */ - YYSYMBOL_162_ = 162, /* '-' */ - YYSYMBOL_163_ = 163, /* '*' */ - YYSYMBOL_164_ = 164, /* '/' */ - YYSYMBOL_165_ = 165, /* '%' */ - YYSYMBOL_166_ = 166, /* '^' */ - YYSYMBOL_UMINUS = 167, /* UMINUS */ - YYSYMBOL_168_ = 168, /* '[' */ - YYSYMBOL_169_ = 169, /* ']' */ - YYSYMBOL_170_ = 170, /* '(' */ - YYSYMBOL_171_ = 171, /* ')' */ - YYSYMBOL_172_ = 172, /* '.' */ - YYSYMBOL_173_ = 173, /* ';' */ - YYSYMBOL_174_ = 174, /* ',' */ - YYSYMBOL_175_ = 175, /* '?' */ - YYSYMBOL_YYACCEPT = 176, /* $accept */ - YYSYMBOL_input = 177, /* input */ - YYSYMBOL_statement_list = 178, /* statement_list */ - YYSYMBOL_statement = 179, /* statement */ - YYSYMBOL_preparable_statement = 180, /* preparable_statement */ - YYSYMBOL_opt_hints = 181, /* opt_hints */ - YYSYMBOL_hint_list = 182, /* hint_list */ - YYSYMBOL_hint = 183, /* hint */ - YYSYMBOL_transaction_statement = 184, /* transaction_statement */ - YYSYMBOL_opt_transaction_keyword = 185, /* opt_transaction_keyword */ - YYSYMBOL_prepare_statement = 186, /* prepare_statement */ - YYSYMBOL_prepare_target_query = 187, /* prepare_target_query */ - YYSYMBOL_execute_statement = 188, /* execute_statement */ - YYSYMBOL_import_statement = 189, /* import_statement */ - YYSYMBOL_file_type = 190, /* file_type */ - YYSYMBOL_file_path = 191, /* file_path */ - YYSYMBOL_opt_file_type = 192, /* opt_file_type */ - YYSYMBOL_export_statement = 193, /* export_statement */ - YYSYMBOL_show_statement = 194, /* show_statement */ - YYSYMBOL_create_statement = 195, /* create_statement */ - YYSYMBOL_opt_not_exists = 196, /* opt_not_exists */ - YYSYMBOL_column_def_commalist = 197, /* column_def_commalist */ - YYSYMBOL_column_def = 198, /* column_def */ - YYSYMBOL_column_type = 199, /* column_type */ - YYSYMBOL_opt_column_nullable = 200, /* opt_column_nullable */ - YYSYMBOL_drop_statement = 201, /* drop_statement */ - YYSYMBOL_opt_exists = 202, /* opt_exists */ - YYSYMBOL_delete_statement = 203, /* delete_statement */ - YYSYMBOL_truncate_statement = 204, /* truncate_statement */ - YYSYMBOL_insert_statement = 205, /* insert_statement */ - YYSYMBOL_opt_column_list = 206, /* opt_column_list */ - YYSYMBOL_update_statement = 207, /* update_statement */ - YYSYMBOL_update_clause_commalist = 208, /* update_clause_commalist */ - YYSYMBOL_update_clause = 209, /* update_clause */ - YYSYMBOL_select_statement = 210, /* select_statement */ - YYSYMBOL_select_within_set_operation = 211, /* select_within_set_operation */ - YYSYMBOL_select_within_set_operation_no_parentheses = 212, /* select_within_set_operation_no_parentheses */ - YYSYMBOL_select_with_paren = 213, /* select_with_paren */ - YYSYMBOL_select_no_paren = 214, /* select_no_paren */ - YYSYMBOL_set_operator = 215, /* set_operator */ - YYSYMBOL_set_type = 216, /* set_type */ - YYSYMBOL_opt_all = 217, /* opt_all */ - YYSYMBOL_select_clause = 218, /* select_clause */ - YYSYMBOL_opt_distinct = 219, /* opt_distinct */ - YYSYMBOL_select_list = 220, /* select_list */ - YYSYMBOL_opt_from_clause = 221, /* opt_from_clause */ - YYSYMBOL_from_clause = 222, /* from_clause */ - YYSYMBOL_opt_where = 223, /* opt_where */ - YYSYMBOL_opt_group = 224, /* opt_group */ - YYSYMBOL_opt_having = 225, /* opt_having */ - YYSYMBOL_opt_order = 226, /* opt_order */ - YYSYMBOL_order_list = 227, /* order_list */ - YYSYMBOL_order_desc = 228, /* order_desc */ - YYSYMBOL_opt_order_type = 229, /* opt_order_type */ - YYSYMBOL_opt_top = 230, /* opt_top */ - YYSYMBOL_opt_limit = 231, /* opt_limit */ - YYSYMBOL_expr_list = 232, /* expr_list */ - YYSYMBOL_opt_literal_list = 233, /* opt_literal_list */ - YYSYMBOL_literal_list = 234, /* literal_list */ - YYSYMBOL_expr_alias = 235, /* expr_alias */ - YYSYMBOL_expr = 236, /* expr */ - YYSYMBOL_operand = 237, /* operand */ - YYSYMBOL_scalar_expr = 238, /* scalar_expr */ - YYSYMBOL_unary_expr = 239, /* unary_expr */ - YYSYMBOL_binary_expr = 240, /* binary_expr */ - YYSYMBOL_logic_expr = 241, /* logic_expr */ - YYSYMBOL_in_expr = 242, /* in_expr */ - YYSYMBOL_case_expr = 243, /* case_expr */ - YYSYMBOL_case_list = 244, /* case_list */ - YYSYMBOL_exists_expr = 245, /* exists_expr */ - YYSYMBOL_comp_expr = 246, /* comp_expr */ - YYSYMBOL_function_expr = 247, /* function_expr */ - YYSYMBOL_extract_expr = 248, /* extract_expr */ - YYSYMBOL_cast_expr = 249, /* cast_expr */ - YYSYMBOL_datetime_field = 250, /* datetime_field */ - YYSYMBOL_datetime_field_plural = 251, /* datetime_field_plural */ - YYSYMBOL_duration_field = 252, /* duration_field */ - YYSYMBOL_array_expr = 253, /* array_expr */ - YYSYMBOL_array_index = 254, /* array_index */ - YYSYMBOL_between_expr = 255, /* between_expr */ - YYSYMBOL_column_name = 256, /* column_name */ - YYSYMBOL_literal = 257, /* literal */ - YYSYMBOL_string_literal = 258, /* string_literal */ - YYSYMBOL_bool_literal = 259, /* bool_literal */ - YYSYMBOL_num_literal = 260, /* num_literal */ - YYSYMBOL_int_literal = 261, /* int_literal */ - YYSYMBOL_null_literal = 262, /* null_literal */ - YYSYMBOL_date_literal = 263, /* date_literal */ - YYSYMBOL_interval_literal = 264, /* interval_literal */ - YYSYMBOL_param_expr = 265, /* param_expr */ - YYSYMBOL_table_ref = 266, /* table_ref */ - YYSYMBOL_table_ref_atomic = 267, /* table_ref_atomic */ - YYSYMBOL_nonjoin_table_ref_atomic = 268, /* nonjoin_table_ref_atomic */ - YYSYMBOL_table_ref_commalist = 269, /* table_ref_commalist */ - YYSYMBOL_table_ref_name = 270, /* table_ref_name */ - YYSYMBOL_table_ref_name_no_alias = 271, /* table_ref_name_no_alias */ - YYSYMBOL_table_name = 272, /* table_name */ - YYSYMBOL_table_alias = 273, /* table_alias */ - YYSYMBOL_opt_table_alias = 274, /* opt_table_alias */ - YYSYMBOL_alias = 275, /* alias */ - YYSYMBOL_opt_alias = 276, /* opt_alias */ - YYSYMBOL_opt_with_clause = 277, /* opt_with_clause */ - YYSYMBOL_with_clause = 278, /* with_clause */ - YYSYMBOL_with_description_list = 279, /* with_description_list */ - YYSYMBOL_with_description = 280, /* with_description */ - YYSYMBOL_join_clause = 281, /* join_clause */ - YYSYMBOL_opt_join_type = 282, /* opt_join_type */ - YYSYMBOL_join_condition = 283, /* join_condition */ - YYSYMBOL_opt_semicolon = 284, /* opt_semicolon */ - YYSYMBOL_ident_commalist = 285 /* ident_commalist */ + YYSYMBOL_CHARACTER = 29, /* CHARACTER */ + YYSYMBOL_VARYING = 30, /* VARYING */ + YYSYMBOL_REAL = 31, /* REAL */ + YYSYMBOL_DECIMAL = 32, /* DECIMAL */ + YYSYMBOL_SPATIAL = 33, /* SPATIAL */ + YYSYMBOL_VARCHAR = 34, /* VARCHAR */ + YYSYMBOL_VIRTUAL = 35, /* VIRTUAL */ + YYSYMBOL_DESCRIBE = 36, /* DESCRIBE */ + YYSYMBOL_BEFORE = 37, /* BEFORE */ + YYSYMBOL_COLUMN = 38, /* COLUMN */ + YYSYMBOL_CREATE = 39, /* CREATE */ + YYSYMBOL_DELETE = 40, /* DELETE */ + YYSYMBOL_DIRECT = 41, /* DIRECT */ + YYSYMBOL_DOUBLE = 42, /* DOUBLE */ + YYSYMBOL_ESCAPE = 43, /* ESCAPE */ + YYSYMBOL_EXCEPT = 44, /* EXCEPT */ + YYSYMBOL_EXISTS = 45, /* EXISTS */ + YYSYMBOL_EXTRACT = 46, /* EXTRACT */ + YYSYMBOL_CAST = 47, /* CAST */ + YYSYMBOL_FORMAT = 48, /* FORMAT */ + YYSYMBOL_GLOBAL = 49, /* GLOBAL */ + YYSYMBOL_HAVING = 50, /* HAVING */ + YYSYMBOL_IMPORT = 51, /* IMPORT */ + YYSYMBOL_INSERT = 52, /* INSERT */ + YYSYMBOL_ISNULL = 53, /* ISNULL */ + YYSYMBOL_OFFSET = 54, /* OFFSET */ + YYSYMBOL_RENAME = 55, /* RENAME */ + YYSYMBOL_SCHEMA = 56, /* SCHEMA */ + YYSYMBOL_SELECT = 57, /* SELECT */ + YYSYMBOL_SORTED = 58, /* SORTED */ + YYSYMBOL_TABLES = 59, /* TABLES */ + YYSYMBOL_UNIQUE = 60, /* UNIQUE */ + YYSYMBOL_UNLOAD = 61, /* UNLOAD */ + YYSYMBOL_UPDATE = 62, /* UPDATE */ + YYSYMBOL_VALUES = 63, /* VALUES */ + YYSYMBOL_AFTER = 64, /* AFTER */ + YYSYMBOL_ALTER = 65, /* ALTER */ + YYSYMBOL_CROSS = 66, /* CROSS */ + YYSYMBOL_DELTA = 67, /* DELTA */ + YYSYMBOL_FLOAT = 68, /* FLOAT */ + YYSYMBOL_GROUP = 69, /* GROUP */ + YYSYMBOL_INDEX = 70, /* INDEX */ + YYSYMBOL_INNER = 71, /* INNER */ + YYSYMBOL_LIMIT = 72, /* LIMIT */ + YYSYMBOL_LOCAL = 73, /* LOCAL */ + YYSYMBOL_MERGE = 74, /* MERGE */ + YYSYMBOL_MINUS = 75, /* MINUS */ + YYSYMBOL_ORDER = 76, /* ORDER */ + YYSYMBOL_OUTER = 77, /* OUTER */ + YYSYMBOL_RIGHT = 78, /* RIGHT */ + YYSYMBOL_TABLE = 79, /* TABLE */ + YYSYMBOL_UNION = 80, /* UNION */ + YYSYMBOL_USING = 81, /* USING */ + YYSYMBOL_WHERE = 82, /* WHERE */ + YYSYMBOL_CALL = 83, /* CALL */ + YYSYMBOL_CASE = 84, /* CASE */ + YYSYMBOL_CHAR = 85, /* CHAR */ + YYSYMBOL_COPY = 86, /* COPY */ + YYSYMBOL_DATE = 87, /* DATE */ + YYSYMBOL_DATETIME = 88, /* DATETIME */ + YYSYMBOL_DESC = 89, /* DESC */ + YYSYMBOL_DROP = 90, /* DROP */ + YYSYMBOL_ELSE = 91, /* ELSE */ + YYSYMBOL_FILE = 92, /* FILE */ + YYSYMBOL_FROM = 93, /* FROM */ + YYSYMBOL_FULL = 94, /* FULL */ + YYSYMBOL_HASH = 95, /* HASH */ + YYSYMBOL_HINT = 96, /* HINT */ + YYSYMBOL_INTO = 97, /* INTO */ + YYSYMBOL_JOIN = 98, /* JOIN */ + YYSYMBOL_LEFT = 99, /* LEFT */ + YYSYMBOL_LIKE = 100, /* LIKE */ + YYSYMBOL_LOAD = 101, /* LOAD */ + YYSYMBOL_LONG = 102, /* LONG */ + YYSYMBOL_NULL = 103, /* NULL */ + YYSYMBOL_PLAN = 104, /* PLAN */ + YYSYMBOL_SHOW = 105, /* SHOW */ + YYSYMBOL_TEXT = 106, /* TEXT */ + YYSYMBOL_THEN = 107, /* THEN */ + YYSYMBOL_TIME = 108, /* TIME */ + YYSYMBOL_VIEW = 109, /* VIEW */ + YYSYMBOL_WHEN = 110, /* WHEN */ + YYSYMBOL_WITH = 111, /* WITH */ + YYSYMBOL_ADD = 112, /* ADD */ + YYSYMBOL_ALL = 113, /* ALL */ + YYSYMBOL_AND = 114, /* AND */ + YYSYMBOL_ASC = 115, /* ASC */ + YYSYMBOL_END = 116, /* END */ + YYSYMBOL_FOR = 117, /* FOR */ + YYSYMBOL_INT = 118, /* INT */ + YYSYMBOL_KEY = 119, /* KEY */ + YYSYMBOL_NOT = 120, /* NOT */ + YYSYMBOL_OFF = 121, /* OFF */ + YYSYMBOL_SET = 122, /* SET */ + YYSYMBOL_TOP = 123, /* TOP */ + YYSYMBOL_AS = 124, /* AS */ + YYSYMBOL_BY = 125, /* BY */ + YYSYMBOL_IF = 126, /* IF */ + YYSYMBOL_IN = 127, /* IN */ + YYSYMBOL_IS = 128, /* IS */ + YYSYMBOL_OF = 129, /* OF */ + YYSYMBOL_ON = 130, /* ON */ + YYSYMBOL_OR = 131, /* OR */ + YYSYMBOL_TO = 132, /* TO */ + YYSYMBOL_ARRAY = 133, /* ARRAY */ + YYSYMBOL_CONCAT = 134, /* CONCAT */ + YYSYMBOL_ILIKE = 135, /* ILIKE */ + YYSYMBOL_SECOND = 136, /* SECOND */ + YYSYMBOL_MINUTE = 137, /* MINUTE */ + YYSYMBOL_HOUR = 138, /* HOUR */ + YYSYMBOL_DAY = 139, /* DAY */ + YYSYMBOL_MONTH = 140, /* MONTH */ + YYSYMBOL_YEAR = 141, /* YEAR */ + YYSYMBOL_SECONDS = 142, /* SECONDS */ + YYSYMBOL_MINUTES = 143, /* MINUTES */ + YYSYMBOL_HOURS = 144, /* HOURS */ + YYSYMBOL_DAYS = 145, /* DAYS */ + YYSYMBOL_MONTHS = 146, /* MONTHS */ + YYSYMBOL_YEARS = 147, /* YEARS */ + YYSYMBOL_INTERVAL = 148, /* INTERVAL */ + YYSYMBOL_TRUE = 149, /* TRUE */ + YYSYMBOL_FALSE = 150, /* FALSE */ + YYSYMBOL_TRANSACTION = 151, /* TRANSACTION */ + YYSYMBOL_BEGIN = 152, /* BEGIN */ + YYSYMBOL_COMMIT = 153, /* COMMIT */ + YYSYMBOL_ROLLBACK = 154, /* ROLLBACK */ + YYSYMBOL_155_ = 155, /* '=' */ + YYSYMBOL_EQUALS = 156, /* EQUALS */ + YYSYMBOL_NOTEQUALS = 157, /* NOTEQUALS */ + YYSYMBOL_158_ = 158, /* '<' */ + YYSYMBOL_159_ = 159, /* '>' */ + YYSYMBOL_LESS = 160, /* LESS */ + YYSYMBOL_GREATER = 161, /* GREATER */ + YYSYMBOL_LESSEQ = 162, /* LESSEQ */ + YYSYMBOL_GREATEREQ = 163, /* GREATEREQ */ + YYSYMBOL_NOTNULL = 164, /* NOTNULL */ + YYSYMBOL_165_ = 165, /* '+' */ + YYSYMBOL_166_ = 166, /* '-' */ + YYSYMBOL_167_ = 167, /* '*' */ + YYSYMBOL_168_ = 168, /* '/' */ + YYSYMBOL_169_ = 169, /* '%' */ + YYSYMBOL_170_ = 170, /* '^' */ + YYSYMBOL_UMINUS = 171, /* UMINUS */ + YYSYMBOL_172_ = 172, /* '[' */ + YYSYMBOL_173_ = 173, /* ']' */ + YYSYMBOL_174_ = 174, /* '(' */ + YYSYMBOL_175_ = 175, /* ')' */ + YYSYMBOL_176_ = 176, /* '.' */ + YYSYMBOL_177_ = 177, /* ';' */ + YYSYMBOL_178_ = 178, /* ',' */ + YYSYMBOL_179_ = 179, /* '?' */ + YYSYMBOL_YYACCEPT = 180, /* $accept */ + YYSYMBOL_input = 181, /* input */ + YYSYMBOL_statement_list = 182, /* statement_list */ + YYSYMBOL_statement = 183, /* statement */ + YYSYMBOL_preparable_statement = 184, /* preparable_statement */ + YYSYMBOL_opt_hints = 185, /* opt_hints */ + YYSYMBOL_hint_list = 186, /* hint_list */ + YYSYMBOL_hint = 187, /* hint */ + YYSYMBOL_transaction_statement = 188, /* transaction_statement */ + YYSYMBOL_opt_transaction_keyword = 189, /* opt_transaction_keyword */ + YYSYMBOL_prepare_statement = 190, /* prepare_statement */ + YYSYMBOL_prepare_target_query = 191, /* prepare_target_query */ + YYSYMBOL_execute_statement = 192, /* execute_statement */ + YYSYMBOL_import_statement = 193, /* import_statement */ + YYSYMBOL_file_type = 194, /* file_type */ + YYSYMBOL_file_path = 195, /* file_path */ + YYSYMBOL_opt_file_type = 196, /* opt_file_type */ + YYSYMBOL_export_statement = 197, /* export_statement */ + YYSYMBOL_show_statement = 198, /* show_statement */ + YYSYMBOL_create_statement = 199, /* create_statement */ + YYSYMBOL_opt_not_exists = 200, /* opt_not_exists */ + YYSYMBOL_table_elem_commalist = 201, /* table_elem_commalist */ + YYSYMBOL_table_elem = 202, /* table_elem */ + YYSYMBOL_column_def = 203, /* column_def */ + YYSYMBOL_column_type = 204, /* column_type */ + YYSYMBOL_opt_time_specification = 205, /* opt_time_specification */ + YYSYMBOL_opt_decimal_specification = 206, /* opt_decimal_specification */ + YYSYMBOL_opt_column_constraints = 207, /* opt_column_constraints */ + YYSYMBOL_column_constraint_list = 208, /* column_constraint_list */ + YYSYMBOL_column_constraint = 209, /* column_constraint */ + YYSYMBOL_table_constraint = 210, /* table_constraint */ + YYSYMBOL_drop_statement = 211, /* drop_statement */ + YYSYMBOL_opt_exists = 212, /* opt_exists */ + YYSYMBOL_alter_statement = 213, /* alter_statement */ + YYSYMBOL_alter_action = 214, /* alter_action */ + YYSYMBOL_drop_action = 215, /* drop_action */ + YYSYMBOL_delete_statement = 216, /* delete_statement */ + YYSYMBOL_truncate_statement = 217, /* truncate_statement */ + YYSYMBOL_insert_statement = 218, /* insert_statement */ + YYSYMBOL_opt_column_list = 219, /* opt_column_list */ + YYSYMBOL_update_statement = 220, /* update_statement */ + YYSYMBOL_update_clause_commalist = 221, /* update_clause_commalist */ + YYSYMBOL_update_clause = 222, /* update_clause */ + YYSYMBOL_select_statement = 223, /* select_statement */ + YYSYMBOL_select_within_set_operation = 224, /* select_within_set_operation */ + YYSYMBOL_select_within_set_operation_no_parentheses = 225, /* select_within_set_operation_no_parentheses */ + YYSYMBOL_select_with_paren = 226, /* select_with_paren */ + YYSYMBOL_select_no_paren = 227, /* select_no_paren */ + YYSYMBOL_set_operator = 228, /* set_operator */ + YYSYMBOL_set_type = 229, /* set_type */ + YYSYMBOL_opt_all = 230, /* opt_all */ + YYSYMBOL_select_clause = 231, /* select_clause */ + YYSYMBOL_opt_distinct = 232, /* opt_distinct */ + YYSYMBOL_select_list = 233, /* select_list */ + YYSYMBOL_opt_from_clause = 234, /* opt_from_clause */ + YYSYMBOL_from_clause = 235, /* from_clause */ + YYSYMBOL_opt_where = 236, /* opt_where */ + YYSYMBOL_opt_group = 237, /* opt_group */ + YYSYMBOL_opt_having = 238, /* opt_having */ + YYSYMBOL_opt_order = 239, /* opt_order */ + YYSYMBOL_order_list = 240, /* order_list */ + YYSYMBOL_order_desc = 241, /* order_desc */ + YYSYMBOL_opt_order_type = 242, /* opt_order_type */ + YYSYMBOL_opt_top = 243, /* opt_top */ + YYSYMBOL_opt_limit = 244, /* opt_limit */ + YYSYMBOL_expr_list = 245, /* expr_list */ + YYSYMBOL_opt_literal_list = 246, /* opt_literal_list */ + YYSYMBOL_literal_list = 247, /* literal_list */ + YYSYMBOL_expr_alias = 248, /* expr_alias */ + YYSYMBOL_expr = 249, /* expr */ + YYSYMBOL_operand = 250, /* operand */ + YYSYMBOL_scalar_expr = 251, /* scalar_expr */ + YYSYMBOL_unary_expr = 252, /* unary_expr */ + YYSYMBOL_binary_expr = 253, /* binary_expr */ + YYSYMBOL_logic_expr = 254, /* logic_expr */ + YYSYMBOL_in_expr = 255, /* in_expr */ + YYSYMBOL_case_expr = 256, /* case_expr */ + YYSYMBOL_case_list = 257, /* case_list */ + YYSYMBOL_exists_expr = 258, /* exists_expr */ + YYSYMBOL_comp_expr = 259, /* comp_expr */ + YYSYMBOL_function_expr = 260, /* function_expr */ + YYSYMBOL_extract_expr = 261, /* extract_expr */ + YYSYMBOL_cast_expr = 262, /* cast_expr */ + YYSYMBOL_datetime_field = 263, /* datetime_field */ + YYSYMBOL_datetime_field_plural = 264, /* datetime_field_plural */ + YYSYMBOL_duration_field = 265, /* duration_field */ + YYSYMBOL_array_expr = 266, /* array_expr */ + YYSYMBOL_array_index = 267, /* array_index */ + YYSYMBOL_between_expr = 268, /* between_expr */ + YYSYMBOL_column_name = 269, /* column_name */ + YYSYMBOL_literal = 270, /* literal */ + YYSYMBOL_string_literal = 271, /* string_literal */ + YYSYMBOL_bool_literal = 272, /* bool_literal */ + YYSYMBOL_num_literal = 273, /* num_literal */ + YYSYMBOL_int_literal = 274, /* int_literal */ + YYSYMBOL_null_literal = 275, /* null_literal */ + YYSYMBOL_date_literal = 276, /* date_literal */ + YYSYMBOL_interval_literal = 277, /* interval_literal */ + YYSYMBOL_param_expr = 278, /* param_expr */ + YYSYMBOL_table_ref = 279, /* table_ref */ + YYSYMBOL_table_ref_atomic = 280, /* table_ref_atomic */ + YYSYMBOL_nonjoin_table_ref_atomic = 281, /* nonjoin_table_ref_atomic */ + YYSYMBOL_table_ref_commalist = 282, /* table_ref_commalist */ + YYSYMBOL_table_ref_name = 283, /* table_ref_name */ + YYSYMBOL_table_ref_name_no_alias = 284, /* table_ref_name_no_alias */ + YYSYMBOL_table_name = 285, /* table_name */ + YYSYMBOL_opt_index_name = 286, /* opt_index_name */ + YYSYMBOL_table_alias = 287, /* table_alias */ + YYSYMBOL_opt_table_alias = 288, /* opt_table_alias */ + YYSYMBOL_alias = 289, /* alias */ + YYSYMBOL_opt_alias = 290, /* opt_alias */ + YYSYMBOL_opt_with_clause = 291, /* opt_with_clause */ + YYSYMBOL_with_clause = 292, /* with_clause */ + YYSYMBOL_with_description_list = 293, /* with_description_list */ + YYSYMBOL_with_description = 294, /* with_description */ + YYSYMBOL_join_clause = 295, /* join_clause */ + YYSYMBOL_opt_join_type = 296, /* opt_join_type */ + YYSYMBOL_join_condition = 297, /* join_condition */ + YYSYMBOL_opt_semicolon = 298, /* opt_semicolon */ + YYSYMBOL_ident_commalist = 299 /* ident_commalist */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -574,12 +588,18 @@ typedef int yy_state_fast_t; # define YY_USE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else @@ -739,21 +759,21 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 62 +#define YYFINAL 67 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 778 +#define YYLAST 886 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 176 +#define YYNTOKENS 180 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 110 +#define YYNNTS 120 /* YYNRULES -- Number of rules. */ -#define YYNRULES 276 +#define YYNRULES 302 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 490 +#define YYNSTATES 549 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 413 +#define YYMAXUTOK 417 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -770,13 +790,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, 165, 2, 2, - 170, 171, 163, 161, 174, 162, 172, 164, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 173, - 154, 151, 155, 175, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 169, 2, 2, + 174, 175, 167, 165, 178, 166, 176, 168, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 177, + 158, 155, 159, 179, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 168, 2, 169, 166, 2, 2, 2, 2, 2, + 2, 172, 2, 173, 170, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -807,42 +827,45 @@ static const yytype_uint8 yytranslate[] = 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 152, 153, 156, 157, - 158, 159, 160, 167 + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 156, 157, 160, 161, 162, 163, 164, 171 }; #if HSQL_DEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 270, 270, 291, 297, 306, 310, 314, 317, 320, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 344, - 345, 350, 351, 355, 359, 371, 374, 377, 383, 384, - 391, 398, 401, 405, 419, 425, 434, 451, 455, 458, - 467, 481, 484, 489, 503, 516, 523, 530, 541, 542, - 546, 547, 551, 557, 558, 559, 560, 561, 562, 563, - 564, 565, 566, 570, 571, 572, 582, 588, 594, 602, - 603, 612, 621, 634, 641, 652, 653, 663, 672, 673, - 677, 689, 693, 697, 711, 712, 715, 716, 727, 728, - 732, 742, 755, 762, 766, 770, 777, 780, 786, 798, - 799, 803, 807, 808, 812, 817, 818, 822, 827, 831, - 832, 836, 837, 841, 842, 846, 850, 851, 852, 858, - 859, 863, 864, 865, 866, 867, 868, 875, 876, 880, - 881, 885, 886, 890, 900, 901, 902, 903, 904, 908, - 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, - 922, 923, 927, 928, 929, 930, 931, 935, 936, 937, - 938, 939, 940, 941, 942, 943, 944, 945, 949, 950, - 954, 955, 956, 957, 963, 964, 965, 966, 970, 971, - 975, 976, 980, 981, 982, 983, 984, 985, 986, 990, - 991, 995, 999, 1003, 1004, 1005, 1006, 1007, 1008, 1012, - 1013, 1014, 1015, 1016, 1017, 1021, 1022, 1026, 1030, 1034, - 1038, 1039, 1040, 1041, 1045, 1046, 1047, 1048, 1049, 1050, - 1051, 1055, 1059, 1060, 1064, 1065, 1069, 1073, 1077, 1090, - 1091, 1102, 1136, 1148, 1149, 1159, 1160, 1164, 1165, 1174, - 1175, 1180, 1191, 1200, 1201, 1206, 1207, 1212, 1213, 1218, - 1219, 1224, 1225, 1234, 1235, 1239, 1243, 1247, 1254, 1267, - 1275, 1285, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, - 1312, 1313, 1318, 1327, 1328, 1333, 1334 + 0, 290, 290, 311, 317, 326, 330, 334, 337, 340, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 365, 366, 371, 372, 376, 380, 392, 395, 398, 404, + 405, 412, 419, 422, 426, 440, 446, 455, 472, 476, + 479, 488, 502, 505, 510, 524, 537, 545, 552, 559, + 570, 571, 575, 576, 580, 581, 585, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, + 605, 609, 610, 614, 615, 616, 620, 621, 625, 626, + 629, 630, 631, 632, 636, 637, 648, 654, 660, 666, + 674, 675, 684, 692, 695, 707, 716, 729, 736, 747, + 748, 758, 767, 768, 772, 784, 788, 792, 806, 807, + 810, 811, 822, 823, 827, 837, 850, 857, 861, 865, + 872, 875, 881, 893, 894, 898, 902, 903, 907, 912, + 913, 917, 922, 926, 927, 931, 932, 936, 937, 941, + 945, 946, 947, 953, 954, 958, 959, 960, 961, 962, + 963, 970, 971, 975, 976, 980, 981, 985, 995, 996, + 997, 998, 999, 1003, 1004, 1005, 1006, 1007, 1008, 1009, + 1010, 1011, 1012, 1013, 1017, 1018, 1022, 1023, 1024, 1025, + 1026, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, + 1039, 1040, 1044, 1045, 1049, 1050, 1051, 1052, 1058, 1059, + 1060, 1061, 1065, 1066, 1070, 1071, 1075, 1076, 1077, 1078, + 1079, 1080, 1081, 1085, 1086, 1090, 1094, 1098, 1099, 1100, + 1101, 1102, 1103, 1107, 1108, 1109, 1110, 1111, 1112, 1116, + 1117, 1121, 1125, 1129, 1133, 1134, 1135, 1136, 1140, 1141, + 1142, 1143, 1144, 1145, 1146, 1150, 1154, 1155, 1159, 1160, + 1164, 1168, 1172, 1185, 1186, 1197, 1231, 1243, 1244, 1254, + 1255, 1259, 1260, 1269, 1270, 1275, 1286, 1295, 1296, 1300, + 1301, 1305, 1306, 1311, 1312, 1317, 1318, 1323, 1324, 1333, + 1334, 1338, 1342, 1346, 1353, 1366, 1374, 1384, 1403, 1404, + 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1417, 1426, + 1427, 1432, 1433 }; #endif @@ -863,22 +886,23 @@ static const char *const yytname[] = "TEMPORARY", "TIMESTAMP", "DISTINCT", "NVARCHAR", "RESTRICT", "TRUNCATE", "ANALYZE", "BETWEEN", "CASCADE", "COLUMNS", "CONTROL", "DEFAULT", "EXECUTE", "EXPLAIN", "INTEGER", "NATURAL", "PREPARE", "PRIMARY", - "SCHEMAS", "SPATIAL", "VARCHAR", "VIRTUAL", "DESCRIBE", "BEFORE", - "COLUMN", "CREATE", "DELETE", "DIRECT", "DOUBLE", "ESCAPE", "EXCEPT", - "EXISTS", "EXTRACT", "CAST", "FORMAT", "GLOBAL", "HAVING", "IMPORT", - "INSERT", "ISNULL", "OFFSET", "RENAME", "SCHEMA", "SELECT", "SORTED", - "TABLES", "UNIQUE", "UNLOAD", "UPDATE", "VALUES", "AFTER", "ALTER", - "CROSS", "DELTA", "FLOAT", "GROUP", "INDEX", "INNER", "LIMIT", "LOCAL", - "MERGE", "MINUS", "ORDER", "OUTER", "RIGHT", "TABLE", "UNION", "USING", - "WHERE", "CALL", "CASE", "CHAR", "COPY", "DATE", "DATETIME", "DESC", - "DROP", "ELSE", "FILE", "FROM", "FULL", "HASH", "HINT", "INTO", "JOIN", - "LEFT", "LIKE", "LOAD", "LONG", "NULL", "PLAN", "SHOW", "TEXT", "THEN", - "TIME", "VIEW", "WHEN", "WITH", "ADD", "ALL", "AND", "ASC", "END", "FOR", - "INT", "KEY", "NOT", "OFF", "SET", "TOP", "AS", "BY", "IF", "IN", "IS", - "OF", "ON", "OR", "TO", "ARRAY", "CONCAT", "ILIKE", "SECOND", "MINUTE", - "HOUR", "DAY", "MONTH", "YEAR", "SECONDS", "MINUTES", "HOURS", "DAYS", - "MONTHS", "YEARS", "INTERVAL", "TRUE", "FALSE", "TRANSACTION", "BEGIN", - "COMMIT", "ROLLBACK", "'='", "EQUALS", "NOTEQUALS", "'<'", "'>'", "LESS", + "SCHEMAS", "CHARACTER", "VARYING", "REAL", "DECIMAL", "SPATIAL", + "VARCHAR", "VIRTUAL", "DESCRIBE", "BEFORE", "COLUMN", "CREATE", "DELETE", + "DIRECT", "DOUBLE", "ESCAPE", "EXCEPT", "EXISTS", "EXTRACT", "CAST", + "FORMAT", "GLOBAL", "HAVING", "IMPORT", "INSERT", "ISNULL", "OFFSET", + "RENAME", "SCHEMA", "SELECT", "SORTED", "TABLES", "UNIQUE", "UNLOAD", + "UPDATE", "VALUES", "AFTER", "ALTER", "CROSS", "DELTA", "FLOAT", "GROUP", + "INDEX", "INNER", "LIMIT", "LOCAL", "MERGE", "MINUS", "ORDER", "OUTER", + "RIGHT", "TABLE", "UNION", "USING", "WHERE", "CALL", "CASE", "CHAR", + "COPY", "DATE", "DATETIME", "DESC", "DROP", "ELSE", "FILE", "FROM", + "FULL", "HASH", "HINT", "INTO", "JOIN", "LEFT", "LIKE", "LOAD", "LONG", + "NULL", "PLAN", "SHOW", "TEXT", "THEN", "TIME", "VIEW", "WHEN", "WITH", + "ADD", "ALL", "AND", "ASC", "END", "FOR", "INT", "KEY", "NOT", "OFF", + "SET", "TOP", "AS", "BY", "IF", "IN", "IS", "OF", "ON", "OR", "TO", + "ARRAY", "CONCAT", "ILIKE", "SECOND", "MINUTE", "HOUR", "DAY", "MONTH", + "YEAR", "SECONDS", "MINUTES", "HOURS", "DAYS", "MONTHS", "YEARS", + "INTERVAL", "TRUE", "FALSE", "TRANSACTION", "BEGIN", "COMMIT", + "ROLLBACK", "'='", "EQUALS", "NOTEQUALS", "'<'", "'>'", "LESS", "GREATER", "LESSEQ", "GREATEREQ", "NOTNULL", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", "'?'", "$accept", "input", "statement_list", "statement", @@ -887,11 +911,14 @@ static const char *const yytname[] = "prepare_target_query", "execute_statement", "import_statement", "file_type", "file_path", "opt_file_type", "export_statement", "show_statement", "create_statement", "opt_not_exists", - "column_def_commalist", "column_def", "column_type", - "opt_column_nullable", "drop_statement", "opt_exists", - "delete_statement", "truncate_statement", "insert_statement", - "opt_column_list", "update_statement", "update_clause_commalist", - "update_clause", "select_statement", "select_within_set_operation", + "table_elem_commalist", "table_elem", "column_def", "column_type", + "opt_time_specification", "opt_decimal_specification", + "opt_column_constraints", "column_constraint_list", "column_constraint", + "table_constraint", "drop_statement", "opt_exists", "alter_statement", + "alter_action", "drop_action", "delete_statement", "truncate_statement", + "insert_statement", "opt_column_list", "update_statement", + "update_clause_commalist", "update_clause", "select_statement", + "select_within_set_operation", "select_within_set_operation_no_parentheses", "select_with_paren", "select_no_paren", "set_operator", "set_type", "opt_all", "select_clause", "opt_distinct", "select_list", "opt_from_clause", @@ -906,11 +933,11 @@ static const char *const yytname[] = "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", "table_alias", - "opt_table_alias", "alias", "opt_alias", "opt_with_clause", - "with_clause", "with_description_list", "with_description", - "join_clause", "opt_join_type", "join_condition", "opt_semicolon", - "ident_commalist", YY_NULLPTR + "table_ref_name", "table_ref_name_no_alias", "table_name", + "opt_index_name", "table_alias", "opt_table_alias", "alias", "opt_alias", + "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 * @@ -920,471 +947,493 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 61, 406, 407, 60, 62, 408, 409, 410, 411, - 412, 43, 45, 42, 47, 37, 94, 413, 91, 93, - 40, 41, 46, 59, 44, 63 -}; -#endif - -#define YYPACT_NINF (-378) +#define YYPACT_NINF (-321) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-274) +#define YYTABLE_NINF (-300) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const yytype_int16 yypact[] = { - 555, 37, 118, 120, 130, 118, -40, -3, 33, 46, - 118, 118, -37, 15, 147, 55, 55, 55, 162, 27, - -378, 116, -378, 116, -378, -378, -378, -378, -378, -378, - -378, -378, -378, -378, -378, -28, -378, 244, 76, -378, - 95, 164, -378, 148, 148, 118, 251, 118, 153, -378, - -57, 159, 159, 118, -378, 163, 108, -378, -378, -378, - -378, -378, -378, 550, -378, 196, -378, -378, 171, -28, - 40, -378, 129, -378, 288, 68, 293, 186, 118, 118, - 225, -378, 220, 139, 307, 310, 310, 276, 118, 118, - -378, 149, 147, -378, 151, 312, 311, 155, 156, -378, - -378, -378, -28, 215, 207, -28, -6, -378, -378, -378, - -378, 325, -378, 331, -378, -378, -378, 165, 172, -378, - -378, -378, -378, 393, -378, -378, -378, -378, -378, -378, - 296, -53, 139, 301, -378, 310, 336, 38, 198, -59, - -378, 243, -378, 243, -378, -378, -378, -378, -378, 348, - -378, -378, 301, -378, -378, 294, -378, -378, 40, -378, - -378, 301, 294, 301, 123, -378, -378, 226, -378, 68, - -378, -378, -378, -378, -378, -378, -378, -378, -378, -378, - -378, -378, -378, -378, -378, -378, 361, 260, 362, 248, - -76, 202, 208, 209, 150, 328, 212, 349, -378, 258, - 22, 390, -378, -378, -378, -378, -378, -378, -378, -378, - -378, -378, -378, -378, -378, -378, -378, -378, 290, -378, - -120, 216, -378, 301, 307, -378, 341, -378, -378, 223, - -11, -378, 306, 222, -378, 20, -6, -28, 224, -378, - 61, -6, 22, 347, 31, -378, -378, 313, -378, 292, - 25, -378, 260, 10, 11, 346, 226, 301, 301, 88, - -48, 245, 349, 565, 301, 53, 242, -51, 301, 301, - 349, -378, 349, -36, 246, 109, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 312, 118, -378, 411, 68, 22, -378, 251, 68, - -378, 348, 6, 225, -378, 301, -378, 415, -378, -378, - -378, -378, 301, -378, -378, -378, -378, 301, 301, 310, - -378, 249, -378, -378, 252, -378, -378, -378, -378, -378, - 110, -378, 362, -378, -378, 301, -378, -378, 253, 334, - -70, 34, 83, 301, 301, -378, 346, 329, -17, -378, - -378, -378, 316, 514, 591, 349, 261, 258, -378, 335, - 267, 591, 591, 591, 591, 610, 610, 610, 610, 53, - 53, -84, -84, -84, -93, 268, -378, -378, 64, -378, - 84, -378, 260, -378, 315, -378, 262, -378, 23, -378, - 373, -378, -378, -378, 22, 22, -378, 434, 435, -378, - 343, -378, -378, 86, -378, 301, 292, 301, 301, -378, - 119, 124, 272, -378, 349, 591, 258, 279, 102, -378, - -378, -378, -378, 280, 358, -378, -378, -378, 380, 382, - 383, 364, 6, 456, -378, -378, -378, 345, -378, 291, - 297, -378, -378, 70, 298, 22, 132, -378, 301, -378, - 565, 299, 106, -378, -378, 23, 6, -378, -378, -378, - 6, 387, 305, 301, -378, -378, -378, -378, -378, 22, - -378, -378, -378, -378, 522, 336, -29, 309, 301, 113, - 301, -378, 12, 22, -378, -378, 22, 295, 314, -378 + 618, 65, 87, 127, 142, 87, 104, 68, 95, 60, + 87, 138, 87, 122, 18, 201, 51, 51, 51, 225, + 71, -321, 126, -321, 126, -321, -321, -321, -321, -321, + -321, -321, -321, -321, -321, -321, -321, -23, -321, 246, + 74, -321, 86, 185, -321, 153, 153, 153, 87, 288, + 87, 170, -321, 171, -49, 171, 171, 171, 87, -321, + 179, 133, -321, -321, -321, -321, -321, -321, 587, -321, + 204, -321, -321, 189, -23, 129, -321, 61, -321, 302, + 37, 314, 200, 318, 87, 87, 255, -321, 236, 164, + 341, 308, 87, 355, 355, 358, 87, 87, -321, 202, + 201, -321, 214, 360, 363, 207, 219, -321, -321, -321, + -23, 290, 280, -23, 24, -321, -321, -321, -321, 402, + -321, 403, -321, -321, -321, 233, 234, -321, -321, -321, + -321, 713, -321, -321, -321, -321, -321, -321, 369, -321, + 285, -40, 164, 326, -321, 355, 413, 66, 262, -46, + -321, -321, 328, 309, -321, 309, -321, -321, -321, -321, + -321, 416, -321, -321, 326, -321, -321, 345, -321, -321, + 129, -321, -321, 326, 345, 326, 160, -321, -321, 130, + -321, 37, -321, -321, -321, -321, -321, -321, -321, -321, + -321, -321, -321, -321, -321, -321, -321, -321, 87, 419, + 312, 35, 300, 8, 251, 256, 260, 230, 386, 263, + 396, -321, 278, -68, 449, -321, -321, -321, -321, -321, + -321, -321, -321, -321, -321, -321, -321, -321, -321, -321, + -321, 339, -321, 121, 264, -321, 326, 341, -321, 399, + -321, -321, 391, -321, -321, 266, 123, -321, 348, 269, + -321, 19, 24, -23, 271, -321, -34, 24, -68, 397, + 17, -321, -321, 276, 361, -321, 453, 335, 281, 141, + -321, -321, -321, 312, 6, 12, 401, 130, 326, 326, + 109, -43, 282, 396, 646, 326, 118, 286, -74, 326, + 326, 396, -321, 396, -55, 289, -44, 396, 396, 396, + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 360, 87, -321, 457, 37, -68, -321, 171, + 288, 37, -321, 416, 20, 255, -321, 326, -321, 459, + -321, -321, -321, -321, 326, -321, -321, -321, -321, 326, + 326, 413, 355, -321, 434, -321, 291, 293, -321, -321, + 294, -321, -321, -321, -321, 295, -321, 22, 297, 413, + -321, 35, -321, -321, 326, -321, -321, 303, 379, 131, + -56, 148, 326, 326, -321, 401, 381, 54, -321, -321, + -321, 365, 593, 664, 396, 316, 278, -321, 383, 319, + 664, 664, 664, 664, 714, 714, 714, 714, 118, 118, + 56, 56, 56, -87, 315, -321, -321, 167, 491, -321, + 168, -321, 312, -321, 144, -321, 320, -321, 28, -321, + 427, -321, -321, -321, -68, -68, 174, -321, 323, 495, + -321, 497, 498, 501, -321, 389, -321, -321, 406, -321, + 22, -321, 413, 176, -321, 180, -321, 326, 453, 326, + 326, -321, 44, 64, 336, -321, 396, 664, 278, 337, + 182, -321, -321, -321, -321, -321, 338, 412, -321, -321, + -321, 437, 438, 440, 420, 20, 517, -321, -321, -321, + 398, -321, -321, 516, 192, 349, 350, 351, -321, -321, + -321, 199, -321, -321, 39, 352, -68, 143, -321, 326, + -321, 646, 353, 208, -321, -321, 28, 20, -321, -321, + -321, 20, 270, 356, 326, 357, -321, 525, -321, -321, + -321, -321, -321, -321, -321, -68, -321, -321, -321, -321, + 78, 413, -24, -321, 362, 359, 326, 209, 326, -321, + -321, 13, -68, -321, -321, -68, 366, 364, -321 }; - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_int16 yydefact[] = { - 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 29, 29, 29, 0, 274, - 3, 20, 18, 20, 17, 8, 9, 7, 11, 16, - 13, 14, 12, 15, 10, 0, 253, 0, 243, 72, - 32, 0, 43, 49, 49, 0, 0, 0, 0, 242, - 0, 70, 70, 0, 41, 0, 255, 256, 28, 25, - 27, 26, 1, 254, 2, 0, 6, 5, 120, 0, - 81, 82, 112, 68, 0, 130, 0, 0, 0, 0, - 106, 36, 0, 76, 0, 0, 0, 0, 0, 0, - 42, 0, 0, 4, 0, 0, 100, 0, 0, 94, - 95, 93, 0, 97, 0, 0, 126, 244, 221, 224, - 226, 0, 227, 0, 222, 223, 232, 0, 129, 131, - 214, 215, 216, 225, 217, 218, 219, 220, 31, 30, - 0, 0, 76, 0, 71, 0, 0, 0, 0, 106, - 78, 39, 37, 39, 69, 66, 67, 258, 257, 0, - 119, 99, 0, 89, 88, 112, 85, 84, 86, 96, - 92, 0, 112, 0, 0, 90, 228, 231, 33, 0, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 229, 48, 0, 254, 0, 0, - 210, 0, 0, 0, 0, 0, 0, 0, 212, 0, - 105, 134, 141, 142, 143, 136, 138, 144, 137, 157, - 145, 146, 147, 148, 140, 135, 150, 151, 0, 275, - 0, 0, 74, 0, 0, 77, 0, 35, 40, 23, - 0, 21, 103, 101, 127, 252, 126, 0, 111, 113, - 118, 126, 122, 124, 121, 230, 132, 0, 46, 0, - 0, 50, 254, 100, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 153, 0, 152, 0, 0, 0, 0, - 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 30, 30, 30, 0, + 300, 3, 21, 19, 21, 18, 8, 9, 7, 11, + 16, 17, 13, 14, 12, 15, 10, 0, 279, 0, + 267, 96, 33, 0, 44, 51, 51, 51, 0, 0, + 0, 0, 266, 91, 0, 91, 91, 91, 0, 42, + 0, 281, 282, 29, 26, 28, 27, 1, 280, 2, + 0, 6, 5, 144, 0, 105, 106, 136, 88, 0, + 154, 0, 0, 270, 0, 0, 130, 37, 0, 100, + 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, + 0, 4, 0, 0, 124, 0, 0, 118, 119, 117, + 0, 121, 0, 0, 150, 268, 245, 248, 250, 0, + 251, 0, 246, 247, 256, 0, 153, 155, 238, 239, + 240, 249, 241, 242, 243, 244, 32, 31, 0, 269, + 0, 0, 100, 0, 95, 0, 0, 0, 0, 130, + 102, 90, 0, 40, 38, 40, 89, 86, 87, 284, + 283, 0, 143, 123, 0, 113, 112, 136, 109, 108, + 110, 120, 116, 0, 136, 0, 0, 114, 252, 255, + 34, 0, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 253, 50, 0, 0, + 280, 0, 0, 234, 0, 0, 0, 0, 0, 0, + 0, 236, 0, 129, 158, 165, 166, 167, 160, 162, + 168, 161, 181, 169, 170, 171, 172, 164, 159, 174, + 175, 0, 301, 0, 0, 98, 0, 0, 101, 0, + 92, 93, 0, 36, 41, 24, 0, 22, 127, 125, + 151, 278, 150, 0, 135, 137, 142, 150, 146, 148, + 145, 254, 156, 0, 0, 47, 0, 0, 0, 0, + 52, 54, 55, 280, 124, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 177, 0, 176, 0, 0, 0, + 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 75, 0, 0, 80, 79, 0, 0, - 19, 0, 0, 106, 102, 0, 250, 0, 251, 133, - 83, 87, 0, 117, 116, 115, 91, 0, 0, 0, - 54, 0, 57, 56, 0, 62, 61, 55, 60, 53, - 65, 45, 0, 47, 189, 0, 211, 213, 0, 0, - 0, 0, 0, 0, 0, 176, 0, 0, 0, 149, - 139, 168, 169, 0, 164, 0, 0, 0, 155, 0, - 167, 166, 182, 183, 184, 185, 186, 187, 188, 159, - 158, 161, 160, 162, 163, 0, 34, 276, 0, 38, - 0, 22, 254, 104, 233, 235, 0, 237, 248, 236, - 108, 128, 249, 114, 125, 123, 44, 0, 0, 63, - 0, 52, 51, 0, 180, 0, 0, 0, 0, 174, - 0, 0, 0, 207, 0, 165, 0, 0, 0, 156, - 208, 73, 24, 0, 0, 270, 262, 268, 266, 269, - 264, 0, 0, 0, 247, 241, 245, 0, 98, 0, - 0, 64, 190, 0, 0, 178, 0, 177, 0, 181, - 209, 0, 0, 172, 170, 248, 0, 265, 267, 263, - 0, 234, 249, 0, 58, 59, 191, 192, 175, 179, - 173, 171, 238, 259, 271, 0, 110, 0, 0, 0, - 0, 107, 0, 272, 260, 246, 109, 210, 0, 261 + 0, 0, 0, 0, 99, 0, 0, 104, 103, 91, + 0, 0, 20, 0, 0, 130, 126, 0, 276, 0, + 277, 157, 107, 111, 0, 141, 140, 139, 115, 0, + 0, 0, 0, 58, 0, 63, 75, 0, 62, 60, + 0, 70, 69, 59, 67, 72, 57, 77, 0, 0, + 46, 0, 49, 213, 0, 235, 237, 0, 0, 0, + 0, 0, 0, 0, 200, 0, 0, 0, 173, 163, + 192, 193, 0, 188, 0, 0, 0, 179, 0, 191, + 190, 206, 207, 208, 209, 210, 211, 212, 183, 182, + 185, 184, 186, 187, 0, 35, 302, 0, 0, 39, + 0, 23, 280, 128, 257, 259, 0, 261, 274, 260, + 132, 152, 275, 138, 149, 147, 0, 45, 0, 0, + 61, 0, 0, 0, 68, 0, 81, 82, 0, 56, + 76, 78, 0, 0, 53, 0, 204, 0, 0, 0, + 0, 198, 0, 0, 0, 231, 0, 189, 0, 0, + 0, 180, 232, 97, 94, 25, 0, 0, 296, 288, + 294, 292, 295, 290, 0, 0, 0, 273, 265, 271, + 0, 122, 48, 0, 0, 0, 0, 0, 80, 83, + 79, 0, 85, 214, 0, 0, 202, 0, 201, 0, + 205, 233, 0, 0, 196, 194, 274, 0, 291, 293, + 289, 0, 258, 275, 0, 0, 74, 0, 64, 66, + 71, 84, 215, 216, 199, 203, 197, 195, 262, 285, + 297, 0, 134, 65, 0, 0, 0, 0, 0, 131, + 73, 0, 298, 286, 272, 133, 234, 0, 287 }; - /* YYPGOTO[NTERM-NUM]. */ +/* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -378, -378, -378, 417, -378, 460, -378, 183, -378, 26, - -378, -378, -378, -378, 189, -83, 353, -378, -378, -378, - 444, -378, 160, 91, -378, -378, 447, -378, -378, -378, - 368, -378, -378, 277, -175, -89, -378, 99, -68, -39, - -378, -378, -78, 254, -378, -378, -378, -126, -378, -378, - -114, -378, 190, -378, -378, 9, -243, -378, -113, 199, - -133, -177, -378, -378, -378, -378, -378, -378, 250, -378, - -378, -378, -378, -378, -138, -378, -378, -378, -378, -378, - 28, -71, -79, -378, -378, -87, -378, -378, -378, -378, - -378, -377, 49, -378, -378, -378, 0, -378, 60, 273, - -378, -378, -378, -378, 424, -378, -378, -378, -378, 42 + -321, -321, -321, 475, -321, 523, -321, 227, -321, 48, + -321, -321, -321, -321, 228, -89, 409, -321, -321, -321, + 42, -321, 190, -321, 106, -321, -321, -321, -321, 116, + -321, -321, -47, -321, -321, -321, -321, -321, -321, 415, + -321, -321, 321, -194, -85, -321, 125, -73, -42, -321, + -321, -86, 292, -321, -321, -321, -136, -321, -321, -106, + -321, 238, -321, -321, -11, -260, -321, -27, 240, -143, + -191, -321, -321, -321, -321, -321, -321, 298, -321, -321, + -321, -321, -321, -150, -321, -321, -321, -321, -321, 27, + -60, -91, -321, -321, -92, -321, -321, -321, -321, -321, + -299, 67, -321, -321, -321, 2, -321, -321, 73, 322, + -321, -321, -321, -321, 480, -321, -321, -321, -321, -320 }; - /* YYDEFGOTO[NTERM-NUM]. */ +/* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 18, 19, 20, 21, 66, 230, 231, 22, 59, - 23, 129, 24, 25, 82, 141, 227, 26, 27, 28, - 78, 250, 251, 330, 401, 29, 88, 30, 31, 32, - 137, 33, 139, 140, 34, 155, 156, 157, 71, 102, - 103, 160, 72, 152, 232, 303, 304, 134, 438, 481, - 106, 238, 239, 315, 96, 165, 233, 117, 118, 234, - 235, 201, 202, 203, 204, 205, 206, 207, 260, 208, - 209, 210, 211, 212, 182, 183, 184, 213, 214, 215, - 216, 217, 120, 121, 122, 123, 124, 125, 126, 127, - 383, 384, 385, 386, 387, 48, 388, 434, 435, 436, - 309, 35, 36, 56, 57, 389, 431, 484, 64, 220 + 0, 19, 20, 21, 22, 71, 246, 247, 23, 64, + 24, 137, 25, 26, 88, 153, 243, 27, 28, 29, + 83, 269, 270, 271, 357, 434, 430, 439, 440, 441, + 272, 30, 92, 31, 240, 241, 32, 33, 34, 147, + 35, 149, 150, 36, 167, 168, 169, 76, 110, 111, + 172, 77, 164, 248, 325, 326, 144, 481, 539, 114, + 254, 255, 337, 104, 177, 249, 125, 126, 250, 251, + 214, 215, 216, 217, 218, 219, 220, 281, 221, 222, + 223, 224, 225, 194, 195, 196, 226, 227, 228, 229, + 230, 128, 129, 130, 131, 132, 133, 134, 135, 413, + 414, 415, 416, 417, 51, 418, 140, 477, 478, 479, + 331, 37, 38, 61, 62, 419, 474, 543, 69, 233 }; - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 200, 98, 39, 143, 119, 42, 142, 142, 150, 38, - 49, 50, 248, 225, 336, 487, 162, 480, 263, 133, - 265, 348, 151, 306, 158, 68, 306, 158, 240, 245, - 242, 244, 85, 105, 53, 43, 186, 276, 51, 343, - 268, 236, 60, 61, 163, 80, 276, 83, 241, 99, - 406, 293, 218, 90, 294, 461, 142, 269, 344, 268, - 355, 259, 164, 37, 345, 44, 267, 187, 52, 222, - 54, 86, 108, 109, 110, 291, 269, 333, 131, 132, - 100, 318, 290, 474, 291, 263, 45, 356, 145, 146, - 296, 68, 403, 353, 253, 354, 254, 221, 246, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 418, 224, 101, 188, 339, 237, - 350, 38, 46, 40, 340, 341, 190, 108, 109, 110, - 268, 266, 268, 41, 70, 351, 352, 407, 99, 47, - 307, 268, 69, 433, 268, 305, 313, 269, 311, 269, - 55, 111, 413, 190, 108, 109, 110, 305, 269, 158, - 300, 269, 62, 301, 191, 192, 193, 112, 97, 100, - 408, 268, 314, 452, 337, 198, 382, 390, 415, 240, - 268, 334, 378, 276, 394, 395, 380, 338, 269, 344, - 147, 191, 192, 193, 258, 409, 331, 269, 268, 332, - 63, 104, 58, 194, 375, 101, 111, 423, 358, 399, - 410, 411, 113, 114, 115, 269, 287, 288, 289, 290, - 476, 291, 112, 65, 119, 359, 400, 448, 119, 268, - 194, 447, 243, 111, 268, 421, 396, 450, 169, 195, - 142, 466, 268, 116, 468, 310, 269, 73, 74, 112, - 316, 269, 196, 76, 81, 422, 258, 442, 169, 269, - 305, 190, 108, 109, 110, 75, 195, 113, 114, 115, - 77, 84, 443, 454, 445, 446, 305, 471, 412, 196, - 305, 87, 92, 91, 485, 197, 198, 294, 94, 417, - 95, 107, 376, 199, 113, 114, 115, 128, 116, 191, - 192, 193, 130, 133, 190, 108, 109, 110, 135, 136, - 138, 68, 197, 198, 108, 469, 320, 144, 110, 69, - 199, 149, 321, 151, 159, 116, 153, 154, 161, 166, - 322, 190, 108, 109, 110, 167, 168, 185, 194, 219, - 424, 111, 191, 192, 193, 483, 169, 486, 451, 223, - 226, 229, 190, 108, 109, 110, 323, 112, 170, 171, - 172, 173, 174, 175, 247, 249, 104, 14, 252, 261, - 192, 193, 255, 324, 195, 325, 326, 425, 256, 257, - 264, 194, 426, 292, 111, 298, 295, 196, 427, 428, - 327, 192, 193, 299, 328, 302, 305, 317, 312, 68, - 112, 319, 113, 114, 115, 429, 329, 270, 194, -271, - 430, 111, 424, 349, 377, 346, 357, 195, 392, 397, - 197, 198, 398, 405, 404, 355, 268, 112, 199, 194, - 196, 416, 111, 116, 419, 291, 432, 420, 437, 271, - 439, 440, 441, 449, 262, 113, 114, 115, 112, 425, - 453, 455, 456, 457, 426, 458, 459, 196, 460, 462, - 427, 428, 464, 197, 198, 262, 463, 254, 465, 467, - 470, 199, 113, 114, 115, 475, 116, 429, 196, 482, - 93, -271, 430, 67, 381, 489, 272, 379, 79, -239, - 197, 198, 402, 113, 114, 115, 228, 444, 199, 89, - 189, 297, 393, 116, 391, 473, 273, 335, 308, 342, - 488, 197, 198, 274, 275, 472, 148, 479, 0, 199, - 276, 277, 0, 0, 116, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 0, 0, 0, - 0, 278, 279, 280, 281, 282, 0, 424, 283, 284, - -273, 285, 286, 287, 288, 289, 290, 1, 291, 0, - 0, -240, 1, 271, 0, 2, 0, 0, 0, 0, - 2, 0, 3, 0, 0, 0, 4, 3, 0, 0, - 0, 4, 5, 0, 425, 6, 7, 5, 0, 426, - 6, 7, 0, 0, 0, 427, 428, 8, 9, 477, - 0, 0, 8, 9, 0, 0, 0, 0, 10, 0, - 272, 0, 429, 10, 271, 0, 0, 430, 0, 0, - 0, 0, 0, 0, 414, 0, 0, 0, 0, 0, - 347, 0, 11, 0, 0, 0, 12, 11, 275, 0, - 271, 12, 0, 0, 276, 277, 0, 0, 478, 0, - 0, 13, 0, 0, 0, 0, 13, 14, 0, 271, - 0, 272, 14, 0, 0, 278, 279, 280, 281, 282, - 0, 0, 283, 284, 0, 285, 286, 287, 288, 289, - 290, 347, 291, 0, 0, 0, 0, -274, 0, 275, - 0, 0, 0, 0, 0, 276, 277, 0, 15, 16, - 17, 0, 0, 15, 16, 17, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 275, 278, 279, 280, 281, - 282, 276, -274, 283, 284, 0, 285, 286, 287, 288, - 289, 290, 0, 291, 275, 0, 0, 0, 0, 0, - 276, 0, -274, -274, -274, 281, 282, 0, 0, 283, - 284, 0, 285, 286, 287, 288, 289, 290, 0, 291, - 0, 0, 0, 0, -274, -274, 0, 0, -274, -274, - 0, 285, 286, 287, 288, 289, 290, 0, 291 + 213, 106, 154, 154, 41, 155, 265, 44, 95, 96, + 97, 162, 52, 238, 54, 365, 546, 284, 163, 286, + 127, 426, 328, 40, 170, 377, 538, 170, 174, 261, + 256, 328, 258, 260, 73, 113, 143, 58, 266, 443, + 289, 116, 117, 118, 93, 384, 289, 297, 372, 435, + 86, 449, 89, 199, 154, 335, 231, 290, 289, 387, + 98, 252, 267, 290, 280, 65, 66, 373, 257, 288, + 107, 340, 385, 374, 235, 290, 388, 59, 175, 362, + 289, 336, 436, 94, 200, 312, 141, 142, 84, 85, + 40, 39, 284, 317, 152, 268, 176, 290, 157, 158, + 382, 379, 383, 467, 445, 108, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 262, 491, 73, 119, 437, 460, 368, 253, 234, + 42, 289, 237, 289, 201, 369, 370, 112, 107, 287, + 120, 109, 438, 329, 468, 43, 380, 381, 290, 469, + 290, 74, 476, 289, 327, 470, 471, 50, 289, 535, + 498, 48, 75, 203, 116, 117, 118, 170, 333, 467, + 290, 499, 472, 108, 45, 290, 512, 473, 289, 366, + 211, 363, 274, 46, 275, 121, 122, 123, 49, 420, + 297, 256, 55, 457, 412, 290, 424, 425, 503, 105, + 263, 56, 63, 367, 60, 204, 205, 206, 536, 109, + 468, 537, 530, 47, 522, 469, 124, 53, 466, 279, + 404, 470, 471, 289, 159, 67, 311, 455, 312, 452, + 453, 57, 327, 203, 116, 117, 118, 70, 472, 450, + 290, 332, -297, 473, 207, 289, 338, 119, 68, 78, + 79, 154, 297, 427, 532, 448, 127, 289, 373, 524, + 80, 127, 290, 120, 451, 501, 182, 183, 184, 185, + 186, 187, 408, 259, 290, 204, 205, 206, 81, 82, + 208, 203, 116, 117, 118, 308, 309, 310, 311, 407, + 312, 87, 90, 209, 410, 467, 314, 91, 322, 315, + 102, 323, 454, 99, 494, 115, 496, 497, 121, 122, + 123, 100, 103, 459, 207, 405, 360, 119, 136, 361, + 138, 139, -263, 204, 205, 206, 210, 211, 145, 203, + 116, 117, 118, 120, 212, 73, 468, 143, 146, 124, + 279, 469, 463, 465, 148, 181, 181, 470, 471, 482, + 208, 492, 315, 151, 315, 493, 525, 505, 327, 116, + 327, 156, 207, 209, 472, 119, 118, 516, -297, 473, + 517, 204, 205, 206, 521, 163, 74, 315, 121, 122, + 123, 120, 165, 527, 544, 502, 327, 315, 161, 203, + 116, 117, 118, 542, 166, 545, 210, 211, 208, 203, + 116, 117, 118, 171, 212, 173, 178, 179, 180, 124, + 207, 209, 181, 119, 197, 198, 232, 236, 239, 245, + 242, 112, 264, 15, 273, 276, 121, 122, 123, 120, + 277, 282, 205, 206, 278, 285, 313, 319, 316, 320, + 321, 324, 205, 206, 210, 211, 208, 327, -264, 334, + 341, 339, 212, 342, 358, 359, 375, 124, 73, 209, + 406, 378, 422, 386, 428, 429, 291, 431, 432, 433, + 207, 442, 447, 119, 121, 122, 123, 343, 446, 289, + 207, 384, 344, 119, 345, 346, 461, 347, 462, 120, + 458, 312, 210, 211, 464, 348, 480, 483, 475, 120, + 212, 484, 292, 485, 486, 124, 283, 487, 488, 489, + 507, 500, 504, 506, 508, 509, 283, 510, 511, 209, + 513, 349, 515, 514, 518, 519, 520, 523, 526, 209, + 531, 534, 533, 541, 121, 122, 123, 540, 350, 548, + 351, 352, 275, 101, 121, 122, 123, 72, 409, 293, + 411, 444, 210, 211, 495, 353, 490, 202, 318, 354, + 212, 355, 210, 211, 244, 124, 364, 421, 547, 294, + 212, 356, 423, 330, 529, 124, 295, 296, 371, 528, + 160, 0, 0, 297, 298, 0, 0, -299, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 299, 300, 301, 302, 303, 3, + 0, 304, 305, 4, 306, 307, 308, 309, 310, 311, + 0, 312, 0, 5, 0, 1, 6, 7, 0, 0, + 0, 0, 0, 2, 0, 0, 0, 0, 8, 9, + 3, 0, 0, 0, 4, 0, 292, 0, 0, 10, + 0, 0, 11, 0, 5, 0, 0, 6, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, + 9, 0, 0, 12, 0, 0, 0, 13, 0, 0, + 10, 0, 0, 11, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 293, 0, 0, 0, 0, 15, 292, + 0, 0, 0, 0, 12, 0, 0, 456, 13, 0, + 0, 0, 0, 376, 0, 0, 0, 292, 0, 0, + 0, 296, 0, 14, 0, 0, 0, 297, 298, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 17, 18, 0, 0, 0, 0, 293, 0, 299, 300, + 301, 302, 303, 0, 0, 304, 305, 0, 306, 307, + 308, 309, 310, 311, -300, 312, 376, 292, 0, 0, + 16, 17, 18, 0, 296, 0, 0, 0, 0, 0, + 297, 298, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 296, 0, 0, 0, 0, 0, 297, -300, + 0, 299, 300, 301, 302, 303, 0, 0, 304, 305, + 0, 306, 307, 308, 309, 310, 311, 0, 312, -300, + -300, -300, 302, 303, 0, 0, 304, 305, 0, 306, + 307, 308, 309, 310, 311, 0, 312, 0, 0, 0, + 0, 0, 296, 0, 0, 0, 0, 0, 297, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -300, -300, 0, 0, -300, -300, 0, 306, + 307, 308, 309, 310, 311, 0, 312 }; static const yytype_int16 yycheck[] = { - 133, 69, 2, 86, 75, 5, 85, 86, 95, 3, - 10, 11, 187, 139, 3, 3, 105, 46, 195, 78, - 197, 264, 12, 3, 102, 53, 3, 105, 161, 167, - 163, 164, 89, 72, 19, 75, 89, 130, 75, 87, - 110, 155, 16, 17, 50, 45, 130, 47, 162, 9, - 120, 171, 135, 53, 174, 432, 135, 127, 106, 110, - 96, 194, 68, 26, 112, 105, 199, 120, 105, 137, - 55, 128, 4, 5, 6, 168, 127, 252, 78, 79, - 40, 50, 166, 460, 168, 262, 89, 123, 88, 89, - 223, 53, 335, 270, 170, 272, 172, 59, 169, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 357, 174, 76, 170, 256, 158, - 171, 3, 89, 3, 257, 258, 3, 4, 5, 6, - 110, 199, 110, 3, 35, 268, 269, 103, 9, 93, - 120, 110, 170, 120, 110, 174, 85, 127, 237, 127, - 3, 83, 169, 3, 4, 5, 6, 174, 127, 237, - 171, 127, 0, 174, 41, 42, 43, 99, 69, 40, - 87, 110, 111, 416, 163, 163, 170, 303, 355, 312, - 110, 171, 295, 130, 317, 318, 299, 255, 127, 106, - 91, 41, 42, 43, 106, 112, 171, 127, 110, 174, - 173, 72, 147, 80, 291, 76, 83, 382, 99, 99, - 343, 344, 144, 145, 146, 127, 163, 164, 165, 166, - 463, 168, 99, 107, 295, 116, 116, 103, 299, 110, - 80, 112, 109, 83, 110, 171, 319, 414, 174, 116, - 319, 171, 110, 175, 112, 236, 127, 3, 172, 99, - 241, 127, 129, 89, 3, 171, 106, 171, 174, 127, - 174, 3, 4, 5, 6, 170, 116, 144, 145, 146, - 122, 118, 405, 171, 407, 408, 174, 171, 346, 129, - 174, 122, 174, 120, 171, 162, 163, 174, 92, 357, - 119, 3, 292, 170, 144, 145, 146, 4, 175, 41, - 42, 43, 116, 78, 3, 4, 5, 6, 88, 170, - 3, 53, 162, 163, 4, 448, 24, 41, 6, 170, - 170, 170, 30, 12, 109, 175, 171, 171, 121, 4, - 38, 3, 4, 5, 6, 4, 171, 41, 80, 3, - 25, 83, 41, 42, 43, 478, 174, 480, 416, 151, - 107, 3, 3, 4, 5, 6, 64, 99, 132, 133, - 134, 135, 136, 137, 3, 3, 72, 107, 120, 41, - 42, 43, 170, 81, 116, 83, 84, 62, 170, 170, - 168, 80, 67, 93, 83, 44, 170, 129, 73, 74, - 98, 42, 43, 170, 102, 89, 174, 50, 174, 53, - 99, 88, 144, 145, 146, 90, 114, 17, 80, 94, - 95, 83, 25, 171, 3, 170, 170, 116, 3, 170, - 162, 163, 170, 89, 171, 96, 110, 99, 170, 80, - 129, 170, 83, 175, 99, 168, 174, 169, 65, 49, - 6, 6, 99, 171, 116, 144, 145, 146, 99, 62, - 171, 171, 94, 73, 67, 73, 73, 129, 94, 3, - 73, 74, 171, 162, 163, 116, 121, 172, 171, 171, - 171, 170, 144, 145, 146, 170, 175, 90, 129, 170, - 63, 94, 95, 23, 301, 171, 96, 298, 44, 174, - 162, 163, 332, 144, 145, 146, 143, 406, 170, 52, - 132, 224, 312, 175, 305, 456, 116, 253, 235, 259, - 482, 162, 163, 123, 124, 455, 92, 475, -1, 170, - 130, 131, -1, -1, 175, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, - -1, 151, 152, 153, 154, 155, -1, 25, 158, 159, - 0, 161, 162, 163, 164, 165, 166, 7, 168, -1, - -1, 174, 7, 49, -1, 15, -1, -1, -1, -1, - 15, -1, 22, -1, -1, -1, 26, 22, -1, -1, - -1, 26, 32, -1, 62, 35, 36, 32, -1, 67, - 35, 36, -1, -1, -1, 73, 74, 47, 48, 77, - -1, -1, 47, 48, -1, -1, -1, -1, 58, -1, - 96, -1, 90, 58, 49, -1, -1, 95, -1, -1, - -1, -1, -1, -1, 110, -1, -1, -1, -1, -1, - 116, -1, 82, -1, -1, -1, 86, 82, 124, -1, - 49, 86, -1, -1, 130, 131, -1, -1, 126, -1, - -1, 101, -1, -1, -1, -1, 101, 107, -1, 49, - -1, 96, 107, -1, -1, 151, 152, 153, 154, 155, - -1, -1, 158, 159, -1, 161, 162, 163, 164, 165, - 166, 116, 168, -1, -1, -1, -1, 96, -1, 124, - -1, -1, -1, -1, -1, 130, 131, -1, 148, 149, - 150, -1, -1, 148, 149, 150, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 124, 151, 152, 153, 154, - 155, 130, 131, 158, 159, -1, 161, 162, 163, 164, - 165, 166, -1, 168, 124, -1, -1, -1, -1, -1, - 130, -1, 151, 152, 153, 154, 155, -1, -1, 158, - 159, -1, 161, 162, 163, 164, 165, 166, -1, 168, - -1, -1, -1, -1, 154, 155, -1, -1, 158, 159, - -1, 161, 162, 163, 164, 165, 166, -1, 168 + 143, 74, 93, 94, 2, 94, 200, 5, 55, 56, + 57, 103, 10, 149, 12, 3, 3, 208, 12, 210, + 80, 341, 3, 3, 110, 285, 50, 113, 113, 179, + 173, 3, 175, 176, 57, 77, 82, 19, 3, 359, + 114, 4, 5, 6, 93, 100, 114, 134, 91, 27, + 48, 107, 50, 93, 145, 89, 145, 131, 114, 103, + 58, 167, 27, 131, 207, 17, 18, 110, 174, 212, + 9, 54, 127, 116, 147, 131, 120, 59, 54, 273, + 114, 115, 60, 132, 124, 172, 84, 85, 46, 47, + 3, 26, 283, 236, 92, 60, 72, 131, 96, 97, + 291, 175, 293, 25, 364, 44, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 181, 442, 57, 87, 103, 386, 277, 170, 63, + 3, 114, 178, 114, 174, 278, 279, 76, 9, 212, + 103, 80, 120, 124, 66, 3, 289, 290, 131, 71, + 131, 174, 124, 114, 178, 77, 78, 97, 114, 81, + 116, 93, 37, 3, 4, 5, 6, 253, 253, 25, + 131, 107, 94, 44, 70, 131, 475, 99, 114, 167, + 167, 175, 174, 79, 176, 148, 149, 150, 93, 325, + 134, 334, 70, 384, 174, 131, 339, 340, 458, 74, + 198, 79, 151, 276, 3, 45, 46, 47, 130, 80, + 66, 531, 511, 109, 175, 71, 179, 79, 412, 110, + 312, 77, 78, 114, 99, 0, 170, 173, 172, 372, + 373, 109, 178, 3, 4, 5, 6, 111, 94, 91, + 131, 252, 98, 99, 84, 114, 257, 87, 177, 3, + 176, 342, 134, 342, 514, 124, 316, 114, 110, 116, + 174, 321, 131, 103, 116, 456, 136, 137, 138, 139, + 140, 141, 319, 113, 131, 45, 46, 47, 93, 126, + 120, 3, 4, 5, 6, 167, 168, 169, 170, 316, + 172, 3, 122, 133, 321, 25, 175, 126, 175, 178, + 96, 178, 375, 124, 447, 3, 449, 450, 148, 149, + 150, 178, 123, 386, 84, 313, 175, 87, 4, 178, + 120, 3, 178, 45, 46, 47, 166, 167, 92, 3, + 4, 5, 6, 103, 174, 57, 66, 82, 174, 179, + 110, 71, 175, 175, 3, 178, 178, 77, 78, 175, + 120, 175, 178, 45, 178, 175, 499, 175, 178, 4, + 178, 3, 84, 133, 94, 87, 6, 175, 98, 99, + 178, 45, 46, 47, 175, 12, 174, 178, 148, 149, + 150, 103, 175, 175, 175, 458, 178, 178, 174, 3, + 4, 5, 6, 536, 175, 538, 166, 167, 120, 3, + 4, 5, 6, 113, 174, 125, 4, 4, 175, 179, + 84, 133, 178, 87, 45, 130, 3, 155, 90, 3, + 111, 76, 3, 111, 124, 174, 148, 149, 150, 103, + 174, 45, 46, 47, 174, 172, 97, 38, 174, 48, + 174, 93, 46, 47, 166, 167, 120, 178, 178, 178, + 174, 54, 174, 92, 119, 174, 174, 179, 57, 133, + 3, 175, 3, 174, 30, 174, 17, 174, 174, 174, + 84, 174, 93, 87, 148, 149, 150, 24, 175, 114, + 84, 100, 29, 87, 31, 32, 103, 34, 173, 103, + 174, 172, 166, 167, 3, 42, 69, 174, 178, 103, + 174, 6, 53, 6, 6, 179, 120, 6, 119, 103, + 98, 175, 175, 175, 77, 77, 120, 77, 98, 133, + 3, 68, 6, 125, 175, 175, 175, 175, 175, 133, + 174, 6, 175, 174, 148, 149, 150, 175, 85, 175, + 87, 88, 176, 68, 148, 149, 150, 24, 320, 100, + 323, 361, 166, 167, 448, 102, 440, 142, 237, 106, + 174, 108, 166, 167, 155, 179, 274, 327, 541, 120, + 174, 118, 334, 251, 507, 179, 127, 128, 280, 506, + 100, -1, -1, 134, 135, -1, -1, 0, -1, -1, + -1, -1, -1, -1, 7, -1, -1, -1, -1, -1, + -1, -1, 15, -1, 155, 156, 157, 158, 159, 22, + -1, 162, 163, 26, 165, 166, 167, 168, 169, 170, + -1, 172, -1, 36, -1, 7, 39, 40, -1, -1, + -1, -1, -1, 15, -1, -1, -1, -1, 51, 52, + 22, -1, -1, -1, 26, -1, 53, -1, -1, 62, + -1, -1, 65, -1, 36, -1, -1, 39, 40, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, + 52, -1, -1, 86, -1, -1, -1, 90, -1, -1, + 62, -1, -1, 65, -1, -1, -1, -1, -1, -1, + -1, -1, 105, 100, -1, -1, -1, -1, 111, 53, + -1, -1, -1, -1, 86, -1, -1, 114, 90, -1, + -1, -1, -1, 120, -1, -1, -1, 53, -1, -1, + -1, 128, -1, 105, -1, -1, -1, 134, 135, 111, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, + 153, 154, -1, -1, -1, -1, 100, -1, 155, 156, + 157, 158, 159, -1, -1, 162, 163, -1, 165, 166, + 167, 168, 169, 170, 100, 172, 120, 53, -1, -1, + 152, 153, 154, -1, 128, -1, -1, -1, -1, -1, + 134, 135, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 128, -1, -1, -1, -1, -1, 134, 135, + -1, 155, 156, 157, 158, 159, -1, -1, 162, 163, + -1, 165, 166, 167, 168, 169, 170, -1, 172, 155, + 156, 157, 158, 159, -1, -1, 162, 163, -1, 165, + 166, 167, 168, 169, 170, -1, 172, -1, -1, -1, + -1, -1, 128, -1, -1, -1, -1, -1, 134, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 158, 159, -1, -1, 162, 163, -1, 165, + 166, 167, 168, 169, 170, -1, 172 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 7, 15, 22, 26, 32, 35, 36, 47, 48, - 58, 82, 86, 101, 107, 148, 149, 150, 177, 178, - 179, 180, 184, 186, 188, 189, 193, 194, 195, 201, - 203, 204, 205, 207, 210, 277, 278, 26, 3, 272, - 3, 3, 272, 75, 105, 89, 89, 93, 271, 272, - 272, 75, 105, 19, 55, 3, 279, 280, 147, 185, - 185, 185, 0, 173, 284, 107, 181, 181, 53, 170, - 213, 214, 218, 3, 172, 170, 89, 122, 196, 196, - 272, 3, 190, 272, 118, 89, 128, 122, 202, 202, - 272, 120, 174, 179, 92, 119, 230, 213, 214, 9, - 40, 76, 215, 216, 72, 215, 226, 3, 4, 5, - 6, 83, 99, 144, 145, 146, 175, 233, 234, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 4, 187, - 116, 272, 272, 78, 223, 88, 170, 206, 3, 208, - 209, 191, 258, 191, 41, 272, 272, 213, 280, 170, - 261, 12, 219, 171, 171, 211, 212, 213, 218, 109, - 217, 121, 211, 50, 68, 231, 4, 4, 171, 174, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 250, 251, 252, 41, 89, 120, 170, 206, - 3, 41, 42, 43, 80, 116, 129, 162, 163, 170, - 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, - 247, 248, 249, 253, 254, 255, 256, 257, 191, 3, - 285, 59, 214, 151, 174, 223, 107, 192, 192, 3, - 182, 183, 220, 232, 235, 236, 226, 215, 227, 228, - 236, 226, 236, 109, 236, 250, 257, 3, 210, 3, - 197, 198, 120, 170, 172, 170, 170, 170, 106, 236, - 244, 41, 116, 237, 168, 237, 214, 236, 110, 127, - 17, 49, 96, 116, 123, 124, 130, 131, 151, 152, - 153, 154, 155, 158, 159, 161, 162, 163, 164, 165, - 166, 168, 93, 171, 174, 170, 236, 209, 44, 170, - 171, 174, 89, 221, 222, 174, 3, 120, 275, 276, - 231, 211, 174, 85, 111, 229, 231, 50, 50, 88, - 24, 30, 38, 64, 81, 83, 84, 98, 102, 114, - 199, 171, 174, 210, 171, 219, 3, 163, 214, 250, - 236, 236, 244, 87, 106, 112, 170, 116, 232, 171, - 171, 236, 236, 237, 237, 96, 123, 170, 99, 116, - 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, - 237, 237, 237, 237, 237, 261, 272, 3, 234, 190, - 234, 183, 170, 266, 267, 268, 269, 270, 272, 281, - 223, 235, 3, 228, 236, 236, 191, 170, 170, 99, - 116, 200, 198, 232, 171, 89, 120, 103, 87, 112, - 236, 236, 214, 169, 110, 237, 170, 214, 232, 99, - 169, 171, 171, 210, 25, 62, 67, 73, 74, 90, - 95, 282, 174, 120, 273, 274, 275, 65, 224, 6, - 6, 99, 171, 236, 199, 236, 236, 112, 103, 171, - 237, 214, 232, 171, 171, 171, 94, 73, 73, 73, - 94, 267, 3, 121, 171, 171, 171, 171, 112, 236, - 171, 171, 274, 268, 267, 170, 232, 77, 126, 285, - 46, 225, 170, 236, 283, 171, 236, 3, 256, 171 + 0, 7, 15, 22, 26, 36, 39, 40, 51, 52, + 62, 65, 86, 90, 105, 111, 152, 153, 154, 181, + 182, 183, 184, 188, 190, 192, 193, 197, 198, 199, + 211, 213, 216, 217, 218, 220, 223, 291, 292, 26, + 3, 285, 3, 3, 285, 70, 79, 109, 93, 93, + 97, 284, 285, 79, 285, 70, 79, 109, 19, 59, + 3, 293, 294, 151, 189, 189, 189, 0, 177, 298, + 111, 185, 185, 57, 174, 226, 227, 231, 3, 176, + 174, 93, 126, 200, 200, 200, 285, 3, 194, 285, + 122, 126, 212, 93, 132, 212, 212, 212, 285, 124, + 178, 183, 96, 123, 243, 226, 227, 9, 44, 80, + 228, 229, 76, 228, 239, 3, 4, 5, 6, 87, + 103, 148, 149, 150, 179, 246, 247, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 4, 191, 120, 3, + 286, 285, 285, 82, 236, 92, 174, 219, 3, 221, + 222, 45, 285, 195, 271, 195, 3, 285, 285, 226, + 294, 174, 274, 12, 232, 175, 175, 224, 225, 226, + 231, 113, 230, 125, 224, 54, 72, 244, 4, 4, + 175, 178, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 263, 264, 265, 45, 130, 93, + 124, 174, 219, 3, 45, 46, 47, 84, 120, 133, + 166, 167, 174, 249, 250, 251, 252, 253, 254, 255, + 256, 258, 259, 260, 261, 262, 266, 267, 268, 269, + 270, 195, 3, 299, 63, 227, 155, 178, 236, 90, + 214, 215, 111, 196, 196, 3, 186, 187, 233, 245, + 248, 249, 239, 228, 240, 241, 249, 239, 249, 113, + 249, 263, 270, 285, 3, 223, 3, 27, 60, 201, + 202, 203, 210, 124, 174, 176, 174, 174, 174, 110, + 249, 257, 45, 120, 250, 172, 250, 227, 249, 114, + 131, 17, 53, 100, 120, 127, 128, 134, 135, 155, + 156, 157, 158, 159, 162, 163, 165, 166, 167, 168, + 169, 170, 172, 97, 175, 178, 174, 249, 222, 38, + 48, 174, 175, 178, 93, 234, 235, 178, 3, 124, + 289, 290, 244, 224, 178, 89, 115, 242, 244, 54, + 54, 174, 92, 24, 29, 31, 32, 34, 42, 68, + 85, 87, 88, 102, 106, 108, 118, 204, 119, 174, + 175, 178, 223, 175, 232, 3, 167, 227, 263, 249, + 249, 257, 91, 110, 116, 174, 120, 245, 175, 175, + 249, 249, 250, 250, 100, 127, 174, 103, 120, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 274, 285, 3, 247, 212, 194, + 247, 187, 174, 279, 280, 281, 282, 283, 285, 295, + 236, 248, 3, 241, 249, 249, 299, 195, 30, 174, + 206, 174, 174, 174, 205, 27, 60, 103, 120, 207, + 208, 209, 174, 299, 202, 245, 175, 93, 124, 107, + 91, 116, 249, 249, 227, 173, 114, 250, 174, 227, + 245, 103, 173, 175, 3, 175, 223, 25, 66, 71, + 77, 78, 94, 99, 296, 178, 124, 287, 288, 289, + 69, 237, 175, 174, 6, 6, 6, 6, 119, 103, + 209, 299, 175, 175, 249, 204, 249, 249, 116, 107, + 175, 250, 227, 245, 175, 175, 175, 98, 77, 77, + 77, 98, 280, 3, 125, 6, 175, 178, 175, 175, + 175, 175, 175, 175, 116, 249, 175, 175, 288, 281, + 280, 174, 245, 175, 6, 81, 130, 299, 50, 238, + 175, 174, 249, 297, 175, 249, 3, 269, 175 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 176, 177, 178, 178, 179, 179, 179, 179, 179, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 181, - 181, 182, 182, 183, 183, 184, 184, 184, 185, 185, - 186, 187, 188, 188, 189, 189, 190, 191, 192, 192, - 193, 194, 194, 194, 195, 195, 195, 195, 196, 196, - 197, 197, 198, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 200, 200, 200, 201, 201, 201, 202, - 202, 203, 204, 205, 205, 206, 206, 207, 208, 208, - 209, 210, 210, 210, 211, 211, 212, 212, 213, 213, - 214, 214, 215, 216, 216, 216, 217, 217, 218, 219, - 219, 220, 221, 221, 222, 223, 223, 224, 224, 225, - 225, 226, 226, 227, 227, 228, 229, 229, 229, 230, - 230, 231, 231, 231, 231, 231, 231, 232, 232, 233, - 233, 234, 234, 235, 236, 236, 236, 236, 236, 237, - 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, - 238, 238, 239, 239, 239, 239, 239, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, - 242, 242, 242, 242, 243, 243, 243, 243, 244, 244, - 245, 245, 246, 246, 246, 246, 246, 246, 246, 247, - 247, 248, 249, 250, 250, 250, 250, 250, 250, 251, - 251, 251, 251, 251, 251, 252, 252, 253, 254, 255, - 256, 256, 256, 256, 257, 257, 257, 257, 257, 257, - 257, 258, 259, 259, 260, 260, 261, 262, 263, 264, - 264, 264, 265, 266, 266, 267, 267, 268, 268, 269, - 269, 270, 271, 272, 272, 273, 273, 274, 274, 275, - 275, 276, 276, 277, 277, 278, 279, 279, 280, 281, - 281, 281, 282, 282, 282, 282, 282, 282, 282, 282, - 282, 282, 283, 284, 284, 285, 285 + 0, 180, 181, 182, 182, 183, 183, 183, 183, 183, + 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, + 185, 185, 186, 186, 187, 187, 188, 188, 188, 189, + 189, 190, 191, 192, 192, 193, 193, 194, 195, 196, + 196, 197, 198, 198, 198, 199, 199, 199, 199, 199, + 200, 200, 201, 201, 202, 202, 203, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 205, 205, 206, 206, 206, 207, 207, 208, 208, + 209, 209, 209, 209, 210, 210, 211, 211, 211, 211, + 212, 212, 213, 214, 215, 216, 217, 218, 218, 219, + 219, 220, 221, 221, 222, 223, 223, 223, 224, 224, + 225, 225, 226, 226, 227, 227, 228, 229, 229, 229, + 230, 230, 231, 232, 232, 233, 234, 234, 235, 236, + 236, 237, 237, 238, 238, 239, 239, 240, 240, 241, + 242, 242, 242, 243, 243, 244, 244, 244, 244, 244, + 244, 245, 245, 246, 246, 247, 247, 248, 249, 249, + 249, 249, 249, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 251, 251, 252, 252, 252, 252, + 252, 253, 253, 253, 253, 253, 253, 253, 253, 253, + 253, 253, 254, 254, 255, 255, 255, 255, 256, 256, + 256, 256, 257, 257, 258, 258, 259, 259, 259, 259, + 259, 259, 259, 260, 260, 261, 262, 263, 263, 263, + 263, 263, 263, 264, 264, 264, 264, 264, 264, 265, + 265, 266, 267, 268, 269, 269, 269, 269, 270, 270, + 270, 270, 270, 270, 270, 271, 272, 272, 273, 273, + 274, 275, 276, 277, 277, 277, 278, 279, 279, 280, + 280, 281, 281, 282, 282, 283, 284, 285, 285, 286, + 286, 287, 287, 288, 288, 289, 289, 290, 290, 291, + 291, 292, 293, 293, 294, 295, 295, 295, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 297, 298, + 298, 299, 299 }; - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { 0, 2, 2, 1, 3, 2, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, - 0, 1, 3, 1, 4, 2, 2, 2, 1, 0, - 4, 1, 2, 5, 7, 5, 1, 1, 3, 0, - 5, 2, 3, 2, 8, 7, 6, 7, 3, 0, - 1, 3, 3, 1, 1, 1, 1, 1, 4, 4, - 1, 1, 1, 1, 2, 0, 4, 4, 3, 2, - 0, 4, 2, 8, 5, 3, 0, 5, 1, 3, - 3, 2, 2, 6, 1, 1, 1, 3, 3, 3, - 3, 5, 2, 1, 1, 1, 1, 0, 7, 1, - 0, 1, 1, 0, 2, 2, 0, 4, 0, 2, - 0, 3, 0, 1, 3, 2, 1, 1, 0, 2, - 0, 2, 2, 4, 2, 4, 0, 1, 3, 1, - 0, 1, 3, 2, 1, 1, 1, 1, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 1, 1, 2, 2, 2, 3, 4, 1, 3, 3, - 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, - 5, 6, 5, 6, 4, 6, 3, 5, 4, 5, - 4, 5, 3, 3, 3, 3, 3, 3, 3, 3, - 5, 6, 6, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 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, 5, 1, 0, 2, - 1, 1, 0, 1, 0, 2, 1, 3, 3, 4, - 6, 8, 1, 2, 1, 2, 1, 2, 1, 1, - 1, 0, 1, 1, 0, 1, 3 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 5, 0, 1, 3, 1, 4, 2, 2, 2, 1, + 0, 4, 1, 2, 5, 7, 5, 1, 1, 3, + 0, 5, 2, 3, 2, 8, 7, 6, 9, 7, + 3, 0, 1, 3, 1, 1, 3, 1, 1, 1, + 1, 2, 1, 1, 4, 5, 4, 1, 2, 1, + 1, 3, 0, 5, 3, 0, 1, 0, 1, 2, + 2, 1, 1, 2, 5, 4, 4, 4, 3, 4, + 2, 0, 5, 1, 4, 4, 2, 8, 5, 3, + 0, 5, 1, 3, 3, 2, 2, 6, 1, 1, + 1, 3, 3, 3, 3, 5, 2, 1, 1, 1, + 1, 0, 7, 1, 0, 1, 1, 0, 2, 2, + 0, 4, 0, 2, 0, 3, 0, 1, 3, 2, + 1, 1, 0, 2, 0, 2, 2, 4, 2, 4, + 0, 1, 3, 1, 0, 1, 3, 2, 1, 1, + 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 1, 2, 2, 2, 3, + 4, 1, 3, 3, 3, 3, 3, 3, 3, 4, + 3, 3, 3, 3, 5, 6, 5, 6, 4, 6, + 3, 5, 4, 5, 4, 5, 3, 3, 3, 3, + 3, 3, 3, 3, 5, 6, 6, 1, 1, 1, + 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, 2, 1, 3, 3, 4, 6, 8, 1, 2, + 1, 2, 1, 2, 1, 1, 1, 0, 1, 1, + 0, 1, 3 }; @@ -1396,6 +1445,7 @@ enum { YYENOMEM = -2 }; #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) @@ -1463,12 +1513,19 @@ do { \ } while (0) -/* YY_LOCATION_PRINT -- Print the location on the stream. +/* YYLOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ -# ifndef YY_LOCATION_PRINT -# if defined HSQL_LTYPE_IS_TRIVIAL && HSQL_LTYPE_IS_TRIVIAL +# ifndef YYLOCATION_PRINT + +# if defined YY_LOCATION_PRINT + + /* Temporary convenience wrapper in case some people defined the + undocumented and private YY_LOCATION_PRINT macros. */ +# define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc)) + +# elif defined HSQL_LTYPE_IS_TRIVIAL && HSQL_LTYPE_IS_TRIVIAL /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ @@ -1496,15 +1553,23 @@ yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) res += YYFPRINTF (yyo, "-%d", end_col); } return res; - } +} + +# define YYLOCATION_PRINT yy_location_print_ -# define YY_LOCATION_PRINT(File, Loc) \ - yy_location_print_ (File, &(Loc)) + /* Temporary convenience wrapper in case some people defined the + undocumented and private YY_LOCATION_PRINT macros. */ +# define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc)) # else -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) + +# define YYLOCATION_PRINT(File, Loc) ((void) 0) + /* Temporary convenience wrapper in case some people defined the + undocumented and private YY_LOCATION_PRINT macros. */ +# define YY_LOCATION_PRINT YYLOCATION_PRINT + # endif -# endif /* !defined YY_LOCATION_PRINT */ +# endif /* !defined YYLOCATION_PRINT */ # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ @@ -1534,10 +1599,6 @@ yy_symbol_value_print (FILE *yyo, YY_USE (scanner); if (!yyvaluep) return; -# ifdef YYPRINT - if (yykind < YYNTOKENS) - YYPRINT (yyo, yytoknum[yykind], *yyvaluep); -# endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END @@ -1555,7 +1616,7 @@ yy_symbol_print (FILE *yyo, YYFPRINTF (yyo, "%s %s (", yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); - YY_LOCATION_PRINT (yyo, *yylocationp); + YYLOCATION_PRINT (yyo, yylocationp); YYFPRINTF (yyo, ": "); yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, result, scanner); YYFPRINTF (yyo, ")"); @@ -1936,31 +1997,31 @@ yydestruct (const char *yymsg, switch (yykind) { case YYSYMBOL_IDENTIFIER: /* IDENTIFIER */ -#line 149 "bison_parser.y" +#line 158 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 1942 "bison_parser.cpp" +#line 2003 "bison_parser.cpp" break; case YYSYMBOL_STRING: /* STRING */ -#line 149 "bison_parser.y" +#line 158 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 1948 "bison_parser.cpp" +#line 2009 "bison_parser.cpp" break; case YYSYMBOL_FLOATVAL: /* FLOATVAL */ -#line 147 "bison_parser.y" +#line 156 "bison_parser.y" { } -#line 1954 "bison_parser.cpp" +#line 2015 "bison_parser.cpp" break; case YYSYMBOL_INTVAL: /* INTVAL */ -#line 147 "bison_parser.y" +#line 156 "bison_parser.y" { } -#line 1960 "bison_parser.cpp" +#line 2021 "bison_parser.cpp" break; case YYSYMBOL_statement_list: /* statement_list */ -#line 150 "bison_parser.y" +#line 159 "bison_parser.y" { if ((((*yyvaluep).stmt_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).stmt_vec))) { @@ -1969,23 +2030,23 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).stmt_vec)); } -#line 1973 "bison_parser.cpp" +#line 2034 "bison_parser.cpp" break; case YYSYMBOL_statement: /* statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 1979 "bison_parser.cpp" +#line 2040 "bison_parser.cpp" break; case YYSYMBOL_preparable_statement: /* preparable_statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 1985 "bison_parser.cpp" +#line 2046 "bison_parser.cpp" break; case YYSYMBOL_opt_hints: /* opt_hints */ -#line 150 "bison_parser.y" +#line 159 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1994,11 +2055,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 1998 "bison_parser.cpp" +#line 2059 "bison_parser.cpp" break; case YYSYMBOL_hint_list: /* hint_list */ -#line 150 "bison_parser.y" +#line 159 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2007,150 +2068,204 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2011 "bison_parser.cpp" +#line 2072 "bison_parser.cpp" break; case YYSYMBOL_hint: /* hint */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2017 "bison_parser.cpp" +#line 2078 "bison_parser.cpp" break; case YYSYMBOL_transaction_statement: /* transaction_statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).transaction_stmt)); } -#line 2023 "bison_parser.cpp" +#line 2084 "bison_parser.cpp" break; case YYSYMBOL_prepare_statement: /* prepare_statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).prep_stmt)); } -#line 2029 "bison_parser.cpp" +#line 2090 "bison_parser.cpp" break; case YYSYMBOL_prepare_target_query: /* prepare_target_query */ -#line 149 "bison_parser.y" +#line 158 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2035 "bison_parser.cpp" +#line 2096 "bison_parser.cpp" break; case YYSYMBOL_execute_statement: /* execute_statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).exec_stmt)); } -#line 2041 "bison_parser.cpp" +#line 2102 "bison_parser.cpp" break; case YYSYMBOL_import_statement: /* import_statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).import_stmt)); } -#line 2047 "bison_parser.cpp" +#line 2108 "bison_parser.cpp" break; case YYSYMBOL_file_type: /* file_type */ -#line 147 "bison_parser.y" +#line 156 "bison_parser.y" { } -#line 2053 "bison_parser.cpp" +#line 2114 "bison_parser.cpp" break; case YYSYMBOL_file_path: /* file_path */ -#line 149 "bison_parser.y" +#line 158 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2059 "bison_parser.cpp" +#line 2120 "bison_parser.cpp" break; case YYSYMBOL_opt_file_type: /* opt_file_type */ -#line 147 "bison_parser.y" +#line 156 "bison_parser.y" { } -#line 2065 "bison_parser.cpp" +#line 2126 "bison_parser.cpp" break; case YYSYMBOL_export_statement: /* export_statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).export_stmt)); } -#line 2071 "bison_parser.cpp" +#line 2132 "bison_parser.cpp" break; case YYSYMBOL_show_statement: /* show_statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).show_stmt)); } -#line 2077 "bison_parser.cpp" +#line 2138 "bison_parser.cpp" break; case YYSYMBOL_create_statement: /* create_statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).create_stmt)); } -#line 2083 "bison_parser.cpp" +#line 2144 "bison_parser.cpp" break; case YYSYMBOL_opt_not_exists: /* opt_not_exists */ -#line 147 "bison_parser.y" +#line 156 "bison_parser.y" { } -#line 2089 "bison_parser.cpp" +#line 2150 "bison_parser.cpp" break; - case YYSYMBOL_column_def_commalist: /* column_def_commalist */ -#line 150 "bison_parser.y" + case YYSYMBOL_table_elem_commalist: /* table_elem_commalist */ +#line 159 "bison_parser.y" { - if ((((*yyvaluep).column_vec)) != nullptr) { - for (auto ptr : *(((*yyvaluep).column_vec))) { + if ((((*yyvaluep).table_element_vec)) != nullptr) { + for (auto ptr : *(((*yyvaluep).table_element_vec))) { delete ptr; } } - delete (((*yyvaluep).column_vec)); + delete (((*yyvaluep).table_element_vec)); } -#line 2102 "bison_parser.cpp" +#line 2163 "bison_parser.cpp" + break; + + case YYSYMBOL_table_elem: /* table_elem */ +#line 167 "bison_parser.y" + { delete (((*yyvaluep).table_element_t)); } +#line 2169 "bison_parser.cpp" break; case YYSYMBOL_column_def: /* column_def */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).column_t)); } -#line 2108 "bison_parser.cpp" +#line 2175 "bison_parser.cpp" break; case YYSYMBOL_column_type: /* column_type */ -#line 147 "bison_parser.y" +#line 156 "bison_parser.y" { } -#line 2114 "bison_parser.cpp" +#line 2181 "bison_parser.cpp" break; - case YYSYMBOL_opt_column_nullable: /* opt_column_nullable */ -#line 147 "bison_parser.y" + case YYSYMBOL_opt_time_specification: /* opt_time_specification */ +#line 156 "bison_parser.y" { } -#line 2120 "bison_parser.cpp" +#line 2187 "bison_parser.cpp" + break; + + case YYSYMBOL_opt_decimal_specification: /* opt_decimal_specification */ +#line 156 "bison_parser.y" + { } +#line 2193 "bison_parser.cpp" + break; + + case YYSYMBOL_opt_column_constraints: /* opt_column_constraints */ +#line 156 "bison_parser.y" + { } +#line 2199 "bison_parser.cpp" + break; + + case YYSYMBOL_column_constraint_list: /* column_constraint_list */ +#line 156 "bison_parser.y" + { } +#line 2205 "bison_parser.cpp" + break; + + case YYSYMBOL_column_constraint: /* column_constraint */ +#line 156 "bison_parser.y" + { } +#line 2211 "bison_parser.cpp" + break; + + case YYSYMBOL_table_constraint: /* table_constraint */ +#line 167 "bison_parser.y" + { delete (((*yyvaluep).table_constraint_t)); } +#line 2217 "bison_parser.cpp" break; case YYSYMBOL_drop_statement: /* drop_statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).drop_stmt)); } -#line 2126 "bison_parser.cpp" +#line 2223 "bison_parser.cpp" break; case YYSYMBOL_opt_exists: /* opt_exists */ -#line 147 "bison_parser.y" +#line 156 "bison_parser.y" { } -#line 2132 "bison_parser.cpp" +#line 2229 "bison_parser.cpp" + break; + + case YYSYMBOL_alter_statement: /* alter_statement */ +#line 167 "bison_parser.y" + { delete (((*yyvaluep).alter_stmt)); } +#line 2235 "bison_parser.cpp" + break; + + case YYSYMBOL_alter_action: /* alter_action */ +#line 167 "bison_parser.y" + { delete (((*yyvaluep).alter_action_t)); } +#line 2241 "bison_parser.cpp" + break; + + case YYSYMBOL_drop_action: /* drop_action */ +#line 167 "bison_parser.y" + { delete (((*yyvaluep).drop_action_t)); } +#line 2247 "bison_parser.cpp" break; case YYSYMBOL_delete_statement: /* delete_statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2138 "bison_parser.cpp" +#line 2253 "bison_parser.cpp" break; case YYSYMBOL_truncate_statement: /* truncate_statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2144 "bison_parser.cpp" +#line 2259 "bison_parser.cpp" break; case YYSYMBOL_insert_statement: /* insert_statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).insert_stmt)); } -#line 2150 "bison_parser.cpp" +#line 2265 "bison_parser.cpp" break; case YYSYMBOL_opt_column_list: /* opt_column_list */ -#line 150 "bison_parser.y" +#line 159 "bison_parser.y" { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2159,17 +2274,17 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2163 "bison_parser.cpp" +#line 2278 "bison_parser.cpp" break; case YYSYMBOL_update_statement: /* update_statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } -#line 2169 "bison_parser.cpp" +#line 2284 "bison_parser.cpp" break; case YYSYMBOL_update_clause_commalist: /* update_clause_commalist */ -#line 150 "bison_parser.y" +#line 159 "bison_parser.y" { if ((((*yyvaluep).update_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).update_vec))) { @@ -2178,77 +2293,77 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).update_vec)); } -#line 2182 "bison_parser.cpp" +#line 2297 "bison_parser.cpp" break; case YYSYMBOL_update_clause: /* update_clause */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).update_t)); } -#line 2188 "bison_parser.cpp" +#line 2303 "bison_parser.cpp" break; case YYSYMBOL_select_statement: /* select_statement */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2194 "bison_parser.cpp" +#line 2309 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation: /* select_within_set_operation */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2200 "bison_parser.cpp" +#line 2315 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation_no_parentheses: /* select_within_set_operation_no_parentheses */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2206 "bison_parser.cpp" +#line 2321 "bison_parser.cpp" break; case YYSYMBOL_select_with_paren: /* select_with_paren */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2212 "bison_parser.cpp" +#line 2327 "bison_parser.cpp" break; case YYSYMBOL_select_no_paren: /* select_no_paren */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2218 "bison_parser.cpp" +#line 2333 "bison_parser.cpp" break; case YYSYMBOL_set_operator: /* set_operator */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2224 "bison_parser.cpp" +#line 2339 "bison_parser.cpp" break; case YYSYMBOL_set_type: /* set_type */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2230 "bison_parser.cpp" +#line 2345 "bison_parser.cpp" break; case YYSYMBOL_opt_all: /* opt_all */ -#line 147 "bison_parser.y" +#line 156 "bison_parser.y" { } -#line 2236 "bison_parser.cpp" +#line 2351 "bison_parser.cpp" break; case YYSYMBOL_select_clause: /* select_clause */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2242 "bison_parser.cpp" +#line 2357 "bison_parser.cpp" break; case YYSYMBOL_opt_distinct: /* opt_distinct */ -#line 147 "bison_parser.y" +#line 156 "bison_parser.y" { } -#line 2248 "bison_parser.cpp" +#line 2363 "bison_parser.cpp" break; case YYSYMBOL_select_list: /* select_list */ -#line 150 "bison_parser.y" +#line 159 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2257,41 +2372,41 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2261 "bison_parser.cpp" +#line 2376 "bison_parser.cpp" break; case YYSYMBOL_opt_from_clause: /* opt_from_clause */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2267 "bison_parser.cpp" +#line 2382 "bison_parser.cpp" break; case YYSYMBOL_from_clause: /* from_clause */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2273 "bison_parser.cpp" +#line 2388 "bison_parser.cpp" break; case YYSYMBOL_opt_where: /* opt_where */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2279 "bison_parser.cpp" +#line 2394 "bison_parser.cpp" break; case YYSYMBOL_opt_group: /* opt_group */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).group_t)); } -#line 2285 "bison_parser.cpp" +#line 2400 "bison_parser.cpp" break; case YYSYMBOL_opt_having: /* opt_having */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2291 "bison_parser.cpp" +#line 2406 "bison_parser.cpp" break; case YYSYMBOL_opt_order: /* opt_order */ -#line 150 "bison_parser.y" +#line 159 "bison_parser.y" { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2300,11 +2415,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2304 "bison_parser.cpp" +#line 2419 "bison_parser.cpp" break; case YYSYMBOL_order_list: /* order_list */ -#line 150 "bison_parser.y" +#line 159 "bison_parser.y" { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2313,35 +2428,35 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2317 "bison_parser.cpp" +#line 2432 "bison_parser.cpp" break; case YYSYMBOL_order_desc: /* order_desc */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).order)); } -#line 2323 "bison_parser.cpp" +#line 2438 "bison_parser.cpp" break; case YYSYMBOL_opt_order_type: /* opt_order_type */ -#line 147 "bison_parser.y" +#line 156 "bison_parser.y" { } -#line 2329 "bison_parser.cpp" +#line 2444 "bison_parser.cpp" break; case YYSYMBOL_opt_top: /* opt_top */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2335 "bison_parser.cpp" +#line 2450 "bison_parser.cpp" break; case YYSYMBOL_opt_limit: /* opt_limit */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2341 "bison_parser.cpp" +#line 2456 "bison_parser.cpp" break; case YYSYMBOL_expr_list: /* expr_list */ -#line 150 "bison_parser.y" +#line 159 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2350,11 +2465,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2354 "bison_parser.cpp" +#line 2469 "bison_parser.cpp" break; case YYSYMBOL_opt_literal_list: /* opt_literal_list */ -#line 150 "bison_parser.y" +#line 159 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2363,11 +2478,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2367 "bison_parser.cpp" +#line 2482 "bison_parser.cpp" break; case YYSYMBOL_literal_list: /* literal_list */ -#line 150 "bison_parser.y" +#line 159 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2376,215 +2491,215 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2380 "bison_parser.cpp" +#line 2495 "bison_parser.cpp" break; case YYSYMBOL_expr_alias: /* expr_alias */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2386 "bison_parser.cpp" +#line 2501 "bison_parser.cpp" break; case YYSYMBOL_expr: /* expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2392 "bison_parser.cpp" +#line 2507 "bison_parser.cpp" break; case YYSYMBOL_operand: /* operand */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2398 "bison_parser.cpp" +#line 2513 "bison_parser.cpp" break; case YYSYMBOL_scalar_expr: /* scalar_expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2404 "bison_parser.cpp" +#line 2519 "bison_parser.cpp" break; case YYSYMBOL_unary_expr: /* unary_expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2410 "bison_parser.cpp" +#line 2525 "bison_parser.cpp" break; case YYSYMBOL_binary_expr: /* binary_expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2416 "bison_parser.cpp" +#line 2531 "bison_parser.cpp" break; case YYSYMBOL_logic_expr: /* logic_expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2422 "bison_parser.cpp" +#line 2537 "bison_parser.cpp" break; case YYSYMBOL_in_expr: /* in_expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2428 "bison_parser.cpp" +#line 2543 "bison_parser.cpp" break; case YYSYMBOL_case_expr: /* case_expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2434 "bison_parser.cpp" +#line 2549 "bison_parser.cpp" break; case YYSYMBOL_case_list: /* case_list */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2440 "bison_parser.cpp" +#line 2555 "bison_parser.cpp" break; case YYSYMBOL_exists_expr: /* exists_expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2446 "bison_parser.cpp" +#line 2561 "bison_parser.cpp" break; case YYSYMBOL_comp_expr: /* comp_expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2452 "bison_parser.cpp" +#line 2567 "bison_parser.cpp" break; case YYSYMBOL_function_expr: /* function_expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2458 "bison_parser.cpp" +#line 2573 "bison_parser.cpp" break; case YYSYMBOL_extract_expr: /* extract_expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2464 "bison_parser.cpp" +#line 2579 "bison_parser.cpp" break; case YYSYMBOL_cast_expr: /* cast_expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2470 "bison_parser.cpp" +#line 2585 "bison_parser.cpp" break; case YYSYMBOL_datetime_field: /* datetime_field */ -#line 147 "bison_parser.y" +#line 156 "bison_parser.y" { } -#line 2476 "bison_parser.cpp" +#line 2591 "bison_parser.cpp" break; case YYSYMBOL_datetime_field_plural: /* datetime_field_plural */ -#line 147 "bison_parser.y" +#line 156 "bison_parser.y" { } -#line 2482 "bison_parser.cpp" +#line 2597 "bison_parser.cpp" break; case YYSYMBOL_duration_field: /* duration_field */ -#line 147 "bison_parser.y" +#line 156 "bison_parser.y" { } -#line 2488 "bison_parser.cpp" +#line 2603 "bison_parser.cpp" break; case YYSYMBOL_array_expr: /* array_expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2494 "bison_parser.cpp" +#line 2609 "bison_parser.cpp" break; case YYSYMBOL_array_index: /* array_index */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2500 "bison_parser.cpp" +#line 2615 "bison_parser.cpp" break; case YYSYMBOL_between_expr: /* between_expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2506 "bison_parser.cpp" +#line 2621 "bison_parser.cpp" break; case YYSYMBOL_column_name: /* column_name */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2512 "bison_parser.cpp" +#line 2627 "bison_parser.cpp" break; case YYSYMBOL_literal: /* literal */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2518 "bison_parser.cpp" +#line 2633 "bison_parser.cpp" break; case YYSYMBOL_string_literal: /* string_literal */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2524 "bison_parser.cpp" +#line 2639 "bison_parser.cpp" break; case YYSYMBOL_bool_literal: /* bool_literal */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2530 "bison_parser.cpp" +#line 2645 "bison_parser.cpp" break; case YYSYMBOL_num_literal: /* num_literal */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2536 "bison_parser.cpp" +#line 2651 "bison_parser.cpp" break; case YYSYMBOL_int_literal: /* int_literal */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2542 "bison_parser.cpp" +#line 2657 "bison_parser.cpp" break; case YYSYMBOL_null_literal: /* null_literal */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2548 "bison_parser.cpp" +#line 2663 "bison_parser.cpp" break; case YYSYMBOL_date_literal: /* date_literal */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2554 "bison_parser.cpp" +#line 2669 "bison_parser.cpp" break; case YYSYMBOL_interval_literal: /* interval_literal */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2560 "bison_parser.cpp" +#line 2675 "bison_parser.cpp" break; case YYSYMBOL_param_expr: /* param_expr */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2566 "bison_parser.cpp" +#line 2681 "bison_parser.cpp" break; case YYSYMBOL_table_ref: /* table_ref */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2572 "bison_parser.cpp" +#line 2687 "bison_parser.cpp" break; case YYSYMBOL_table_ref_atomic: /* table_ref_atomic */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2578 "bison_parser.cpp" +#line 2693 "bison_parser.cpp" break; case YYSYMBOL_nonjoin_table_ref_atomic: /* nonjoin_table_ref_atomic */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2584 "bison_parser.cpp" +#line 2699 "bison_parser.cpp" break; case YYSYMBOL_table_ref_commalist: /* table_ref_commalist */ -#line 150 "bison_parser.y" +#line 159 "bison_parser.y" { if ((((*yyvaluep).table_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).table_vec))) { @@ -2593,95 +2708,101 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_vec)); } -#line 2597 "bison_parser.cpp" +#line 2712 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name: /* table_ref_name */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2603 "bison_parser.cpp" +#line 2718 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name_no_alias: /* table_ref_name_no_alias */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2609 "bison_parser.cpp" +#line 2724 "bison_parser.cpp" break; case YYSYMBOL_table_name: /* table_name */ -#line 148 "bison_parser.y" +#line 157 "bison_parser.y" { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } -#line 2615 "bison_parser.cpp" +#line 2730 "bison_parser.cpp" break; - case YYSYMBOL_table_alias: /* table_alias */ + case YYSYMBOL_opt_index_name: /* opt_index_name */ #line 158 "bison_parser.y" + { free( (((*yyvaluep).sval)) ); } +#line 2736 "bison_parser.cpp" + break; + + case YYSYMBOL_table_alias: /* table_alias */ +#line 167 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2621 "bison_parser.cpp" +#line 2742 "bison_parser.cpp" break; case YYSYMBOL_opt_table_alias: /* opt_table_alias */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2627 "bison_parser.cpp" +#line 2748 "bison_parser.cpp" break; case YYSYMBOL_alias: /* alias */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2633 "bison_parser.cpp" +#line 2754 "bison_parser.cpp" break; case YYSYMBOL_opt_alias: /* opt_alias */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2639 "bison_parser.cpp" +#line 2760 "bison_parser.cpp" break; case YYSYMBOL_opt_with_clause: /* opt_with_clause */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2645 "bison_parser.cpp" +#line 2766 "bison_parser.cpp" break; case YYSYMBOL_with_clause: /* with_clause */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2651 "bison_parser.cpp" +#line 2772 "bison_parser.cpp" break; case YYSYMBOL_with_description_list: /* with_description_list */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2657 "bison_parser.cpp" +#line 2778 "bison_parser.cpp" break; case YYSYMBOL_with_description: /* with_description */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).with_description_t)); } -#line 2663 "bison_parser.cpp" +#line 2784 "bison_parser.cpp" break; case YYSYMBOL_join_clause: /* join_clause */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2669 "bison_parser.cpp" +#line 2790 "bison_parser.cpp" break; case YYSYMBOL_opt_join_type: /* opt_join_type */ -#line 147 "bison_parser.y" +#line 156 "bison_parser.y" { } -#line 2675 "bison_parser.cpp" +#line 2796 "bison_parser.cpp" break; case YYSYMBOL_join_condition: /* join_condition */ -#line 158 "bison_parser.y" +#line 167 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2681 "bison_parser.cpp" +#line 2802 "bison_parser.cpp" break; case YYSYMBOL_ident_commalist: /* ident_commalist */ -#line 150 "bison_parser.y" +#line 159 "bison_parser.y" { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2690,7 +2811,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2694 "bison_parser.cpp" +#line 2815 "bison_parser.cpp" break; default: @@ -2785,6 +2906,7 @@ YYLTYPE yylloc = yyloc_default; yychar = SQL_HSQL_EMPTY; /* Cause a token to be read. */ + /* User initialization code. */ #line 73 "bison_parser.y" { @@ -2797,7 +2919,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 2801 "bison_parser.cpp" +#line 2923 "bison_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -2825,7 +2947,7 @@ YYLTYPE yylloc = yyloc_default; if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; + YYNOMEM; #else { /* Get the current used size of the three stacks, in elements. */ @@ -2856,7 +2978,7 @@ YYLTYPE yylloc = yyloc_default; # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; @@ -2867,7 +2989,7 @@ YYLTYPE yylloc = yyloc_default; YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) - goto yyexhaustedlab; + YYNOMEM; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); YYSTACK_RELOCATE (yyls_alloc, yyls); @@ -2891,6 +3013,7 @@ YYLTYPE yylloc = yyloc_default; } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + if (yystate == YYFINAL) YYACCEPT; @@ -3007,7 +3130,7 @@ YYLTYPE yylloc = yyloc_default; switch (yyn) { case 2: /* input: statement_list opt_semicolon */ -#line 270 "bison_parser.y" +#line 290 "bison_parser.y" { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -3025,247 +3148,253 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].stmt_vec); } -#line 3029 "bison_parser.cpp" +#line 3152 "bison_parser.cpp" break; case 3: /* statement_list: statement */ -#line 291 "bison_parser.y" +#line 311 "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 3040 "bison_parser.cpp" +#line 3163 "bison_parser.cpp" break; case 4: /* statement_list: statement_list ';' statement */ -#line 297 "bison_parser.y" +#line 317 "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 3051 "bison_parser.cpp" +#line 3174 "bison_parser.cpp" break; case 5: /* statement: prepare_statement opt_hints */ -#line 306 "bison_parser.y" +#line 326 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3060 "bison_parser.cpp" +#line 3183 "bison_parser.cpp" break; case 6: /* statement: preparable_statement opt_hints */ -#line 310 "bison_parser.y" +#line 330 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3069 "bison_parser.cpp" +#line 3192 "bison_parser.cpp" break; case 7: /* statement: show_statement */ -#line 314 "bison_parser.y" +#line 334 "bison_parser.y" { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 3077 "bison_parser.cpp" +#line 3200 "bison_parser.cpp" break; case 8: /* statement: import_statement */ -#line 317 "bison_parser.y" +#line 337 "bison_parser.y" { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 3085 "bison_parser.cpp" +#line 3208 "bison_parser.cpp" break; case 9: /* statement: export_statement */ -#line 320 "bison_parser.y" +#line 340 "bison_parser.y" { (yyval.statement) = (yyvsp[0].export_stmt); } -#line 3093 "bison_parser.cpp" +#line 3216 "bison_parser.cpp" break; case 10: /* preparable_statement: select_statement */ -#line 327 "bison_parser.y" +#line 347 "bison_parser.y" { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 3099 "bison_parser.cpp" +#line 3222 "bison_parser.cpp" break; case 11: /* preparable_statement: create_statement */ -#line 328 "bison_parser.y" +#line 348 "bison_parser.y" { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 3105 "bison_parser.cpp" +#line 3228 "bison_parser.cpp" break; case 12: /* preparable_statement: insert_statement */ -#line 329 "bison_parser.y" +#line 349 "bison_parser.y" { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 3111 "bison_parser.cpp" +#line 3234 "bison_parser.cpp" break; case 13: /* preparable_statement: delete_statement */ -#line 330 "bison_parser.y" +#line 350 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3117 "bison_parser.cpp" +#line 3240 "bison_parser.cpp" break; case 14: /* preparable_statement: truncate_statement */ -#line 331 "bison_parser.y" +#line 351 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3123 "bison_parser.cpp" +#line 3246 "bison_parser.cpp" break; case 15: /* preparable_statement: update_statement */ -#line 332 "bison_parser.y" +#line 352 "bison_parser.y" { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 3129 "bison_parser.cpp" +#line 3252 "bison_parser.cpp" break; case 16: /* preparable_statement: drop_statement */ -#line 333 "bison_parser.y" +#line 353 "bison_parser.y" { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 3135 "bison_parser.cpp" +#line 3258 "bison_parser.cpp" break; - case 17: /* preparable_statement: execute_statement */ -#line 334 "bison_parser.y" + case 17: /* preparable_statement: alter_statement */ +#line 354 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].alter_stmt); } +#line 3264 "bison_parser.cpp" + break; + + case 18: /* preparable_statement: execute_statement */ +#line 355 "bison_parser.y" { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 3141 "bison_parser.cpp" +#line 3270 "bison_parser.cpp" break; - case 18: /* preparable_statement: transaction_statement */ -#line 335 "bison_parser.y" + case 19: /* preparable_statement: transaction_statement */ +#line 356 "bison_parser.y" { (yyval.statement) = (yyvsp[0].transaction_stmt); } -#line 3147 "bison_parser.cpp" +#line 3276 "bison_parser.cpp" break; - case 19: /* opt_hints: WITH HINT '(' hint_list ')' */ -#line 344 "bison_parser.y" + case 20: /* opt_hints: WITH HINT '(' hint_list ')' */ +#line 365 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 3153 "bison_parser.cpp" +#line 3282 "bison_parser.cpp" break; - case 20: /* opt_hints: %empty */ -#line 345 "bison_parser.y" + case 21: /* opt_hints: %empty */ +#line 366 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 3159 "bison_parser.cpp" +#line 3288 "bison_parser.cpp" break; - case 21: /* hint_list: hint */ -#line 350 "bison_parser.y" + case 22: /* hint_list: hint */ +#line 371 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3165 "bison_parser.cpp" +#line 3294 "bison_parser.cpp" break; - case 22: /* hint_list: hint_list ',' hint */ -#line 351 "bison_parser.y" + case 23: /* hint_list: hint_list ',' hint */ +#line 372 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3171 "bison_parser.cpp" +#line 3300 "bison_parser.cpp" break; - case 23: /* hint: IDENTIFIER */ -#line 355 "bison_parser.y" + case 24: /* hint: IDENTIFIER */ +#line 376 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 3180 "bison_parser.cpp" +#line 3309 "bison_parser.cpp" break; - case 24: /* hint: IDENTIFIER '(' literal_list ')' */ -#line 359 "bison_parser.y" + case 25: /* hint: IDENTIFIER '(' literal_list ')' */ +#line 380 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 3190 "bison_parser.cpp" +#line 3319 "bison_parser.cpp" break; - case 25: /* transaction_statement: BEGIN opt_transaction_keyword */ -#line 371 "bison_parser.y" + case 26: /* transaction_statement: BEGIN opt_transaction_keyword */ +#line 392 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kBeginTransaction); } -#line 3198 "bison_parser.cpp" +#line 3327 "bison_parser.cpp" break; - case 26: /* transaction_statement: ROLLBACK opt_transaction_keyword */ -#line 374 "bison_parser.y" + case 27: /* transaction_statement: ROLLBACK opt_transaction_keyword */ +#line 395 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kRollbackTransaction); } -#line 3206 "bison_parser.cpp" +#line 3335 "bison_parser.cpp" break; - case 27: /* transaction_statement: COMMIT opt_transaction_keyword */ -#line 377 "bison_parser.y" + case 28: /* transaction_statement: COMMIT opt_transaction_keyword */ +#line 398 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kCommitTransaction); } -#line 3214 "bison_parser.cpp" +#line 3343 "bison_parser.cpp" break; - case 30: /* prepare_statement: PREPARE IDENTIFIER FROM prepare_target_query */ -#line 391 "bison_parser.y" + case 31: /* prepare_statement: PREPARE IDENTIFIER FROM prepare_target_query */ +#line 412 "bison_parser.y" { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 3224 "bison_parser.cpp" +#line 3353 "bison_parser.cpp" break; - case 32: /* execute_statement: EXECUTE IDENTIFIER */ -#line 401 "bison_parser.y" + case 33: /* execute_statement: EXECUTE IDENTIFIER */ +#line 422 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 3233 "bison_parser.cpp" +#line 3362 "bison_parser.cpp" break; - case 33: /* execute_statement: EXECUTE IDENTIFIER '(' opt_literal_list ')' */ -#line 405 "bison_parser.y" + case 34: /* execute_statement: EXECUTE IDENTIFIER '(' opt_literal_list ')' */ +#line 426 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 3243 "bison_parser.cpp" +#line 3372 "bison_parser.cpp" break; - case 34: /* import_statement: IMPORT FROM file_type FILE file_path INTO table_name */ -#line 419 "bison_parser.y" + case 35: /* import_statement: IMPORT FROM file_type FILE file_path INTO table_name */ +#line 440 "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 3254 "bison_parser.cpp" +#line 3383 "bison_parser.cpp" break; - case 35: /* import_statement: COPY table_name FROM file_path opt_file_type */ -#line 425 "bison_parser.y" + case 36: /* import_statement: COPY table_name FROM file_path opt_file_type */ +#line 446 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[0].import_type_t)); (yyval.import_stmt)->filePath = (yyvsp[-1].sval); (yyval.import_stmt)->schema = (yyvsp[-3].table_name).schema; (yyval.import_stmt)->tableName = (yyvsp[-3].table_name).name; } -#line 3265 "bison_parser.cpp" +#line 3394 "bison_parser.cpp" break; - case 36: /* file_type: IDENTIFIER */ -#line 434 "bison_parser.y" + case 37: /* file_type: IDENTIFIER */ +#line 455 "bison_parser.y" { if (strcasecmp((yyvsp[0].sval), "csv") == 0) { (yyval.import_type_t) = kImportCSV; @@ -3280,70 +3409,70 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[0].sval)); } -#line 3284 "bison_parser.cpp" +#line 3413 "bison_parser.cpp" break; - case 37: /* file_path: string_literal */ -#line 451 "bison_parser.y" + case 38: /* file_path: string_literal */ +#line 472 "bison_parser.y" { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 3290 "bison_parser.cpp" +#line 3419 "bison_parser.cpp" break; - case 38: /* opt_file_type: WITH FORMAT file_type */ -#line 455 "bison_parser.y" + case 39: /* opt_file_type: WITH FORMAT file_type */ +#line 476 "bison_parser.y" { (yyval.import_type_t) = (yyvsp[0].import_type_t); } -#line 3298 "bison_parser.cpp" +#line 3427 "bison_parser.cpp" break; - case 39: /* opt_file_type: %empty */ -#line 458 "bison_parser.y" + case 40: /* opt_file_type: %empty */ +#line 479 "bison_parser.y" { (yyval.import_type_t) = kImportAuto; } -#line 3304 "bison_parser.cpp" +#line 3433 "bison_parser.cpp" break; - case 40: /* export_statement: COPY table_name TO file_path opt_file_type */ -#line 467 "bison_parser.y" + case 41: /* export_statement: COPY table_name TO file_path opt_file_type */ +#line 488 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_type_t)); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); (yyval.export_stmt)->schema = (yyvsp[-3].table_name).schema; (yyval.export_stmt)->tableName = (yyvsp[-3].table_name).name; } -#line 3315 "bison_parser.cpp" +#line 3444 "bison_parser.cpp" break; - case 41: /* show_statement: SHOW TABLES */ -#line 481 "bison_parser.y" + case 42: /* show_statement: SHOW TABLES */ +#line 502 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3323 "bison_parser.cpp" +#line 3452 "bison_parser.cpp" break; - case 42: /* show_statement: SHOW COLUMNS table_name */ -#line 484 "bison_parser.y" + case 43: /* show_statement: SHOW COLUMNS table_name */ +#line 505 "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 3333 "bison_parser.cpp" +#line 3462 "bison_parser.cpp" break; - case 43: /* show_statement: DESCRIBE table_name */ -#line 489 "bison_parser.y" + case 44: /* show_statement: DESCRIBE table_name */ +#line 510 "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 3343 "bison_parser.cpp" +#line 3472 "bison_parser.cpp" break; - case 44: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ -#line 503 "bison_parser.y" + case 45: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ +#line 524 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -3357,23 +3486,24 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3361 "bison_parser.cpp" +#line 3490 "bison_parser.cpp" break; - case 45: /* create_statement: CREATE TABLE opt_not_exists table_name '(' column_def_commalist ')' */ -#line 516 "bison_parser.y" + case 46: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ +#line 537 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); (yyval.create_stmt)->schema = (yyvsp[-3].table_name).schema; (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; - (yyval.create_stmt)->columns = (yyvsp[-1].column_vec); + (yyval.create_stmt)->setColumnDefsAndConstraints((yyvsp[-1].table_element_vec)); + delete (yyvsp[-1].table_element_vec); } -#line 3373 "bison_parser.cpp" +#line 3503 "bison_parser.cpp" break; - case 46: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ -#line 523 "bison_parser.y" + case 47: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ +#line 545 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3381,11 +3511,23 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3385 "bison_parser.cpp" +#line 3515 "bison_parser.cpp" + break; + + case 48: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ +#line 552 "bison_parser.y" + { + (yyval.create_stmt) = new CreateStatement(kCreateIndex); + (yyval.create_stmt)->indexName = (yyvsp[-5].sval); + (yyval.create_stmt)->ifNotExists = (yyvsp[-6].bval); + (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; + (yyval.create_stmt)->indexColumns = (yyvsp[-1].str_vec); + } +#line 3527 "bison_parser.cpp" break; - case 47: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ -#line 530 "bison_parser.y" + case 49: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ +#line 559 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3394,186 +3536,330 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3398 "bison_parser.cpp" +#line 3540 "bison_parser.cpp" break; - case 48: /* opt_not_exists: IF NOT EXISTS */ -#line 541 "bison_parser.y" + case 50: /* opt_not_exists: IF NOT EXISTS */ +#line 570 "bison_parser.y" { (yyval.bval) = true; } -#line 3404 "bison_parser.cpp" +#line 3546 "bison_parser.cpp" break; - case 49: /* opt_not_exists: %empty */ -#line 542 "bison_parser.y" + case 51: /* opt_not_exists: %empty */ +#line 571 "bison_parser.y" { (yyval.bval) = false; } -#line 3410 "bison_parser.cpp" +#line 3552 "bison_parser.cpp" break; - case 50: /* column_def_commalist: column_def */ -#line 546 "bison_parser.y" - { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } -#line 3416 "bison_parser.cpp" + case 52: /* table_elem_commalist: table_elem */ +#line 575 "bison_parser.y" + { (yyval.table_element_vec) = new std::vector(); (yyval.table_element_vec)->push_back((yyvsp[0].table_element_t)); } +#line 3558 "bison_parser.cpp" break; - case 51: /* column_def_commalist: column_def_commalist ',' column_def */ -#line 547 "bison_parser.y" - { (yyvsp[-2].column_vec)->push_back((yyvsp[0].column_t)); (yyval.column_vec) = (yyvsp[-2].column_vec); } -#line 3422 "bison_parser.cpp" + case 53: /* table_elem_commalist: table_elem_commalist ',' table_elem */ +#line 576 "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 3564 "bison_parser.cpp" break; - case 52: /* column_def: IDENTIFIER column_type opt_column_nullable */ -#line 551 "bison_parser.y" - { - (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].bval)); + case 54: /* table_elem: column_def */ +#line 580 "bison_parser.y" + { (yyval.table_element_t) = (yyvsp[0].column_t); } +#line 3570 "bison_parser.cpp" + break; + + case 55: /* table_elem: table_constraint */ +#line 581 "bison_parser.y" + { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } +#line 3576 "bison_parser.cpp" + break; + + case 56: /* column_def: IDENTIFIER column_type opt_column_constraints */ +#line 585 "bison_parser.y" + { + (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].column_constraint_vec)); + (yyval.column_t)->setNullableExplicit(); } -#line 3430 "bison_parser.cpp" +#line 3585 "bison_parser.cpp" break; - case 53: /* column_type: INT */ -#line 557 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3436 "bison_parser.cpp" + case 57: /* column_type: INT */ +#line 592 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::INT}; } +#line 3591 "bison_parser.cpp" break; - case 54: /* column_type: INTEGER */ -#line 558 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3442 "bison_parser.cpp" + case 58: /* column_type: INTEGER */ +#line 593 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::INT}; } +#line 3597 "bison_parser.cpp" break; - case 55: /* column_type: LONG */ -#line 559 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 3448 "bison_parser.cpp" + case 59: /* column_type: LONG */ +#line 594 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::LONG}; } +#line 3603 "bison_parser.cpp" break; - case 56: /* column_type: FLOAT */ -#line 560 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 3454 "bison_parser.cpp" + case 60: /* column_type: FLOAT */ +#line 595 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } +#line 3609 "bison_parser.cpp" break; - case 57: /* column_type: DOUBLE */ -#line 561 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 3460 "bison_parser.cpp" + case 61: /* column_type: DECIMAL opt_decimal_specification */ +#line 596 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::DECIMAL, 0, (yyvsp[0].column_specification_t)}; } +#line 3615 "bison_parser.cpp" break; - case 58: /* column_type: VARCHAR '(' INTVAL ')' */ -#line 562 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3466 "bison_parser.cpp" + case 62: /* column_type: DOUBLE */ +#line 597 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } +#line 3621 "bison_parser.cpp" break; - case 59: /* column_type: CHAR '(' INTVAL ')' */ -#line 563 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3472 "bison_parser.cpp" + case 63: /* column_type: REAL */ +#line 598 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::REAL}; } +#line 3627 "bison_parser.cpp" break; - case 60: /* column_type: TEXT */ -#line 564 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 3478 "bison_parser.cpp" + case 64: /* column_type: VARCHAR '(' INTVAL ')' */ +#line 599 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } +#line 3633 "bison_parser.cpp" break; - case 61: /* column_type: DATETIME */ -#line 565 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3484 "bison_parser.cpp" + case 65: /* column_type: CHARACTER VARYING '(' INTVAL ')' */ +#line 600 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } +#line 3639 "bison_parser.cpp" break; - case 62: /* column_type: DATE */ -#line 566 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::DATE}; } -#line 3490 "bison_parser.cpp" + case 66: /* column_type: CHAR '(' INTVAL ')' */ +#line 601 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } +#line 3645 "bison_parser.cpp" break; - case 63: /* opt_column_nullable: NULL */ -#line 570 "bison_parser.y" - { (yyval.bval) = true; } -#line 3496 "bison_parser.cpp" + case 67: /* column_type: TEXT */ +#line 602 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } +#line 3651 "bison_parser.cpp" break; - case 64: /* opt_column_nullable: NOT NULL */ -#line 571 "bison_parser.y" - { (yyval.bval) = false; } -#line 3502 "bison_parser.cpp" + case 68: /* column_type: TIME opt_time_specification */ +#line 603 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::TIME, 0, (yyvsp[0].column_specification_t) }; } +#line 3657 "bison_parser.cpp" break; - case 65: /* opt_column_nullable: %empty */ -#line 572 "bison_parser.y" - { (yyval.bval) = false; } -#line 3508 "bison_parser.cpp" + case 69: /* column_type: DATETIME */ +#line 604 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } +#line 3663 "bison_parser.cpp" + break; + + case 70: /* column_type: DATE */ +#line 605 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::DATE}; } +#line 3669 "bison_parser.cpp" + break; + + case 71: /* opt_time_specification: '(' INTVAL ')' */ +#line 609 "bison_parser.y" + { (yyval.column_specification_t) = ColumnSpecification{(yyvsp[-1].ival)}; } +#line 3675 "bison_parser.cpp" + break; + + case 72: /* opt_time_specification: %empty */ +#line 610 "bison_parser.y" + { (yyval.column_specification_t) = ColumnSpecification{}; } +#line 3681 "bison_parser.cpp" + break; + + case 73: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ +#line 614 "bison_parser.y" + { (yyval.column_specification_t) = ColumnSpecification{(yyvsp[-3].ival), (yyvsp[-1].ival)}; } +#line 3687 "bison_parser.cpp" + break; + + case 74: /* opt_decimal_specification: '(' INTVAL ')' */ +#line 615 "bison_parser.y" + { (yyval.column_specification_t) = ColumnSpecification{(yyvsp[-1].ival)}; } +#line 3693 "bison_parser.cpp" + break; + + case 75: /* opt_decimal_specification: %empty */ +#line 616 "bison_parser.y" + { (yyval.column_specification_t) = ColumnSpecification{}; } +#line 3699 "bison_parser.cpp" + break; + + case 76: /* opt_column_constraints: column_constraint_list */ +#line 620 "bison_parser.y" + { (yyval.column_constraint_vec) = (yyvsp[0].column_constraint_vec); } +#line 3705 "bison_parser.cpp" + break; + + case 77: /* opt_column_constraints: %empty */ +#line 621 "bison_parser.y" + { (yyval.column_constraint_vec) = new std::vector(); } +#line 3711 "bison_parser.cpp" + break; + + case 78: /* column_constraint_list: column_constraint */ +#line 625 "bison_parser.y" + { (yyval.column_constraint_vec) = new std::vector(); (yyval.column_constraint_vec)->push_back((yyvsp[0].column_constraint_t)); } +#line 3717 "bison_parser.cpp" + break; + + case 79: /* column_constraint_list: column_constraint_list column_constraint */ +#line 626 "bison_parser.y" + { (yyvsp[-1].column_constraint_vec)->push_back((yyvsp[0].column_constraint_t)); (yyval.column_constraint_vec) = (yyvsp[-1].column_constraint_vec); } +#line 3723 "bison_parser.cpp" + break; + + case 80: /* column_constraint: PRIMARY KEY */ +#line 629 "bison_parser.y" + { (yyval.column_constraint_t) = ConstraintType::PrimaryKey; } +#line 3729 "bison_parser.cpp" + break; + + case 81: /* column_constraint: UNIQUE */ +#line 630 "bison_parser.y" + { (yyval.column_constraint_t) = ConstraintType::Unique; } +#line 3735 "bison_parser.cpp" + break; + + case 82: /* column_constraint: NULL */ +#line 631 "bison_parser.y" + { (yyval.column_constraint_t) = ConstraintType::Null; } +#line 3741 "bison_parser.cpp" + break; + + case 83: /* column_constraint: NOT NULL */ +#line 632 "bison_parser.y" + { (yyval.column_constraint_t) = ConstraintType::NotNull; } +#line 3747 "bison_parser.cpp" + break; + + case 84: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ +#line 636 "bison_parser.y" + { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::PrimaryKey, (yyvsp[-1].str_vec)); } +#line 3753 "bison_parser.cpp" + break; + + case 85: /* table_constraint: UNIQUE '(' ident_commalist ')' */ +#line 637 "bison_parser.y" + { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::Unique, (yyvsp[-1].str_vec)); } +#line 3759 "bison_parser.cpp" break; - case 66: /* drop_statement: DROP TABLE opt_exists table_name */ -#line 582 "bison_parser.y" + case 86: /* drop_statement: DROP TABLE opt_exists table_name */ +#line 648 "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 3519 "bison_parser.cpp" +#line 3770 "bison_parser.cpp" break; - case 67: /* drop_statement: DROP VIEW opt_exists table_name */ -#line 588 "bison_parser.y" + case 87: /* drop_statement: DROP VIEW opt_exists table_name */ +#line 654 "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 3530 "bison_parser.cpp" +#line 3781 "bison_parser.cpp" break; - case 68: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ -#line 594 "bison_parser.y" + case 88: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ +#line 660 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 3540 "bison_parser.cpp" +#line 3791 "bison_parser.cpp" break; - case 69: /* opt_exists: IF EXISTS */ -#line 602 "bison_parser.y" + case 89: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ +#line 666 "bison_parser.y" + { + (yyval.drop_stmt) = new DropStatement(kDropIndex); + (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); + (yyval.drop_stmt)->indexName = (yyvsp[0].sval); + } +#line 3801 "bison_parser.cpp" + break; + + case 90: /* opt_exists: IF EXISTS */ +#line 674 "bison_parser.y" { (yyval.bval) = true; } -#line 3546 "bison_parser.cpp" +#line 3807 "bison_parser.cpp" break; - case 70: /* opt_exists: %empty */ -#line 603 "bison_parser.y" + case 91: /* opt_exists: %empty */ +#line 675 "bison_parser.y" { (yyval.bval) = false; } -#line 3552 "bison_parser.cpp" +#line 3813 "bison_parser.cpp" + break; + + case 92: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ +#line 684 "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 3823 "bison_parser.cpp" + break; + + case 93: /* alter_action: drop_action */ +#line 692 "bison_parser.y" + {(yyval.alter_action_t) = (yyvsp[0].drop_action_t);} +#line 3829 "bison_parser.cpp" + break; + + case 94: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ +#line 695 "bison_parser.y" + { + (yyval.drop_action_t) = new DropColumnAction((yyvsp[0].sval)); + (yyval.drop_action_t)->ifExists = (yyvsp[-1].bval); + } +#line 3838 "bison_parser.cpp" break; - case 71: /* delete_statement: DELETE FROM table_name opt_where */ -#line 612 "bison_parser.y" + case 95: /* delete_statement: DELETE FROM table_name opt_where */ +#line 707 "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 3563 "bison_parser.cpp" +#line 3849 "bison_parser.cpp" break; - case 72: /* truncate_statement: TRUNCATE table_name */ -#line 621 "bison_parser.y" + case 96: /* truncate_statement: TRUNCATE table_name */ +#line 716 "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 3573 "bison_parser.cpp" +#line 3859 "bison_parser.cpp" break; - case 73: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' literal_list ')' */ -#line 634 "bison_parser.y" + case 97: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' literal_list ')' */ +#line 729 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -3581,11 +3867,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 3585 "bison_parser.cpp" +#line 3871 "bison_parser.cpp" break; - case 74: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ -#line 641 "bison_parser.y" + case 98: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ +#line 736 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -3593,74 +3879,74 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 3597 "bison_parser.cpp" +#line 3883 "bison_parser.cpp" break; - case 75: /* opt_column_list: '(' ident_commalist ')' */ -#line 652 "bison_parser.y" + case 99: /* opt_column_list: '(' ident_commalist ')' */ +#line 747 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 3603 "bison_parser.cpp" +#line 3889 "bison_parser.cpp" break; - case 76: /* opt_column_list: %empty */ -#line 653 "bison_parser.y" + case 100: /* opt_column_list: %empty */ +#line 748 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 3609 "bison_parser.cpp" +#line 3895 "bison_parser.cpp" break; - case 77: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ -#line 663 "bison_parser.y" + case 101: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ +#line 758 "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 3620 "bison_parser.cpp" +#line 3906 "bison_parser.cpp" break; - case 78: /* update_clause_commalist: update_clause */ -#line 672 "bison_parser.y" + case 102: /* update_clause_commalist: update_clause */ +#line 767 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 3626 "bison_parser.cpp" +#line 3912 "bison_parser.cpp" break; - case 79: /* update_clause_commalist: update_clause_commalist ',' update_clause */ -#line 673 "bison_parser.y" + case 103: /* update_clause_commalist: update_clause_commalist ',' update_clause */ +#line 768 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 3632 "bison_parser.cpp" +#line 3918 "bison_parser.cpp" break; - case 80: /* update_clause: IDENTIFIER '=' expr */ -#line 677 "bison_parser.y" + case 104: /* update_clause: IDENTIFIER '=' expr */ +#line 772 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 3642 "bison_parser.cpp" +#line 3928 "bison_parser.cpp" break; - case 81: /* select_statement: opt_with_clause select_with_paren */ -#line 689 "bison_parser.y" + case 105: /* select_statement: opt_with_clause select_with_paren */ +#line 784 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 3651 "bison_parser.cpp" +#line 3937 "bison_parser.cpp" break; - case 82: /* select_statement: opt_with_clause select_no_paren */ -#line 693 "bison_parser.y" + case 106: /* select_statement: opt_with_clause select_no_paren */ +#line 788 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 3660 "bison_parser.cpp" +#line 3946 "bison_parser.cpp" break; - case 83: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ -#line 697 "bison_parser.y" + case 107: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ +#line 792 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -3672,17 +3958,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 3676 "bison_parser.cpp" +#line 3962 "bison_parser.cpp" break; - case 86: /* select_within_set_operation_no_parentheses: select_clause */ -#line 715 "bison_parser.y" + case 110: /* select_within_set_operation_no_parentheses: select_clause */ +#line 810 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 3682 "bison_parser.cpp" +#line 3968 "bison_parser.cpp" break; - case 87: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ -#line 716 "bison_parser.y" + case 111: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ +#line 811 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -3691,23 +3977,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 3695 "bison_parser.cpp" +#line 3981 "bison_parser.cpp" break; - case 88: /* select_with_paren: '(' select_no_paren ')' */ -#line 727 "bison_parser.y" + case 112: /* select_with_paren: '(' select_no_paren ')' */ +#line 822 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3701 "bison_parser.cpp" +#line 3987 "bison_parser.cpp" break; - case 89: /* select_with_paren: '(' select_with_paren ')' */ -#line 728 "bison_parser.y" + case 113: /* select_with_paren: '(' select_with_paren ')' */ +#line 823 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3707 "bison_parser.cpp" +#line 3993 "bison_parser.cpp" break; - case 90: /* select_no_paren: select_clause opt_order opt_limit */ -#line 732 "bison_parser.y" + case 114: /* select_no_paren: select_clause opt_order opt_limit */ +#line 827 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); (yyval.select_stmt)->order = (yyvsp[-1].order_vec); @@ -3718,11 +4004,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3722 "bison_parser.cpp" +#line 4008 "bison_parser.cpp" break; - case 91: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit */ -#line 742 "bison_parser.y" + case 115: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit */ +#line 837 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -3733,63 +4019,63 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultOrder = (yyvsp[-1].order_vec); (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); } -#line 3737 "bison_parser.cpp" +#line 4023 "bison_parser.cpp" break; - case 92: /* set_operator: set_type opt_all */ -#line 755 "bison_parser.y" + case 116: /* set_operator: set_type opt_all */ +#line 850 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 3746 "bison_parser.cpp" +#line 4032 "bison_parser.cpp" break; - case 93: /* set_type: UNION */ -#line 762 "bison_parser.y" + case 117: /* set_type: UNION */ +#line 857 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 3755 "bison_parser.cpp" +#line 4041 "bison_parser.cpp" break; - case 94: /* set_type: INTERSECT */ -#line 766 "bison_parser.y" + case 118: /* set_type: INTERSECT */ +#line 861 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 3764 "bison_parser.cpp" +#line 4050 "bison_parser.cpp" break; - case 95: /* set_type: EXCEPT */ -#line 770 "bison_parser.y" + case 119: /* set_type: EXCEPT */ +#line 865 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 3773 "bison_parser.cpp" +#line 4059 "bison_parser.cpp" break; - case 96: /* opt_all: ALL */ -#line 777 "bison_parser.y" + case 120: /* opt_all: ALL */ +#line 872 "bison_parser.y" { (yyval.bval) = true; } -#line 3781 "bison_parser.cpp" +#line 4067 "bison_parser.cpp" break; - case 97: /* opt_all: %empty */ -#line 780 "bison_parser.y" + case 121: /* opt_all: %empty */ +#line 875 "bison_parser.y" { (yyval.bval) = false; } -#line 3789 "bison_parser.cpp" +#line 4075 "bison_parser.cpp" break; - case 98: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ -#line 786 "bison_parser.y" + case 122: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ +#line 881 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -3799,213 +4085,213 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 3803 "bison_parser.cpp" +#line 4089 "bison_parser.cpp" break; - case 99: /* opt_distinct: DISTINCT */ -#line 798 "bison_parser.y" + case 123: /* opt_distinct: DISTINCT */ +#line 893 "bison_parser.y" { (yyval.bval) = true; } -#line 3809 "bison_parser.cpp" +#line 4095 "bison_parser.cpp" break; - case 100: /* opt_distinct: %empty */ -#line 799 "bison_parser.y" + case 124: /* opt_distinct: %empty */ +#line 894 "bison_parser.y" { (yyval.bval) = false; } -#line 3815 "bison_parser.cpp" +#line 4101 "bison_parser.cpp" break; - case 102: /* opt_from_clause: from_clause */ -#line 807 "bison_parser.y" + case 126: /* opt_from_clause: from_clause */ +#line 902 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 3821 "bison_parser.cpp" +#line 4107 "bison_parser.cpp" break; - case 103: /* opt_from_clause: %empty */ -#line 808 "bison_parser.y" + case 127: /* opt_from_clause: %empty */ +#line 903 "bison_parser.y" { (yyval.table) = nullptr; } -#line 3827 "bison_parser.cpp" +#line 4113 "bison_parser.cpp" break; - case 104: /* from_clause: FROM table_ref */ -#line 812 "bison_parser.y" + case 128: /* from_clause: FROM table_ref */ +#line 907 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 3833 "bison_parser.cpp" +#line 4119 "bison_parser.cpp" break; - case 105: /* opt_where: WHERE expr */ -#line 817 "bison_parser.y" + case 129: /* opt_where: WHERE expr */ +#line 912 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 3839 "bison_parser.cpp" +#line 4125 "bison_parser.cpp" break; - case 106: /* opt_where: %empty */ -#line 818 "bison_parser.y" + case 130: /* opt_where: %empty */ +#line 913 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 3845 "bison_parser.cpp" +#line 4131 "bison_parser.cpp" break; - case 107: /* opt_group: GROUP BY expr_list opt_having */ -#line 822 "bison_parser.y" + case 131: /* opt_group: GROUP BY expr_list opt_having */ +#line 917 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 3855 "bison_parser.cpp" +#line 4141 "bison_parser.cpp" break; - case 108: /* opt_group: %empty */ -#line 827 "bison_parser.y" + case 132: /* opt_group: %empty */ +#line 922 "bison_parser.y" { (yyval.group_t) = nullptr; } -#line 3861 "bison_parser.cpp" +#line 4147 "bison_parser.cpp" break; - case 109: /* opt_having: HAVING expr */ -#line 831 "bison_parser.y" + case 133: /* opt_having: HAVING expr */ +#line 926 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 3867 "bison_parser.cpp" +#line 4153 "bison_parser.cpp" break; - case 110: /* opt_having: %empty */ -#line 832 "bison_parser.y" + case 134: /* opt_having: %empty */ +#line 927 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 3873 "bison_parser.cpp" +#line 4159 "bison_parser.cpp" break; - case 111: /* opt_order: ORDER BY order_list */ -#line 836 "bison_parser.y" + case 135: /* opt_order: ORDER BY order_list */ +#line 931 "bison_parser.y" { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 3879 "bison_parser.cpp" +#line 4165 "bison_parser.cpp" break; - case 112: /* opt_order: %empty */ -#line 837 "bison_parser.y" + case 136: /* opt_order: %empty */ +#line 932 "bison_parser.y" { (yyval.order_vec) = nullptr; } -#line 3885 "bison_parser.cpp" +#line 4171 "bison_parser.cpp" break; - case 113: /* order_list: order_desc */ -#line 841 "bison_parser.y" + case 137: /* order_list: order_desc */ +#line 936 "bison_parser.y" { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 3891 "bison_parser.cpp" +#line 4177 "bison_parser.cpp" break; - case 114: /* order_list: order_list ',' order_desc */ -#line 842 "bison_parser.y" + case 138: /* order_list: order_list ',' order_desc */ +#line 937 "bison_parser.y" { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 3897 "bison_parser.cpp" +#line 4183 "bison_parser.cpp" break; - case 115: /* order_desc: expr opt_order_type */ -#line 846 "bison_parser.y" + case 139: /* order_desc: expr opt_order_type */ +#line 941 "bison_parser.y" { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 3903 "bison_parser.cpp" +#line 4189 "bison_parser.cpp" break; - case 116: /* opt_order_type: ASC */ -#line 850 "bison_parser.y" + case 140: /* opt_order_type: ASC */ +#line 945 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 3909 "bison_parser.cpp" +#line 4195 "bison_parser.cpp" break; - case 117: /* opt_order_type: DESC */ -#line 851 "bison_parser.y" + case 141: /* opt_order_type: DESC */ +#line 946 "bison_parser.y" { (yyval.order_type) = kOrderDesc; } -#line 3915 "bison_parser.cpp" +#line 4201 "bison_parser.cpp" break; - case 118: /* opt_order_type: %empty */ -#line 852 "bison_parser.y" + case 142: /* opt_order_type: %empty */ +#line 947 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 3921 "bison_parser.cpp" +#line 4207 "bison_parser.cpp" break; - case 119: /* opt_top: TOP int_literal */ -#line 858 "bison_parser.y" + case 143: /* opt_top: TOP int_literal */ +#line 953 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 3927 "bison_parser.cpp" +#line 4213 "bison_parser.cpp" break; - case 120: /* opt_top: %empty */ -#line 859 "bison_parser.y" + case 144: /* opt_top: %empty */ +#line 954 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 3933 "bison_parser.cpp" +#line 4219 "bison_parser.cpp" break; - case 121: /* opt_limit: LIMIT expr */ -#line 863 "bison_parser.y" + case 145: /* opt_limit: LIMIT expr */ +#line 958 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 3939 "bison_parser.cpp" +#line 4225 "bison_parser.cpp" break; - case 122: /* opt_limit: OFFSET expr */ -#line 864 "bison_parser.y" + case 146: /* opt_limit: OFFSET expr */ +#line 959 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 3945 "bison_parser.cpp" +#line 4231 "bison_parser.cpp" break; - case 123: /* opt_limit: LIMIT expr OFFSET expr */ -#line 865 "bison_parser.y" + case 147: /* opt_limit: LIMIT expr OFFSET expr */ +#line 960 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 3951 "bison_parser.cpp" +#line 4237 "bison_parser.cpp" break; - case 124: /* opt_limit: LIMIT ALL */ -#line 866 "bison_parser.y" + case 148: /* opt_limit: LIMIT ALL */ +#line 961 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 3957 "bison_parser.cpp" +#line 4243 "bison_parser.cpp" break; - case 125: /* opt_limit: LIMIT ALL OFFSET expr */ -#line 867 "bison_parser.y" + case 149: /* opt_limit: LIMIT ALL OFFSET expr */ +#line 962 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 3963 "bison_parser.cpp" +#line 4249 "bison_parser.cpp" break; - case 126: /* opt_limit: %empty */ -#line 868 "bison_parser.y" + case 150: /* opt_limit: %empty */ +#line 963 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 3969 "bison_parser.cpp" +#line 4255 "bison_parser.cpp" break; - case 127: /* expr_list: expr_alias */ -#line 875 "bison_parser.y" + case 151: /* expr_list: expr_alias */ +#line 970 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3975 "bison_parser.cpp" +#line 4261 "bison_parser.cpp" break; - case 128: /* expr_list: expr_list ',' expr_alias */ -#line 876 "bison_parser.y" + case 152: /* expr_list: expr_list ',' expr_alias */ +#line 971 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3981 "bison_parser.cpp" +#line 4267 "bison_parser.cpp" break; - case 129: /* opt_literal_list: literal_list */ -#line 880 "bison_parser.y" + case 153: /* opt_literal_list: literal_list */ +#line 975 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 3987 "bison_parser.cpp" +#line 4273 "bison_parser.cpp" break; - case 130: /* opt_literal_list: %empty */ -#line 881 "bison_parser.y" + case 154: /* opt_literal_list: %empty */ +#line 976 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 3993 "bison_parser.cpp" +#line 4279 "bison_parser.cpp" break; - case 131: /* literal_list: literal */ -#line 885 "bison_parser.y" + case 155: /* literal_list: literal */ +#line 980 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3999 "bison_parser.cpp" +#line 4285 "bison_parser.cpp" break; - case 132: /* literal_list: literal_list ',' literal */ -#line 886 "bison_parser.y" + case 156: /* literal_list: literal_list ',' literal */ +#line 981 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4005 "bison_parser.cpp" +#line 4291 "bison_parser.cpp" break; - case 133: /* expr_alias: expr opt_alias */ -#line 890 "bison_parser.y" + case 157: /* expr_alias: expr opt_alias */ +#line 985 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -4013,413 +4299,413 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].alias_t); } } -#line 4017 "bison_parser.cpp" +#line 4303 "bison_parser.cpp" break; - case 139: /* operand: '(' expr ')' */ -#line 908 "bison_parser.y" + case 163: /* operand: '(' expr ')' */ +#line 1003 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4023 "bison_parser.cpp" +#line 4309 "bison_parser.cpp" break; - case 149: /* operand: '(' select_no_paren ')' */ -#line 918 "bison_parser.y" + case 173: /* operand: '(' select_no_paren ')' */ +#line 1013 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4029 "bison_parser.cpp" +#line 4315 "bison_parser.cpp" break; - case 152: /* unary_expr: '-' operand */ -#line 927 "bison_parser.y" + case 176: /* unary_expr: '-' operand */ +#line 1022 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4035 "bison_parser.cpp" +#line 4321 "bison_parser.cpp" break; - case 153: /* unary_expr: NOT operand */ -#line 928 "bison_parser.y" + case 177: /* unary_expr: NOT operand */ +#line 1023 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4041 "bison_parser.cpp" +#line 4327 "bison_parser.cpp" break; - case 154: /* unary_expr: operand ISNULL */ -#line 929 "bison_parser.y" + case 178: /* unary_expr: operand ISNULL */ +#line 1024 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4047 "bison_parser.cpp" +#line 4333 "bison_parser.cpp" break; - case 155: /* unary_expr: operand IS NULL */ -#line 930 "bison_parser.y" + case 179: /* unary_expr: operand IS NULL */ +#line 1025 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4053 "bison_parser.cpp" +#line 4339 "bison_parser.cpp" break; - case 156: /* unary_expr: operand IS NOT NULL */ -#line 931 "bison_parser.y" + case 180: /* unary_expr: operand IS NOT NULL */ +#line 1026 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4059 "bison_parser.cpp" +#line 4345 "bison_parser.cpp" break; - case 158: /* binary_expr: operand '-' operand */ -#line 936 "bison_parser.y" + case 182: /* binary_expr: operand '-' operand */ +#line 1031 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4065 "bison_parser.cpp" +#line 4351 "bison_parser.cpp" break; - case 159: /* binary_expr: operand '+' operand */ -#line 937 "bison_parser.y" + case 183: /* binary_expr: operand '+' operand */ +#line 1032 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4071 "bison_parser.cpp" +#line 4357 "bison_parser.cpp" break; - case 160: /* binary_expr: operand '/' operand */ -#line 938 "bison_parser.y" + case 184: /* binary_expr: operand '/' operand */ +#line 1033 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4077 "bison_parser.cpp" +#line 4363 "bison_parser.cpp" break; - case 161: /* binary_expr: operand '*' operand */ -#line 939 "bison_parser.y" + case 185: /* binary_expr: operand '*' operand */ +#line 1034 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4083 "bison_parser.cpp" +#line 4369 "bison_parser.cpp" break; - case 162: /* binary_expr: operand '%' operand */ -#line 940 "bison_parser.y" + case 186: /* binary_expr: operand '%' operand */ +#line 1035 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4089 "bison_parser.cpp" +#line 4375 "bison_parser.cpp" break; - case 163: /* binary_expr: operand '^' operand */ -#line 941 "bison_parser.y" + case 187: /* binary_expr: operand '^' operand */ +#line 1036 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4095 "bison_parser.cpp" +#line 4381 "bison_parser.cpp" break; - case 164: /* binary_expr: operand LIKE operand */ -#line 942 "bison_parser.y" + case 188: /* binary_expr: operand LIKE operand */ +#line 1037 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4101 "bison_parser.cpp" +#line 4387 "bison_parser.cpp" break; - case 165: /* binary_expr: operand NOT LIKE operand */ -#line 943 "bison_parser.y" + case 189: /* binary_expr: operand NOT LIKE operand */ +#line 1038 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4107 "bison_parser.cpp" +#line 4393 "bison_parser.cpp" break; - case 166: /* binary_expr: operand ILIKE operand */ -#line 944 "bison_parser.y" + case 190: /* binary_expr: operand ILIKE operand */ +#line 1039 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4113 "bison_parser.cpp" +#line 4399 "bison_parser.cpp" break; - case 167: /* binary_expr: operand CONCAT operand */ -#line 945 "bison_parser.y" + case 191: /* binary_expr: operand CONCAT operand */ +#line 1040 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4119 "bison_parser.cpp" +#line 4405 "bison_parser.cpp" break; - case 168: /* logic_expr: expr AND expr */ -#line 949 "bison_parser.y" + case 192: /* logic_expr: expr AND expr */ +#line 1044 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4125 "bison_parser.cpp" +#line 4411 "bison_parser.cpp" break; - case 169: /* logic_expr: expr OR expr */ -#line 950 "bison_parser.y" + case 193: /* logic_expr: expr OR expr */ +#line 1045 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4131 "bison_parser.cpp" +#line 4417 "bison_parser.cpp" break; - case 170: /* in_expr: operand IN '(' expr_list ')' */ -#line 954 "bison_parser.y" + case 194: /* in_expr: operand IN '(' expr_list ')' */ +#line 1049 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4137 "bison_parser.cpp" +#line 4423 "bison_parser.cpp" break; - case 171: /* in_expr: operand NOT IN '(' expr_list ')' */ -#line 955 "bison_parser.y" + case 195: /* in_expr: operand NOT IN '(' expr_list ')' */ +#line 1050 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4143 "bison_parser.cpp" +#line 4429 "bison_parser.cpp" break; - case 172: /* in_expr: operand IN '(' select_no_paren ')' */ -#line 956 "bison_parser.y" + case 196: /* in_expr: operand IN '(' select_no_paren ')' */ +#line 1051 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4149 "bison_parser.cpp" +#line 4435 "bison_parser.cpp" break; - case 173: /* in_expr: operand NOT IN '(' select_no_paren ')' */ -#line 957 "bison_parser.y" + case 197: /* in_expr: operand NOT IN '(' select_no_paren ')' */ +#line 1052 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4155 "bison_parser.cpp" +#line 4441 "bison_parser.cpp" break; - case 174: /* case_expr: CASE expr case_list END */ -#line 963 "bison_parser.y" + case 198: /* case_expr: CASE expr case_list END */ +#line 1058 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4161 "bison_parser.cpp" +#line 4447 "bison_parser.cpp" break; - case 175: /* case_expr: CASE expr case_list ELSE expr END */ -#line 964 "bison_parser.y" + case 199: /* case_expr: CASE expr case_list ELSE expr END */ +#line 1059 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4167 "bison_parser.cpp" +#line 4453 "bison_parser.cpp" break; - case 176: /* case_expr: CASE case_list END */ -#line 965 "bison_parser.y" + case 200: /* case_expr: CASE case_list END */ +#line 1060 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4173 "bison_parser.cpp" +#line 4459 "bison_parser.cpp" break; - case 177: /* case_expr: CASE case_list ELSE expr END */ -#line 966 "bison_parser.y" + case 201: /* case_expr: CASE case_list ELSE expr END */ +#line 1061 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4179 "bison_parser.cpp" +#line 4465 "bison_parser.cpp" break; - case 178: /* case_list: WHEN expr THEN expr */ -#line 970 "bison_parser.y" + case 202: /* case_list: WHEN expr THEN expr */ +#line 1065 "bison_parser.y" { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4185 "bison_parser.cpp" +#line 4471 "bison_parser.cpp" break; - case 179: /* case_list: case_list WHEN expr THEN expr */ -#line 971 "bison_parser.y" + case 203: /* case_list: case_list WHEN expr THEN expr */ +#line 1066 "bison_parser.y" { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4191 "bison_parser.cpp" +#line 4477 "bison_parser.cpp" break; - case 180: /* exists_expr: EXISTS '(' select_no_paren ')' */ -#line 975 "bison_parser.y" + case 204: /* exists_expr: EXISTS '(' select_no_paren ')' */ +#line 1070 "bison_parser.y" { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 4197 "bison_parser.cpp" +#line 4483 "bison_parser.cpp" break; - case 181: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ -#line 976 "bison_parser.y" + case 205: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ +#line 1071 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 4203 "bison_parser.cpp" +#line 4489 "bison_parser.cpp" break; - case 182: /* comp_expr: operand '=' operand */ -#line 980 "bison_parser.y" + case 206: /* comp_expr: operand '=' operand */ +#line 1075 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4209 "bison_parser.cpp" +#line 4495 "bison_parser.cpp" break; - case 183: /* comp_expr: operand EQUALS operand */ -#line 981 "bison_parser.y" + case 207: /* comp_expr: operand EQUALS operand */ +#line 1076 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4215 "bison_parser.cpp" +#line 4501 "bison_parser.cpp" break; - case 184: /* comp_expr: operand NOTEQUALS operand */ -#line 982 "bison_parser.y" + case 208: /* comp_expr: operand NOTEQUALS operand */ +#line 1077 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 4221 "bison_parser.cpp" +#line 4507 "bison_parser.cpp" break; - case 185: /* comp_expr: operand '<' operand */ -#line 983 "bison_parser.y" + case 209: /* comp_expr: operand '<' operand */ +#line 1078 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 4227 "bison_parser.cpp" +#line 4513 "bison_parser.cpp" break; - case 186: /* comp_expr: operand '>' operand */ -#line 984 "bison_parser.y" + case 210: /* comp_expr: operand '>' operand */ +#line 1079 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 4233 "bison_parser.cpp" +#line 4519 "bison_parser.cpp" break; - case 187: /* comp_expr: operand LESSEQ operand */ -#line 985 "bison_parser.y" + case 211: /* comp_expr: operand LESSEQ operand */ +#line 1080 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 4239 "bison_parser.cpp" +#line 4525 "bison_parser.cpp" break; - case 188: /* comp_expr: operand GREATEREQ operand */ -#line 986 "bison_parser.y" + case 212: /* comp_expr: operand GREATEREQ operand */ +#line 1081 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 4245 "bison_parser.cpp" +#line 4531 "bison_parser.cpp" break; - case 189: /* function_expr: IDENTIFIER '(' ')' */ -#line 990 "bison_parser.y" + case 213: /* function_expr: IDENTIFIER '(' ')' */ +#line 1085 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } -#line 4251 "bison_parser.cpp" +#line 4537 "bison_parser.cpp" break; - case 190: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' */ -#line 991 "bison_parser.y" + case 214: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' */ +#line 1086 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 4257 "bison_parser.cpp" +#line 4543 "bison_parser.cpp" break; - case 191: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 995 "bison_parser.y" + case 215: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ +#line 1090 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 4263 "bison_parser.cpp" +#line 4549 "bison_parser.cpp" break; - case 192: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 999 "bison_parser.y" + case 216: /* cast_expr: CAST '(' expr AS column_type ')' */ +#line 1094 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4269 "bison_parser.cpp" +#line 4555 "bison_parser.cpp" break; - case 193: /* datetime_field: SECOND */ -#line 1003 "bison_parser.y" + case 217: /* datetime_field: SECOND */ +#line 1098 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4275 "bison_parser.cpp" +#line 4561 "bison_parser.cpp" break; - case 194: /* datetime_field: MINUTE */ -#line 1004 "bison_parser.y" + case 218: /* datetime_field: MINUTE */ +#line 1099 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4281 "bison_parser.cpp" +#line 4567 "bison_parser.cpp" break; - case 195: /* datetime_field: HOUR */ -#line 1005 "bison_parser.y" + case 219: /* datetime_field: HOUR */ +#line 1100 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4287 "bison_parser.cpp" +#line 4573 "bison_parser.cpp" break; - case 196: /* datetime_field: DAY */ -#line 1006 "bison_parser.y" + case 220: /* datetime_field: DAY */ +#line 1101 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4293 "bison_parser.cpp" +#line 4579 "bison_parser.cpp" break; - case 197: /* datetime_field: MONTH */ -#line 1007 "bison_parser.y" + case 221: /* datetime_field: MONTH */ +#line 1102 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4299 "bison_parser.cpp" +#line 4585 "bison_parser.cpp" break; - case 198: /* datetime_field: YEAR */ -#line 1008 "bison_parser.y" + case 222: /* datetime_field: YEAR */ +#line 1103 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4305 "bison_parser.cpp" +#line 4591 "bison_parser.cpp" break; - case 199: /* datetime_field_plural: SECONDS */ -#line 1012 "bison_parser.y" + case 223: /* datetime_field_plural: SECONDS */ +#line 1107 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4311 "bison_parser.cpp" +#line 4597 "bison_parser.cpp" break; - case 200: /* datetime_field_plural: MINUTES */ -#line 1013 "bison_parser.y" + case 224: /* datetime_field_plural: MINUTES */ +#line 1108 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4317 "bison_parser.cpp" +#line 4603 "bison_parser.cpp" break; - case 201: /* datetime_field_plural: HOURS */ -#line 1014 "bison_parser.y" + case 225: /* datetime_field_plural: HOURS */ +#line 1109 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4323 "bison_parser.cpp" +#line 4609 "bison_parser.cpp" break; - case 202: /* datetime_field_plural: DAYS */ -#line 1015 "bison_parser.y" + case 226: /* datetime_field_plural: DAYS */ +#line 1110 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4329 "bison_parser.cpp" +#line 4615 "bison_parser.cpp" break; - case 203: /* datetime_field_plural: MONTHS */ -#line 1016 "bison_parser.y" + case 227: /* datetime_field_plural: MONTHS */ +#line 1111 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4335 "bison_parser.cpp" +#line 4621 "bison_parser.cpp" break; - case 204: /* datetime_field_plural: YEARS */ -#line 1017 "bison_parser.y" + case 228: /* datetime_field_plural: YEARS */ +#line 1112 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4341 "bison_parser.cpp" +#line 4627 "bison_parser.cpp" break; - case 207: /* array_expr: ARRAY '[' expr_list ']' */ -#line 1026 "bison_parser.y" + case 231: /* array_expr: ARRAY '[' expr_list ']' */ +#line 1121 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 4347 "bison_parser.cpp" +#line 4633 "bison_parser.cpp" break; - case 208: /* array_index: operand '[' int_literal ']' */ -#line 1030 "bison_parser.y" + case 232: /* array_index: operand '[' int_literal ']' */ +#line 1125 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 4353 "bison_parser.cpp" +#line 4639 "bison_parser.cpp" break; - case 209: /* between_expr: operand BETWEEN operand AND operand */ -#line 1034 "bison_parser.y" + case 233: /* between_expr: operand BETWEEN operand AND operand */ +#line 1129 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4359 "bison_parser.cpp" +#line 4645 "bison_parser.cpp" break; - case 210: /* column_name: IDENTIFIER */ -#line 1038 "bison_parser.y" + case 234: /* column_name: IDENTIFIER */ +#line 1133 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 4365 "bison_parser.cpp" +#line 4651 "bison_parser.cpp" break; - case 211: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 1039 "bison_parser.y" + case 235: /* column_name: IDENTIFIER '.' IDENTIFIER */ +#line 1134 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 4371 "bison_parser.cpp" +#line 4657 "bison_parser.cpp" break; - case 212: /* column_name: '*' */ -#line 1040 "bison_parser.y" + case 236: /* column_name: '*' */ +#line 1135 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 4377 "bison_parser.cpp" +#line 4663 "bison_parser.cpp" break; - case 213: /* column_name: IDENTIFIER '.' '*' */ -#line 1041 "bison_parser.y" + case 237: /* column_name: IDENTIFIER '.' '*' */ +#line 1136 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 4383 "bison_parser.cpp" +#line 4669 "bison_parser.cpp" break; - case 221: /* string_literal: STRING */ -#line 1055 "bison_parser.y" + case 245: /* string_literal: STRING */ +#line 1150 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 4389 "bison_parser.cpp" +#line 4675 "bison_parser.cpp" break; - case 222: /* bool_literal: TRUE */ -#line 1059 "bison_parser.y" + case 246: /* bool_literal: TRUE */ +#line 1154 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 4395 "bison_parser.cpp" +#line 4681 "bison_parser.cpp" break; - case 223: /* bool_literal: FALSE */ -#line 1060 "bison_parser.y" + case 247: /* bool_literal: FALSE */ +#line 1155 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 4401 "bison_parser.cpp" +#line 4687 "bison_parser.cpp" break; - case 224: /* num_literal: FLOATVAL */ -#line 1064 "bison_parser.y" + case 248: /* num_literal: FLOATVAL */ +#line 1159 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 4407 "bison_parser.cpp" +#line 4693 "bison_parser.cpp" break; - case 226: /* int_literal: INTVAL */ -#line 1069 "bison_parser.y" + case 250: /* int_literal: INTVAL */ +#line 1164 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 4413 "bison_parser.cpp" +#line 4699 "bison_parser.cpp" break; - case 227: /* null_literal: NULL */ -#line 1073 "bison_parser.y" + case 251: /* null_literal: NULL */ +#line 1168 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 4419 "bison_parser.cpp" +#line 4705 "bison_parser.cpp" break; - case 228: /* date_literal: DATE STRING */ -#line 1077 "bison_parser.y" + case 252: /* date_literal: DATE STRING */ +#line 1172 "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 @@ -4430,17 +4716,17 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeDateLiteral((yyvsp[0].sval)); } -#line 4434 "bison_parser.cpp" +#line 4720 "bison_parser.cpp" break; - case 229: /* interval_literal: int_literal duration_field */ -#line 1090 "bison_parser.y" + case 253: /* interval_literal: int_literal duration_field */ +#line 1185 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].expr)->ival, (yyvsp[0].datetime_field)); delete (yyvsp[-1].expr); } -#line 4440 "bison_parser.cpp" +#line 4726 "bison_parser.cpp" break; - case 230: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1091 "bison_parser.y" + case 254: /* interval_literal: INTERVAL STRING datetime_field */ +#line 1186 "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 @@ -4452,11 +4738,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].sval)); (yyval.expr) = Expr::makeIntervalLiteral(duration, (yyvsp[0].datetime_field)); } -#line 4456 "bison_parser.cpp" +#line 4742 "bison_parser.cpp" break; - case 231: /* interval_literal: INTERVAL STRING */ -#line 1102 "bison_parser.y" + case 255: /* interval_literal: INTERVAL STRING */ +#line 1197 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -4488,55 +4774,55 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeIntervalLiteral(duration, unit); } -#line 4492 "bison_parser.cpp" +#line 4778 "bison_parser.cpp" break; - case 232: /* param_expr: '?' */ -#line 1136 "bison_parser.y" + case 256: /* param_expr: '?' */ +#line 1231 "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 4502 "bison_parser.cpp" +#line 4788 "bison_parser.cpp" break; - case 234: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1149 "bison_parser.y" + case 258: /* table_ref: table_ref_commalist ',' table_ref_atomic */ +#line 1244 "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 4513 "bison_parser.cpp" +#line 4799 "bison_parser.cpp" break; - case 238: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1165 "bison_parser.y" + case 262: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ +#line 1260 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 4524 "bison_parser.cpp" +#line 4810 "bison_parser.cpp" break; - case 239: /* table_ref_commalist: table_ref_atomic */ -#line 1174 "bison_parser.y" + case 263: /* table_ref_commalist: table_ref_atomic */ +#line 1269 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 4530 "bison_parser.cpp" +#line 4816 "bison_parser.cpp" break; - case 240: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1175 "bison_parser.y" + case 264: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ +#line 1270 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 4536 "bison_parser.cpp" +#line 4822 "bison_parser.cpp" break; - case 241: /* table_ref_name: table_name opt_table_alias */ -#line 1180 "bison_parser.y" + case 265: /* table_ref_name: table_name opt_table_alias */ +#line 1275 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -4544,103 +4830,115 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 4548 "bison_parser.cpp" +#line 4834 "bison_parser.cpp" break; - case 242: /* table_ref_name_no_alias: table_name */ -#line 1191 "bison_parser.y" + case 266: /* table_ref_name_no_alias: table_name */ +#line 1286 "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 4558 "bison_parser.cpp" +#line 4844 "bison_parser.cpp" break; - case 243: /* table_name: IDENTIFIER */ -#line 1200 "bison_parser.y" + case 267: /* table_name: IDENTIFIER */ +#line 1295 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} -#line 4564 "bison_parser.cpp" +#line 4850 "bison_parser.cpp" break; - case 244: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1201 "bison_parser.y" + case 268: /* table_name: IDENTIFIER '.' IDENTIFIER */ +#line 1296 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 4570 "bison_parser.cpp" +#line 4856 "bison_parser.cpp" + break; + + case 269: /* opt_index_name: IDENTIFIER */ +#line 1300 "bison_parser.y" + { (yyval.sval) = (yyvsp[0].sval);} +#line 4862 "bison_parser.cpp" + break; + + case 270: /* opt_index_name: %empty */ +#line 1301 "bison_parser.y" + { (yyval.sval) = nullptr;} +#line 4868 "bison_parser.cpp" break; - case 246: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1207 "bison_parser.y" + case 272: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ +#line 1306 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 4576 "bison_parser.cpp" +#line 4874 "bison_parser.cpp" break; - case 248: /* opt_table_alias: %empty */ -#line 1213 "bison_parser.y" + case 274: /* opt_table_alias: %empty */ +#line 1312 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 4582 "bison_parser.cpp" +#line 4880 "bison_parser.cpp" break; - case 249: /* alias: AS IDENTIFIER */ -#line 1218 "bison_parser.y" + case 275: /* alias: AS IDENTIFIER */ +#line 1317 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 4588 "bison_parser.cpp" +#line 4886 "bison_parser.cpp" break; - case 250: /* alias: IDENTIFIER */ -#line 1219 "bison_parser.y" + case 276: /* alias: IDENTIFIER */ +#line 1318 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 4594 "bison_parser.cpp" +#line 4892 "bison_parser.cpp" break; - case 252: /* opt_alias: %empty */ -#line 1225 "bison_parser.y" + case 278: /* opt_alias: %empty */ +#line 1324 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 4600 "bison_parser.cpp" +#line 4898 "bison_parser.cpp" break; - case 254: /* opt_with_clause: %empty */ -#line 1235 "bison_parser.y" + case 280: /* opt_with_clause: %empty */ +#line 1334 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 4606 "bison_parser.cpp" +#line 4904 "bison_parser.cpp" break; - case 255: /* with_clause: WITH with_description_list */ -#line 1239 "bison_parser.y" + case 281: /* with_clause: WITH with_description_list */ +#line 1338 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 4612 "bison_parser.cpp" +#line 4910 "bison_parser.cpp" break; - case 256: /* with_description_list: with_description */ -#line 1243 "bison_parser.y" + case 282: /* with_description_list: with_description */ +#line 1342 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 4621 "bison_parser.cpp" +#line 4919 "bison_parser.cpp" break; - case 257: /* with_description_list: with_description_list ',' with_description */ -#line 1247 "bison_parser.y" + case 283: /* with_description_list: with_description_list ',' with_description */ +#line 1346 "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 4630 "bison_parser.cpp" +#line 4928 "bison_parser.cpp" break; - case 258: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1254 "bison_parser.y" + case 284: /* with_description: IDENTIFIER AS select_with_paren */ +#line 1353 "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 4640 "bison_parser.cpp" +#line 4938 "bison_parser.cpp" break; - case 259: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1268 "bison_parser.y" + case 285: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ +#line 1367 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -4648,28 +4946,28 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 4652 "bison_parser.cpp" +#line 4950 "bison_parser.cpp" break; - case 260: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1276 "bison_parser.y" + case 286: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ +#line 1375 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); - (yyval.table)->join->type = (JoinType) (yyvsp[-4].uval); + (yyval.table)->join->type = (JoinType) (yyvsp[-4].join_type); (yyval.table)->join->left = (yyvsp[-5].table); (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 4665 "bison_parser.cpp" +#line 4963 "bison_parser.cpp" break; - case 261: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' column_name ')' */ -#line 1286 "bison_parser.y" + case 287: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' column_name ')' */ +#line 1385 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); - (yyval.table)->join->type = (JoinType) (yyvsp[-6].uval); + (yyval.table)->join->type = (JoinType) (yyvsp[-6].join_type); (yyval.table)->join->left = (yyvsp[-7].table); (yyval.table)->join->right = (yyvsp[-4].table); auto left_col = Expr::makeColumnRef(strdup((yyvsp[-1].expr)->name)); @@ -4681,83 +4979,83 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 4685 "bison_parser.cpp" +#line 4983 "bison_parser.cpp" break; - case 262: /* opt_join_type: INNER */ -#line 1304 "bison_parser.y" - { (yyval.uval) = kJoinInner; } -#line 4691 "bison_parser.cpp" + case 288: /* opt_join_type: INNER */ +#line 1403 "bison_parser.y" + { (yyval.join_type) = kJoinInner; } +#line 4989 "bison_parser.cpp" break; - case 263: /* opt_join_type: LEFT OUTER */ -#line 1305 "bison_parser.y" - { (yyval.uval) = kJoinLeft; } -#line 4697 "bison_parser.cpp" + case 289: /* opt_join_type: LEFT OUTER */ +#line 1404 "bison_parser.y" + { (yyval.join_type) = kJoinLeft; } +#line 4995 "bison_parser.cpp" break; - case 264: /* opt_join_type: LEFT */ -#line 1306 "bison_parser.y" - { (yyval.uval) = kJoinLeft; } -#line 4703 "bison_parser.cpp" + case 290: /* opt_join_type: LEFT */ +#line 1405 "bison_parser.y" + { (yyval.join_type) = kJoinLeft; } +#line 5001 "bison_parser.cpp" break; - case 265: /* opt_join_type: RIGHT OUTER */ -#line 1307 "bison_parser.y" - { (yyval.uval) = kJoinRight; } -#line 4709 "bison_parser.cpp" + case 291: /* opt_join_type: RIGHT OUTER */ +#line 1406 "bison_parser.y" + { (yyval.join_type) = kJoinRight; } +#line 5007 "bison_parser.cpp" break; - case 266: /* opt_join_type: RIGHT */ -#line 1308 "bison_parser.y" - { (yyval.uval) = kJoinRight; } -#line 4715 "bison_parser.cpp" + case 292: /* opt_join_type: RIGHT */ +#line 1407 "bison_parser.y" + { (yyval.join_type) = kJoinRight; } +#line 5013 "bison_parser.cpp" break; - case 267: /* opt_join_type: FULL OUTER */ -#line 1309 "bison_parser.y" - { (yyval.uval) = kJoinFull; } -#line 4721 "bison_parser.cpp" + case 293: /* opt_join_type: FULL OUTER */ +#line 1408 "bison_parser.y" + { (yyval.join_type) = kJoinFull; } +#line 5019 "bison_parser.cpp" break; - case 268: /* opt_join_type: OUTER */ -#line 1310 "bison_parser.y" - { (yyval.uval) = kJoinFull; } -#line 4727 "bison_parser.cpp" + case 294: /* opt_join_type: OUTER */ +#line 1409 "bison_parser.y" + { (yyval.join_type) = kJoinFull; } +#line 5025 "bison_parser.cpp" break; - case 269: /* opt_join_type: FULL */ -#line 1311 "bison_parser.y" - { (yyval.uval) = kJoinFull; } -#line 4733 "bison_parser.cpp" + case 295: /* opt_join_type: FULL */ +#line 1410 "bison_parser.y" + { (yyval.join_type) = kJoinFull; } +#line 5031 "bison_parser.cpp" break; - case 270: /* opt_join_type: CROSS */ -#line 1312 "bison_parser.y" - { (yyval.uval) = kJoinCross; } -#line 4739 "bison_parser.cpp" + case 296: /* opt_join_type: CROSS */ +#line 1411 "bison_parser.y" + { (yyval.join_type) = kJoinCross; } +#line 5037 "bison_parser.cpp" break; - case 271: /* opt_join_type: %empty */ -#line 1313 "bison_parser.y" - { (yyval.uval) = kJoinInner; } -#line 4745 "bison_parser.cpp" + case 297: /* opt_join_type: %empty */ +#line 1412 "bison_parser.y" + { (yyval.join_type) = kJoinInner; } +#line 5043 "bison_parser.cpp" break; - case 275: /* ident_commalist: IDENTIFIER */ -#line 1333 "bison_parser.y" + case 301: /* ident_commalist: IDENTIFIER */ +#line 1432 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 4751 "bison_parser.cpp" +#line 5049 "bison_parser.cpp" break; - case 276: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1334 "bison_parser.y" + case 302: /* ident_commalist: ident_commalist ',' IDENTIFIER */ +#line 1433 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 4757 "bison_parser.cpp" +#line 5055 "bison_parser.cpp" break; -#line 4761 "bison_parser.cpp" +#line 5059 "bison_parser.cpp" default: break; } @@ -4834,7 +5132,7 @@ YYLTYPE yylloc = yyloc_default; } yyerror (&yylloc, result, scanner, yymsgp); if (yysyntax_error_status == YYENOMEM) - goto yyexhaustedlab; + YYNOMEM; } } @@ -4871,6 +5169,7 @@ YYLTYPE yylloc = yyloc_default; label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; + ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -4934,7 +5233,7 @@ YYLTYPE yylloc = yyloc_default; `-------------------------------------*/ yyacceptlab: yyresult = 0; - goto yyreturn; + goto yyreturnlab; /*-----------------------------------. @@ -4942,24 +5241,22 @@ YYLTYPE yylloc = yyloc_default; `-----------------------------------*/ yyabortlab: yyresult = 1; - goto yyreturn; + goto yyreturnlab; -#if 1 -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ yyexhaustedlab: yyerror (&yylloc, result, scanner, YY_("memory exhausted")); yyresult = 2; - goto yyreturn; -#endif + goto yyreturnlab; -/*-------------------------------------------------------. -| yyreturn -- parsing is finished, clean up and return. | -`-------------------------------------------------------*/ -yyreturn: +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: if (yychar != SQL_HSQL_EMPTY) { /* Make sure we have latest lookahead translation. See comments at @@ -4987,7 +5284,7 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1337 "bison_parser.y" +#line 1436 "bison_parser.y" /********************************* ** Section 4: Additional C code diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index 3eca85c4..25b2ed33 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.7.5. */ +/* A Bison parser, made by GNU Bison 3.8.1. */ /* Bison interface for Yacc-like parsers in C @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -114,136 +114,140 @@ extern int hsql_debug; SQL_PREPARE = 281, /* PREPARE */ SQL_PRIMARY = 282, /* PRIMARY */ SQL_SCHEMAS = 283, /* SCHEMAS */ - SQL_SPATIAL = 284, /* SPATIAL */ - SQL_VARCHAR = 285, /* VARCHAR */ - SQL_VIRTUAL = 286, /* VIRTUAL */ - SQL_DESCRIBE = 287, /* DESCRIBE */ - SQL_BEFORE = 288, /* BEFORE */ - SQL_COLUMN = 289, /* COLUMN */ - SQL_CREATE = 290, /* CREATE */ - SQL_DELETE = 291, /* DELETE */ - SQL_DIRECT = 292, /* DIRECT */ - SQL_DOUBLE = 293, /* DOUBLE */ - SQL_ESCAPE = 294, /* ESCAPE */ - SQL_EXCEPT = 295, /* EXCEPT */ - SQL_EXISTS = 296, /* EXISTS */ - SQL_EXTRACT = 297, /* EXTRACT */ - SQL_CAST = 298, /* CAST */ - SQL_FORMAT = 299, /* FORMAT */ - SQL_GLOBAL = 300, /* GLOBAL */ - SQL_HAVING = 301, /* HAVING */ - SQL_IMPORT = 302, /* IMPORT */ - SQL_INSERT = 303, /* INSERT */ - SQL_ISNULL = 304, /* ISNULL */ - SQL_OFFSET = 305, /* OFFSET */ - SQL_RENAME = 306, /* RENAME */ - SQL_SCHEMA = 307, /* SCHEMA */ - SQL_SELECT = 308, /* SELECT */ - SQL_SORTED = 309, /* SORTED */ - SQL_TABLES = 310, /* TABLES */ - SQL_UNIQUE = 311, /* UNIQUE */ - SQL_UNLOAD = 312, /* UNLOAD */ - SQL_UPDATE = 313, /* UPDATE */ - SQL_VALUES = 314, /* VALUES */ - SQL_AFTER = 315, /* AFTER */ - SQL_ALTER = 316, /* ALTER */ - SQL_CROSS = 317, /* CROSS */ - SQL_DELTA = 318, /* DELTA */ - SQL_FLOAT = 319, /* FLOAT */ - SQL_GROUP = 320, /* GROUP */ - SQL_INDEX = 321, /* INDEX */ - SQL_INNER = 322, /* INNER */ - SQL_LIMIT = 323, /* LIMIT */ - SQL_LOCAL = 324, /* LOCAL */ - SQL_MERGE = 325, /* MERGE */ - SQL_MINUS = 326, /* MINUS */ - SQL_ORDER = 327, /* ORDER */ - SQL_OUTER = 328, /* OUTER */ - SQL_RIGHT = 329, /* RIGHT */ - SQL_TABLE = 330, /* TABLE */ - SQL_UNION = 331, /* UNION */ - SQL_USING = 332, /* USING */ - SQL_WHERE = 333, /* WHERE */ - SQL_CALL = 334, /* CALL */ - SQL_CASE = 335, /* CASE */ - SQL_CHAR = 336, /* CHAR */ - SQL_COPY = 337, /* COPY */ - SQL_DATE = 338, /* DATE */ - SQL_DATETIME = 339, /* DATETIME */ - SQL_DESC = 340, /* DESC */ - SQL_DROP = 341, /* DROP */ - SQL_ELSE = 342, /* ELSE */ - SQL_FILE = 343, /* FILE */ - SQL_FROM = 344, /* FROM */ - SQL_FULL = 345, /* FULL */ - SQL_HASH = 346, /* HASH */ - SQL_HINT = 347, /* HINT */ - SQL_INTO = 348, /* INTO */ - SQL_JOIN = 349, /* JOIN */ - SQL_LEFT = 350, /* LEFT */ - SQL_LIKE = 351, /* LIKE */ - SQL_LOAD = 352, /* LOAD */ - SQL_LONG = 353, /* LONG */ - SQL_NULL = 354, /* NULL */ - SQL_PLAN = 355, /* PLAN */ - SQL_SHOW = 356, /* SHOW */ - SQL_TEXT = 357, /* TEXT */ - SQL_THEN = 358, /* THEN */ - SQL_TIME = 359, /* TIME */ - SQL_VIEW = 360, /* VIEW */ - SQL_WHEN = 361, /* WHEN */ - SQL_WITH = 362, /* WITH */ - SQL_ADD = 363, /* ADD */ - SQL_ALL = 364, /* ALL */ - SQL_AND = 365, /* AND */ - SQL_ASC = 366, /* ASC */ - SQL_END = 367, /* END */ - SQL_FOR = 368, /* FOR */ - SQL_INT = 369, /* INT */ - SQL_KEY = 370, /* KEY */ - SQL_NOT = 371, /* NOT */ - SQL_OFF = 372, /* OFF */ - SQL_SET = 373, /* SET */ - SQL_TOP = 374, /* TOP */ - SQL_AS = 375, /* AS */ - SQL_BY = 376, /* BY */ - SQL_IF = 377, /* IF */ - SQL_IN = 378, /* IN */ - SQL_IS = 379, /* IS */ - SQL_OF = 380, /* OF */ - SQL_ON = 381, /* ON */ - SQL_OR = 382, /* OR */ - SQL_TO = 383, /* TO */ - SQL_ARRAY = 384, /* ARRAY */ - SQL_CONCAT = 385, /* CONCAT */ - SQL_ILIKE = 386, /* ILIKE */ - SQL_SECOND = 387, /* SECOND */ - SQL_MINUTE = 388, /* MINUTE */ - SQL_HOUR = 389, /* HOUR */ - SQL_DAY = 390, /* DAY */ - SQL_MONTH = 391, /* MONTH */ - SQL_YEAR = 392, /* YEAR */ - SQL_SECONDS = 393, /* SECONDS */ - SQL_MINUTES = 394, /* MINUTES */ - SQL_HOURS = 395, /* HOURS */ - SQL_DAYS = 396, /* DAYS */ - SQL_MONTHS = 397, /* MONTHS */ - SQL_YEARS = 398, /* YEARS */ - SQL_INTERVAL = 399, /* INTERVAL */ - SQL_TRUE = 400, /* TRUE */ - SQL_FALSE = 401, /* FALSE */ - SQL_TRANSACTION = 402, /* TRANSACTION */ - SQL_BEGIN = 403, /* BEGIN */ - SQL_COMMIT = 404, /* COMMIT */ - SQL_ROLLBACK = 405, /* ROLLBACK */ - SQL_EQUALS = 406, /* EQUALS */ - SQL_NOTEQUALS = 407, /* NOTEQUALS */ - SQL_LESS = 408, /* LESS */ - SQL_GREATER = 409, /* GREATER */ - SQL_LESSEQ = 410, /* LESSEQ */ - SQL_GREATEREQ = 411, /* GREATEREQ */ - SQL_NOTNULL = 412, /* NOTNULL */ - SQL_UMINUS = 413 /* UMINUS */ + SQL_CHARACTER = 284, /* CHARACTER */ + SQL_VARYING = 285, /* VARYING */ + SQL_REAL = 286, /* REAL */ + SQL_DECIMAL = 287, /* DECIMAL */ + SQL_SPATIAL = 288, /* SPATIAL */ + SQL_VARCHAR = 289, /* VARCHAR */ + SQL_VIRTUAL = 290, /* VIRTUAL */ + SQL_DESCRIBE = 291, /* DESCRIBE */ + SQL_BEFORE = 292, /* BEFORE */ + SQL_COLUMN = 293, /* COLUMN */ + SQL_CREATE = 294, /* CREATE */ + SQL_DELETE = 295, /* DELETE */ + SQL_DIRECT = 296, /* DIRECT */ + SQL_DOUBLE = 297, /* DOUBLE */ + SQL_ESCAPE = 298, /* ESCAPE */ + SQL_EXCEPT = 299, /* EXCEPT */ + SQL_EXISTS = 300, /* EXISTS */ + SQL_EXTRACT = 301, /* EXTRACT */ + SQL_CAST = 302, /* CAST */ + SQL_FORMAT = 303, /* FORMAT */ + SQL_GLOBAL = 304, /* GLOBAL */ + SQL_HAVING = 305, /* HAVING */ + SQL_IMPORT = 306, /* IMPORT */ + SQL_INSERT = 307, /* INSERT */ + SQL_ISNULL = 308, /* ISNULL */ + SQL_OFFSET = 309, /* OFFSET */ + SQL_RENAME = 310, /* RENAME */ + SQL_SCHEMA = 311, /* SCHEMA */ + SQL_SELECT = 312, /* SELECT */ + SQL_SORTED = 313, /* SORTED */ + SQL_TABLES = 314, /* TABLES */ + SQL_UNIQUE = 315, /* UNIQUE */ + SQL_UNLOAD = 316, /* UNLOAD */ + SQL_UPDATE = 317, /* UPDATE */ + SQL_VALUES = 318, /* VALUES */ + SQL_AFTER = 319, /* AFTER */ + SQL_ALTER = 320, /* ALTER */ + SQL_CROSS = 321, /* CROSS */ + SQL_DELTA = 322, /* DELTA */ + SQL_FLOAT = 323, /* FLOAT */ + SQL_GROUP = 324, /* GROUP */ + SQL_INDEX = 325, /* INDEX */ + SQL_INNER = 326, /* INNER */ + SQL_LIMIT = 327, /* LIMIT */ + SQL_LOCAL = 328, /* LOCAL */ + SQL_MERGE = 329, /* MERGE */ + SQL_MINUS = 330, /* MINUS */ + SQL_ORDER = 331, /* ORDER */ + SQL_OUTER = 332, /* OUTER */ + SQL_RIGHT = 333, /* RIGHT */ + SQL_TABLE = 334, /* TABLE */ + SQL_UNION = 335, /* UNION */ + SQL_USING = 336, /* USING */ + SQL_WHERE = 337, /* WHERE */ + SQL_CALL = 338, /* CALL */ + SQL_CASE = 339, /* CASE */ + SQL_CHAR = 340, /* CHAR */ + SQL_COPY = 341, /* COPY */ + SQL_DATE = 342, /* DATE */ + SQL_DATETIME = 343, /* DATETIME */ + SQL_DESC = 344, /* DESC */ + SQL_DROP = 345, /* DROP */ + SQL_ELSE = 346, /* ELSE */ + SQL_FILE = 347, /* FILE */ + SQL_FROM = 348, /* FROM */ + SQL_FULL = 349, /* FULL */ + SQL_HASH = 350, /* HASH */ + SQL_HINT = 351, /* HINT */ + SQL_INTO = 352, /* INTO */ + SQL_JOIN = 353, /* JOIN */ + SQL_LEFT = 354, /* LEFT */ + SQL_LIKE = 355, /* LIKE */ + SQL_LOAD = 356, /* LOAD */ + SQL_LONG = 357, /* LONG */ + SQL_NULL = 358, /* NULL */ + SQL_PLAN = 359, /* PLAN */ + SQL_SHOW = 360, /* SHOW */ + SQL_TEXT = 361, /* TEXT */ + SQL_THEN = 362, /* THEN */ + SQL_TIME = 363, /* TIME */ + SQL_VIEW = 364, /* VIEW */ + SQL_WHEN = 365, /* WHEN */ + SQL_WITH = 366, /* WITH */ + SQL_ADD = 367, /* ADD */ + SQL_ALL = 368, /* ALL */ + SQL_AND = 369, /* AND */ + SQL_ASC = 370, /* ASC */ + SQL_END = 371, /* END */ + SQL_FOR = 372, /* FOR */ + SQL_INT = 373, /* INT */ + SQL_KEY = 374, /* KEY */ + SQL_NOT = 375, /* NOT */ + SQL_OFF = 376, /* OFF */ + SQL_SET = 377, /* SET */ + SQL_TOP = 378, /* TOP */ + SQL_AS = 379, /* AS */ + SQL_BY = 380, /* BY */ + SQL_IF = 381, /* IF */ + SQL_IN = 382, /* IN */ + SQL_IS = 383, /* IS */ + SQL_OF = 384, /* OF */ + SQL_ON = 385, /* ON */ + SQL_OR = 386, /* OR */ + SQL_TO = 387, /* TO */ + SQL_ARRAY = 388, /* ARRAY */ + SQL_CONCAT = 389, /* CONCAT */ + SQL_ILIKE = 390, /* ILIKE */ + SQL_SECOND = 391, /* SECOND */ + SQL_MINUTE = 392, /* MINUTE */ + SQL_HOUR = 393, /* HOUR */ + SQL_DAY = 394, /* DAY */ + SQL_MONTH = 395, /* MONTH */ + SQL_YEAR = 396, /* YEAR */ + SQL_SECONDS = 397, /* SECONDS */ + SQL_MINUTES = 398, /* MINUTES */ + SQL_HOURS = 399, /* HOURS */ + SQL_DAYS = 400, /* DAYS */ + SQL_MONTHS = 401, /* MONTHS */ + SQL_YEARS = 402, /* YEARS */ + SQL_INTERVAL = 403, /* INTERVAL */ + SQL_TRUE = 404, /* TRUE */ + SQL_FALSE = 405, /* FALSE */ + SQL_TRANSACTION = 406, /* TRANSACTION */ + SQL_BEGIN = 407, /* BEGIN */ + SQL_COMMIT = 408, /* COMMIT */ + SQL_ROLLBACK = 409, /* ROLLBACK */ + SQL_EQUALS = 410, /* EQUALS */ + SQL_NOTEQUALS = 411, /* NOTEQUALS */ + SQL_LESS = 412, /* LESS */ + SQL_GREATER = 413, /* GREATER */ + SQL_LESSEQ = 414, /* LESSEQ */ + SQL_GREATEREQ = 415, /* GREATEREQ */ + SQL_NOTNULL = 416, /* NOTNULL */ + SQL_UMINUS = 417 /* UMINUS */ }; typedef enum hsql_tokentype hsql_token_kind_t; #endif @@ -254,53 +258,62 @@ union HSQL_STYPE { #line 95 "bison_parser.y" - double fval; - int64_t ival; - char* sval; + bool bval; + char* sval; + double fval; + int64_t ival; uintmax_t uval; - bool bval; - hsql::SQLStatement* statement; - hsql::SelectStatement* select_stmt; - hsql::ImportStatement* import_stmt; - hsql::ExportStatement* export_stmt; - hsql::CreateStatement* create_stmt; - hsql::InsertStatement* insert_stmt; - hsql::DeleteStatement* delete_stmt; - hsql::UpdateStatement* update_stmt; - hsql::DropStatement* drop_stmt; - hsql::PrepareStatement* prep_stmt; - hsql::ExecuteStatement* exec_stmt; - hsql::ShowStatement* show_stmt; + // statements + hsql::AlterStatement* alter_stmt; + hsql::CreateStatement* create_stmt; + hsql::DeleteStatement* delete_stmt; + hsql::DropStatement* drop_stmt; + hsql::ExecuteStatement* exec_stmt; + hsql::ExportStatement* export_stmt; + hsql::ImportStatement* import_stmt; + hsql::InsertStatement* insert_stmt; + hsql::PrepareStatement* prep_stmt; + hsql::SelectStatement* select_stmt; + hsql::ShowStatement* show_stmt; + hsql::SQLStatement* statement; hsql::TransactionStatement* transaction_stmt; - - hsql::TableName table_name; - hsql::TableRef* table; - hsql::Expr* expr; - hsql::OrderDescription* order; - hsql::OrderType order_type; - hsql::WithDescription* with_description_t; - hsql::DatetimeField datetime_field; - hsql::LimitDescription* limit; - hsql::ColumnDefinition* column_t; - hsql::ColumnType column_type_t; - hsql::ImportType import_type_t; + hsql::UpdateStatement* update_stmt; + + hsql::Alias* alias_t; + hsql::AlterAction* alter_action_t; + hsql::ColumnDefinition* column_t; + hsql::ColumnSpecification column_specification_t; + hsql::ColumnType column_type_t; + hsql::ConstraintType column_constraint_t; + hsql::DatetimeField datetime_field; + hsql::DropColumnAction* drop_action_t; + hsql::Expr* expr; hsql::GroupByDescription* group_t; - hsql::UpdateClause* update_t; - hsql::Alias* alias_t; - hsql::SetOperation* set_operator_t; - - std::vector* stmt_vec; + hsql::ImportType import_type_t; + hsql::JoinType join_type; + hsql::LimitDescription* limit; + hsql::OrderDescription* order; + hsql::OrderType order_type; + hsql::SetOperation* set_operator_t; + hsql::TableConstraint* table_constraint_t; + hsql::TableElement* table_element_t; + hsql::TableName table_name; + hsql::TableRef* table; + hsql::UpdateClause* update_t; + hsql::WithDescription* with_description_t; - std::vector* str_vec; - std::vector* table_vec; - std::vector* column_vec; - std::vector* update_vec; - std::vector* expr_vec; + std::vector* str_vec; + std::vector* column_constraint_vec; + std::vector* expr_vec; std::vector* order_vec; - std::vector* with_description_vec; + std::vector* stmt_vec; + std::vector* table_element_vec; + std::vector* table_vec; + std::vector* update_vec; + std::vector* with_description_vec; -#line 304 "bison_parser.h" +#line 317 "bison_parser.h" }; typedef union HSQL_STYPE HSQL_STYPE; @@ -324,6 +337,8 @@ struct HSQL_LTYPE + int hsql_parse (hsql::SQLParserResult* result, yyscan_t scanner); + #endif /* !YY_HSQL_BISON_PARSER_H_INCLUDED */ diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index e0c1955f..5eef32cd 100755 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -93,58 +93,67 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha ** Define all data-types (http://www.gnu.org/software/bison/manual/html_node/Union-Decl.html) *********************************/ %union { - double fval; - int64_t ival; - char* sval; + bool bval; + char* sval; + double fval; + int64_t ival; uintmax_t uval; - bool bval; - - hsql::SQLStatement* statement; - hsql::SelectStatement* select_stmt; - hsql::ImportStatement* import_stmt; - hsql::ExportStatement* export_stmt; - hsql::CreateStatement* create_stmt; - hsql::InsertStatement* insert_stmt; - hsql::DeleteStatement* delete_stmt; - hsql::UpdateStatement* update_stmt; - hsql::DropStatement* drop_stmt; - hsql::PrepareStatement* prep_stmt; - hsql::ExecuteStatement* exec_stmt; - hsql::ShowStatement* show_stmt; - hsql::TransactionStatement* transaction_stmt; - hsql::TableName table_name; - hsql::TableRef* table; - hsql::Expr* expr; - hsql::OrderDescription* order; - hsql::OrderType order_type; - hsql::WithDescription* with_description_t; - hsql::DatetimeField datetime_field; - hsql::LimitDescription* limit; - hsql::ColumnDefinition* column_t; - hsql::ColumnType column_type_t; - hsql::ImportType import_type_t; + // statements + hsql::AlterStatement* alter_stmt; + hsql::CreateStatement* create_stmt; + hsql::DeleteStatement* delete_stmt; + hsql::DropStatement* drop_stmt; + hsql::ExecuteStatement* exec_stmt; + hsql::ExportStatement* export_stmt; + hsql::ImportStatement* import_stmt; + hsql::InsertStatement* insert_stmt; + hsql::PrepareStatement* prep_stmt; + hsql::SelectStatement* select_stmt; + hsql::ShowStatement* show_stmt; + hsql::SQLStatement* statement; + hsql::TransactionStatement* transaction_stmt; + hsql::UpdateStatement* update_stmt; + + hsql::Alias* alias_t; + hsql::AlterAction* alter_action_t; + hsql::ColumnDefinition* column_t; + hsql::ColumnSpecification column_specification_t; + hsql::ColumnType column_type_t; + hsql::ConstraintType column_constraint_t; + hsql::DatetimeField datetime_field; + hsql::DropColumnAction* drop_action_t; + hsql::Expr* expr; hsql::GroupByDescription* group_t; - hsql::UpdateClause* update_t; - hsql::Alias* alias_t; - hsql::SetOperation* set_operator_t; - - std::vector* stmt_vec; - - std::vector* str_vec; - std::vector* table_vec; - std::vector* column_vec; - std::vector* update_vec; - std::vector* expr_vec; + hsql::ImportType import_type_t; + hsql::JoinType join_type; + hsql::LimitDescription* limit; + hsql::OrderDescription* order; + hsql::OrderType order_type; + hsql::SetOperation* set_operator_t; + hsql::TableConstraint* table_constraint_t; + hsql::TableElement* table_element_t; + hsql::TableName table_name; + hsql::TableRef* table; + hsql::UpdateClause* update_t; + hsql::WithDescription* with_description_t; + + std::vector* str_vec; + std::vector* column_constraint_vec; + std::vector* expr_vec; std::vector* order_vec; - std::vector* with_description_vec; + std::vector* stmt_vec; + std::vector* table_element_vec; + std::vector* table_vec; + std::vector* update_vec; + std::vector* with_description_vec; } /********************************* ** Destructor symbols *********************************/ -%destructor { } +%destructor { } %destructor { free( ($$.name) ); free( ($$.schema) ); } %destructor { free( ($$) ); } %destructor { @@ -154,7 +163,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha } } delete ($$); -} +} %destructor { delete ($$); } <*> @@ -169,7 +178,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %token DEALLOCATE PARAMETERS INTERSECT TEMPORARY TIMESTAMP %token DISTINCT NVARCHAR RESTRICT TRUNCATE ANALYZE BETWEEN %token CASCADE COLUMNS CONTROL DEFAULT EXECUTE EXPLAIN -%token INTEGER NATURAL PREPARE PRIMARY SCHEMAS +%token INTEGER NATURAL PREPARE PRIMARY SCHEMAS CHARACTER VARYING REAL DECIMAL %token SPATIAL VARCHAR VIRTUAL DESCRIBE BEFORE COLUMN CREATE DELETE DIRECT %token DOUBLE ESCAPE EXCEPT EXISTS EXTRACT CAST FORMAT GLOBAL HAVING IMPORT %token INSERT ISNULL OFFSET RENAME SCHEMA SELECT SORTED @@ -188,59 +197,70 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha /********************************* ** Non-Terminal types (http://www.gnu.org/software/bison/manual/html_node/Type-Decl.html) *********************************/ -%type statement_list -%type statement preparable_statement -%type execute_statement -%type transaction_statement -%type prepare_statement -%type select_statement select_with_paren select_no_paren select_clause select_within_set_operation select_within_set_operation_no_parentheses -%type import_statement -%type export_statement -%type create_statement -%type insert_statement -%type delete_statement truncate_statement -%type update_statement -%type drop_statement -%type show_statement -%type table_name -%type file_path prepare_target_query -%type opt_not_exists opt_exists opt_distinct opt_column_nullable opt_all -%type opt_join_type -%type opt_from_clause from_clause table_ref table_ref_atomic table_ref_name nonjoin_table_ref_atomic -%type
join_clause table_ref_name_no_alias -%type expr operand scalar_expr unary_expr binary_expr logic_expr exists_expr extract_expr 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 comp_expr opt_where join_condition opt_having case_expr case_list in_expr hint -%type array_expr array_index null_literal -%type opt_limit opt_top -%type order_desc -%type opt_order_type -%type datetime_field datetime_field_plural duration_field -%type column_def -%type column_type -%type update_clause -%type opt_group -%type opt_table_alias table_alias opt_alias alias -%type with_description -%type set_operator set_type +%type statement_list +%type statement preparable_statement +%type execute_statement +%type transaction_statement +%type prepare_statement +%type select_statement select_with_paren select_no_paren select_clause select_within_set_operation select_within_set_operation_no_parentheses +%type import_statement +%type export_statement +%type create_statement +%type insert_statement +%type delete_statement truncate_statement +%type update_statement +%type drop_statement +%type alter_statement +%type show_statement +%type table_name +%type opt_index_name +%type file_path prepare_target_query +%type opt_not_exists opt_exists opt_distinct opt_all +%type opt_decimal_specification +%type opt_time_specification +%type opt_join_type +%type
opt_from_clause from_clause table_ref table_ref_atomic table_ref_name nonjoin_table_ref_atomic +%type
join_clause table_ref_name_no_alias +%type expr operand scalar_expr unary_expr binary_expr logic_expr exists_expr extract_expr 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 comp_expr opt_where join_condition opt_having case_expr case_list in_expr hint +%type array_expr array_index null_literal +%type opt_limit opt_top +%type order_desc +%type opt_order_type +%type datetime_field datetime_field_plural duration_field +%type column_def +%type table_elem +%type column_type +%type table_constraint +%type update_clause +%type opt_group +%type opt_table_alias table_alias opt_alias alias +%type with_description +%type set_operator set_type +%type column_constraint +%type column_constraint_list +%type opt_column_constraints +%type alter_action +%type drop_action // ImportType is used for compatibility reasons -%type opt_file_type file_type +%type opt_file_type file_type -%type ident_commalist opt_column_list -%type expr_list select_list opt_literal_list literal_list hint_list opt_hints -%type table_ref_commalist -%type opt_order order_list -%type opt_with_clause with_clause with_description_list -%type update_clause_commalist -%type column_def_commalist +%type ident_commalist opt_column_list +%type expr_list select_list opt_literal_list literal_list hint_list opt_hints +%type table_ref_commalist +%type opt_order order_list +%type opt_with_clause with_clause with_description_list +%type update_clause_commalist +%type table_elem_commalist /****************************** ** Token Precedence and Associativity ** Precedence: lowest to highest ******************************/ -%left OR +%left OR %left AND %right NOT %nonassoc '=' EQUALS NOTEQUALS LIKE ILIKE @@ -331,6 +351,7 @@ preparable_statement: | truncate_statement { $$ = $1; } | update_statement { $$ = $1; } | drop_statement { $$ = $1; } + | alter_statement { $$ = $1; } | execute_statement { $$ = $1; } | transaction_statement { $$ = $1; } ; @@ -513,12 +534,13 @@ create_statement: free($6); $$->filePath = $8; } - | CREATE TABLE opt_not_exists table_name '(' column_def_commalist ')' { + | CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' { $$ = new CreateStatement(kCreateTable); $$->ifNotExists = $3; $$->schema = $4.schema; $$->tableName = $4.name; - $$->columns = $6; + $$->setColumnDefsAndConstraints($6); + delete $6; } | CREATE TABLE opt_not_exists table_name AS select_statement { $$ = new CreateStatement(kCreateTable); @@ -527,6 +549,13 @@ create_statement: $$->tableName = $4.name; $$->select = $6; } + | CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' { + $$ = new CreateStatement(kCreateIndex); + $$->indexName = $4; + $$->ifNotExists = $3; + $$->tableName = $6.name; + $$->indexColumns = $8; + } | CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement { $$ = new CreateStatement(kCreateView); $$->ifNotExists = $3; @@ -542,35 +571,72 @@ opt_not_exists: | /* empty */ { $$ = false; } ; -column_def_commalist: - column_def { $$ = new std::vector(); $$->push_back($1); } - | column_def_commalist ',' column_def { $1->push_back($3); $$ = $1; } - ; +table_elem_commalist: + table_elem { $$ = new std::vector(); $$->push_back($1); } + | table_elem_commalist ',' table_elem { $1->push_back($3); $$ = $1; } + ; + +table_elem: + column_def { $$ = $1; } + | table_constraint { $$ = $1; } + ; column_def: - IDENTIFIER column_type opt_column_nullable { + IDENTIFIER column_type opt_column_constraints{ $$ = new ColumnDefinition($1, $2, $3); + $$->setNullableExplicit(); } ; column_type: - INT { $$ = ColumnType{DataType::INT}; } - | INTEGER { $$ = ColumnType{DataType::INT}; } - | LONG { $$ = ColumnType{DataType::LONG}; } - | FLOAT { $$ = ColumnType{DataType::FLOAT}; } - | DOUBLE { $$ = ColumnType{DataType::DOUBLE}; } - | VARCHAR '(' INTVAL ')' { $$ = ColumnType{DataType::VARCHAR, $3}; } - | CHAR '(' INTVAL ')' { $$ = ColumnType{DataType::CHAR, $3}; } - | TEXT { $$ = ColumnType{DataType::TEXT}; } - | DATETIME { $$ = ColumnType{DataType::DATETIME}; } - | DATE { $$ = ColumnType{DataType::DATE}; } - ; - -opt_column_nullable: - NULL { $$ = true; } - | NOT NULL { $$ = false; } - | /* empty */ { $$ = false; } - ; + INT { $$ = ColumnType{DataType::INT}; } + | INTEGER { $$ = ColumnType{DataType::INT}; } + | LONG { $$ = ColumnType{DataType::LONG}; } + | FLOAT { $$ = ColumnType{DataType::FLOAT}; } + | DECIMAL opt_decimal_specification { $$ = ColumnType{DataType::DECIMAL, 0, $2}; } + | DOUBLE { $$ = ColumnType{DataType::DOUBLE}; } + | REAL { $$ = ColumnType{DataType::REAL}; } + | VARCHAR '(' INTVAL ')' { $$ = ColumnType{DataType::VARCHAR, $3}; } + | CHARACTER VARYING'(' INTVAL ')' { $$ = ColumnType{DataType::VARCHAR, $4}; } + | CHAR '(' INTVAL ')' { $$ = ColumnType{DataType::CHAR, $3}; } + | TEXT { $$ = ColumnType{DataType::TEXT}; } + | TIME opt_time_specification { $$ = ColumnType{DataType::TIME, 0, $2 }; } + | DATETIME { $$ = ColumnType{DataType::DATETIME}; } + | DATE { $$ = ColumnType{DataType::DATE}; } + ; + +opt_time_specification: + '(' INTVAL ')' { $$ = ColumnSpecification{$2}; } + | /* empty */ { $$ = ColumnSpecification{}; } + ; + +opt_decimal_specification: + '(' INTVAL ',' INTVAL ')' { $$ = ColumnSpecification{$2, $4}; } + | '(' INTVAL ')' { $$ = ColumnSpecification{$2}; } + | /* empty */ { $$ = ColumnSpecification{}; } + ; + +opt_column_constraints: + column_constraint_list { $$ = $1; } + | /* empty */ { $$ = new std::vector(); } + ; + +column_constraint_list: + column_constraint { $$ = new std::vector(); $$->push_back($1); } + | column_constraint_list column_constraint { $1->push_back($2); $$ = $1; } + +column_constraint: + PRIMARY KEY { $$ = ConstraintType::PrimaryKey; } + | UNIQUE { $$ = ConstraintType::Unique; } + | NULL { $$ = ConstraintType::Null; } + | NOT NULL { $$ = ConstraintType::NotNull; } + ; + +table_constraint: + PRIMARY KEY '(' ident_commalist ')' { $$ = new TableConstraint(ConstraintType::PrimaryKey, $4); } + | UNIQUE '(' ident_commalist ')' { $$ = new TableConstraint(ConstraintType::Unique, $3); } + ; + /****************************** * Drop Statement @@ -596,6 +662,12 @@ drop_statement: $$->ifExists = false; $$->name = $3; } + + | DROP INDEX opt_exists IDENTIFIER { + $$ = new DropStatement(kDropIndex); + $$->ifExists = $3; + $$->indexName = $4; + } ; opt_exists: @@ -603,6 +675,29 @@ opt_exists: | /* empty */ { $$ = false; } ; +/****************************** + * ALTER Statement + * ALTER TABLE students DROP COLUMN name; + ******************************/ + +alter_statement: + ALTER TABLE opt_exists table_name alter_action { + $$ = new AlterStatement($4.name, $5); + $$->ifTableExists = $3; + $$->schema = $4.schema; + } + ; + +alter_action: + drop_action {$$ = $1;} + +drop_action: + DROP COLUMN opt_exists IDENTIFIER { + $$ = new DropColumnAction($4); + $$->ifExists = $3; + } + ; + /****************************** * Delete Statement / Truncate statement * DELETE FROM students WHERE grade > 3.0 @@ -1201,6 +1296,10 @@ table_name: | IDENTIFIER '.' IDENTIFIER { $$.schema = $1; $$.name = $3; } ; +opt_index_name: + IDENTIFIER { $$ = $1;} + | /* empty */ { $$ = nullptr;} + ; table_alias: alias diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index 6f62fb98..a7e62633 100644 --- a/src/parser/flex_lexer.cpp +++ b/src/parser/flex_lexer.cpp @@ -1,6 +1,6 @@ -#line 2 "flex_lexer.cpp" +#line 1 "flex_lexer.cpp" -#line 4 "flex_lexer.cpp" +#line 3 "flex_lexer.cpp" #define YY_INT_ALIGNED short int @@ -573,8 +573,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 166 -#define YY_END_OF_BUFFER 167 +#define YY_NUM_RULES 171 +#define YY_END_OF_BUFFER 172 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -582,27 +582,27 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1138] = +static const flex_int16_t yy_accept[1170] = { 0, - 0, 0, 163, 163, 2, 2, 167, 165, 4, 4, - 165, 165, 154, 161, 154, 154, 158, 154, 154, 154, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 154, 163, 164, 2, 2, 3, + 0, 0, 168, 168, 2, 2, 172, 170, 4, 4, + 170, 170, 159, 166, 159, 159, 163, 159, 159, 159, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 159, 168, 169, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 4, 149, 0, 1, 0, - 156, 155, 158, 151, 150, 148, 152, 160, 160, 160, - - 160, 160, 160, 120, 160, 121, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 122, 160, 160, 123, 124, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 125, 126, 127, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 128, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 153, 163, 162, 2, + 2, 2, 2, 2, 2, 4, 154, 0, 1, 0, + 161, 160, 163, 156, 155, 153, 157, 165, 165, 165, + + 165, 165, 165, 125, 165, 126, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 127, 165, 165, 128, 129, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 130, 131, 132, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 133, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 158, 168, 167, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -613,19 +613,19 @@ static const flex_int16_t yy_accept[1138] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 159, 0, 155, 108, 160, 109, 160, 160, - 110, 160, 111, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 132, 160, 160, 160, - - 160, 160, 160, 160, 160, 160, 112, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 113, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 114, 160, 160, 115, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 116, 160, 160, 117, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 118, 160, 160, 160, 160, 160, 160, 160, 160, - 119, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 2, 2, 2, 2, 2, 2, + 2, 2, 164, 0, 160, 113, 165, 114, 165, 165, + 115, 165, 116, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 137, 165, 165, 165, + + 165, 165, 165, 165, 165, 165, 165, 117, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 118, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 119, 165, 165, 120, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 121, 165, 165, 122, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 123, 165, 165, 165, 165, 165, 165, + 165, 165, 124, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -637,21 +637,21 @@ static const flex_int16_t yy_accept[1138] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 160, 160, 160, - - 160, 160, 160, 160, 78, 160, 79, 41, 80, 160, - 160, 160, 81, 160, 160, 82, 138, 160, 160, 160, - 160, 84, 160, 160, 160, 85, 86, 160, 160, 160, - 160, 160, 160, 160, 87, 160, 160, 88, 89, 160, - 160, 90, 160, 91, 131, 160, 160, 160, 160, 160, - 160, 92, 160, 93, 94, 95, 160, 97, 160, 98, - 160, 160, 160, 160, 99, 160, 160, 160, 160, 160, - 100, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 101, 160, 160, 160, 160, 102, 103, 104, 160, 141, - 160, 160, 160, 160, 160, 160, 160, 160, 105, 160, - - 106, 160, 107, 134, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 0, 165, 165, 165, 165, 165, 165, 165, 83, 165, + 84, 46, 85, 165, 165, 165, 86, 165, 165, 87, + 143, 165, 165, 165, 165, 165, 89, 165, 165, 165, + 90, 91, 165, 165, 165, 165, 165, 165, 165, 92, + 165, 165, 93, 94, 165, 165, 95, 165, 96, 136, + 165, 165, 165, 165, 165, 165, 97, 165, 98, 99, + 100, 165, 102, 165, 103, 165, 165, 165, 165, 104, + 165, 165, 165, 165, 165, 105, 165, 165, 34, 165, + 165, 165, 165, 165, 165, 165, 106, 165, 165, 165, + 165, 107, 108, 32, 165, 146, 165, 165, 165, 165, + + 165, 165, 165, 165, 165, 110, 165, 111, 165, 112, + 139, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -662,16 +662,17 @@ static const flex_int16_t yy_accept[1138] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 0, 58, 59, 160, 60, 160, 144, 160, - 160, 160, 160, 160, 160, 61, 160, 160, 160, 160, - 62, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 142, 63, 160, 160, 64, 160, 137, 96, 160, - 65, 66, 160, 160, 160, 160, 67, 68, 69, 70, - 160, 133, 160, 160, 160, 71, 72, 160, 160, 160, - 160, 160, 73, 160, 160, 160, 160, 160, 160, 74, - 160, 160, 160, 160, 75, 160, 160, 160, 76, 160, - 160, 160, 77, 140, 2, 2, 2, 2, 2, 2, - + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 0, 63, 64, 165, 65, 165, 149, 165, + 165, 165, 165, 165, 165, 165, 66, 165, 165, 165, + 165, 165, 67, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 147, 68, 165, 165, 69, 165, 142, + 101, 165, 70, 71, 165, 165, 165, 165, 72, 73, + 74, 75, 165, 138, 165, 165, 165, 76, 77, 165, + 165, 165, 165, 165, 78, 165, 165, 165, 165, 165, + 165, 79, 165, 165, 165, 165, 80, 165, 165, 165, + + 81, 165, 165, 165, 165, 82, 145, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -679,36 +680,38 @@ static const flex_int16_t yy_accept[1138] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 160, 31, 160, - 160, 32, 146, 160, 33, 160, 160, 160, 34, 160, - 35, 160, 36, 37, 38, 160, 39, 160, 160, 42, - - 43, 44, 45, 46, 160, 160, 160, 47, 130, 139, - 160, 160, 48, 160, 160, 160, 49, 160, 160, 50, - 129, 51, 52, 160, 53, 160, 160, 160, 160, 54, - 55, 56, 57, 160, 160, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 0, 165, 36, 165, 165, 165, 37, 151, + + 165, 38, 165, 165, 165, 165, 39, 165, 40, 165, + 41, 42, 43, 165, 44, 165, 165, 47, 48, 49, + 50, 51, 165, 165, 165, 52, 135, 144, 165, 165, + 53, 165, 165, 165, 54, 165, 165, 55, 134, 56, + 57, 165, 58, 165, 165, 165, 165, 59, 60, 61, + 62, 165, 165, 165, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 0, 15, 16, 17, 18, 19, - 160, 160, 20, 160, 160, 21, 22, 40, 23, 160, - 160, 136, 24, 160, 160, 25, 26, 160, 160, 27, - 135, 28, 160, 160, 160, 160, 29, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 0, 15, 16, 17, + 165, 18, 19, 165, 165, 33, 20, 165, 165, 21, + 22, 45, 23, 165, 165, 141, 24, 165, 165, 25, + 26, 165, 165, 27, 140, 28, 165, 165, 165, 165, + 29, 31, 35, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 0, 83, 160, 10, 11, 160, 147, 12, - 160, 13, 145, 160, 160, 160, 14, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 0, 160, 7, 160, 8, 9, 160, 2, + 0, 165, 88, 165, 10, 11, 165, 152, 12, 165, - 2, 2, 2, 2, 2, 2, 0, 5, 6, 160, - 2, 2, 2, 2, 0, 143, 2, 2, 0, 2, + 13, 150, 165, 165, 165, 14, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 0, 30, 165, 7, 165, 8, 9, 165, + 2, 2, 2, 2, 2, 2, 2, 2, 0, 5, + 6, 165, 2, 2, 2, 2, 0, 148, 2, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 2, 157, 2, 0 + 0, 2, 0, 2, 0, 2, 162, 2, 0 } ; static const YY_CHAR yy_ec[256] = @@ -755,159 +758,162 @@ static const YY_CHAR yy_meta[77] = 5, 5, 5, 5, 5, 1 } ; -static const flex_int16_t yy_base[1145] = +static const flex_int16_t yy_base[1177] = { 0, - 0, 0, 709, 681, 76, 0, 668, 4550, 151, 153, - 643, 0, 4550, 4550, 149, 148, 160, 159, 625, 619, + 0, 0, 720, 709, 76, 0, 688, 4686, 151, 153, + 647, 0, 4686, 4686, 149, 148, 160, 159, 643, 625, 156, 156, 164, 162, 172, 223, 198, 211, 215, 151, 168, 210, 255, 257, 263, 262, 0, 277, 307, 350, - 284, 221, 258, 171, 540, 0, 600, 0, 295, 308, - 561, 576, 0, 0, 331, 408, 419, 321, 542, 512, + 284, 221, 258, 171, 564, 0, 609, 0, 295, 308, + 586, 576, 0, 0, 331, 408, 419, 321, 542, 512, 438, 514, 568, 620, 668, 720, 328, 426, 768, 329, 311, 434, 500, 820, 868, 505, 421, 513, 918, 970, - 515, 570, 455, 423, 450, 351, 4550, 520, 4550, 512, - 1035, 1045, 1056, 4550, 4550, 4550, 4550, 0, 174, 282, + 515, 570, 455, 423, 450, 351, 4686, 520, 4686, 512, + 1035, 1045, 1056, 4686, 4686, 4686, 4686, 0, 174, 282, 336, 520, 296, 315, 557, 0, 345, 334, 568, 511, - 327, 611, 569, 345, 419, 421, 441, 444, 631, 469, - 515, 520, 552, 557, 562, 563, 574, 609, 578, 605, - 0, 618, 616, 665, 619, 628, 616, 637, 664, 685, - 631, 657, 667, 663, 669, 678, 690, 689, 0, 693, - 681, 685, 722, 722, 720, 726, 724, 729, 737, 727, - 725, 743, 749, 762, 772, 766, 767, 784, 779, 785, - 781, 785, 818, 787, 775, 798, 4550, 0, 4550, 0, + 327, 611, 570, 345, 419, 421, 441, 444, 631, 469, + 515, 520, 542, 555, 560, 559, 563, 609, 578, 605, + 0, 618, 616, 665, 619, 628, 618, 643, 664, 685, + 650, 657, 667, 663, 669, 678, 690, 691, 0, 697, + 683, 704, 722, 722, 750, 726, 722, 728, 764, 724, + 725, 743, 773, 764, 774, 770, 769, 796, 777, 788, + 786, 787, 818, 822, 808, 828, 4686, 0, 4686, 0, 389, 0, 512, 0, 499, 1066, 1076, 1087, 0, 0, - 0, 0, 806, 824, 855, 859, 913, 860, 878, 922, - - 872, 961, 962, 1080, 957, 1081, 1133, 1084, 1083, 1085, - 1121, 1137, 1119, 1187, 952, 1145, 1149, 1170, 1189, 1181, - 1193, 1211, 1227, 1223, 1219, 1222, 1233, 1245, 1294, 1275, - 1285, 1277, 1290, 1307, 1347, 1306, 1339, 1349, 1362, 1364, - 1361, 1397, 1398, 1360, 1401, 1414, 1392, 1435, 1433, 1443, - 1447, 1465, 1451, 1468, 1403, 1487, 1501, 1489, 1503, 1505, - 1531, 1506, 1541, 1555, 1520, 1556, 1572, 1577, 1554, 1580, - 1598, 0, 4550, 498, 1645, 0, 822, 0, 829, 827, - 0, 839, 0, 828, 879, 872, 907, 1640, 907, 910, - 919, 929, 956, 982, 973, 1082, 1072, 1086, 1154, 1323, - - 1153, 1155, 1158, 1227, 1241, 1255, 0, 1265, 1273, 1300, - 1287, 1337, 1338, 1349, 1415, 1450, 1461, 1469, 1484, 1511, - 1526, 1540, 1589, 1581, 1601, 1609, 1606, 1626, 1639, 1644, - 1646, 1631, 1639, 0, 1634, 1650, 1647, 1653, 1658, 1655, - 1656, 1643, 1645, 1645, 0, 1655, 1650, 1650, 1668, 1669, - 1674, 1663, 1669, 1684, 1697, 1679, 1695, 1693, 1701, 1692, - 1703, 0, 1686, 1690, 1691, 1701, 1698, 1695, 1702, 1712, - 0, 1704, 1714, 1705, 1706, 1722, 1713, 1708, 1728, 1716, - 1731, 1739, 1744, 1741, 0, 495, 1779, 1756, 1757, 1758, - 1760, 1782, 1772, 1790, 1788, 1791, 1794, 1806, 1820, 1844, - - 1823, 1845, 1848, 1858, 1857, 1893, 1860, 1876, 1894, 1890, - 1902, 1911, 1930, 1912, 1927, 1936, 1951, 1945, 1946, 1968, - 1967, 1981, 1970, 1996, 1999, 2004, 1980, 2009, 2013, 2034, - 2037, 2038, 2047, 2050, 2055, 2068, 2076, 2072, 2091, 2073, - 2087, 2104, 2112, 2109, 2117, 2113, 2127, 2121, 2146, 2158, - 2167, 2179, 2180, 2145, 2171, 2195, 2176, 2197, 2212, 2216, - 2201, 2220, 2233, 2241, 2235, 2258, 2249, 2264, 2283, 2274, - 2270, 2289, 2275, 2287, 2300, 2304, 2323, 2328, 2329, 2337, - 2333, 2312, 2341, 2354, 2373, 2377, 2385, 2398, 2383, 2386, - 2417, 2408, 2423, 2427, 2431, 2439, 491, 1782, 1799, 1832, - - 1835, 1921, 1939, 2022, 0, 2029, 0, 0, 0, 2071, - 2104, 2130, 0, 2147, 2161, 2168, 0, 2258, 2255, 2329, - 2376, 2428, 2448, 2444, 2442, 0, 0, 2445, 2446, 2444, - 2447, 2473, 2475, 2472, 0, 2462, 2484, 0, 0, 2485, - 2471, 0, 2476, 0, 2474, 2490, 2478, 2473, 2480, 2481, - 2493, 0, 2490, 0, 0, 0, 2485, 0, 2494, 0, - 2502, 2496, 2500, 2492, 0, 2515, 2514, 2503, 2510, 2517, - 0, 2530, 2535, 2526, 2522, 2521, 2542, 2534, 2535, 2547, - 0, 2546, 2543, 2548, 2539, 0, 0, 2537, 2540, 0, - 2557, 2547, 2541, 2563, 2545, 2562, 2565, 2564, 0, 2552, - - 0, 2570, 0, 2563, 474, 2580, 2585, 2579, 2588, 2589, - 2601, 2603, 2611, 2622, 2613, 2614, 2619, 2643, 2652, 2644, - 2647, 2653, 2662, 2677, 2681, 2686, 2696, 2687, 2715, 2705, - 2746, 2727, 2730, 2721, 2736, 2740, 2759, 2749, 2775, 2784, - 2785, 2789, 2794, 2798, 2803, 2800, 2815, 2828, 2833, 2819, - 2829, 2834, 2843, 2852, 2869, 2858, 2873, 2874, 2895, 2883, - 2891, 2892, 2906, 2907, 2917, 2923, 2929, 2928, 2931, 2946, - 2962, 2971, 2947, 2979, 2980, 2983, 2995, 2997, 3001, 3016, - 3029, 3033, 3034, 3031, 3062, 3037, 3070, 3067, 3071, 3075, - 3096, 3083, 3101, 3085, 3088, 3093, 3119, 3104, 3144, 3136, - - 3141, 3153, 3147, 3150, 3155, 3178, 3165, 3187, 3186, 3190, - 3195, 3204, 442, 0, 0, 2569, 0, 2726, 0, 2755, - 2762, 2801, 2926, 2935, 2986, 0, 3046, 3089, 3186, 3196, - 0, 3195, 3186, 3200, 3211, 3216, 3204, 3206, 3213, 3225, - 3234, 0, 0, 3220, 3232, 0, 3238, 0, 0, 3226, - 0, 0, 3229, 3247, 3235, 3243, 0, 0, 0, 0, - 3253, 3241, 3261, 3255, 3245, 0, 0, 3261, 3250, 3251, - 3265, 3265, 0, 3274, 3276, 3274, 3260, 3279, 3285, 3269, - 3273, 3274, 3297, 3298, 0, 3295, 3299, 3301, 0, 3289, - 3308, 3310, 0, 0, 441, 3307, 3309, 3317, 3312, 3315, - - 3323, 3326, 3341, 3349, 3351, 3372, 3357, 3360, 3375, 3381, - 3383, 3394, 3400, 3411, 3424, 3416, 3413, 3426, 3434, 3435, - 3445, 3464, 3469, 3470, 3478, 3487, 3493, 3479, 3483, 3488, - 3501, 3504, 3518, 3522, 3532, 3523, 3541, 3537, 3533, 3536, - 3566, 3567, 3572, 3575, 3577, 3578, 3576, 3590, 3601, 3606, - 3607, 3629, 3611, 3632, 3630, 3644, 3645, 3661, 3655, 3674, - 3666, 3684, 3683, 3699, 3709, 3720, 3695, 3707, 3718, 3728, - 3733, 3737, 3739, 3772, 3749, 3750, 435, 3318, 0, 3338, - 3405, 3415, 0, 3441, 0, 3604, 3653, 3670, 0, 3755, - 0, 3760, 0, 0, 0, 3761, 0, 3754, 3756, 0, - - 0, 0, 0, 0, 3760, 3774, 3785, 0, 3768, 0, - 3776, 3791, 0, 3774, 3791, 3773, 0, 3796, 3804, 3789, - 3790, 0, 0, 3798, 0, 3810, 3811, 3813, 3797, 0, - 0, 0, 0, 3800, 3808, 434, 3817, 3823, 3826, 3825, - 3827, 3828, 3849, 3851, 3857, 3860, 3866, 3879, 3891, 3882, - 3897, 3894, 3900, 3903, 3905, 3916, 3919, 3933, 3931, 3934, - 3937, 3942, 3945, 3970, 3959, 3971, 3968, 3973, 3976, 4001, - 4009, 3999, 4007, 4004, 4013, 4025, 4039, 4043, 4030, 4047, - 4038, 4042, 4073, 4055, 4083, 4091, 4097, 4081, 4078, 4092, - 4109, 4113, 4121, 4135, 429, 0, 0, 0, 0, 0, - - 3836, 3989, 0, 4099, 4089, 0, 0, 0, 0, 4118, - 4120, 0, 0, 4119, 4137, 0, 0, 4130, 4140, 0, - 0, 0, 4134, 4141, 4135, 4151, 0, 0, 404, 4163, - 4165, 4166, 4167, 4171, 4175, 4184, 4179, 4181, 4200, 4189, - 4197, 4203, 4205, 4221, 4233, 4229, 4234, 4238, 4235, 4237, - 4239, 4272, 4263, 4271, 4273, 4274, 4275, 4289, 4308, 4305, - 4306, 4307, 402, 0, 4228, 0, 0, 4262, 0, 0, - 4290, 0, 0, 4291, 4301, 4309, 0, 401, 4317, 4331, - 4329, 4341, 4342, 4343, 4345, 4347, 4359, 4371, 4375, 4385, - 4377, 4380, 397, 4366, 0, 4368, 0, 0, 4373, 396, - - 4399, 4401, 4411, 4413, 4414, 4429, 383, 0, 0, 4394, - 382, 4415, 4416, 4444, 376, 0, 342, 4445, 333, 331, - 303, 291, 278, 255, 250, 245, 243, 240, 235, 221, - 226, 197, 187, 173, 4550, 0, 4550, 4519, 4524, 181, - 4529, 4534, 4539, 4544 + 0, 0, 826, 835, 856, 859, 913, 887, 872, 922, + + 905, 961, 962, 1080, 957, 1081, 1133, 1085, 1119, 1083, + 1097, 1122, 1143, 1193, 1145, 1175, 1178, 959, 1196, 1187, + 1217, 1219, 1228, 1232, 1183, 1137, 1247, 1238, 1296, 1253, + 1257, 1270, 1281, 1306, 1331, 1335, 1298, 1350, 1346, 1349, + 1365, 1383, 1380, 1374, 1405, 1402, 1413, 1415, 1414, 1450, + 1454, 1448, 1469, 1478, 1480, 1502, 1508, 1513, 1524, 1389, + 1518, 1519, 1552, 1554, 1563, 1573, 1596, 1567, 1467, 1591, + 1602, 0, 4686, 498, 1667, 0, 825, 0, 833, 831, + 0, 852, 0, 880, 916, 908, 937, 1619, 963, 962, + 979, 1067, 1066, 1154, 1140, 1159, 1159, 1178, 1232, 1264, + + 1315, 1288, 1292, 1278, 1339, 1333, 1360, 0, 1372, 1420, + 1426, 1425, 1450, 1452, 1465, 1509, 1527, 1570, 1578, 1590, + 1611, 1596, 1612, 1617, 1622, 1627, 1635, 1635, 1647, 1660, + 1662, 1663, 1649, 1657, 0, 1654, 1670, 1667, 1676, 1680, + 1675, 1676, 1663, 1665, 1665, 0, 1675, 1670, 1670, 1685, + 1686, 1692, 1682, 1683, 1687, 1692, 1705, 1699, 1713, 1710, + 1719, 1710, 1723, 0, 1706, 1710, 1712, 1722, 1719, 1716, + 1723, 1733, 0, 1725, 1736, 1725, 1728, 1743, 1731, 1726, + 1750, 1731, 1738, 1764, 1752, 1755, 0, 495, 1800, 1774, + 1778, 1779, 1793, 1796, 1802, 1811, 1808, 1817, 1832, 1833, + + 1841, 1847, 1856, 1850, 1865, 1871, 1881, 1899, 1890, 1882, + 1907, 1916, 1920, 1915, 1941, 1932, 1933, 1949, 1958, 1966, + 1945, 1970, 1975, 1974, 1989, 2006, 2003, 2011, 2015, 2007, + 2032, 2040, 2041, 2057, 2046, 2065, 2069, 2074, 2080, 2090, + 2109, 2113, 2098, 2111, 2114, 2139, 2128, 2126, 2143, 2152, + 2154, 2164, 2178, 2169, 2180, 2183, 2197, 2206, 2202, 2188, + 2231, 2219, 2214, 2223, 2236, 2264, 2262, 2268, 2272, 2247, + 2273, 2290, 2301, 2316, 2302, 2314, 2313, 2318, 2326, 2327, + 2352, 2355, 2357, 2366, 2376, 2370, 2378, 2391, 2401, 2414, + 2409, 2420, 2422, 2439, 2452, 2444, 2460, 2465, 2470, 2468, + + 491, 1799, 1802, 1799, 1837, 1874, 1964, 1981, 0, 2016, + 0, 0, 2022, 2036, 2093, 2107, 0, 2178, 2262, 2270, + 0, 2301, 2348, 2364, 2373, 2410, 2417, 2478, 2479, 2477, + 0, 0, 2482, 2483, 2480, 2483, 2508, 2510, 2509, 0, + 2498, 2518, 0, 0, 2520, 2507, 0, 2510, 0, 2508, + 2524, 2513, 2508, 2515, 2516, 2535, 0, 2523, 0, 0, + 0, 2517, 0, 2527, 0, 2535, 2524, 2539, 2531, 0, + 2549, 2550, 2539, 2545, 2552, 0, 2567, 2571, 0, 2560, + 2557, 2557, 2576, 2568, 2569, 2582, 0, 2581, 2578, 2583, + 2574, 0, 0, 2572, 2574, 0, 2591, 2582, 2576, 2597, + + 2581, 2596, 2601, 2599, 2600, 0, 2590, 0, 2612, 0, + 2600, 474, 2617, 2622, 2626, 2627, 2632, 2651, 2636, 2638, + 2670, 2648, 2661, 2680, 2684, 2682, 2701, 2696, 2705, 2710, + 2718, 2715, 2739, 2736, 2734, 2749, 2772, 2767, 2784, 2770, + 2778, 2788, 2793, 2810, 2816, 2802, 2824, 2832, 2838, 2806, + 2842, 2860, 2850, 2847, 2856, 2868, 2881, 2878, 2884, 2886, + 2896, 2909, 2914, 2926, 2922, 2938, 2950, 2912, 2940, 2944, + 2948, 2966, 2981, 2980, 2982, 2983, 2984, 3005, 3014, 3022, + 3006, 3038, 3037, 3054, 3055, 3051, 3050, 3060, 3076, 3073, + 3104, 3105, 3106, 3114, 3108, 3110, 3129, 3140, 3142, 3159, + + 3144, 3158, 3150, 3172, 3174, 3182, 3173, 3183, 3198, 3211, + 3216, 3213, 3222, 3217, 3232, 3246, 3241, 3256, 3247, 3265, + 3270, 3275, 442, 0, 0, 2619, 0, 2650, 0, 2699, + 2873, 2892, 2921, 2973, 2984, 3012, 0, 3014, 3078, 3094, + 3102, 3226, 0, 3253, 3256, 3269, 3280, 3281, 3267, 3271, + 3273, 3287, 3298, 0, 0, 3285, 3294, 0, 3302, 0, + 0, 3291, 0, 0, 3295, 3311, 3307, 3308, 0, 0, + 0, 0, 3319, 3306, 3329, 3323, 3314, 0, 0, 3330, + 3319, 3321, 3335, 3332, 0, 3343, 3344, 3342, 3328, 3345, + 3349, 3335, 3337, 3339, 3359, 3362, 0, 3360, 3365, 3365, + + 0, 3355, 3377, 3365, 3379, 0, 0, 441, 3378, 3379, + 3383, 3388, 3389, 3393, 3394, 3412, 3397, 3428, 3427, 3423, + 3429, 3445, 3453, 3451, 3462, 3479, 3463, 3467, 3477, 3496, + 3512, 3495, 3507, 3520, 3529, 3531, 3533, 3530, 3541, 3546, + 3569, 3563, 3565, 3579, 3574, 3575, 3598, 3587, 3600, 3604, + 3603, 3615, 3637, 3628, 3633, 3638, 3641, 3643, 3652, 3677, + 3678, 3667, 3649, 3683, 3686, 3702, 3707, 3691, 3712, 3701, + 3735, 3740, 3745, 3726, 3757, 3770, 3761, 3776, 3779, 3778, + 3795, 3780, 3809, 3811, 3812, 3813, 3814, 3824, 3843, 3849, + 3830, 3846, 435, 3380, 0, 3410, 3466, 3476, 3511, 0, + + 3575, 0, 3684, 3725, 3730, 3820, 0, 3851, 0, 3855, + 0, 0, 0, 3854, 0, 3855, 3850, 0, 0, 0, + 0, 0, 3854, 3868, 3878, 0, 3864, 0, 3875, 3887, + 0, 3869, 3885, 3866, 0, 3889, 3890, 3875, 3883, 0, + 0, 3891, 0, 3903, 3904, 3904, 3888, 0, 0, 0, + 0, 3891, 3904, 3900, 434, 3908, 3917, 3923, 3918, 3921, + 3940, 3919, 3942, 3951, 3953, 3974, 3975, 3977, 3983, 3993, + 3985, 4008, 3991, 3996, 4007, 4025, 4026, 4039, 4029, 4031, + 4037, 4041, 4042, 4047, 4050, 4060, 4083, 4065, 4081, 4082, + 4091, 4100, 4099, 4116, 4113, 4114, 4115, 4139, 4150, 4151, + + 4153, 4149, 4152, 4181, 4182, 4187, 4193, 4205, 4191, 4204, + 4217, 4219, 4221, 4222, 4243, 4247, 429, 0, 0, 0, + 3920, 0, 0, 3952, 3961, 0, 0, 4105, 4102, 0, + 0, 0, 0, 4159, 4161, 0, 0, 4172, 4223, 0, + 0, 4211, 4249, 0, 0, 0, 4243, 4249, 4243, 4259, + 0, 0, 0, 404, 4260, 4271, 4273, 4275, 4276, 4277, + 4279, 4292, 4289, 4301, 4305, 4314, 4310, 4311, 4313, 4327, + 4344, 4343, 4335, 4345, 4346, 4367, 4368, 4376, 4384, 4400, + 4378, 4381, 4389, 4397, 4421, 4419, 4418, 4422, 4430, 4432, + 402, 4340, 0, 4360, 0, 0, 4370, 0, 0, 4400, + + 0, 0, 4415, 4432, 4447, 0, 401, 4454, 4453, 4471, + 4455, 4463, 4472, 4476, 4484, 4495, 4485, 4489, 4497, 4526, + 4521, 4507, 397, 0, 4493, 0, 4492, 0, 0, 4518, + 396, 4529, 4530, 4538, 4547, 4539, 4543, 4562, 383, 0, + 0, 4542, 382, 4560, 4571, 4575, 376, 0, 342, 4581, + 333, 331, 303, 291, 278, 255, 250, 245, 243, 240, + 235, 221, 226, 197, 187, 173, 4686, 0, 4686, 4655, + 4660, 181, 4665, 4670, 4675, 4680 } ; -static const flex_int16_t yy_def[1145] = +static const flex_int16_t yy_def[1177] = { 0, - 1137, 1, 1138, 1138, 1137, 5, 1137, 1137, 1137, 1137, - 1137, 1139, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1137, 1141, 1137, 1142, 1142, 1137, - 1142, 1143, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, - 1144, 1144, 62, 62, 62, 62, 62, 62, 62, 62, + 1169, 1, 1170, 1170, 1169, 5, 1169, 1169, 1169, 1169, + 1169, 1171, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1169, 1173, 1169, 1174, 1174, 1169, + 1174, 1175, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, + 1176, 1176, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 1142, 1137, 1137, 1139, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1140, 1140, 1140, - - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1137, 1141, 1137, 1142, - 1142, 1142, 1143, 1142, 1142, 1142, 1142, 1142, 1142, 1142, - 1142, 1142, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 1174, 1169, 1169, 1171, 1169, 1169, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1172, 1172, 1172, + + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1169, 1173, 1169, 1174, + 1174, 1174, 1175, 1174, 1174, 1174, 1174, 1174, 1174, 1174, + 1174, 1174, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -916,19 +922,19 @@ static const flex_int16_t yy_def[1145] = 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 1142, 1137, 1137, 1137, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1142, 1142, 1142, 62, 62, 62, + 62, 1174, 1169, 1169, 1169, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1174, 1174, 1174, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -940,21 +946,21 @@ static const flex_int16_t yy_def[1145] = 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 1137, 1140, 1140, 1140, - - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - - 1140, 1140, 1140, 1140, 1142, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + + 1169, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1174, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -965,16 +971,17 @@ static const flex_int16_t yy_def[1145] = 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 1137, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1142, 62, 62, 62, 62, 62, - + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 1169, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1174, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -982,40 +989,42 @@ static const flex_int16_t yy_def[1145] = 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 1137, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1142, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 1169, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1174, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 1137, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1142, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 1169, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1172, 1172, 1172, 1174, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 1137, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1142, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 1137, 1140, 1140, 1140, 1140, 1140, 1140, 1142, + 1169, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 62, 62, 62, 62, 62, 62, 1137, 1140, 1140, 1140, - 1142, 62, 62, 62, 1137, 1140, 1142, 62, 1137, 1142, - 1137, 1142, 1137, 1142, 1137, 1142, 1137, 1142, 1137, 1142, - 1137, 1142, 1137, 1142, 1137, 1142, 0, 1137, 1137, 1137, - 1137, 1137, 1137, 1137 + 1172, 1172, 1172, 1172, 1172, 1172, 1174, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 1169, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 1174, 62, 62, 62, 62, 62, 62, 62, 1169, 1172, + 1172, 1172, 1174, 62, 62, 62, 1169, 1172, 1174, 62, + 1169, 1174, 1169, 1174, 1169, 1174, 1169, 1174, 1169, 1174, + 1169, 1174, 1169, 1174, 1169, 1174, 1169, 1174, 0, 1169, + 1169, 1169, 1169, 1169, 1169, 1169 } ; -static const flex_int16_t yy_nxt[4627] = +static const flex_int16_t yy_nxt[4763] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, @@ -1037,498 +1046,513 @@ static const flex_int16_t yy_nxt[4627] = 91, 91, 91, 91, 91, 91, 91, 90, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, 95, 99, 105, 100, 111, 98, 107, 136, 112, 101, - 1136, 102, 113, 108, 137, 103, 104, 176, 114, 276, + 1168, 102, 113, 108, 137, 103, 104, 176, 114, 276, - 109, 115, 106, 110, 1135, 116, 1134, 117, 99, 105, + 109, 115, 106, 110, 1167, 116, 1166, 117, 99, 105, 100, 111, 118, 107, 136, 112, 101, 119, 102, 113, 108, 137, 103, 104, 176, 114, 276, 109, 115, 106, - 110, 126, 116, 128, 117, 1133, 138, 127, 1132, 118, + 110, 126, 116, 128, 117, 1165, 138, 127, 1164, 118, 139, 129, 131, 172, 119, 120, 140, 130, 132, 133, - 134, 173, 1131, 121, 1130, 135, 122, 1129, 126, 123, - 128, 1128, 124, 138, 127, 125, 1127, 139, 129, 131, - 172, 1126, 120, 140, 130, 132, 133, 134, 173, 144, + 134, 173, 1163, 121, 1162, 135, 122, 1161, 126, 123, + 128, 1160, 124, 138, 127, 125, 1159, 139, 129, 131, + 172, 1158, 120, 140, 130, 132, 133, 134, 173, 144, 121, 141, 135, 122, 152, 142, 123, 174, 175, 124, - 148, 143, 125, 145, 1125, 153, 181, 86, 149, 146, + 148, 143, 125, 145, 1157, 153, 181, 86, 149, 146, - 147, 154, 150, 155, 1124, 151, 144, 156, 141, 86, - 86, 152, 142, 157, 174, 175, 1123, 148, 143, 169, + 147, 154, 150, 155, 1156, 151, 144, 156, 141, 86, + 86, 152, 142, 157, 174, 175, 1155, 148, 143, 169, 145, 170, 153, 277, 171, 149, 146, 147, 154, 150, 155, 158, 151, 159, 156, 282, 160, 232, 184, 283, - 157, 189, 190, 161, 162, 1122, 169, 1121, 170, 185, - 277, 171, 86, 86, 193, 193, 289, 193, 158, 1120, + 157, 189, 190, 161, 162, 1154, 169, 1153, 170, 185, + 277, 171, 86, 86, 193, 193, 289, 193, 158, 1152, 159, 221, 282, 160, 232, 231, 283, 222, 296, 278, 161, 162, 163, 297, 193, 193, 164, 279, 287, 165, - 166, 193, 193, 289, 193, 288, 167, 304, 221, 168, - 181, 86, 231, 1119, 222, 296, 278, 1117, 1115, 163, + 166, 193, 193, 289, 193, 288, 167, 305, 221, 168, + 181, 86, 231, 1151, 222, 296, 278, 1149, 1147, 163, - 297, 193, 193, 164, 279, 287, 165, 166, 1111, 1107, - 1100, 1093, 288, 167, 304, 1078, 168, 186, 186, 186, + 297, 193, 193, 164, 279, 287, 165, 166, 1143, 1139, + 1131, 1123, 288, 167, 305, 1107, 168, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 180, 180, - 1063, 180, 180, 180, 180, 180, 180, 193, 223, 271, - 1029, 995, 193, 936, 877, 305, 224, 180, 180, 180, - 233, 306, 225, 194, 234, 195, 307, 193, 308, 193, + 1091, 180, 180, 180, 180, 180, 180, 193, 223, 271, + 1054, 1017, 193, 955, 893, 306, 224, 180, 180, 180, + 233, 307, 225, 194, 234, 195, 308, 193, 309, 193, 235, 196, 193, 197, 193, 223, 271, 198, 199, 193, - 193, 193, 305, 224, 269, 270, 795, 233, 306, 225, - 194, 234, 195, 307, 193, 308, 193, 235, 196, 193, + 193, 193, 306, 224, 269, 270, 808, 233, 307, 225, + 194, 234, 195, 308, 193, 309, 193, 235, 196, 193, - 197, 193, 314, 713, 198, 199, 605, 193, 193, 497, - 386, 269, 270, 180, 180, 180, 385, 180, 180, 180, - 180, 180, 180, 274, 273, 272, 236, 247, 193, 314, + 197, 193, 315, 723, 198, 199, 612, 193, 193, 501, + 388, 269, 270, 180, 180, 180, 387, 180, 180, 180, + 180, 180, 180, 274, 273, 272, 236, 247, 193, 315, 237, 193, 192, 180, 180, 180, 238, 294, 248, 250, - 200, 193, 280, 251, 249, 281, 193, 295, 315, 252, - 264, 193, 265, 236, 247, 266, 316, 237, 193, 193, + 200, 193, 280, 251, 249, 281, 193, 295, 316, 252, + 264, 193, 265, 236, 247, 266, 317, 237, 193, 193, 201, 193, 191, 238, 294, 248, 250, 200, 193, 280, - 251, 249, 281, 193, 295, 315, 252, 264, 193, 265, - 180, 182, 266, 316, 284, 285, 193, 201, 193, 180, - 202, 317, 267, 318, 193, 319, 193, 203, 286, 320, - - 268, 290, 291, 292, 204, 293, 179, 205, 302, 303, - 321, 284, 285, 324, 193, 177, 193, 202, 317, 267, - 318, 193, 319, 193, 203, 286, 320, 268, 290, 291, - 292, 204, 293, 298, 205, 302, 303, 321, 299, 97, - 324, 193, 206, 193, 300, 96, 207, 325, 326, 322, - 208, 301, 323, 327, 332, 309, 209, 310, 333, 210, - 298, 311, 334, 87, 335, 299, 193, 1137, 312, 206, - 341, 300, 313, 207, 325, 326, 322, 208, 301, 323, - 327, 332, 309, 209, 310, 333, 210, 47, 311, 334, - 328, 335, 342, 193, 193, 312, 336, 341, 337, 313, - - 329, 211, 343, 212, 344, 330, 331, 338, 213, 339, - 345, 346, 347, 214, 193, 47, 348, 328, 349, 342, - 340, 193, 350, 336, 351, 337, 1137, 329, 211, 343, - 212, 344, 330, 331, 338, 213, 339, 345, 346, 347, - 214, 193, 215, 348, 352, 349, 193, 340, 353, 350, - 216, 351, 354, 217, 357, 355, 218, 358, 359, 219, - 356, 360, 220, 363, 364, 365, 193, 1137, 1137, 215, - 361, 352, 366, 193, 1137, 353, 1137, 216, 362, 354, - 217, 357, 355, 218, 358, 359, 219, 356, 360, 220, - 363, 364, 365, 193, 193, 226, 367, 361, 369, 366, - - 370, 227, 228, 229, 371, 362, 372, 368, 230, 374, - 376, 377, 375, 382, 193, 1137, 383, 1137, 378, 1137, - 384, 193, 226, 367, 379, 369, 373, 370, 227, 228, - 229, 371, 193, 372, 368, 230, 374, 376, 377, 375, - 382, 193, 239, 383, 380, 378, 193, 384, 498, 388, - 193, 379, 193, 373, 1137, 499, 240, 381, 1137, 193, - 500, 501, 241, 242, 502, 1137, 193, 1137, 1137, 239, - 193, 380, 1137, 193, 1137, 498, 388, 193, 1137, 193, - 1137, 193, 499, 240, 381, 193, 193, 500, 501, 241, - 242, 502, 390, 193, 193, 243, 389, 193, 193, 394, - - 391, 193, 395, 244, 193, 193, 193, 245, 193, 503, - 246, 1137, 193, 193, 193, 1137, 504, 1137, 193, 390, - 1137, 193, 243, 389, 193, 193, 394, 391, 193, 395, - 244, 193, 193, 193, 245, 392, 503, 246, 393, 193, - 505, 193, 253, 504, 254, 193, 509, 255, 193, 396, - 397, 193, 510, 511, 256, 257, 1137, 1137, 1137, 193, - 1137, 1137, 392, 398, 193, 393, 193, 505, 193, 253, - 512, 254, 1137, 509, 255, 193, 396, 397, 193, 510, - 511, 256, 257, 406, 401, 426, 193, 193, 193, 1137, - 398, 193, 258, 407, 399, 193, 259, 512, 193, 260, - - 261, 400, 513, 193, 514, 193, 262, 193, 193, 263, - 406, 401, 426, 515, 193, 193, 193, 1137, 1137, 258, - 407, 399, 1137, 259, 1137, 193, 260, 261, 400, 513, - 193, 514, 1137, 262, 193, 193, 263, 1137, 1137, 1137, - 515, 1137, 1137, 193, 91, 91, 91, 91, 91, 91, + 251, 249, 281, 193, 295, 316, 252, 264, 193, 265, + 180, 318, 266, 317, 284, 285, 193, 201, 193, 180, + 202, 319, 267, 320, 193, 321, 193, 203, 286, 322, + + 268, 290, 291, 292, 204, 293, 182, 205, 318, 303, + 304, 284, 285, 325, 193, 179, 193, 202, 319, 267, + 320, 193, 321, 193, 203, 286, 322, 268, 290, 291, + 292, 204, 293, 298, 205, 299, 303, 304, 300, 177, + 325, 193, 206, 193, 301, 97, 207, 326, 327, 323, + 208, 302, 324, 328, 333, 310, 209, 311, 334, 210, + 298, 312, 299, 96, 335, 300, 193, 87, 313, 206, + 336, 301, 314, 207, 326, 327, 323, 208, 302, 324, + 328, 333, 310, 209, 311, 334, 210, 1169, 312, 342, + 329, 335, 343, 193, 193, 313, 337, 336, 338, 314, + + 330, 211, 344, 212, 345, 331, 332, 339, 213, 340, + 346, 347, 348, 214, 193, 47, 342, 329, 349, 343, + 341, 193, 350, 337, 351, 338, 47, 330, 211, 344, + 212, 345, 331, 332, 339, 213, 340, 346, 347, 348, + 214, 193, 215, 352, 353, 349, 193, 341, 354, 350, + 216, 351, 355, 217, 359, 360, 218, 361, 1169, 219, + 365, 1169, 220, 1169, 366, 367, 193, 1169, 1169, 215, + 352, 353, 356, 193, 1169, 354, 1169, 216, 1169, 355, + 217, 359, 360, 218, 361, 357, 219, 365, 362, 220, + 358, 366, 367, 193, 193, 226, 368, 363, 369, 356, + + 371, 227, 228, 229, 372, 364, 373, 376, 230, 370, + 377, 1169, 357, 378, 193, 362, 379, 358, 374, 1169, + 380, 193, 226, 368, 363, 369, 381, 371, 227, 228, + 229, 372, 364, 373, 376, 230, 370, 377, 375, 1169, + 378, 193, 239, 379, 382, 374, 193, 380, 384, 385, + 386, 502, 193, 381, 1169, 1169, 240, 383, 1169, 503, + 390, 193, 241, 242, 504, 375, 193, 1169, 1169, 239, + 1169, 382, 193, 193, 505, 384, 385, 386, 502, 193, + 1169, 193, 193, 240, 383, 193, 503, 390, 193, 241, + 242, 504, 392, 193, 193, 243, 397, 391, 193, 193, + + 393, 505, 193, 244, 1169, 193, 1169, 245, 193, 193, + 246, 1169, 193, 193, 193, 1169, 506, 1169, 193, 392, + 1169, 193, 243, 397, 391, 193, 396, 393, 1169, 193, + 244, 193, 193, 193, 245, 394, 1169, 246, 395, 193, + 193, 193, 253, 506, 254, 193, 507, 255, 193, 398, + 399, 193, 508, 396, 256, 257, 1169, 1169, 193, 193, + 193, 1169, 394, 400, 193, 395, 193, 1169, 193, 253, + 509, 254, 1169, 507, 255, 193, 398, 399, 193, 508, + 1169, 256, 257, 408, 403, 193, 193, 193, 193, 1169, + 400, 193, 258, 409, 401, 193, 259, 509, 432, 260, + + 261, 402, 513, 193, 514, 193, 262, 193, 193, 263, + 408, 403, 193, 515, 193, 193, 193, 1169, 1169, 258, + 409, 401, 1169, 259, 1169, 432, 260, 261, 402, 513, + 193, 514, 193, 262, 193, 193, 263, 1169, 1169, 1169, + 515, 1169, 1169, 193, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 187, 188, 188, 188, 188, + 186, 186, 186, 186, 186, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 187, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 193, 193, 516, 193, - 193, 193, 517, 402, 403, 404, 1137, 405, 1137, 518, - 1137, 417, 408, 414, 415, 416, 193, 409, 1137, 193, - 193, 193, 1137, 193, 193, 516, 193, 193, 193, 517, - 402, 403, 404, 420, 405, 193, 518, 193, 417, 408, - 414, 415, 416, 193, 409, 410, 193, 193, 193, 193, - 411, 418, 419, 193, 1137, 193, 412, 193, 1137, 1137, - 420, 193, 193, 413, 193, 193, 519, 522, 427, 193, - 1137, 523, 410, 193, 1137, 428, 193, 411, 418, 419, - 193, 193, 193, 412, 193, 193, 193, 1137, 193, 524, - - 413, 1137, 193, 519, 522, 427, 193, 193, 523, 429, - 193, 421, 428, 422, 431, 193, 193, 423, 193, 193, - 1137, 1137, 193, 193, 424, 430, 524, 193, 425, 432, - 1137, 1137, 1137, 193, 193, 193, 429, 193, 421, 193, - 422, 431, 193, 193, 423, 193, 193, 433, 193, 193, - 525, 424, 430, 193, 193, 425, 432, 193, 436, 193, - 193, 437, 193, 438, 193, 193, 193, 434, 193, 193, - 435, 193, 193, 193, 433, 193, 193, 525, 526, 193, - 193, 527, 439, 1137, 193, 436, 193, 528, 437, 1137, - 438, 193, 193, 1137, 434, 193, 193, 435, 193, 529, - - 193, 193, 1137, 193, 1137, 526, 193, 1137, 527, 439, - 444, 193, 1137, 1137, 528, 445, 193, 447, 193, 440, - 193, 193, 1137, 446, 530, 1137, 529, 531, 193, 441, - 193, 193, 193, 193, 442, 443, 193, 444, 193, 448, - 193, 449, 445, 193, 447, 453, 440, 193, 193, 520, - 446, 530, 193, 193, 531, 1137, 441, 1137, 193, 193, - 193, 442, 443, 193, 521, 193, 448, 193, 449, 450, - 532, 451, 453, 193, 454, 193, 520, 533, 1137, 193, - 193, 1137, 452, 1137, 455, 193, 193, 193, 193, 534, - 193, 521, 193, 193, 458, 193, 450, 532, 451, 1137, - - 193, 454, 193, 456, 533, 457, 193, 193, 193, 452, - 193, 455, 193, 193, 193, 193, 534, 193, 193, 459, - 193, 458, 193, 193, 193, 460, 461, 193, 1137, 193, - 456, 463, 457, 193, 193, 193, 1137, 193, 193, 475, - 193, 535, 1137, 193, 193, 193, 459, 193, 1137, 193, - 193, 193, 460, 461, 193, 462, 193, 464, 463, 465, - 193, 193, 1137, 466, 1137, 193, 475, 193, 535, 193, - 193, 193, 536, 193, 193, 469, 193, 193, 467, 193, - 471, 193, 462, 468, 464, 1137, 465, 193, 193, 193, - 466, 193, 472, 193, 193, 537, 193, 193, 470, 536, - - 193, 473, 469, 538, 193, 467, 193, 471, 193, 474, - 468, 193, 478, 193, 193, 193, 193, 539, 193, 472, - 193, 193, 537, 477, 193, 470, 476, 193, 473, 193, - 538, 481, 193, 193, 540, 193, 474, 479, 193, 478, - 193, 193, 193, 483, 539, 488, 193, 193, 480, 193, - 477, 193, 193, 476, 193, 1137, 193, 193, 481, 193, - 193, 540, 193, 484, 479, 482, 193, 193, 541, 542, - 483, 1137, 488, 193, 193, 480, 193, 193, 193, 193, - 494, 193, 193, 485, 193, 486, 489, 193, 487, 1137, - 484, 1137, 482, 193, 193, 541, 542, 1137, 193, 1137, - - 193, 193, 193, 492, 193, 490, 193, 494, 193, 193, - 485, 491, 486, 489, 193, 487, 493, 1137, 193, 543, - 496, 495, 544, 193, 193, 193, 193, 193, 193, 193, - 492, 1137, 490, 193, 1137, 1137, 1137, 1137, 491, 1137, - 545, 546, 547, 493, 193, 193, 543, 496, 495, 544, - 193, 193, 548, 193, 275, 275, 275, 275, 275, 275, - 275, 275, 275, 275, 506, 549, 507, 545, 546, 547, - 550, 193, 551, 553, 554, 555, 556, 557, 558, 548, - 559, 508, 552, 560, 561, 562, 563, 564, 565, 566, - 567, 506, 549, 507, 568, 569, 570, 550, 571, 551, - - 553, 554, 555, 556, 557, 558, 572, 559, 508, 552, - 560, 561, 562, 563, 564, 565, 566, 567, 573, 574, - 575, 568, 569, 570, 576, 571, 577, 578, 579, 580, - 581, 582, 583, 572, 584, 585, 586, 587, 588, 589, - 590, 592, 594, 593, 595, 573, 574, 575, 596, 591, - 597, 576, 598, 577, 578, 579, 580, 581, 582, 583, - 599, 584, 585, 586, 587, 588, 589, 590, 592, 594, - 593, 595, 600, 603, 601, 596, 591, 597, 602, 598, - 604, 1137, 193, 606, 193, 1137, 607, 599, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 193, 600, - - 603, 601, 193, 193, 193, 602, 193, 604, 193, 193, - 606, 193, 609, 607, 193, 608, 193, 193, 193, 1137, - 193, 714, 1137, 1137, 611, 193, 1137, 610, 193, 193, - 193, 193, 193, 193, 193, 193, 193, 193, 715, 609, - 193, 193, 608, 193, 193, 193, 193, 193, 714, 193, - 612, 611, 193, 613, 610, 193, 1137, 1137, 1137, 193, - 1137, 193, 617, 193, 193, 715, 193, 193, 614, 193, - 615, 193, 1137, 193, 193, 1137, 193, 612, 716, 193, - 613, 717, 619, 193, 193, 616, 193, 618, 1137, 617, - 193, 193, 1137, 193, 193, 614, 193, 615, 193, 620, - - 623, 193, 624, 621, 193, 716, 193, 1137, 717, 619, - 193, 193, 616, 193, 618, 622, 193, 193, 193, 193, - 193, 193, 193, 626, 627, 1137, 620, 623, 193, 624, - 621, 193, 1137, 193, 625, 1137, 193, 628, 631, 193, - 193, 1137, 622, 193, 1137, 1137, 193, 193, 193, 193, - 626, 627, 629, 193, 630, 193, 193, 193, 193, 633, - 718, 625, 193, 193, 628, 631, 193, 193, 632, 1137, - 1137, 635, 193, 193, 719, 193, 193, 193, 1137, 629, - 193, 630, 193, 193, 193, 193, 633, 718, 634, 193, - 636, 193, 193, 637, 193, 632, 193, 193, 635, 193, - - 193, 719, 1137, 193, 193, 638, 643, 193, 1137, 193, - 639, 1137, 1137, 193, 193, 634, 193, 636, 193, 193, - 637, 193, 193, 193, 193, 193, 193, 193, 1137, 640, - 193, 644, 638, 643, 193, 193, 1137, 639, 641, 193, - 193, 193, 193, 193, 642, 193, 1137, 645, 720, 193, - 193, 721, 193, 193, 193, 193, 640, 193, 644, 193, - 193, 648, 193, 193, 193, 641, 193, 1137, 646, 193, - 647, 642, 193, 193, 645, 720, 193, 193, 721, 650, - 193, 193, 193, 193, 193, 651, 193, 193, 648, 649, - 193, 193, 1137, 193, 193, 646, 193, 647, 193, 656, - - 193, 193, 193, 193, 654, 722, 650, 193, 193, 652, - 193, 193, 651, 657, 193, 653, 649, 193, 193, 193, - 193, 193, 193, 193, 1137, 193, 656, 655, 193, 193, - 658, 654, 722, 193, 723, 193, 652, 193, 659, 193, - 657, 193, 653, 193, 193, 193, 193, 664, 660, 193, - 193, 661, 662, 193, 655, 193, 1137, 658, 193, 193, - 193, 723, 193, 193, 193, 659, 193, 193, 663, 724, - 193, 193, 193, 193, 664, 660, 665, 193, 661, 662, - 193, 1137, 193, 666, 193, 193, 193, 670, 725, 667, - 193, 193, 193, 193, 193, 663, 724, 193, 193, 193, - - 193, 726, 193, 665, 193, 193, 193, 668, 669, 727, - 666, 193, 671, 193, 670, 725, 667, 193, 193, 193, - 193, 193, 193, 193, 193, 193, 193, 676, 726, 193, - 673, 193, 193, 193, 668, 669, 727, 672, 193, 671, - 193, 193, 193, 193, 193, 1137, 677, 193, 193, 193, - 193, 674, 193, 193, 676, 678, 675, 673, 193, 193, - 1137, 193, 193, 1137, 672, 193, 193, 193, 193, 193, - 193, 682, 680, 677, 193, 193, 679, 1137, 674, 193, - 1137, 193, 678, 675, 193, 193, 193, 193, 193, 193, - 193, 728, 681, 193, 193, 193, 686, 729, 682, 680, - - 193, 688, 193, 679, 193, 683, 193, 685, 193, 193, - 193, 193, 684, 193, 193, 193, 193, 193, 728, 681, - 193, 193, 193, 686, 729, 687, 193, 193, 688, 193, - 193, 193, 683, 193, 685, 193, 193, 193, 696, 684, - 193, 1137, 193, 193, 689, 690, 193, 193, 193, 193, - 193, 1137, 687, 193, 193, 193, 193, 193, 193, 193, - 193, 692, 193, 193, 691, 696, 693, 193, 695, 193, - 730, 689, 690, 193, 193, 193, 193, 193, 694, 193, - 193, 193, 193, 193, 1137, 193, 193, 193, 692, 697, - 193, 691, 1137, 693, 193, 695, 193, 730, 731, 698, - - 193, 193, 193, 193, 1137, 694, 193, 193, 699, 193, - 193, 193, 193, 700, 193, 701, 697, 1137, 704, 193, - 703, 702, 1137, 193, 193, 731, 698, 193, 705, 193, - 193, 193, 193, 1137, 193, 699, 193, 1137, 193, 193, - 700, 706, 701, 193, 193, 704, 193, 703, 702, 193, - 193, 193, 707, 193, 193, 705, 193, 193, 193, 193, - 711, 193, 709, 193, 708, 193, 710, 732, 706, 193, - 193, 193, 733, 193, 734, 735, 193, 193, 712, 707, - 193, 193, 736, 737, 193, 193, 738, 711, 739, 709, - 193, 708, 193, 710, 732, 740, 193, 741, 742, 733, - - 193, 734, 735, 743, 193, 712, 744, 745, 746, 736, - 737, 747, 193, 738, 748, 739, 749, 750, 751, 752, - 753, 754, 740, 756, 741, 742, 757, 758, 759, 762, - 743, 763, 755, 744, 745, 746, 760, 761, 747, 764, - 765, 748, 766, 749, 750, 751, 752, 753, 754, 767, - 756, 768, 769, 757, 758, 759, 762, 770, 763, 755, - 771, 772, 773, 760, 761, 774, 764, 765, 775, 766, - 776, 777, 778, 779, 780, 781, 767, 782, 768, 769, - 783, 784, 785, 786, 770, 787, 788, 771, 772, 773, - 789, 790, 774, 791, 792, 775, 793, 776, 777, 778, - - 779, 780, 781, 794, 782, 193, 193, 783, 784, 785, - 786, 193, 787, 788, 193, 193, 878, 789, 790, 796, - 791, 792, 1137, 793, 797, 798, 193, 193, 800, 802, - 794, 193, 193, 193, 799, 193, 801, 193, 193, 193, - 193, 193, 193, 878, 803, 193, 796, 193, 193, 193, - 1137, 797, 798, 193, 193, 800, 802, 193, 193, 193, - 193, 799, 193, 801, 193, 193, 193, 193, 193, 193, - 193, 803, 193, 193, 193, 193, 193, 804, 193, 193, - 1137, 1137, 805, 806, 193, 1137, 193, 193, 193, 193, - 193, 1137, 193, 193, 807, 193, 193, 193, 193, 193, - - 193, 1137, 808, 193, 804, 193, 193, 193, 193, 805, - 806, 1137, 193, 193, 1137, 193, 193, 193, 809, 810, - 193, 807, 193, 193, 1137, 193, 193, 193, 812, 808, - 193, 193, 193, 193, 193, 193, 1137, 813, 811, 193, - 193, 193, 193, 1137, 814, 809, 810, 193, 1137, 193, - 193, 193, 879, 193, 193, 812, 193, 816, 193, 193, - 193, 193, 193, 817, 813, 811, 193, 193, 193, 193, - 815, 814, 193, 193, 193, 193, 193, 818, 193, 879, - 193, 880, 193, 193, 816, 193, 193, 881, 193, 193, - 817, 820, 193, 193, 193, 193, 819, 815, 1137, 193, - - 193, 193, 193, 193, 818, 193, 822, 823, 880, 193, - 193, 193, 193, 193, 881, 824, 821, 1137, 820, 193, - 193, 193, 193, 819, 193, 826, 193, 1137, 193, 193, - 193, 193, 193, 822, 823, 193, 882, 193, 193, 825, - 193, 193, 824, 821, 193, 193, 193, 193, 193, 193, - 827, 193, 826, 193, 193, 193, 193, 193, 193, 193, - 193, 193, 193, 882, 829, 193, 825, 193, 193, 193, - 828, 193, 193, 193, 193, 193, 193, 827, 831, 193, - 193, 193, 193, 830, 193, 1137, 193, 193, 193, 193, - 1137, 829, 193, 1137, 1137, 193, 193, 828, 193, 193, - - 193, 193, 193, 833, 193, 831, 193, 193, 832, 193, - 830, 193, 834, 835, 1137, 193, 193, 193, 193, 193, - 193, 193, 193, 836, 838, 193, 193, 193, 1137, 193, - 833, 193, 193, 193, 837, 832, 193, 193, 193, 834, - 835, 193, 193, 193, 193, 193, 193, 193, 193, 193, - 836, 838, 193, 193, 193, 193, 193, 841, 839, 193, - 193, 837, 840, 193, 193, 193, 1137, 883, 193, 193, - 193, 884, 193, 193, 193, 193, 193, 193, 1137, 193, - 193, 193, 193, 1137, 841, 839, 842, 843, 193, 840, - 193, 844, 193, 193, 883, 1137, 193, 193, 884, 193, - - 193, 193, 193, 846, 193, 193, 847, 1137, 193, 193, - 845, 1137, 885, 842, 843, 193, 1137, 193, 844, 193, - 193, 193, 848, 193, 193, 193, 193, 193, 1137, 193, - 846, 850, 193, 847, 849, 193, 193, 845, 851, 885, - 1137, 193, 193, 193, 193, 1137, 1137, 193, 193, 848, - 193, 852, 193, 193, 193, 193, 193, 193, 850, 193, - 193, 849, 193, 193, 1137, 851, 1137, 853, 193, 193, - 193, 857, 855, 854, 193, 193, 886, 193, 852, 193, - 193, 1137, 193, 193, 193, 856, 193, 193, 193, 193, - 193, 859, 1137, 193, 853, 1137, 193, 193, 857, 855, - - 854, 860, 193, 886, 193, 858, 193, 193, 193, 862, - 193, 193, 856, 193, 193, 193, 193, 193, 859, 193, - 193, 193, 193, 193, 193, 887, 861, 193, 860, 193, - 193, 193, 858, 864, 193, 193, 862, 863, 193, 193, - 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, - 193, 1137, 887, 861, 193, 1137, 193, 193, 193, 865, - 864, 193, 193, 1137, 863, 193, 193, 193, 866, 193, - 193, 867, 193, 193, 193, 869, 193, 193, 871, 193, - 1137, 872, 193, 868, 1137, 1137, 865, 193, 870, 193, - 193, 193, 193, 193, 193, 866, 193, 193, 867, 193, - - 193, 193, 869, 193, 193, 871, 193, 873, 872, 193, - 868, 193, 193, 193, 193, 870, 875, 193, 193, 888, - 193, 193, 889, 193, 193, 890, 193, 891, 193, 874, - 193, 193, 193, 193, 873, 892, 193, 893, 193, 193, - 193, 193, 894, 875, 876, 895, 888, 896, 193, 889, - 193, 193, 890, 897, 891, 898, 874, 193, 899, 193, - 193, 900, 892, 193, 893, 901, 902, 903, 193, 894, - 904, 876, 895, 905, 896, 906, 908, 193, 907, 909, - 897, 910, 898, 911, 912, 899, 913, 914, 900, 915, - 916, 917, 901, 902, 903, 918, 919, 904, 920, 921, - - 905, 922, 906, 908, 923, 907, 909, 924, 910, 925, - 911, 912, 926, 913, 914, 927, 915, 916, 917, 928, - 929, 930, 918, 919, 931, 920, 921, 932, 922, 933, - 934, 923, 935, 193, 924, 193, 925, 1137, 193, 926, - 1137, 938, 927, 193, 996, 1137, 928, 929, 930, 193, - 1137, 931, 939, 193, 932, 193, 933, 934, 193, 935, - 193, 193, 193, 193, 937, 193, 940, 193, 938, 193, - 193, 996, 193, 997, 1137, 193, 193, 193, 1137, 939, - 193, 1137, 193, 944, 941, 193, 193, 193, 193, 1137, - 193, 937, 942, 940, 193, 193, 193, 193, 193, 193, - - 997, 193, 193, 193, 193, 945, 193, 193, 943, 193, - 944, 941, 1137, 193, 193, 1137, 947, 946, 193, 942, - 948, 193, 193, 1137, 193, 193, 193, 193, 193, 193, - 193, 998, 945, 193, 193, 943, 193, 193, 1137, 952, - 193, 949, 193, 947, 946, 193, 193, 948, 193, 1137, - 193, 951, 953, 193, 193, 999, 193, 193, 998, 193, - 193, 193, 193, 1137, 193, 950, 952, 193, 949, 193, - 193, 193, 193, 193, 1000, 954, 955, 193, 951, 953, - 193, 193, 999, 1137, 193, 956, 193, 193, 193, 193, - 193, 193, 950, 958, 957, 193, 193, 193, 193, 193, - - 1137, 1000, 954, 955, 193, 193, 1137, 193, 193, 193, - 193, 961, 956, 193, 193, 193, 193, 193, 193, 193, - 958, 957, 193, 193, 193, 193, 960, 193, 959, 193, - 193, 193, 193, 193, 193, 1137, 193, 193, 961, 193, - 193, 193, 193, 193, 193, 962, 193, 193, 193, 964, - 193, 193, 193, 960, 193, 959, 193, 193, 193, 193, - 193, 193, 193, 193, 193, 1137, 193, 193, 193, 193, - 967, 193, 962, 963, 193, 193, 964, 193, 193, 193, - 1137, 965, 193, 193, 966, 193, 193, 193, 1137, 193, - 193, 193, 193, 193, 193, 193, 193, 967, 968, 970, - - 963, 193, 193, 193, 193, 193, 193, 971, 965, 193, - 193, 966, 193, 193, 193, 969, 193, 972, 193, 193, - 193, 193, 193, 193, 193, 968, 970, 193, 193, 193, - 193, 193, 973, 193, 971, 1137, 193, 976, 1001, 193, - 193, 1137, 969, 193, 972, 193, 974, 193, 193, 193, - 193, 193, 193, 193, 193, 193, 193, 193, 193, 973, - 193, 1137, 977, 193, 976, 1001, 978, 979, 975, 1137, - 193, 193, 1137, 974, 193, 193, 193, 1002, 193, 193, - 193, 193, 193, 193, 193, 193, 980, 193, 983, 977, - 193, 193, 193, 978, 979, 975, 981, 193, 193, 982, - - 193, 193, 193, 193, 1002, 193, 1137, 193, 193, 193, - 193, 1003, 193, 980, 193, 983, 1137, 193, 193, 193, - 193, 193, 985, 981, 984, 193, 982, 193, 193, 193, - 193, 987, 1137, 989, 193, 193, 193, 193, 1003, 193, - 986, 193, 988, 990, 193, 193, 193, 193, 193, 985, - 1137, 984, 193, 193, 991, 193, 193, 193, 987, 193, - 989, 993, 193, 193, 193, 193, 193, 986, 193, 988, - 990, 193, 193, 193, 193, 193, 193, 992, 1004, 193, - 193, 991, 193, 193, 1005, 193, 193, 1006, 993, 1007, - 193, 193, 193, 193, 994, 193, 193, 1008, 193, 1009, - - 1010, 193, 193, 193, 992, 1004, 193, 1011, 1012, 1013, - 193, 1005, 193, 1014, 1006, 1015, 1007, 1016, 193, 1017, - 1018, 994, 193, 193, 1008, 193, 1009, 1010, 1019, 1020, - 1021, 1022, 1023, 1024, 1011, 1012, 1013, 1025, 1026, 1027, - 1014, 1028, 1015, 1030, 1016, 193, 1017, 1018, 1137, 193, - 1137, 1032, 193, 193, 193, 1019, 1020, 1021, 1022, 1023, - 1024, 1031, 1064, 193, 1025, 1026, 1027, 1033, 1028, 193, - 1030, 193, 193, 193, 193, 193, 193, 193, 1032, 193, - 193, 193, 1034, 193, 1036, 1137, 193, 1137, 1031, 1064, - 193, 1035, 193, 1137, 1033, 193, 193, 193, 193, 193, - - 193, 193, 193, 193, 193, 193, 193, 1037, 193, 1034, - 193, 1036, 193, 193, 1038, 1137, 1137, 193, 1035, 193, - 193, 1039, 193, 193, 193, 193, 193, 1137, 193, 193, - 193, 1040, 193, 193, 1037, 193, 1137, 193, 1137, 193, - 193, 1038, 193, 193, 193, 193, 193, 193, 1039, 193, - 193, 193, 193, 193, 1041, 193, 193, 193, 1040, 193, - 193, 1137, 193, 193, 193, 193, 1137, 193, 193, 193, - 193, 193, 193, 193, 1042, 1137, 193, 193, 193, 193, - 193, 1041, 1137, 193, 193, 1044, 193, 193, 193, 193, - 193, 193, 193, 1045, 193, 193, 193, 193, 193, 193, - - 1137, 1042, 193, 1137, 193, 193, 193, 193, 1137, 1043, - 193, 1065, 1044, 1046, 193, 193, 193, 193, 193, 193, - 1045, 193, 193, 193, 193, 193, 193, 193, 1137, 193, - 1050, 1048, 193, 193, 1047, 193, 1043, 1137, 1065, 193, - 1046, 193, 1137, 193, 193, 193, 193, 193, 1049, 193, - 193, 193, 193, 193, 193, 193, 193, 1050, 1048, 1051, - 193, 1047, 193, 1052, 193, 193, 193, 1053, 193, 193, - 1054, 193, 193, 193, 193, 1049, 193, 193, 193, 1137, - 193, 193, 193, 193, 193, 193, 1051, 1055, 193, 193, - 1052, 193, 193, 193, 1053, 193, 193, 1054, 193, 193, - - 193, 193, 1137, 193, 193, 1057, 1056, 193, 193, 193, - 1137, 193, 193, 1058, 1055, 193, 193, 193, 193, 193, - 193, 1059, 1060, 193, 193, 1066, 193, 193, 193, 193, - 1067, 193, 1057, 1056, 193, 193, 193, 193, 193, 193, - 1058, 1137, 1068, 193, 193, 193, 193, 193, 1059, 1060, - 193, 193, 1066, 1069, 193, 193, 193, 1067, 1070, 193, - 1061, 193, 193, 1071, 193, 193, 193, 193, 1062, 1068, - 193, 1072, 1073, 1074, 193, 1075, 1076, 1077, 1137, 1137, - 1069, 193, 193, 1137, 1137, 1070, 193, 1061, 193, 193, - 1071, 193, 193, 193, 193, 1062, 1137, 193, 1072, 1073, - - 1074, 1079, 1075, 1076, 1077, 193, 1080, 1081, 193, 193, - 193, 193, 193, 193, 1137, 193, 193, 193, 193, 193, - 193, 193, 1137, 193, 193, 193, 193, 193, 1079, 193, - 193, 193, 193, 1080, 1081, 193, 193, 193, 193, 193, - 193, 1082, 193, 193, 193, 1083, 193, 193, 193, 193, - 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, - 193, 1086, 193, 193, 193, 193, 1084, 193, 1082, 1094, - 193, 1137, 1083, 193, 193, 193, 193, 1085, 193, 193, - 193, 193, 193, 193, 193, 193, 193, 193, 1086, 193, - 193, 193, 193, 1084, 193, 1088, 1094, 193, 193, 193, - - 193, 193, 193, 1095, 1085, 1137, 193, 193, 193, 193, - 193, 193, 193, 1087, 1089, 193, 193, 193, 193, 193, - 193, 193, 1088, 1090, 193, 193, 193, 193, 193, 1096, - 1095, 1092, 193, 193, 193, 193, 193, 1097, 1098, 1099, - 1087, 1089, 193, 193, 193, 193, 193, 193, 193, 1091, - 1090, 193, 193, 193, 193, 193, 1096, 193, 1092, 193, - 193, 193, 193, 193, 1097, 1098, 1099, 193, 193, 193, - 193, 193, 1101, 193, 1137, 193, 1091, 193, 193, 193, - 193, 193, 193, 1102, 193, 193, 1103, 193, 193, 193, - 193, 193, 1108, 193, 193, 193, 193, 193, 193, 1101, - - 193, 193, 193, 193, 193, 193, 193, 1106, 1109, 1110, - 1102, 193, 193, 1103, 193, 193, 193, 193, 193, 1108, - 193, 1104, 1105, 193, 193, 1112, 193, 193, 193, 1116, - 193, 193, 193, 193, 1106, 1109, 1110, 193, 193, 193, - 193, 193, 193, 1137, 193, 193, 1137, 193, 1104, 1105, - 193, 1113, 1112, 193, 193, 193, 1116, 193, 193, 193, - 193, 193, 193, 1137, 193, 1114, 193, 193, 193, 193, - 193, 193, 193, 1137, 193, 193, 1137, 1137, 1113, 1118, - 1137, 1137, 193, 1137, 193, 1137, 193, 193, 193, 193, - 193, 193, 1114, 1137, 1137, 1137, 1137, 193, 193, 1137, - - 1137, 1137, 193, 1137, 1137, 1137, 1118, 1137, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 193, 193, 46, - 46, 46, 46, 46, 88, 1137, 1137, 88, 88, 178, - 178, 178, 1137, 178, 180, 1137, 180, 180, 180, 183, - 1137, 183, 183, 183, 193, 1137, 193, 193, 193, 7, - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137 + 1169, 193, 517, 404, 405, 406, 1169, 407, 1169, 420, + 1169, 1169, 410, 193, 417, 418, 193, 411, 1169, 193, + 1169, 193, 1169, 193, 193, 516, 193, 421, 193, 517, + 404, 405, 406, 193, 407, 193, 420, 422, 193, 410, + 193, 417, 418, 193, 411, 412, 193, 413, 193, 193, + 414, 419, 1169, 193, 421, 193, 415, 423, 193, 193, + 193, 193, 193, 416, 422, 193, 518, 1169, 429, 193, + 519, 1169, 412, 193, 413, 520, 193, 414, 419, 193, + 193, 193, 193, 415, 423, 193, 193, 1169, 193, 521, + + 416, 193, 1169, 518, 193, 429, 193, 519, 430, 193, + 193, 522, 520, 193, 431, 1169, 193, 424, 193, 425, + 434, 193, 193, 426, 193, 440, 521, 1169, 193, 193, + 427, 193, 433, 193, 428, 430, 193, 1169, 522, 193, + 193, 431, 193, 193, 424, 193, 425, 434, 193, 193, + 426, 193, 440, 435, 193, 436, 193, 427, 193, 433, + 193, 428, 523, 193, 193, 193, 193, 439, 437, 193, + 193, 438, 193, 193, 193, 442, 1169, 441, 193, 193, + 435, 193, 436, 193, 193, 193, 524, 448, 447, 523, + 193, 193, 193, 193, 439, 437, 193, 1169, 438, 193, + + 193, 193, 442, 193, 441, 193, 193, 193, 450, 1169, + 193, 193, 527, 524, 448, 447, 449, 1169, 528, 529, + 193, 443, 193, 193, 193, 1169, 193, 193, 1169, 1169, + 193, 444, 193, 457, 193, 450, 445, 446, 451, 527, + 452, 525, 193, 449, 193, 528, 529, 1169, 443, 193, + 1169, 193, 193, 453, 193, 454, 526, 193, 444, 193, + 457, 193, 530, 445, 446, 451, 455, 452, 525, 193, + 531, 193, 193, 1169, 456, 193, 193, 193, 1169, 193, + 453, 193, 454, 526, 193, 458, 532, 459, 193, 530, + 460, 193, 193, 455, 533, 193, 193, 531, 461, 193, + + 193, 456, 193, 193, 193, 462, 193, 463, 193, 193, + 1169, 193, 458, 532, 459, 485, 1169, 460, 193, 193, + 193, 533, 193, 193, 1169, 461, 193, 193, 193, 193, + 464, 193, 462, 193, 463, 193, 193, 467, 193, 193, + 468, 193, 485, 465, 469, 1169, 534, 193, 193, 1169, + 535, 193, 466, 193, 1169, 193, 193, 464, 193, 193, + 193, 193, 193, 1169, 467, 536, 193, 468, 193, 1169, + 465, 469, 470, 534, 193, 193, 193, 535, 193, 466, + 193, 474, 473, 537, 1169, 471, 193, 193, 193, 1169, + 472, 538, 536, 498, 193, 193, 193, 1169, 475, 470, + + 193, 193, 476, 193, 193, 539, 193, 193, 474, 473, + 537, 477, 471, 193, 1169, 193, 479, 472, 538, 478, + 498, 193, 193, 193, 193, 475, 193, 193, 193, 476, + 481, 193, 539, 193, 193, 540, 482, 1169, 477, 193, + 193, 480, 193, 479, 193, 193, 478, 1169, 193, 541, + 193, 193, 486, 193, 193, 193, 487, 481, 483, 193, + 1169, 193, 540, 482, 193, 193, 193, 1169, 480, 484, + 193, 193, 193, 1169, 488, 193, 541, 193, 193, 486, + 193, 193, 1169, 487, 490, 483, 193, 491, 492, 193, + 1169, 193, 193, 496, 489, 1169, 484, 193, 193, 193, + + 193, 488, 1169, 493, 542, 193, 497, 193, 1169, 193, + 1169, 490, 543, 193, 491, 492, 193, 193, 1169, 193, + 496, 489, 193, 544, 500, 193, 193, 193, 193, 494, + 493, 542, 499, 497, 545, 495, 193, 193, 546, 543, + 193, 547, 193, 510, 193, 511, 193, 548, 193, 193, + 544, 500, 1169, 1169, 1169, 193, 494, 1169, 1169, 499, + 512, 545, 495, 549, 193, 546, 550, 551, 547, 193, + 510, 552, 511, 553, 548, 193, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 554, 512, 555, 556, + 549, 558, 559, 550, 551, 560, 561, 562, 552, 557, + + 553, 563, 564, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 574, 554, 575, 555, 556, 576, 558, 559, + 577, 578, 560, 561, 562, 579, 557, 580, 563, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 581, 575, 582, 583, 576, 584, 585, 577, 578, 586, + 587, 588, 579, 589, 580, 590, 591, 592, 593, 594, + 595, 598, 596, 599, 600, 601, 602, 581, 603, 582, + 583, 597, 584, 585, 604, 606, 586, 587, 588, 607, + 589, 610, 590, 591, 592, 593, 594, 595, 598, 596, + 599, 600, 601, 602, 611, 603, 605, 1169, 597, 608, + + 193, 604, 606, 609, 613, 193, 607, 1169, 610, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 614, + 193, 611, 193, 605, 193, 193, 608, 193, 193, 615, + 609, 613, 193, 616, 193, 1169, 1169, 193, 724, 193, + 1169, 725, 193, 193, 1169, 726, 614, 193, 193, 193, + 1169, 193, 193, 617, 193, 193, 615, 193, 193, 193, + 616, 193, 618, 193, 193, 724, 193, 193, 725, 193, + 193, 621, 726, 622, 620, 193, 193, 619, 193, 193, + 617, 193, 193, 727, 193, 193, 193, 193, 623, 618, + 193, 193, 625, 193, 193, 624, 193, 193, 621, 626, + + 622, 620, 193, 193, 619, 193, 193, 193, 631, 193, + 727, 193, 627, 728, 193, 623, 193, 193, 193, 625, + 193, 629, 624, 193, 193, 193, 626, 628, 193, 193, + 630, 1169, 1169, 193, 193, 631, 193, 635, 193, 627, + 728, 193, 193, 193, 193, 193, 193, 632, 629, 633, + 634, 1169, 193, 193, 628, 193, 638, 630, 193, 639, + 193, 193, 193, 193, 635, 1169, 193, 636, 193, 193, + 1169, 643, 193, 193, 632, 193, 633, 634, 193, 193, + 193, 641, 637, 638, 193, 193, 639, 193, 193, 193, + 640, 193, 193, 193, 636, 193, 193, 644, 643, 729, + + 645, 193, 193, 642, 193, 193, 193, 730, 641, 637, + 1169, 193, 193, 646, 193, 193, 193, 640, 193, 193, + 193, 193, 193, 193, 644, 1169, 729, 645, 193, 193, + 642, 193, 193, 651, 730, 193, 648, 193, 731, 193, + 646, 193, 193, 193, 732, 1169, 647, 193, 193, 193, + 649, 1169, 193, 193, 652, 650, 193, 193, 193, 193, + 651, 193, 193, 648, 193, 731, 193, 193, 193, 656, + 733, 732, 193, 647, 653, 654, 193, 649, 193, 193, + 193, 652, 650, 193, 193, 193, 193, 193, 193, 1169, + 655, 193, 193, 193, 193, 193, 656, 733, 658, 193, + + 193, 653, 654, 193, 659, 193, 193, 657, 1169, 1169, + 193, 193, 1169, 193, 193, 193, 193, 655, 193, 193, + 193, 660, 193, 734, 664, 658, 193, 193, 1169, 661, + 193, 659, 1169, 193, 657, 193, 193, 665, 193, 193, + 666, 662, 193, 193, 193, 1169, 735, 193, 660, 663, + 734, 664, 193, 193, 193, 193, 661, 193, 1169, 193, + 193, 670, 193, 193, 665, 667, 193, 666, 662, 193, + 669, 193, 193, 735, 193, 668, 663, 1169, 193, 193, + 672, 193, 193, 1169, 193, 193, 193, 193, 670, 193, + 193, 675, 667, 671, 673, 193, 193, 669, 193, 193, + + 193, 193, 668, 674, 193, 193, 193, 672, 676, 193, + 193, 677, 193, 1169, 193, 193, 193, 193, 675, 736, + 671, 673, 193, 193, 193, 193, 193, 193, 193, 193, + 674, 193, 193, 193, 193, 676, 193, 193, 677, 678, + 193, 193, 193, 193, 680, 193, 736, 679, 193, 684, + 193, 193, 193, 193, 683, 193, 193, 193, 682, 193, + 193, 193, 685, 1169, 681, 193, 678, 193, 1169, 193, + 193, 680, 193, 193, 679, 193, 684, 193, 1169, 193, + 690, 683, 193, 1169, 193, 682, 686, 193, 193, 685, + 193, 681, 193, 193, 193, 691, 193, 687, 193, 193, + + 193, 1169, 737, 1169, 193, 688, 689, 690, 193, 193, + 193, 738, 1169, 686, 193, 193, 193, 193, 193, 193, + 193, 193, 691, 1169, 687, 193, 193, 193, 695, 737, + 693, 692, 688, 689, 739, 193, 193, 193, 738, 697, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 694, + 696, 1169, 193, 193, 193, 695, 1169, 693, 692, 193, + 193, 739, 193, 193, 193, 1169, 697, 193, 699, 193, + 698, 193, 193, 193, 193, 193, 694, 696, 193, 193, + 193, 193, 740, 193, 1169, 1169, 193, 193, 701, 193, + 1169, 193, 193, 700, 702, 699, 705, 698, 193, 193, + + 193, 193, 193, 193, 193, 193, 741, 703, 193, 740, + 193, 704, 193, 1169, 742, 701, 193, 193, 1169, 193, + 700, 702, 193, 705, 193, 193, 706, 707, 193, 193, + 193, 193, 743, 741, 703, 193, 708, 193, 704, 193, + 193, 742, 712, 193, 193, 711, 193, 193, 193, 193, + 709, 193, 710, 706, 707, 193, 744, 713, 1169, 743, + 193, 1169, 193, 708, 193, 193, 193, 193, 193, 712, + 193, 1169, 711, 193, 193, 193, 715, 709, 193, 710, + 1169, 714, 193, 744, 713, 193, 193, 193, 717, 1169, + 193, 193, 193, 193, 193, 193, 193, 193, 716, 721, + + 719, 718, 745, 715, 720, 193, 193, 722, 714, 746, + 747, 193, 193, 193, 193, 717, 193, 193, 193, 748, + 749, 193, 750, 193, 751, 716, 721, 719, 718, 745, + 752, 720, 753, 193, 722, 754, 746, 747, 193, 755, + 756, 193, 757, 193, 758, 759, 748, 749, 760, 750, + 761, 751, 762, 763, 764, 765, 768, 752, 769, 753, + 770, 771, 754, 766, 772, 773, 755, 756, 774, 757, + 775, 758, 759, 776, 767, 760, 777, 761, 778, 762, + 763, 764, 765, 768, 779, 769, 780, 770, 771, 781, + 766, 772, 773, 782, 783, 774, 784, 775, 785, 786, + + 776, 767, 787, 777, 788, 778, 789, 790, 791, 792, + 793, 779, 794, 780, 795, 796, 781, 797, 798, 799, + 782, 783, 800, 784, 801, 785, 786, 802, 803, 787, + 804, 788, 805, 789, 790, 791, 792, 793, 806, 794, + 807, 795, 796, 193, 797, 798, 799, 1169, 193, 800, + 1169, 801, 193, 193, 802, 803, 809, 804, 193, 805, + 1169, 810, 815, 193, 193, 806, 894, 807, 193, 1169, + 193, 813, 811, 812, 193, 193, 895, 193, 193, 193, + 193, 1169, 193, 809, 193, 193, 814, 193, 810, 815, + 193, 193, 816, 894, 193, 193, 193, 193, 813, 811, + + 812, 193, 817, 895, 193, 193, 193, 193, 193, 193, + 193, 193, 819, 814, 193, 1169, 193, 1169, 818, 816, + 1169, 193, 193, 193, 193, 896, 193, 193, 193, 817, + 193, 193, 1169, 193, 193, 193, 193, 193, 1169, 819, + 820, 193, 193, 193, 193, 818, 821, 193, 1169, 193, + 822, 193, 896, 193, 193, 193, 193, 193, 193, 823, + 193, 193, 193, 193, 193, 193, 1169, 820, 193, 193, + 825, 193, 824, 821, 193, 193, 826, 822, 193, 1169, + 193, 1169, 193, 193, 1169, 193, 823, 193, 193, 193, + 827, 193, 193, 193, 828, 193, 193, 825, 193, 824, + + 831, 1169, 193, 826, 193, 1169, 829, 193, 830, 193, + 193, 832, 193, 193, 193, 1169, 193, 827, 193, 193, + 193, 828, 193, 193, 193, 193, 1169, 831, 193, 1169, + 193, 193, 839, 829, 193, 830, 193, 193, 832, 193, + 193, 193, 193, 193, 835, 193, 193, 833, 193, 1169, + 193, 193, 193, 834, 837, 193, 193, 193, 193, 839, + 838, 193, 193, 193, 193, 836, 193, 1169, 193, 193, + 193, 835, 841, 193, 833, 193, 193, 193, 193, 193, + 834, 837, 193, 193, 193, 193, 193, 838, 193, 193, + 842, 193, 836, 193, 193, 193, 193, 193, 897, 841, + + 193, 840, 193, 193, 193, 193, 193, 193, 1169, 193, + 193, 193, 193, 193, 193, 193, 898, 842, 843, 844, + 193, 193, 193, 193, 193, 897, 1169, 193, 840, 193, + 193, 193, 193, 193, 193, 846, 845, 193, 193, 193, + 193, 193, 193, 898, 1169, 843, 844, 1169, 193, 193, + 1169, 193, 193, 847, 193, 193, 899, 193, 193, 193, + 193, 849, 846, 845, 193, 193, 193, 193, 193, 193, + 193, 848, 193, 853, 193, 193, 193, 850, 851, 193, + 847, 1169, 193, 899, 193, 193, 193, 193, 849, 852, + 193, 193, 193, 193, 193, 193, 193, 193, 848, 193, + + 853, 193, 1169, 193, 850, 851, 193, 193, 193, 193, + 856, 193, 193, 193, 900, 855, 852, 193, 1169, 193, + 901, 193, 854, 193, 1169, 1169, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 856, 902, 193, + 193, 900, 855, 859, 903, 857, 858, 901, 193, 854, + 1169, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 860, 861, 862, 193, 902, 1169, 193, 193, 1169, + 859, 903, 857, 858, 1169, 193, 193, 193, 193, 193, + 193, 193, 866, 193, 193, 865, 193, 193, 860, 861, + 862, 193, 1169, 863, 864, 193, 193, 193, 867, 193, + + 193, 193, 193, 193, 193, 1169, 193, 193, 193, 866, + 193, 193, 865, 193, 904, 1169, 905, 1169, 1169, 193, + 863, 864, 193, 193, 193, 867, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 906, 193, 871, 868, 1169, + 193, 904, 872, 905, 869, 873, 193, 870, 1169, 193, + 193, 193, 193, 874, 193, 193, 193, 193, 193, 193, + 193, 193, 906, 193, 871, 868, 193, 193, 875, 872, + 877, 869, 873, 1169, 870, 193, 193, 193, 193, 193, + 874, 193, 193, 193, 193, 193, 193, 193, 193, 876, + 193, 1169, 1169, 193, 878, 875, 193, 877, 193, 193, + + 193, 1169, 193, 193, 193, 193, 1169, 881, 193, 193, + 1169, 193, 193, 193, 879, 193, 876, 193, 193, 193, + 193, 878, 880, 193, 193, 193, 193, 193, 193, 193, + 1169, 193, 193, 882, 881, 193, 193, 193, 884, 193, + 1169, 879, 193, 887, 193, 193, 193, 193, 193, 880, + 886, 193, 907, 883, 885, 193, 193, 193, 193, 193, + 882, 888, 193, 193, 193, 884, 193, 193, 193, 193, + 887, 193, 193, 193, 1169, 193, 889, 886, 193, 907, + 883, 885, 193, 908, 193, 193, 193, 193, 888, 193, + 193, 891, 193, 193, 193, 193, 193, 909, 890, 193, + + 193, 193, 193, 889, 910, 193, 911, 912, 913, 193, + 908, 193, 914, 915, 193, 892, 193, 916, 891, 193, + 193, 193, 917, 193, 909, 890, 918, 919, 193, 193, + 920, 910, 921, 911, 912, 913, 922, 923, 193, 914, + 915, 926, 892, 193, 916, 927, 928, 924, 193, 917, + 925, 929, 930, 918, 919, 931, 932, 920, 933, 921, + 934, 935, 936, 922, 923, 937, 938, 939, 926, 940, + 941, 942, 927, 928, 924, 943, 944, 925, 929, 930, + 945, 946, 931, 932, 947, 933, 948, 934, 935, 936, + 949, 950, 937, 938, 939, 951, 940, 941, 942, 952, + + 953, 954, 943, 944, 193, 193, 1018, 945, 946, 193, + 1169, 947, 1169, 948, 193, 957, 1169, 949, 950, 193, + 958, 960, 951, 193, 193, 193, 952, 953, 954, 193, + 956, 193, 193, 1018, 193, 193, 193, 959, 193, 193, + 193, 193, 957, 193, 1169, 1019, 193, 958, 960, 193, + 193, 193, 193, 193, 193, 964, 193, 956, 193, 963, + 1169, 193, 193, 961, 959, 193, 193, 193, 962, 193, + 193, 193, 1019, 193, 193, 193, 193, 193, 1169, 193, + 193, 193, 964, 965, 967, 193, 963, 966, 193, 969, + 961, 193, 1020, 193, 1169, 962, 193, 193, 193, 193, + + 193, 193, 193, 193, 193, 193, 193, 970, 193, 193, + 965, 967, 968, 193, 966, 193, 969, 1021, 193, 1020, + 193, 973, 193, 193, 193, 193, 193, 1169, 1169, 1169, + 193, 1169, 193, 974, 970, 193, 193, 971, 193, 968, + 193, 193, 193, 1169, 1021, 1169, 193, 972, 973, 193, + 193, 1022, 193, 193, 979, 193, 193, 193, 193, 193, + 974, 975, 1169, 978, 971, 193, 193, 193, 193, 193, + 976, 977, 193, 193, 972, 193, 193, 193, 1022, 193, + 193, 979, 193, 193, 193, 193, 193, 193, 975, 193, + 978, 193, 193, 193, 193, 193, 981, 976, 977, 193, + + 193, 193, 193, 193, 193, 193, 193, 982, 1023, 193, + 980, 193, 1169, 193, 193, 193, 193, 1169, 193, 193, + 193, 193, 193, 981, 193, 193, 193, 193, 193, 985, + 193, 1169, 193, 193, 982, 1023, 193, 980, 193, 983, + 193, 193, 193, 1169, 193, 984, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 986, 985, 193, 987, 193, + 193, 193, 1169, 193, 193, 1169, 983, 193, 193, 989, + 988, 193, 984, 193, 193, 193, 193, 193, 193, 193, + 1169, 193, 986, 193, 193, 987, 193, 193, 193, 193, + 193, 193, 990, 193, 193, 193, 989, 988, 193, 991, + + 1169, 193, 193, 193, 193, 193, 193, 992, 993, 193, + 193, 193, 994, 193, 193, 1169, 193, 997, 1024, 990, + 193, 1169, 193, 193, 193, 193, 991, 193, 193, 193, + 193, 193, 193, 193, 992, 993, 193, 193, 193, 994, + 193, 995, 998, 1169, 997, 1024, 996, 193, 193, 1025, + 193, 193, 193, 193, 193, 193, 193, 999, 193, 193, + 193, 193, 1000, 1026, 193, 193, 193, 1002, 995, 998, + 1001, 193, 193, 996, 193, 193, 1025, 1169, 1169, 193, + 193, 193, 1003, 193, 999, 193, 193, 193, 193, 1000, + 1026, 193, 1004, 193, 1002, 1169, 193, 1001, 193, 193, + + 1008, 1005, 193, 193, 193, 193, 193, 193, 193, 1003, + 193, 1169, 1169, 193, 193, 1006, 193, 1009, 193, 1004, + 1007, 193, 193, 193, 193, 193, 193, 1008, 1005, 193, + 193, 193, 193, 193, 193, 1010, 1011, 193, 1012, 193, + 193, 193, 1006, 193, 1009, 1169, 1014, 1007, 193, 193, + 193, 193, 193, 193, 1013, 193, 193, 193, 193, 193, + 193, 1027, 1010, 1011, 193, 1012, 193, 193, 193, 193, + 193, 1016, 193, 1014, 1028, 193, 193, 193, 1015, 1029, + 1030, 1013, 193, 193, 193, 193, 193, 193, 1027, 193, + 1031, 1032, 193, 1033, 1034, 193, 193, 193, 1016, 193, + + 1035, 1028, 193, 193, 1036, 1015, 1029, 1030, 1037, 1038, + 1039, 1040, 1041, 1042, 1043, 1044, 193, 1031, 1032, 193, + 1033, 1034, 193, 1045, 1046, 1047, 1048, 1035, 1049, 1050, + 1051, 1036, 1052, 1053, 1055, 1037, 1038, 1039, 1040, 1041, + 1042, 1043, 1044, 193, 1057, 193, 1092, 193, 1169, 193, + 1045, 1046, 1047, 1048, 193, 1049, 1050, 1051, 1056, 1052, + 1053, 1055, 1058, 193, 193, 193, 193, 193, 193, 193, + 193, 1057, 193, 1092, 193, 1060, 193, 193, 1093, 193, + 1059, 193, 1169, 1094, 1169, 1056, 193, 1061, 193, 1058, + 193, 193, 193, 193, 193, 193, 193, 193, 1062, 193, + + 193, 193, 1060, 193, 193, 1093, 193, 1059, 1063, 193, + 1094, 193, 1169, 193, 1061, 193, 1065, 193, 1064, 193, + 193, 193, 193, 193, 193, 1062, 193, 193, 193, 193, + 193, 193, 1066, 193, 193, 1063, 193, 193, 193, 193, + 1169, 1169, 193, 1065, 193, 1064, 193, 193, 193, 193, + 193, 1067, 193, 193, 193, 193, 193, 193, 193, 1066, + 193, 193, 1169, 193, 193, 193, 193, 193, 193, 193, + 1069, 193, 193, 193, 1068, 193, 193, 193, 1067, 193, + 193, 193, 193, 193, 193, 193, 1071, 193, 193, 1070, + 193, 193, 193, 193, 193, 193, 193, 1069, 193, 193, + + 193, 1068, 193, 193, 193, 1072, 193, 193, 193, 193, + 193, 193, 193, 1071, 193, 193, 1070, 193, 193, 1169, + 193, 1073, 1075, 193, 1074, 193, 193, 193, 193, 193, + 1169, 1095, 1072, 193, 193, 193, 193, 193, 193, 1077, + 193, 193, 193, 1096, 193, 193, 193, 1169, 1073, 1075, + 1169, 1074, 193, 193, 193, 193, 193, 1076, 1095, 193, + 1078, 193, 193, 1079, 193, 193, 1077, 193, 193, 193, + 1096, 1169, 193, 193, 1080, 193, 193, 193, 193, 193, + 1169, 1169, 1169, 1097, 1076, 193, 193, 1078, 193, 193, + 1079, 1081, 193, 1082, 1098, 193, 193, 193, 193, 193, + + 1169, 1080, 193, 193, 193, 193, 193, 193, 193, 1084, + 1097, 1099, 193, 193, 1083, 1085, 1169, 193, 1081, 193, + 1082, 1098, 193, 193, 193, 193, 193, 193, 193, 1086, + 193, 193, 1087, 193, 193, 193, 1084, 193, 1099, 193, + 193, 1083, 1085, 193, 193, 193, 193, 193, 193, 1100, + 193, 193, 1101, 1169, 193, 193, 1086, 193, 193, 1087, + 193, 1088, 1169, 193, 193, 193, 193, 193, 193, 193, + 193, 1089, 193, 193, 193, 193, 1100, 193, 193, 1101, + 1090, 1102, 1103, 1104, 1105, 1106, 193, 1169, 1088, 193, + 193, 1169, 193, 193, 193, 193, 193, 193, 1089, 193, + + 193, 1108, 193, 193, 1169, 1109, 193, 1090, 1102, 1103, + 1104, 1105, 1106, 193, 1110, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 1108, 193, + 193, 1111, 1109, 193, 1169, 193, 193, 193, 193, 193, + 193, 1110, 193, 1169, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 1112, 193, 193, 1111, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 1113, 193, + 193, 193, 193, 193, 193, 1169, 1114, 1169, 193, 1124, + 193, 193, 1112, 193, 193, 1115, 193, 193, 193, 193, + 193, 193, 193, 1116, 193, 1113, 193, 193, 193, 193, + + 193, 1125, 193, 1114, 193, 1169, 1124, 193, 193, 1169, + 193, 1126, 1115, 193, 193, 193, 193, 193, 193, 193, + 1116, 193, 193, 193, 193, 1117, 193, 193, 1125, 193, + 193, 193, 1118, 1169, 193, 193, 1119, 193, 1126, 1127, + 193, 193, 193, 193, 1122, 193, 193, 193, 193, 193, + 193, 193, 1117, 193, 193, 1120, 193, 193, 193, 1118, + 1121, 1128, 193, 1119, 193, 193, 1127, 193, 193, 1129, + 193, 1122, 193, 193, 193, 193, 193, 1130, 193, 193, + 193, 193, 1120, 193, 1169, 193, 1169, 1121, 1128, 193, + 1169, 193, 193, 1132, 193, 193, 1129, 193, 193, 193, + + 193, 193, 193, 193, 1130, 193, 193, 193, 193, 193, + 193, 193, 1133, 1134, 1169, 193, 193, 193, 193, 1140, + 1132, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 1141, 193, 1135, 193, 193, 193, 193, 1133, + 1134, 193, 193, 1136, 193, 193, 1140, 193, 193, 193, + 193, 1138, 193, 193, 1142, 193, 1144, 193, 193, 1141, + 193, 1135, 193, 1137, 193, 193, 1169, 193, 193, 193, + 1136, 1169, 193, 193, 193, 193, 193, 1148, 1138, 193, + 193, 1142, 193, 1144, 193, 193, 193, 1145, 193, 193, + 1137, 193, 193, 193, 193, 1169, 193, 193, 1146, 193, + + 193, 193, 193, 193, 1148, 1169, 193, 193, 193, 1169, + 1150, 193, 193, 193, 1145, 193, 193, 193, 1169, 1169, + 193, 193, 1169, 1169, 193, 1146, 1169, 193, 193, 1169, + 1169, 1169, 1169, 193, 193, 193, 1169, 1150, 1169, 1169, + 1169, 1169, 1169, 1169, 193, 1169, 1169, 1169, 193, 1169, + 1169, 1169, 1169, 1169, 193, 46, 46, 46, 46, 46, + 88, 1169, 1169, 88, 88, 178, 178, 178, 1169, 178, + 180, 1169, 180, 180, 180, 183, 1169, 183, 183, 183, + 193, 1169, 193, 193, 193, 7, 1169, 1169, 1169, 1169, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + 1169, 1169 } ; -static const flex_int16_t yy_chk[4627] = +static const flex_int16_t yy_chk[4763] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1549,43 +1573,43 @@ static const flex_int16_t yy_chk[4627] = 5, 5, 9, 9, 10, 10, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, - 18, 21, 22, 21, 24, 1140, 23, 30, 24, 21, - 1134, 21, 24, 23, 31, 21, 21, 44, 24, 99, + 18, 21, 22, 21, 24, 1172, 23, 30, 24, 21, + 1166, 21, 24, 23, 31, 21, 21, 44, 24, 99, - 23, 24, 22, 23, 1133, 25, 1132, 25, 21, 22, + 23, 24, 22, 23, 1165, 25, 1164, 25, 21, 22, 21, 24, 25, 23, 30, 24, 21, 25, 21, 24, 23, 31, 21, 21, 44, 24, 99, 23, 24, 22, - 23, 27, 25, 28, 25, 1131, 32, 27, 1130, 25, + 23, 27, 25, 28, 25, 1163, 32, 27, 1162, 25, 32, 28, 29, 42, 25, 26, 32, 28, 29, 29, - 29, 42, 1129, 26, 1128, 29, 26, 1127, 27, 26, - 28, 1126, 26, 32, 27, 26, 1125, 32, 28, 29, - 42, 1124, 26, 32, 28, 29, 29, 29, 42, 34, + 29, 42, 1161, 26, 1160, 29, 26, 1159, 27, 26, + 28, 1158, 26, 32, 27, 26, 1157, 32, 28, 29, + 42, 1156, 26, 32, 28, 29, 29, 29, 42, 34, 26, 33, 29, 26, 36, 33, 26, 43, 43, 26, - 35, 33, 26, 34, 1123, 36, 49, 49, 35, 34, + 35, 33, 26, 34, 1155, 36, 49, 49, 35, 34, - 34, 36, 35, 38, 1122, 35, 34, 38, 33, 50, - 50, 36, 33, 38, 43, 43, 1121, 35, 33, 41, + 34, 36, 35, 38, 1154, 35, 34, 38, 33, 50, + 50, 36, 33, 38, 43, 43, 1153, 35, 33, 41, 34, 41, 36, 100, 41, 35, 34, 34, 36, 35, 38, 39, 35, 39, 38, 103, 39, 71, 55, 104, - 38, 58, 58, 39, 39, 1120, 41, 1119, 41, 55, - 100, 41, 86, 86, 67, 70, 108, 71, 39, 1117, + 38, 58, 58, 39, 39, 1152, 41, 1151, 41, 55, + 100, 41, 86, 86, 67, 70, 108, 71, 39, 1149, 39, 67, 103, 39, 71, 70, 104, 67, 111, 101, 39, 39, 40, 111, 67, 70, 40, 101, 107, 40, 40, 67, 70, 108, 71, 107, 40, 114, 67, 40, - 181, 181, 70, 1115, 67, 111, 101, 1111, 1107, 40, + 181, 181, 70, 1147, 67, 111, 101, 1143, 1139, 40, - 111, 67, 70, 40, 101, 107, 40, 40, 1100, 1093, - 1078, 1063, 107, 40, 114, 1029, 40, 56, 56, 56, + 111, 67, 70, 40, 101, 107, 40, 40, 1131, 1123, + 1107, 1091, 107, 40, 114, 1054, 40, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 61, 61, - 995, 61, 61, 61, 61, 61, 61, 77, 68, 84, - 936, 877, 68, 795, 713, 115, 68, 61, 61, 61, + 1017, 61, 61, 61, 61, 61, 61, 77, 68, 84, + 955, 893, 68, 808, 723, 115, 68, 61, 61, 61, 72, 116, 68, 61, 72, 61, 117, 77, 118, 84, 72, 61, 68, 61, 77, 68, 84, 61, 61, 68, - 72, 83, 115, 68, 83, 83, 605, 72, 116, 68, + 72, 83, 115, 68, 83, 83, 612, 72, 116, 68, 61, 72, 61, 117, 77, 118, 84, 72, 61, 68, - 61, 83, 120, 497, 61, 61, 386, 72, 83, 274, + 61, 83, 120, 501, 61, 61, 388, 72, 83, 274, 185, 83, 83, 61, 62, 62, 183, 62, 62, 62, 62, 62, 62, 90, 88, 85, 73, 76, 83, 120, 73, 76, 60, 62, 62, 62, 73, 110, 76, 78, @@ -1593,452 +1617,467 @@ static const flex_int16_t yy_chk[4627] = 81, 76, 81, 73, 76, 81, 122, 73, 76, 78, 62, 81, 59, 73, 110, 76, 78, 62, 81, 102, 78, 76, 102, 73, 110, 121, 78, 81, 76, 81, - 52, 51, 81, 122, 105, 105, 78, 62, 81, 62, - 63, 123, 82, 124, 63, 125, 82, 63, 105, 126, - - 82, 109, 109, 109, 63, 109, 47, 63, 113, 113, - 127, 105, 105, 129, 63, 45, 82, 63, 123, 82, - 124, 63, 125, 82, 63, 105, 126, 82, 109, 109, - 109, 63, 109, 112, 63, 113, 113, 127, 112, 20, - 129, 63, 64, 82, 112, 19, 64, 130, 132, 128, + 52, 123, 81, 122, 105, 105, 78, 62, 81, 62, + 63, 124, 82, 125, 63, 126, 82, 63, 105, 127, + + 82, 109, 109, 109, 63, 109, 51, 63, 123, 113, + 113, 105, 105, 129, 63, 47, 82, 63, 124, 82, + 125, 63, 126, 82, 63, 105, 127, 82, 109, 109, + 109, 63, 109, 112, 63, 112, 113, 113, 112, 45, + 129, 63, 64, 82, 112, 20, 64, 130, 132, 128, 64, 112, 128, 133, 135, 119, 64, 119, 136, 64, - 112, 119, 137, 11, 138, 112, 64, 7, 119, 64, - 141, 112, 119, 64, 130, 132, 128, 64, 112, 128, - 133, 135, 119, 64, 119, 136, 64, 4, 119, 137, - 134, 138, 142, 64, 65, 119, 139, 141, 139, 119, + 112, 119, 112, 19, 137, 112, 64, 11, 119, 64, + 138, 112, 119, 64, 130, 132, 128, 64, 112, 128, + 133, 135, 119, 64, 119, 136, 64, 7, 119, 141, + 134, 137, 142, 64, 65, 119, 139, 138, 139, 119, 134, 65, 143, 65, 144, 134, 134, 140, 65, 140, - 145, 146, 147, 65, 65, 3, 148, 134, 150, 142, - 140, 65, 151, 139, 152, 139, 0, 134, 65, 143, + 145, 146, 147, 65, 65, 4, 141, 134, 148, 142, + 140, 65, 150, 139, 151, 139, 3, 134, 65, 143, 65, 144, 134, 134, 140, 65, 140, 145, 146, 147, - 65, 65, 66, 148, 153, 150, 66, 140, 154, 151, - 66, 152, 154, 66, 156, 155, 66, 157, 158, 66, - 155, 159, 66, 160, 161, 162, 66, 0, 0, 66, - 159, 153, 163, 66, 0, 154, 0, 66, 159, 154, - 66, 156, 155, 66, 157, 158, 66, 155, 159, 66, - 160, 161, 162, 66, 69, 69, 164, 159, 165, 163, - - 166, 69, 69, 69, 167, 159, 168, 164, 69, 169, - 170, 171, 169, 174, 69, 0, 175, 0, 172, 0, - 176, 69, 69, 164, 172, 165, 168, 166, 69, 69, - 69, 167, 193, 168, 164, 69, 169, 170, 171, 169, - 174, 69, 74, 175, 173, 172, 74, 176, 277, 194, - 194, 172, 193, 168, 0, 279, 74, 173, 0, 193, - 280, 282, 74, 74, 284, 0, 74, 0, 0, 74, - 194, 173, 0, 74, 0, 277, 194, 194, 0, 193, - 0, 195, 279, 74, 173, 196, 198, 280, 282, 74, - 74, 284, 196, 74, 75, 75, 195, 194, 201, 198, - - 196, 195, 199, 75, 199, 196, 198, 75, 195, 285, - 75, 0, 196, 198, 75, 0, 286, 0, 201, 196, - 0, 75, 75, 195, 199, 201, 198, 196, 195, 199, - 75, 199, 196, 198, 75, 197, 285, 75, 197, 197, - 287, 75, 79, 286, 79, 201, 289, 79, 200, 200, - 200, 199, 290, 291, 79, 79, 0, 0, 0, 197, - 0, 0, 197, 200, 79, 197, 197, 287, 200, 79, - 292, 79, 0, 289, 79, 200, 200, 200, 215, 290, - 291, 79, 79, 205, 203, 215, 197, 202, 203, 0, - 200, 79, 80, 205, 202, 200, 80, 292, 215, 80, - - 80, 202, 293, 205, 294, 215, 80, 202, 203, 80, - 205, 203, 215, 295, 202, 203, 80, 0, 0, 80, - 205, 202, 0, 80, 0, 215, 80, 80, 202, 293, - 205, 294, 0, 80, 202, 203, 80, 0, 0, 0, - 295, 0, 0, 80, 91, 91, 91, 91, 91, 91, + 65, 65, 66, 152, 153, 148, 66, 140, 154, 150, + 66, 151, 154, 66, 156, 157, 66, 158, 0, 66, + 160, 0, 66, 0, 161, 162, 66, 0, 0, 66, + 152, 153, 155, 66, 0, 154, 0, 66, 0, 154, + 66, 156, 157, 66, 158, 155, 66, 160, 159, 66, + 155, 161, 162, 66, 69, 69, 163, 159, 164, 155, + + 165, 69, 69, 69, 166, 159, 167, 169, 69, 164, + 169, 0, 155, 170, 69, 159, 171, 155, 168, 0, + 172, 69, 69, 163, 159, 164, 172, 165, 69, 69, + 69, 166, 159, 167, 169, 69, 164, 169, 168, 0, + 170, 69, 74, 171, 173, 168, 74, 172, 174, 175, + 176, 277, 193, 172, 0, 0, 74, 173, 0, 279, + 194, 194, 74, 74, 280, 168, 74, 0, 0, 74, + 0, 173, 193, 74, 282, 174, 175, 176, 277, 193, + 0, 194, 195, 74, 173, 196, 279, 194, 194, 74, + 74, 280, 196, 74, 75, 75, 199, 195, 199, 193, + + 196, 282, 195, 75, 0, 196, 0, 75, 194, 195, + 75, 0, 196, 198, 75, 0, 284, 0, 199, 196, + 0, 75, 75, 199, 195, 199, 198, 196, 0, 195, + 75, 201, 196, 198, 75, 197, 0, 75, 197, 197, + 198, 75, 79, 284, 79, 199, 285, 79, 200, 200, + 200, 201, 286, 198, 79, 79, 0, 0, 201, 197, + 198, 0, 197, 200, 79, 197, 197, 0, 200, 79, + 287, 79, 0, 285, 79, 200, 200, 200, 201, 286, + 0, 79, 79, 205, 203, 218, 197, 202, 203, 0, + 200, 79, 80, 205, 202, 200, 80, 287, 218, 80, + + 80, 202, 289, 205, 290, 218, 80, 202, 203, 80, + 205, 203, 218, 291, 202, 203, 80, 0, 0, 80, + 205, 202, 0, 80, 0, 218, 80, 80, 202, 289, + 205, 290, 218, 80, 202, 203, 80, 0, 0, 0, + 291, 0, 0, 80, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 204, 206, 296, 209, - 208, 210, 297, 204, 204, 204, 0, 204, 0, 298, - 0, 210, 206, 208, 208, 209, 204, 206, 0, 209, - 208, 210, 0, 204, 206, 296, 209, 208, 210, 297, - 204, 204, 204, 213, 204, 213, 298, 211, 210, 206, - 208, 208, 209, 204, 206, 207, 209, 208, 210, 207, - 207, 211, 212, 212, 0, 213, 207, 211, 0, 0, - 213, 216, 213, 207, 211, 217, 299, 301, 216, 207, - 0, 302, 207, 212, 0, 217, 207, 207, 211, 212, - 212, 216, 213, 207, 211, 217, 218, 0, 216, 303, - - 207, 0, 217, 299, 301, 216, 207, 220, 302, 218, - 212, 214, 217, 214, 220, 219, 218, 214, 216, 221, - 0, 0, 217, 218, 214, 219, 303, 220, 214, 221, - 0, 0, 0, 214, 220, 219, 218, 222, 214, 221, - 214, 220, 219, 218, 214, 225, 221, 222, 226, 224, - 304, 214, 219, 223, 220, 214, 221, 222, 224, 227, - 214, 225, 219, 227, 222, 225, 221, 223, 226, 224, - 223, 228, 225, 223, 222, 226, 224, 304, 305, 227, - 223, 306, 228, 0, 222, 224, 227, 308, 225, 0, - 227, 228, 225, 0, 223, 226, 224, 223, 228, 309, - - 223, 230, 0, 232, 0, 305, 227, 0, 306, 228, - 230, 231, 0, 0, 308, 231, 233, 233, 228, 229, - 229, 230, 0, 232, 310, 0, 309, 311, 230, 229, - 232, 231, 236, 234, 229, 229, 233, 230, 231, 234, - 229, 234, 231, 233, 233, 236, 229, 229, 230, 300, - 232, 310, 236, 234, 311, 0, 229, 0, 231, 236, - 234, 229, 229, 233, 300, 237, 234, 229, 234, 235, - 312, 235, 236, 235, 237, 238, 300, 313, 0, 236, - 234, 0, 235, 0, 238, 237, 244, 241, 239, 314, - 240, 300, 237, 235, 241, 238, 235, 312, 235, 0, - - 235, 237, 238, 239, 313, 240, 244, 241, 239, 235, - 240, 238, 237, 244, 241, 239, 314, 240, 247, 242, - 235, 241, 238, 242, 243, 243, 245, 245, 0, 255, - 239, 247, 240, 244, 241, 239, 0, 240, 247, 255, - 246, 315, 0, 242, 243, 247, 242, 245, 0, 255, - 242, 243, 243, 245, 245, 246, 255, 248, 247, 249, - 246, 248, 0, 249, 0, 247, 255, 246, 315, 250, - 242, 243, 316, 251, 245, 251, 255, 253, 250, 249, - 253, 248, 246, 250, 248, 0, 249, 246, 248, 250, - 249, 252, 254, 251, 254, 317, 250, 253, 252, 316, - - 251, 254, 251, 318, 253, 250, 249, 253, 248, 254, - 250, 252, 258, 256, 254, 258, 250, 319, 252, 254, - 251, 254, 317, 257, 253, 252, 256, 257, 254, 259, - 318, 260, 262, 256, 320, 258, 254, 259, 252, 258, - 256, 254, 258, 262, 319, 265, 265, 257, 259, 259, - 257, 260, 262, 256, 257, 0, 259, 261, 260, 262, - 256, 320, 258, 263, 259, 261, 265, 263, 321, 322, - 262, 0, 265, 265, 257, 259, 259, 261, 260, 262, - 269, 264, 266, 263, 261, 264, 266, 263, 264, 0, - 263, 0, 261, 265, 263, 321, 322, 0, 267, 0, - - 269, 264, 266, 268, 261, 267, 270, 269, 264, 266, - 263, 267, 264, 266, 263, 264, 268, 0, 267, 323, - 271, 270, 324, 268, 271, 267, 270, 269, 264, 266, - 268, 0, 267, 270, 0, 0, 0, 0, 267, 0, - 325, 326, 327, 268, 271, 267, 323, 271, 270, 324, - 268, 271, 328, 270, 275, 275, 275, 275, 275, 275, - 275, 275, 275, 275, 288, 329, 288, 325, 326, 327, - 330, 271, 331, 332, 333, 335, 336, 337, 338, 328, - 339, 288, 331, 340, 341, 342, 343, 344, 346, 347, - 348, 288, 329, 288, 349, 350, 351, 330, 352, 331, - - 332, 333, 335, 336, 337, 338, 353, 339, 288, 331, - 340, 341, 342, 343, 344, 346, 347, 348, 354, 355, - 356, 349, 350, 351, 357, 352, 358, 359, 360, 361, - 363, 364, 365, 353, 366, 367, 368, 369, 370, 372, - 373, 374, 375, 374, 376, 354, 355, 356, 377, 373, - 378, 357, 379, 358, 359, 360, 361, 363, 364, 365, - 380, 366, 367, 368, 369, 370, 372, 373, 374, 375, - 374, 376, 381, 383, 382, 377, 373, 378, 382, 379, - 384, 0, 388, 389, 390, 0, 391, 380, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 393, 381, - - 383, 382, 388, 389, 390, 382, 391, 384, 392, 388, - 389, 390, 394, 391, 395, 392, 394, 396, 393, 0, - 397, 498, 0, 0, 397, 393, 0, 396, 392, 388, - 389, 390, 398, 391, 395, 392, 394, 396, 499, 394, - 397, 395, 392, 394, 396, 393, 399, 397, 498, 401, - 398, 397, 398, 399, 396, 392, 0, 0, 0, 398, - 0, 395, 401, 394, 396, 499, 399, 397, 400, 401, - 400, 402, 0, 399, 403, 0, 401, 398, 500, 398, - 399, 501, 403, 405, 404, 400, 407, 402, 0, 401, - 400, 402, 0, 399, 403, 400, 401, 400, 402, 404, - - 407, 403, 408, 405, 404, 500, 407, 0, 501, 403, - 405, 404, 400, 407, 402, 406, 410, 400, 402, 406, - 409, 403, 408, 410, 411, 0, 404, 407, 411, 408, - 405, 404, 0, 407, 409, 0, 410, 412, 414, 406, - 409, 0, 406, 410, 0, 0, 406, 409, 411, 408, - 410, 411, 412, 415, 413, 411, 413, 412, 414, 416, - 502, 409, 416, 410, 412, 414, 406, 409, 415, 0, - 0, 418, 419, 415, 503, 411, 413, 417, 0, 412, - 415, 413, 416, 413, 412, 414, 416, 502, 417, 416, - 420, 418, 419, 421, 420, 415, 423, 417, 418, 419, - - 415, 503, 0, 413, 417, 422, 427, 422, 0, 416, - 423, 0, 0, 421, 420, 417, 423, 420, 418, 419, - 421, 420, 424, 423, 417, 425, 427, 422, 0, 424, - 426, 428, 422, 427, 422, 428, 0, 423, 425, 429, - 421, 420, 424, 423, 426, 425, 0, 429, 504, 424, - 426, 506, 425, 427, 422, 428, 424, 426, 428, 429, - 430, 432, 428, 431, 432, 425, 429, 0, 430, 424, - 431, 426, 425, 433, 429, 504, 434, 426, 506, 434, - 430, 435, 428, 431, 432, 435, 429, 430, 432, 433, - 431, 432, 0, 433, 436, 430, 434, 431, 438, 440, - - 433, 435, 437, 434, 438, 510, 434, 430, 435, 436, - 431, 432, 435, 441, 436, 437, 433, 439, 438, 440, - 433, 436, 437, 434, 0, 438, 440, 439, 435, 437, - 442, 438, 510, 441, 511, 444, 436, 439, 443, 446, - 441, 436, 437, 445, 439, 438, 440, 448, 443, 437, - 442, 444, 445, 447, 439, 444, 0, 442, 443, 446, - 441, 511, 444, 445, 439, 443, 446, 448, 447, 512, - 445, 454, 449, 447, 448, 443, 449, 442, 444, 445, - 447, 0, 444, 450, 450, 443, 446, 454, 514, 451, - 445, 454, 449, 451, 448, 447, 512, 455, 454, 449, - - 447, 515, 457, 449, 450, 452, 453, 452, 453, 516, - 450, 450, 455, 451, 454, 514, 451, 455, 454, 449, - 451, 456, 457, 458, 455, 452, 453, 461, 515, 457, - 458, 450, 452, 453, 452, 453, 516, 456, 459, 455, - 451, 456, 460, 458, 455, 0, 462, 461, 456, 457, - 458, 459, 452, 453, 461, 463, 460, 458, 459, 463, - 0, 465, 460, 0, 456, 459, 462, 464, 456, 460, - 458, 467, 465, 462, 461, 467, 464, 0, 459, 463, - 0, 465, 463, 460, 466, 459, 463, 464, 465, 460, - 468, 518, 466, 462, 464, 467, 471, 519, 467, 465, - - 470, 473, 467, 464, 466, 468, 463, 470, 465, 469, - 468, 466, 469, 474, 464, 472, 471, 468, 518, 466, - 470, 473, 467, 471, 519, 472, 475, 470, 473, 469, - 476, 466, 468, 474, 470, 472, 469, 468, 482, 469, - 474, 0, 472, 471, 475, 476, 475, 470, 473, 477, - 476, 0, 472, 475, 478, 479, 469, 476, 482, 481, - 474, 478, 472, 480, 477, 482, 479, 483, 481, 477, - 520, 475, 476, 475, 478, 479, 477, 476, 480, 481, - 484, 478, 479, 480, 0, 482, 481, 483, 478, 484, - 480, 477, 0, 479, 483, 481, 477, 520, 521, 485, - - 484, 478, 479, 486, 0, 480, 481, 484, 485, 489, - 480, 487, 490, 486, 483, 486, 484, 0, 489, 485, - 488, 487, 0, 486, 488, 521, 485, 484, 490, 489, - 486, 487, 490, 0, 492, 485, 489, 0, 487, 490, - 486, 491, 486, 491, 488, 489, 485, 488, 487, 493, - 486, 488, 492, 494, 492, 490, 489, 495, 487, 490, - 495, 492, 494, 491, 493, 496, 494, 522, 491, 493, - 491, 488, 523, 494, 524, 525, 493, 495, 496, 492, - 494, 492, 528, 529, 495, 496, 530, 495, 531, 494, - 491, 493, 496, 494, 522, 532, 493, 533, 534, 523, - - 494, 524, 525, 536, 495, 496, 537, 540, 541, 528, - 529, 543, 496, 530, 545, 531, 546, 547, 548, 549, - 550, 551, 532, 553, 533, 534, 557, 559, 561, 563, - 536, 564, 551, 537, 540, 541, 562, 562, 543, 566, - 567, 545, 568, 546, 547, 548, 549, 550, 551, 569, - 553, 570, 572, 557, 559, 561, 563, 573, 564, 551, - 574, 575, 576, 562, 562, 577, 566, 567, 578, 568, - 579, 580, 582, 583, 584, 585, 569, 588, 570, 572, - 589, 591, 592, 593, 573, 594, 595, 574, 575, 576, - 596, 597, 577, 598, 600, 578, 602, 579, 580, 582, - - 583, 584, 585, 604, 588, 608, 606, 589, 591, 592, - 593, 607, 594, 595, 609, 610, 716, 596, 597, 606, - 598, 600, 0, 602, 607, 608, 606, 611, 610, 612, - 604, 607, 608, 606, 609, 610, 611, 613, 607, 615, - 616, 609, 610, 716, 614, 617, 606, 611, 614, 612, - 0, 607, 608, 606, 611, 610, 612, 613, 607, 615, - 616, 609, 610, 611, 613, 617, 615, 616, 614, 618, - 620, 614, 617, 621, 611, 614, 612, 618, 619, 622, - 0, 0, 619, 620, 613, 0, 615, 616, 623, 618, - 620, 0, 617, 621, 622, 614, 618, 620, 619, 622, - - 621, 0, 623, 624, 618, 619, 622, 625, 623, 619, - 620, 0, 626, 628, 0, 623, 618, 620, 624, 626, - 621, 622, 627, 624, 0, 619, 622, 625, 628, 623, - 624, 630, 626, 628, 625, 623, 0, 629, 627, 626, - 628, 629, 627, 0, 630, 624, 626, 634, 0, 627, - 624, 630, 718, 632, 625, 628, 633, 632, 630, 626, - 628, 629, 635, 633, 629, 627, 636, 634, 629, 627, - 631, 630, 631, 632, 634, 638, 633, 636, 630, 718, - 632, 720, 635, 633, 632, 637, 636, 721, 629, 635, - 633, 638, 631, 636, 634, 638, 637, 631, 0, 631, - - 632, 639, 638, 633, 636, 637, 640, 641, 720, 635, - 640, 641, 637, 636, 721, 642, 639, 0, 638, 631, - 643, 639, 638, 637, 644, 645, 646, 0, 639, 645, - 640, 641, 637, 640, 641, 642, 722, 640, 641, 644, - 643, 647, 642, 639, 644, 650, 646, 643, 639, 645, - 648, 644, 645, 646, 648, 651, 645, 640, 641, 649, - 652, 647, 642, 722, 651, 650, 644, 643, 647, 653, - 649, 644, 650, 646, 648, 651, 645, 648, 654, 649, - 652, 648, 651, 653, 656, 0, 649, 652, 647, 653, - 0, 651, 650, 0, 0, 655, 653, 649, 654, 657, - - 658, 648, 651, 656, 656, 654, 649, 652, 655, 660, - 653, 656, 657, 658, 0, 655, 653, 661, 662, 657, - 658, 659, 655, 659, 661, 654, 657, 658, 0, 660, - 656, 656, 663, 664, 659, 655, 660, 661, 662, 657, - 658, 659, 655, 665, 661, 662, 657, 658, 659, 666, - 659, 661, 663, 664, 668, 667, 660, 669, 665, 663, - 664, 659, 667, 665, 661, 662, 0, 723, 659, 666, - 665, 724, 670, 673, 668, 667, 666, 669, 0, 663, - 664, 668, 667, 0, 669, 665, 670, 670, 671, 667, - 665, 671, 670, 673, 723, 0, 666, 672, 724, 670, - - 673, 668, 667, 674, 669, 674, 675, 0, 671, 676, - 672, 0, 725, 670, 670, 671, 0, 672, 671, 670, - 673, 677, 676, 678, 672, 674, 675, 679, 0, 676, - 674, 678, 674, 675, 677, 671, 676, 672, 680, 725, - 0, 677, 680, 678, 672, 0, 0, 679, 677, 676, - 678, 681, 674, 675, 679, 681, 676, 684, 678, 682, - 683, 677, 680, 686, 0, 680, 0, 682, 677, 680, - 678, 686, 684, 683, 679, 681, 727, 684, 681, 682, - 683, 0, 681, 686, 684, 685, 682, 683, 685, 680, - 686, 688, 0, 688, 682, 0, 687, 689, 686, 684, - - 683, 690, 681, 727, 684, 687, 682, 683, 685, 692, - 686, 694, 685, 688, 695, 685, 687, 689, 688, 696, - 688, 690, 691, 687, 689, 728, 691, 693, 690, 692, - 698, 694, 687, 696, 695, 685, 692, 693, 694, 696, - 688, 695, 691, 687, 689, 697, 696, 693, 690, 691, - 698, 0, 728, 691, 693, 0, 692, 698, 694, 697, - 696, 695, 700, 0, 693, 697, 696, 701, 699, 691, - 699, 700, 697, 703, 693, 702, 704, 698, 704, 702, - 0, 705, 700, 701, 0, 0, 697, 701, 703, 700, - 699, 707, 697, 703, 701, 699, 704, 699, 700, 702, - - 703, 705, 702, 704, 706, 704, 702, 706, 705, 700, - 701, 707, 709, 708, 701, 703, 710, 699, 707, 729, - 703, 711, 730, 704, 706, 732, 702, 733, 705, 708, - 712, 706, 709, 708, 706, 734, 710, 735, 707, 709, - 708, 711, 736, 710, 712, 737, 729, 738, 711, 730, - 712, 706, 732, 739, 733, 740, 708, 712, 741, 709, - 708, 744, 734, 710, 735, 745, 747, 750, 711, 736, - 753, 712, 737, 754, 738, 755, 756, 712, 755, 761, - 739, 762, 740, 763, 764, 741, 765, 768, 744, 769, - 770, 771, 745, 747, 750, 772, 774, 753, 775, 776, - - 754, 777, 755, 756, 778, 755, 761, 779, 762, 780, - 763, 764, 781, 765, 768, 782, 769, 770, 771, 783, - 784, 786, 772, 774, 787, 775, 776, 788, 777, 790, - 791, 778, 792, 796, 779, 797, 780, 0, 799, 781, - 0, 800, 782, 798, 878, 0, 783, 784, 786, 801, - 0, 787, 802, 796, 788, 797, 790, 791, 799, 792, - 796, 800, 797, 798, 798, 799, 803, 803, 800, 801, - 798, 878, 802, 880, 0, 804, 801, 805, 0, 802, - 796, 0, 797, 807, 804, 799, 808, 803, 800, 0, - 798, 798, 805, 803, 803, 804, 801, 805, 806, 802, - - 880, 809, 804, 807, 805, 809, 808, 810, 806, 811, - 807, 804, 0, 808, 803, 0, 811, 810, 806, 805, - 812, 809, 804, 0, 805, 806, 813, 810, 809, 811, - 807, 881, 809, 808, 810, 806, 811, 814, 0, 817, - 812, 814, 816, 811, 810, 806, 813, 812, 809, 0, - 815, 816, 818, 813, 810, 882, 811, 814, 881, 817, - 819, 820, 816, 0, 814, 815, 817, 812, 814, 816, - 815, 821, 818, 813, 884, 819, 820, 815, 816, 818, - 819, 820, 882, 0, 814, 821, 817, 819, 820, 816, - 822, 821, 815, 823, 822, 823, 824, 815, 821, 818, - - 0, 884, 819, 820, 825, 828, 0, 819, 820, 829, - 822, 829, 821, 826, 830, 823, 824, 822, 821, 827, - 823, 822, 823, 824, 825, 828, 827, 831, 826, 829, - 832, 825, 828, 826, 830, 0, 829, 822, 829, 827, - 826, 830, 823, 824, 833, 832, 827, 831, 834, 836, - 832, 825, 828, 827, 831, 826, 829, 832, 835, 839, - 826, 830, 840, 838, 833, 0, 827, 837, 834, 836, - 838, 833, 832, 835, 831, 834, 836, 832, 835, 839, - 0, 837, 840, 838, 837, 835, 839, 837, 0, 840, - 838, 833, 841, 842, 837, 834, 836, 838, 843, 845, - - 835, 844, 847, 845, 846, 835, 839, 846, 837, 840, - 838, 837, 841, 842, 837, 844, 848, 847, 843, 841, - 842, 844, 847, 845, 846, 843, 845, 849, 844, 847, - 845, 846, 850, 851, 846, 0, 848, 853, 886, 841, - 842, 0, 844, 848, 847, 843, 851, 849, 844, 847, - 845, 846, 850, 851, 849, 852, 855, 853, 854, 850, - 851, 0, 854, 848, 853, 886, 856, 857, 852, 0, - 856, 857, 0, 851, 849, 852, 855, 887, 854, 850, - 851, 859, 852, 855, 853, 854, 858, 858, 861, 854, - 856, 857, 861, 856, 857, 852, 859, 856, 857, 860, - - 860, 859, 852, 855, 887, 854, 0, 858, 859, 863, - 862, 888, 861, 858, 858, 861, 0, 856, 857, 861, - 860, 867, 863, 859, 862, 864, 860, 860, 859, 863, - 862, 865, 0, 868, 858, 865, 863, 862, 888, 861, - 864, 867, 866, 869, 869, 864, 866, 860, 867, 863, - 0, 862, 864, 868, 870, 865, 863, 862, 865, 871, - 868, 873, 865, 872, 869, 873, 866, 864, 867, 866, - 869, 869, 864, 866, 870, 875, 876, 872, 890, 871, - 868, 870, 865, 872, 892, 873, 871, 896, 873, 898, - 872, 869, 873, 866, 874, 875, 876, 899, 874, 905, - - 906, 870, 875, 876, 872, 890, 871, 907, 909, 911, - 872, 892, 873, 912, 896, 914, 898, 915, 874, 916, - 918, 874, 875, 876, 899, 874, 905, 906, 919, 920, - 921, 924, 926, 927, 907, 909, 911, 928, 929, 934, - 912, 935, 914, 937, 915, 874, 916, 918, 0, 938, - 0, 940, 939, 941, 942, 919, 920, 921, 924, 926, - 927, 939, 1001, 937, 928, 929, 934, 941, 935, 938, - 937, 940, 939, 941, 942, 943, 938, 944, 940, 939, - 941, 942, 943, 945, 946, 0, 946, 0, 939, 1001, - 937, 945, 947, 0, 941, 943, 938, 944, 940, 939, - - 941, 942, 943, 945, 944, 948, 946, 947, 950, 943, - 945, 946, 947, 946, 949, 0, 0, 949, 945, 947, - 952, 951, 943, 951, 944, 948, 953, 0, 950, 954, - 945, 955, 948, 946, 947, 950, 0, 949, 0, 947, - 952, 949, 956, 951, 949, 957, 953, 952, 951, 954, - 951, 955, 948, 953, 957, 950, 954, 959, 955, 958, - 960, 0, 956, 961, 949, 957, 0, 952, 962, 956, - 951, 963, 957, 953, 958, 0, 954, 959, 955, 958, - 960, 957, 0, 961, 959, 965, 958, 960, 962, 956, - 961, 963, 957, 966, 967, 962, 964, 966, 963, 968, - - 0, 958, 969, 0, 959, 965, 958, 960, 0, 964, - 961, 1002, 965, 968, 967, 962, 964, 966, 963, 968, - 966, 967, 969, 964, 966, 972, 968, 970, 0, 969, - 974, 971, 965, 973, 970, 971, 964, 0, 1002, 975, - 968, 967, 0, 964, 966, 972, 968, 970, 973, 969, - 974, 976, 972, 973, 970, 971, 979, 974, 971, 975, - 973, 970, 971, 977, 981, 977, 975, 978, 982, 978, - 979, 976, 972, 980, 970, 973, 979, 974, 976, 0, - 973, 984, 971, 979, 981, 977, 975, 980, 982, 978, - 977, 981, 977, 980, 978, 982, 978, 979, 976, 983, - - 980, 984, 0, 979, 989, 985, 983, 988, 984, 985, - 0, 981, 977, 986, 980, 982, 978, 986, 990, 983, - 980, 987, 988, 987, 989, 1004, 983, 988, 984, 985, - 1005, 989, 985, 983, 988, 991, 985, 986, 990, 992, - 986, 0, 1010, 987, 986, 990, 983, 993, 987, 988, - 987, 989, 1004, 1011, 988, 991, 985, 1005, 1014, 992, - 993, 994, 991, 1015, 986, 990, 992, 993, 994, 1010, - 987, 1018, 1019, 1023, 993, 1024, 1025, 1026, 0, 0, - 1011, 994, 991, 0, 0, 1014, 992, 993, 994, 1030, - 1015, 1031, 1032, 1033, 993, 994, 0, 1034, 1018, 1019, - - 1023, 1035, 1024, 1025, 1026, 1037, 1036, 1038, 994, 1030, - 1036, 1031, 1032, 1033, 0, 1040, 1030, 1034, 1031, 1032, - 1033, 1035, 0, 1041, 1034, 1037, 1039, 1038, 1035, 1042, - 1036, 1043, 1037, 1036, 1038, 1040, 1030, 1036, 1031, 1032, - 1033, 1039, 1040, 1041, 1034, 1044, 1039, 1044, 1035, 1042, - 1041, 1043, 1037, 1039, 1038, 1046, 1042, 1036, 1043, 1045, - 1047, 1049, 1040, 1050, 1048, 1051, 1045, 1044, 1039, 1065, - 1041, 0, 1044, 1039, 1044, 1046, 1042, 1048, 1043, 1045, - 1047, 1049, 1046, 1050, 1048, 1051, 1045, 1047, 1049, 1053, - 1050, 1048, 1051, 1045, 1044, 1053, 1065, 1054, 1052, 1055, - - 1056, 1057, 1046, 1068, 1048, 0, 1045, 1047, 1049, 1053, - 1050, 1048, 1051, 1052, 1057, 1058, 1053, 1054, 1052, 1055, - 1056, 1057, 1053, 1058, 1054, 1052, 1055, 1056, 1057, 1071, - 1068, 1060, 1061, 1062, 1059, 1058, 1053, 1074, 1075, 1076, - 1052, 1057, 1058, 1079, 1054, 1052, 1055, 1056, 1057, 1059, - 1058, 1060, 1061, 1062, 1059, 1081, 1071, 1080, 1060, 1061, - 1062, 1059, 1058, 1079, 1074, 1075, 1076, 1082, 1083, 1084, - 1079, 1085, 1080, 1086, 0, 1081, 1059, 1080, 1060, 1061, - 1062, 1059, 1081, 1083, 1080, 1087, 1086, 1082, 1083, 1084, - 1079, 1085, 1094, 1086, 1082, 1083, 1084, 1088, 1085, 1080, - - 1086, 1089, 1081, 1091, 1080, 1087, 1092, 1091, 1096, 1099, - 1083, 1090, 1087, 1086, 1082, 1083, 1084, 1088, 1085, 1094, - 1086, 1089, 1090, 1091, 1088, 1101, 1092, 1102, 1089, 1110, - 1091, 1090, 1087, 1092, 1091, 1096, 1099, 1103, 1090, 1104, - 1105, 1112, 1113, 0, 1088, 1101, 0, 1102, 1089, 1090, - 1091, 1103, 1101, 1092, 1102, 1106, 1110, 1103, 1090, 1104, - 1105, 1112, 1113, 0, 1103, 1106, 1104, 1105, 1112, 1113, - 1114, 1118, 1101, 0, 1102, 1106, 0, 0, 1103, 1114, - 0, 0, 1106, 0, 1103, 0, 1104, 1105, 1112, 1113, - 1114, 1118, 1106, 0, 0, 0, 0, 1114, 1118, 0, - - 0, 0, 1106, 0, 0, 0, 1114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1114, 1118, 1138, - 1138, 1138, 1138, 1138, 1139, 0, 0, 1139, 1139, 1141, - 1141, 1141, 0, 1141, 1142, 0, 1142, 1142, 1142, 1143, - 0, 1143, 1143, 1143, 1144, 0, 1144, 1144, 1144, 1137, - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1137, 1137, 1137, 1137, 1137, 1137 + 188, 188, 188, 188, 188, 188, 204, 206, 292, 210, + 0, 208, 293, 204, 204, 204, 0, 204, 0, 210, + 0, 0, 206, 211, 208, 208, 204, 206, 0, 210, + 0, 208, 0, 204, 206, 292, 210, 211, 208, 293, + 204, 204, 204, 211, 204, 209, 210, 212, 212, 206, + 211, 208, 208, 204, 206, 207, 210, 207, 208, 207, + 207, 209, 0, 226, 211, 209, 207, 213, 212, 213, + 211, 215, 209, 207, 212, 212, 294, 0, 215, 207, + 295, 0, 207, 226, 207, 296, 207, 207, 209, 213, + 226, 215, 209, 207, 213, 212, 213, 0, 215, 297, + + 207, 216, 0, 294, 217, 215, 207, 295, 216, 225, + 226, 298, 296, 220, 217, 0, 213, 214, 215, 214, + 220, 216, 219, 214, 217, 225, 297, 0, 216, 225, + 214, 217, 219, 220, 214, 216, 225, 0, 298, 214, + 220, 217, 219, 221, 214, 222, 214, 220, 216, 219, + 214, 217, 225, 221, 223, 222, 225, 214, 224, 219, + 220, 214, 299, 221, 228, 222, 214, 224, 223, 219, + 221, 223, 222, 227, 223, 228, 0, 227, 224, 230, + 221, 223, 222, 231, 228, 224, 300, 231, 230, 299, + 221, 228, 222, 227, 224, 223, 232, 0, 223, 230, + + 227, 223, 228, 231, 227, 224, 230, 233, 233, 0, + 231, 228, 302, 300, 231, 230, 232, 0, 303, 304, + 227, 229, 229, 232, 237, 0, 230, 233, 0, 0, + 231, 229, 234, 237, 233, 233, 229, 229, 234, 302, + 234, 301, 229, 232, 237, 303, 304, 0, 229, 229, + 0, 237, 234, 235, 233, 235, 301, 235, 229, 234, + 237, 236, 305, 229, 229, 234, 235, 234, 301, 229, + 306, 237, 239, 0, 236, 240, 238, 235, 0, 234, + 235, 236, 235, 301, 235, 238, 307, 239, 236, 305, + 240, 241, 239, 235, 309, 240, 238, 306, 241, 239, + + 244, 236, 240, 238, 235, 242, 243, 243, 236, 242, + 0, 241, 238, 307, 239, 260, 0, 240, 241, 239, + 244, 309, 240, 238, 0, 241, 243, 244, 246, 242, + 245, 245, 242, 243, 243, 260, 242, 248, 241, 247, + 249, 248, 260, 246, 249, 0, 310, 244, 246, 0, + 311, 245, 247, 243, 0, 246, 242, 245, 245, 247, + 249, 248, 260, 0, 248, 312, 247, 249, 248, 0, + 246, 249, 250, 310, 252, 246, 250, 311, 245, 247, + 251, 252, 251, 313, 0, 250, 247, 249, 248, 0, + 250, 314, 312, 269, 252, 253, 250, 0, 253, 250, + + 251, 252, 254, 250, 254, 315, 255, 251, 252, 251, + 313, 254, 250, 269, 0, 253, 255, 250, 314, 254, + 269, 252, 253, 250, 254, 253, 255, 251, 256, 254, + 257, 254, 315, 255, 257, 316, 258, 0, 254, 258, + 269, 256, 253, 255, 261, 262, 254, 0, 256, 317, + 259, 254, 261, 255, 257, 256, 262, 257, 259, 258, + 0, 257, 316, 258, 261, 262, 258, 0, 256, 259, + 259, 261, 262, 0, 263, 256, 317, 259, 263, 261, + 264, 257, 0, 262, 264, 259, 258, 264, 265, 265, + 0, 261, 262, 268, 263, 0, 259, 259, 263, 266, + + 264, 263, 0, 266, 318, 263, 268, 264, 0, 265, + 0, 264, 319, 268, 264, 265, 265, 270, 0, 266, + 268, 263, 267, 320, 271, 263, 266, 264, 271, 267, + 266, 318, 270, 268, 321, 267, 265, 270, 322, 319, + 268, 323, 267, 288, 270, 288, 266, 324, 271, 267, + 320, 271, 0, 0, 0, 271, 267, 0, 0, 270, + 288, 321, 267, 325, 270, 322, 326, 327, 323, 267, + 288, 328, 288, 329, 324, 271, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 330, 288, 331, 332, + 325, 333, 334, 326, 327, 336, 337, 338, 328, 332, + + 329, 339, 340, 341, 342, 343, 344, 345, 347, 348, + 349, 350, 351, 330, 352, 331, 332, 353, 333, 334, + 354, 355, 336, 337, 338, 356, 332, 357, 339, 340, + 341, 342, 343, 344, 345, 347, 348, 349, 350, 351, + 358, 352, 359, 360, 353, 361, 362, 354, 355, 363, + 365, 366, 356, 367, 357, 368, 369, 370, 371, 372, + 374, 376, 375, 376, 377, 378, 379, 358, 380, 359, + 360, 375, 361, 362, 381, 382, 363, 365, 366, 383, + 367, 385, 368, 369, 370, 371, 372, 374, 376, 375, + 376, 377, 378, 379, 386, 380, 381, 0, 375, 384, + + 390, 381, 382, 384, 391, 392, 383, 0, 385, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 393, + 390, 386, 394, 381, 391, 392, 384, 390, 395, 394, + 384, 391, 392, 396, 397, 0, 0, 396, 502, 393, + 0, 503, 394, 398, 0, 504, 393, 390, 395, 394, + 0, 391, 392, 398, 397, 395, 394, 396, 399, 400, + 396, 397, 399, 398, 396, 502, 393, 401, 503, 394, + 398, 402, 504, 402, 401, 395, 404, 400, 399, 400, + 398, 397, 403, 505, 396, 399, 400, 401, 402, 399, + 398, 405, 404, 402, 401, 403, 404, 406, 402, 405, + + 402, 401, 403, 404, 400, 399, 400, 407, 410, 403, + 505, 405, 406, 506, 401, 402, 409, 406, 405, 404, + 402, 408, 403, 404, 406, 408, 405, 407, 410, 403, + 409, 0, 0, 411, 407, 410, 409, 414, 405, 406, + 506, 414, 412, 409, 406, 408, 413, 411, 408, 412, + 413, 0, 408, 411, 407, 410, 416, 409, 416, 417, + 411, 414, 412, 409, 414, 0, 413, 415, 414, 412, + 0, 421, 408, 413, 411, 418, 412, 413, 416, 417, + 411, 419, 415, 416, 419, 416, 417, 415, 414, 412, + 418, 421, 420, 413, 415, 418, 422, 423, 421, 507, + + 424, 423, 418, 420, 419, 416, 417, 508, 419, 415, + 0, 419, 420, 425, 415, 425, 422, 418, 421, 420, + 424, 423, 418, 422, 423, 0, 507, 424, 423, 427, + 420, 419, 426, 430, 508, 425, 427, 428, 510, 420, + 425, 429, 425, 422, 513, 0, 426, 424, 423, 427, + 428, 0, 426, 430, 431, 429, 427, 428, 431, 426, + 430, 429, 425, 427, 428, 510, 432, 433, 429, 435, + 514, 513, 435, 426, 432, 433, 427, 428, 431, 426, + 430, 431, 429, 434, 428, 431, 432, 433, 429, 0, + 434, 436, 435, 432, 433, 437, 435, 514, 437, 435, + + 438, 432, 433, 434, 438, 431, 439, 436, 0, 0, + 434, 436, 0, 432, 433, 437, 440, 434, 436, 435, + 438, 439, 437, 515, 443, 437, 439, 438, 0, 440, + 434, 438, 0, 439, 436, 441, 440, 444, 436, 442, + 445, 441, 437, 440, 443, 0, 516, 438, 439, 442, + 515, 443, 448, 439, 447, 441, 440, 444, 0, 442, + 445, 448, 441, 440, 444, 446, 442, 445, 441, 449, + 447, 443, 448, 516, 447, 446, 442, 0, 450, 448, + 451, 447, 441, 0, 444, 446, 442, 445, 448, 449, + 452, 454, 446, 450, 452, 454, 449, 447, 450, 448, + + 451, 447, 446, 453, 453, 450, 455, 451, 455, 456, + 452, 456, 446, 0, 460, 454, 449, 452, 454, 518, + 450, 452, 454, 457, 453, 450, 455, 451, 459, 456, + 453, 453, 458, 455, 460, 455, 456, 452, 456, 457, + 463, 460, 454, 457, 459, 462, 518, 458, 459, 464, + 457, 453, 458, 455, 463, 459, 456, 461, 462, 458, + 463, 460, 465, 0, 461, 462, 457, 463, 0, 464, + 457, 459, 462, 470, 458, 459, 464, 461, 0, 458, + 470, 463, 465, 0, 461, 462, 466, 463, 467, 465, + 466, 461, 462, 470, 468, 471, 464, 467, 469, 471, + + 470, 0, 519, 0, 461, 468, 469, 470, 467, 465, + 466, 520, 0, 466, 468, 467, 472, 466, 469, 471, + 470, 468, 471, 0, 467, 469, 471, 473, 475, 519, + 473, 472, 468, 469, 522, 467, 472, 466, 520, 477, + 476, 468, 474, 472, 478, 469, 471, 473, 475, 474, + 476, 0, 479, 480, 473, 475, 0, 473, 472, 477, + 476, 522, 474, 472, 478, 0, 477, 476, 480, 474, + 479, 478, 479, 480, 473, 475, 474, 476, 481, 479, + 480, 482, 523, 483, 0, 0, 477, 476, 482, 474, + 0, 478, 484, 481, 483, 480, 486, 479, 481, 479, + + 480, 482, 485, 483, 487, 481, 524, 484, 482, 523, + 483, 485, 484, 0, 525, 482, 486, 488, 0, 484, + 481, 483, 485, 486, 487, 481, 488, 489, 482, 485, + 483, 487, 526, 524, 484, 491, 489, 488, 485, 484, + 490, 525, 492, 486, 488, 491, 492, 489, 493, 485, + 490, 487, 490, 488, 489, 491, 527, 493, 0, 526, + 490, 0, 491, 489, 488, 494, 492, 490, 493, 492, + 496, 0, 491, 492, 489, 493, 495, 490, 495, 490, + 0, 494, 491, 527, 493, 494, 497, 490, 496, 0, + 496, 498, 494, 492, 500, 493, 499, 496, 495, 499, + + 498, 497, 528, 495, 498, 495, 497, 500, 494, 529, + 530, 498, 494, 497, 500, 496, 499, 496, 498, 533, + 534, 500, 535, 499, 536, 495, 499, 498, 497, 528, + 537, 498, 538, 497, 500, 539, 529, 530, 498, 541, + 542, 500, 545, 499, 546, 548, 533, 534, 550, 535, + 551, 536, 552, 553, 554, 555, 558, 537, 562, 538, + 564, 566, 539, 556, 567, 567, 541, 542, 568, 545, + 569, 546, 548, 571, 556, 550, 572, 551, 573, 552, + 553, 554, 555, 558, 574, 562, 575, 564, 566, 577, + 556, 567, 567, 578, 580, 568, 581, 569, 582, 583, + + 571, 556, 584, 572, 585, 573, 586, 588, 589, 590, + 591, 574, 594, 575, 595, 597, 577, 598, 599, 600, + 578, 580, 601, 581, 602, 582, 583, 603, 604, 584, + 605, 585, 607, 586, 588, 589, 590, 591, 609, 594, + 611, 595, 597, 613, 598, 599, 600, 0, 614, 601, + 0, 602, 615, 616, 603, 604, 613, 605, 617, 607, + 0, 614, 619, 613, 620, 609, 726, 611, 614, 0, + 613, 617, 615, 616, 622, 614, 728, 618, 617, 615, + 616, 0, 619, 613, 620, 617, 618, 623, 614, 619, + 613, 620, 621, 726, 622, 614, 621, 618, 617, 615, + + 616, 622, 624, 728, 618, 617, 624, 623, 626, 619, + 625, 620, 626, 618, 623, 0, 621, 0, 625, 621, + 0, 622, 628, 621, 618, 730, 624, 627, 626, 624, + 625, 629, 0, 624, 623, 626, 630, 625, 0, 626, + 627, 632, 628, 621, 631, 625, 629, 627, 0, 628, + 630, 629, 730, 624, 627, 626, 630, 625, 629, 631, + 635, 632, 634, 630, 631, 633, 0, 627, 632, 628, + 634, 631, 633, 629, 627, 636, 635, 630, 629, 0, + 635, 0, 634, 630, 0, 633, 631, 635, 632, 634, + 636, 631, 633, 638, 637, 636, 640, 634, 637, 633, + + 640, 0, 636, 635, 641, 0, 638, 635, 639, 634, + 639, 641, 633, 638, 642, 0, 640, 636, 637, 643, + 638, 637, 636, 640, 641, 637, 0, 640, 646, 0, + 639, 641, 650, 638, 642, 639, 644, 639, 641, 643, + 638, 642, 645, 640, 646, 637, 643, 644, 646, 0, + 647, 641, 650, 645, 648, 646, 644, 639, 648, 650, + 649, 642, 645, 644, 649, 647, 643, 0, 651, 645, + 647, 646, 653, 654, 644, 646, 653, 647, 648, 650, + 645, 648, 655, 644, 649, 648, 652, 649, 651, 645, + 656, 649, 647, 654, 656, 651, 653, 647, 731, 653, + + 654, 652, 655, 653, 658, 648, 652, 657, 0, 655, + 659, 649, 660, 652, 656, 651, 732, 656, 657, 659, + 654, 656, 661, 653, 658, 731, 0, 657, 652, 655, + 659, 658, 660, 652, 657, 662, 661, 659, 668, 660, + 663, 656, 661, 732, 0, 657, 659, 0, 665, 661, + 0, 658, 664, 663, 657, 662, 733, 659, 668, 660, + 663, 665, 662, 661, 666, 668, 669, 663, 665, 661, + 670, 664, 664, 669, 671, 665, 667, 666, 667, 664, + 663, 0, 662, 733, 666, 668, 669, 663, 665, 667, + 670, 666, 672, 669, 671, 665, 667, 670, 664, 664, + + 669, 671, 0, 667, 666, 667, 674, 673, 675, 676, + 677, 666, 672, 669, 734, 675, 667, 670, 0, 672, + 735, 671, 673, 667, 0, 0, 674, 673, 675, 676, + 677, 678, 681, 674, 673, 675, 676, 677, 736, 672, + 679, 734, 675, 679, 738, 678, 678, 735, 680, 673, + 0, 678, 681, 674, 673, 675, 676, 677, 678, 681, + 679, 680, 682, 683, 682, 736, 0, 679, 680, 0, + 679, 738, 678, 678, 0, 680, 687, 686, 678, 681, + 684, 685, 688, 683, 682, 686, 688, 679, 680, 682, + 683, 682, 0, 684, 685, 680, 687, 686, 689, 690, + + 684, 685, 689, 687, 686, 0, 688, 684, 685, 688, + 683, 682, 686, 688, 739, 0, 740, 0, 0, 690, + 684, 685, 689, 687, 686, 689, 690, 684, 685, 689, + 691, 692, 693, 688, 695, 741, 696, 694, 691, 0, + 694, 739, 695, 740, 692, 696, 690, 693, 0, 689, + 691, 692, 693, 697, 695, 697, 696, 691, 692, 693, + 694, 695, 741, 696, 694, 691, 698, 694, 699, 695, + 701, 692, 696, 0, 693, 697, 703, 691, 692, 693, + 697, 695, 697, 696, 702, 700, 698, 694, 699, 700, + 701, 0, 0, 698, 702, 699, 703, 701, 704, 707, + + 705, 0, 697, 703, 702, 700, 0, 708, 706, 708, + 0, 702, 700, 698, 705, 699, 700, 701, 704, 707, + 705, 702, 706, 703, 709, 704, 707, 705, 706, 708, + 0, 702, 700, 709, 708, 706, 708, 710, 711, 712, + 0, 705, 711, 714, 709, 704, 707, 705, 713, 706, + 713, 709, 742, 710, 712, 706, 708, 710, 715, 712, + 709, 715, 711, 714, 710, 711, 712, 717, 713, 711, + 714, 709, 716, 719, 0, 713, 716, 713, 715, 742, + 710, 712, 718, 744, 710, 715, 712, 717, 715, 711, + 714, 720, 716, 719, 717, 713, 721, 745, 718, 716, + + 719, 722, 718, 716, 746, 715, 747, 748, 749, 718, + 744, 720, 750, 751, 717, 722, 721, 752, 720, 716, + 719, 722, 753, 721, 745, 718, 756, 757, 722, 718, + 759, 746, 762, 747, 748, 749, 765, 766, 720, 750, + 751, 768, 722, 721, 752, 773, 774, 767, 722, 753, + 767, 775, 776, 756, 757, 777, 780, 759, 781, 762, + 782, 783, 784, 765, 766, 786, 787, 788, 768, 789, + 790, 791, 773, 774, 767, 792, 793, 767, 775, 776, + 794, 795, 777, 780, 796, 781, 798, 782, 783, 784, + 799, 800, 786, 787, 788, 802, 789, 790, 791, 803, + + 804, 805, 792, 793, 809, 810, 894, 794, 795, 811, + 0, 796, 0, 798, 812, 813, 0, 799, 800, 814, + 815, 817, 802, 817, 809, 810, 803, 804, 805, 811, + 811, 809, 810, 894, 812, 813, 811, 816, 816, 814, + 815, 812, 813, 817, 0, 896, 814, 815, 817, 820, + 817, 809, 810, 819, 818, 821, 811, 811, 816, 820, + 0, 812, 813, 818, 816, 816, 814, 815, 819, 820, + 817, 822, 896, 819, 818, 821, 820, 824, 0, 823, + 819, 818, 821, 823, 825, 816, 820, 824, 825, 827, + 818, 822, 897, 828, 0, 819, 820, 824, 822, 823, + + 819, 818, 821, 829, 824, 826, 823, 829, 825, 827, + 823, 825, 826, 828, 824, 825, 827, 898, 822, 897, + 828, 832, 830, 829, 824, 826, 823, 0, 0, 0, + 829, 0, 826, 833, 829, 825, 827, 830, 831, 826, + 828, 832, 830, 0, 898, 0, 834, 831, 832, 830, + 829, 899, 826, 833, 838, 835, 838, 836, 831, 837, + 833, 834, 0, 837, 830, 831, 834, 839, 832, 830, + 835, 836, 840, 834, 831, 835, 838, 836, 899, 837, + 833, 838, 835, 838, 836, 831, 837, 839, 834, 842, + 837, 843, 840, 834, 839, 841, 842, 835, 836, 840, + + 845, 846, 835, 838, 836, 844, 837, 844, 901, 842, + 841, 843, 0, 848, 839, 841, 842, 0, 843, 840, + 845, 846, 841, 842, 847, 844, 849, 845, 846, 851, + 850, 0, 844, 848, 844, 901, 842, 841, 843, 847, + 848, 852, 841, 0, 847, 850, 849, 845, 846, 851, + 850, 847, 844, 849, 854, 852, 851, 850, 852, 855, + 848, 852, 0, 853, 856, 0, 847, 857, 852, 858, + 853, 847, 850, 849, 854, 863, 851, 850, 859, 855, + 0, 854, 852, 853, 856, 852, 855, 857, 852, 858, + 853, 856, 859, 862, 857, 863, 858, 853, 859, 860, + + 0, 854, 863, 860, 861, 859, 855, 861, 862, 864, + 853, 856, 865, 862, 857, 0, 858, 868, 903, 859, + 862, 0, 863, 860, 861, 859, 860, 870, 866, 864, + 860, 861, 865, 867, 861, 862, 864, 868, 869, 865, + 862, 866, 869, 0, 868, 903, 867, 870, 866, 904, + 860, 861, 874, 867, 870, 866, 864, 871, 869, 865, + 867, 871, 872, 905, 868, 869, 872, 874, 866, 869, + 873, 873, 874, 867, 870, 866, 904, 0, 0, 874, + 867, 871, 875, 875, 871, 869, 872, 877, 871, 872, + 905, 873, 876, 872, 874, 0, 876, 873, 873, 874, + + 880, 877, 878, 875, 880, 879, 882, 877, 871, 875, + 875, 0, 0, 872, 877, 878, 876, 881, 873, 876, + 879, 881, 878, 876, 880, 879, 882, 880, 877, 878, + 875, 880, 879, 882, 877, 883, 884, 884, 885, 886, + 887, 881, 878, 876, 881, 0, 888, 879, 881, 878, + 888, 880, 879, 882, 887, 883, 891, 884, 885, 886, + 887, 906, 883, 884, 884, 885, 886, 887, 881, 889, + 888, 890, 892, 888, 908, 890, 891, 888, 889, 910, + 914, 887, 883, 891, 884, 885, 886, 887, 906, 889, + 916, 917, 892, 923, 924, 890, 889, 888, 890, 892, + + 925, 908, 890, 891, 927, 889, 910, 914, 929, 930, + 932, 933, 934, 936, 937, 938, 889, 916, 917, 892, + 923, 924, 890, 939, 942, 944, 945, 925, 946, 947, + 952, 927, 953, 954, 956, 929, 930, 932, 933, 934, + 936, 937, 938, 957, 959, 962, 1021, 960, 0, 958, + 939, 942, 944, 945, 956, 946, 947, 952, 958, 953, + 954, 956, 960, 957, 959, 962, 961, 960, 963, 958, + 957, 959, 962, 1021, 960, 963, 958, 964, 1024, 965, + 961, 956, 0, 1025, 0, 958, 961, 965, 963, 960, + 957, 959, 962, 961, 960, 963, 958, 964, 966, 965, + + 966, 967, 963, 968, 964, 1024, 965, 961, 967, 969, + 1025, 971, 0, 961, 965, 963, 970, 973, 968, 970, + 966, 967, 974, 968, 964, 966, 965, 966, 967, 969, + 968, 971, 972, 975, 972, 967, 969, 973, 971, 970, + 0, 0, 974, 970, 973, 968, 970, 966, 967, 974, + 968, 976, 977, 975, 972, 979, 969, 980, 971, 972, + 975, 972, 0, 981, 973, 978, 970, 982, 983, 974, + 979, 976, 977, 984, 978, 979, 985, 980, 976, 977, + 975, 972, 979, 981, 980, 978, 986, 982, 983, 985, + 981, 988, 978, 984, 982, 983, 985, 979, 976, 977, + + 984, 978, 979, 985, 980, 987, 986, 989, 990, 987, + 981, 988, 978, 986, 982, 983, 985, 991, 988, 0, + 984, 989, 992, 985, 991, 993, 992, 989, 990, 987, + 0, 1028, 987, 986, 989, 990, 987, 991, 988, 995, + 996, 997, 994, 1029, 991, 993, 992, 0, 989, 992, + 0, 991, 993, 992, 989, 990, 987, 994, 1028, 995, + 996, 997, 994, 998, 991, 998, 995, 996, 997, 994, + 1029, 0, 993, 992, 999, 1002, 999, 1000, 1003, 1001, + 0, 0, 0, 1034, 994, 998, 995, 996, 997, 994, + 998, 1000, 998, 1001, 1035, 1002, 999, 1000, 1003, 1001, + + 0, 999, 1002, 999, 1000, 1003, 1001, 1004, 1005, 1006, + 1034, 1038, 998, 1006, 1004, 1007, 0, 1009, 1000, 1007, + 1001, 1035, 1002, 999, 1000, 1003, 1001, 1004, 1005, 1008, + 1010, 1008, 1009, 1006, 1004, 1005, 1006, 1009, 1038, 1007, + 1006, 1004, 1007, 1011, 1009, 1012, 1007, 1013, 1014, 1039, + 1010, 1008, 1042, 0, 1004, 1005, 1008, 1010, 1008, 1009, + 1006, 1014, 0, 1011, 1009, 1012, 1007, 1013, 1014, 1015, + 1011, 1015, 1012, 1016, 1013, 1014, 1039, 1010, 1008, 1042, + 1016, 1043, 1047, 1048, 1049, 1050, 1055, 0, 1014, 1015, + 1011, 0, 1012, 1016, 1013, 1014, 1015, 1056, 1015, 1057, + + 1016, 1058, 1059, 1060, 0, 1061, 1055, 1016, 1043, 1047, + 1048, 1049, 1050, 1055, 1062, 1063, 1015, 1056, 1062, 1057, + 1016, 1058, 1059, 1060, 1056, 1061, 1057, 1064, 1058, 1059, + 1060, 1065, 1061, 1055, 0, 1063, 1067, 1068, 1062, 1069, + 1066, 1062, 1063, 0, 1056, 1062, 1057, 1064, 1058, 1059, + 1060, 1065, 1061, 1070, 1064, 1066, 1067, 1068, 1065, 1069, + 1066, 1073, 1063, 1067, 1068, 1062, 1069, 1066, 1071, 1072, + 1071, 1074, 1075, 1070, 1064, 0, 1072, 0, 1065, 1092, + 1070, 1073, 1066, 1067, 1068, 1075, 1069, 1066, 1073, 1072, + 1071, 1074, 1075, 1076, 1077, 1071, 1072, 1071, 1074, 1075, + + 1070, 1094, 1078, 1072, 1081, 0, 1092, 1082, 1073, 0, + 1079, 1097, 1075, 1076, 1077, 1083, 1072, 1071, 1074, 1075, + 1076, 1077, 1078, 1084, 1081, 1079, 1080, 1082, 1094, 1078, + 1079, 1081, 1080, 0, 1082, 1083, 1084, 1079, 1097, 1100, + 1076, 1077, 1083, 1084, 1087, 1086, 1080, 1085, 1088, 1078, + 1084, 1081, 1079, 1080, 1082, 1085, 1089, 1079, 1090, 1080, + 1086, 1103, 1083, 1084, 1087, 1086, 1100, 1085, 1088, 1104, + 1084, 1087, 1086, 1080, 1085, 1088, 1089, 1105, 1090, 1109, + 1108, 1111, 1085, 1089, 0, 1090, 0, 1086, 1103, 1112, + 0, 1087, 1086, 1108, 1085, 1088, 1104, 1110, 1113, 1109, + + 1108, 1111, 1114, 1089, 1105, 1090, 1109, 1108, 1111, 1112, + 1115, 1117, 1110, 1113, 0, 1118, 1112, 1110, 1113, 1125, + 1108, 1116, 1114, 1119, 1110, 1113, 1109, 1108, 1111, 1114, + 1115, 1117, 1127, 1122, 1116, 1118, 1112, 1115, 1117, 1110, + 1113, 1116, 1118, 1119, 1110, 1113, 1125, 1121, 1116, 1114, + 1119, 1121, 1120, 1122, 1130, 1132, 1133, 1115, 1117, 1127, + 1122, 1116, 1118, 1120, 1134, 1136, 0, 1121, 1116, 1137, + 1119, 0, 1120, 1135, 1121, 1132, 1133, 1142, 1121, 1120, + 1122, 1130, 1132, 1133, 1134, 1136, 1144, 1135, 1138, 1137, + 1120, 1134, 1136, 1135, 1121, 0, 1137, 1145, 1138, 1120, + + 1135, 1146, 1132, 1133, 1142, 0, 1144, 1150, 1138, 0, + 1146, 1134, 1136, 1144, 1135, 1138, 1137, 1145, 0, 0, + 1135, 1146, 0, 0, 1145, 1138, 0, 1150, 1146, 0, + 0, 0, 0, 1144, 1150, 1138, 0, 1146, 0, 0, + 0, 0, 0, 0, 1145, 0, 0, 0, 1146, 0, + 0, 0, 0, 0, 1150, 1170, 1170, 1170, 1170, 1170, + 1171, 0, 0, 1171, 1171, 1173, 1173, 1173, 0, 1173, + 1174, 0, 1174, 1174, 1174, 1175, 0, 1175, 1175, 1175, + 1176, 0, 1176, 1176, 1176, 1169, 1169, 1169, 1169, 1169, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + 1169, 1169 } ; /* The intent behind this definition is that it'll catch @@ -2069,7 +2108,7 @@ static const flex_int16_t yy_chk[4627] = static thread_local std::stringstream strbuf; -#line 2073 "flex_lexer.cpp" +#line 2111 "flex_lexer.cpp" /*************************** ** Section 2: Rules @@ -2083,7 +2122,7 @@ static thread_local std::stringstream strbuf; /*************************** ** Section 3: Rules ***************************/ -#line 2087 "flex_lexer.cpp" +#line 2125 "flex_lexer.cpp" #define INITIAL 0 #define singlequotedstring 1 @@ -2370,7 +2409,7 @@ YY_DECL #line 57 "flex_lexer.l" -#line 2374 "flex_lexer.cpp" +#line 2412 "flex_lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2397,13 +2436,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 >= 1138 ) + if ( yy_current_state >= 1170 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1137 ); + while ( yy_current_state != 1169 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -2573,634 +2612,659 @@ TOKEN(VARCHAR) case 30: YY_RULE_SETUP #line 90 "flex_lexer.l" -TOKEN(VIRTUAL) +TOKEN(CHARACTER) YY_BREAK case 31: YY_RULE_SETUP #line 91 "flex_lexer.l" -TOKEN(BEFORE) +TOKEN(VARYING) YY_BREAK case 32: YY_RULE_SETUP #line 92 "flex_lexer.l" -TOKEN(COLUMN) +TOKEN(TIME) YY_BREAK case 33: YY_RULE_SETUP #line 93 "flex_lexer.l" -TOKEN(CREATE) +TOKEN(DECIMAL) YY_BREAK case 34: YY_RULE_SETUP #line 94 "flex_lexer.l" -TOKEN(DELETE) +TOKEN(REAL) YY_BREAK case 35: YY_RULE_SETUP #line 95 "flex_lexer.l" -TOKEN(DIRECT) +TOKEN(VIRTUAL) YY_BREAK case 36: YY_RULE_SETUP #line 96 "flex_lexer.l" -TOKEN(DOUBLE) +TOKEN(BEFORE) YY_BREAK case 37: YY_RULE_SETUP #line 97 "flex_lexer.l" -TOKEN(ESCAPE) +TOKEN(COLUMN) YY_BREAK case 38: YY_RULE_SETUP #line 98 "flex_lexer.l" -TOKEN(EXCEPT) +TOKEN(CREATE) YY_BREAK case 39: YY_RULE_SETUP #line 99 "flex_lexer.l" -TOKEN(EXISTS) +TOKEN(DELETE) YY_BREAK case 40: YY_RULE_SETUP #line 100 "flex_lexer.l" -TOKEN(EXTRACT) +TOKEN(DIRECT) YY_BREAK case 41: YY_RULE_SETUP #line 101 "flex_lexer.l" -TOKEN(CAST) +TOKEN(DOUBLE) YY_BREAK case 42: YY_RULE_SETUP #line 102 "flex_lexer.l" -TOKEN(FORMAT) +TOKEN(ESCAPE) YY_BREAK case 43: YY_RULE_SETUP #line 103 "flex_lexer.l" -TOKEN(GLOBAL) +TOKEN(EXCEPT) YY_BREAK case 44: YY_RULE_SETUP #line 104 "flex_lexer.l" -TOKEN(HAVING) +TOKEN(EXISTS) YY_BREAK case 45: YY_RULE_SETUP #line 105 "flex_lexer.l" -TOKEN(IMPORT) +TOKEN(EXTRACT) YY_BREAK case 46: YY_RULE_SETUP #line 106 "flex_lexer.l" -TOKEN(INSERT) +TOKEN(CAST) YY_BREAK case 47: YY_RULE_SETUP #line 107 "flex_lexer.l" -TOKEN(ISNULL) +TOKEN(FORMAT) YY_BREAK case 48: YY_RULE_SETUP #line 108 "flex_lexer.l" -TOKEN(OFFSET) +TOKEN(GLOBAL) YY_BREAK case 49: YY_RULE_SETUP #line 109 "flex_lexer.l" -TOKEN(RENAME) +TOKEN(HAVING) YY_BREAK case 50: YY_RULE_SETUP #line 110 "flex_lexer.l" -TOKEN(SCHEMA) +TOKEN(IMPORT) YY_BREAK case 51: YY_RULE_SETUP #line 111 "flex_lexer.l" -TOKEN(SELECT) +TOKEN(INSERT) YY_BREAK case 52: YY_RULE_SETUP #line 112 "flex_lexer.l" -TOKEN(SORTED) +TOKEN(ISNULL) YY_BREAK case 53: YY_RULE_SETUP #line 113 "flex_lexer.l" -TOKEN(TABLES) +TOKEN(OFFSET) YY_BREAK case 54: YY_RULE_SETUP #line 114 "flex_lexer.l" -TOKEN(UNIQUE) +TOKEN(RENAME) YY_BREAK case 55: YY_RULE_SETUP #line 115 "flex_lexer.l" -TOKEN(UNLOAD) +TOKEN(SCHEMA) YY_BREAK case 56: YY_RULE_SETUP #line 116 "flex_lexer.l" -TOKEN(UPDATE) +TOKEN(SELECT) YY_BREAK case 57: YY_RULE_SETUP #line 117 "flex_lexer.l" -TOKEN(VALUES) +TOKEN(SORTED) YY_BREAK case 58: YY_RULE_SETUP #line 118 "flex_lexer.l" -TOKEN(AFTER) +TOKEN(TABLES) YY_BREAK case 59: YY_RULE_SETUP #line 119 "flex_lexer.l" -TOKEN(ALTER) +TOKEN(UNIQUE) YY_BREAK case 60: YY_RULE_SETUP #line 120 "flex_lexer.l" -TOKEN(ARRAY) +TOKEN(UNLOAD) YY_BREAK case 61: YY_RULE_SETUP #line 121 "flex_lexer.l" -TOKEN(CROSS) +TOKEN(UPDATE) YY_BREAK case 62: YY_RULE_SETUP #line 122 "flex_lexer.l" -TOKEN(DELTA) +TOKEN(VALUES) YY_BREAK case 63: YY_RULE_SETUP #line 123 "flex_lexer.l" -TOKEN(FLOAT) +TOKEN(AFTER) YY_BREAK case 64: YY_RULE_SETUP #line 124 "flex_lexer.l" -TOKEN(GROUP) +TOKEN(ALTER) YY_BREAK case 65: YY_RULE_SETUP #line 125 "flex_lexer.l" -TOKEN(INDEX) +TOKEN(ARRAY) YY_BREAK case 66: YY_RULE_SETUP #line 126 "flex_lexer.l" -TOKEN(INNER) +TOKEN(CROSS) YY_BREAK case 67: YY_RULE_SETUP #line 127 "flex_lexer.l" -TOKEN(LIMIT) +TOKEN(DELTA) YY_BREAK case 68: YY_RULE_SETUP #line 128 "flex_lexer.l" -TOKEN(LOCAL) +TOKEN(FLOAT) YY_BREAK case 69: YY_RULE_SETUP #line 129 "flex_lexer.l" -TOKEN(MERGE) +TOKEN(GROUP) YY_BREAK case 70: YY_RULE_SETUP #line 130 "flex_lexer.l" -TOKEN(MINUS) +TOKEN(INDEX) YY_BREAK case 71: YY_RULE_SETUP #line 131 "flex_lexer.l" -TOKEN(ORDER) +TOKEN(INNER) YY_BREAK case 72: YY_RULE_SETUP #line 132 "flex_lexer.l" -TOKEN(OUTER) +TOKEN(LIMIT) YY_BREAK case 73: YY_RULE_SETUP #line 133 "flex_lexer.l" -TOKEN(RIGHT) +TOKEN(LOCAL) YY_BREAK case 74: YY_RULE_SETUP #line 134 "flex_lexer.l" -TOKEN(TABLE) +TOKEN(MERGE) YY_BREAK case 75: YY_RULE_SETUP #line 135 "flex_lexer.l" -TOKEN(UNION) +TOKEN(MINUS) YY_BREAK case 76: YY_RULE_SETUP #line 136 "flex_lexer.l" -TOKEN(USING) +TOKEN(ORDER) YY_BREAK case 77: YY_RULE_SETUP #line 137 "flex_lexer.l" -TOKEN(WHERE) +TOKEN(OUTER) YY_BREAK case 78: YY_RULE_SETUP #line 138 "flex_lexer.l" -TOKEN(CALL) +TOKEN(RIGHT) YY_BREAK case 79: YY_RULE_SETUP #line 139 "flex_lexer.l" -TOKEN(CASE) +TOKEN(TABLE) YY_BREAK case 80: YY_RULE_SETUP #line 140 "flex_lexer.l" -TOKEN(CHAR) +TOKEN(UNION) YY_BREAK case 81: YY_RULE_SETUP #line 141 "flex_lexer.l" -TOKEN(COPY) +TOKEN(USING) YY_BREAK case 82: YY_RULE_SETUP #line 142 "flex_lexer.l" -TOKEN(DATE) +TOKEN(WHERE) YY_BREAK case 83: YY_RULE_SETUP #line 143 "flex_lexer.l" -TOKEN(DATETIME) +TOKEN(CALL) YY_BREAK case 84: YY_RULE_SETUP #line 144 "flex_lexer.l" -TOKEN(DESC) +TOKEN(CASE) YY_BREAK case 85: YY_RULE_SETUP #line 145 "flex_lexer.l" -TOKEN(DROP) +TOKEN(CHAR) YY_BREAK case 86: YY_RULE_SETUP #line 146 "flex_lexer.l" -TOKEN(ELSE) +TOKEN(COPY) YY_BREAK case 87: YY_RULE_SETUP #line 147 "flex_lexer.l" -TOKEN(FILE) +TOKEN(DATE) YY_BREAK case 88: YY_RULE_SETUP #line 148 "flex_lexer.l" -TOKEN(FROM) +TOKEN(DATETIME) YY_BREAK case 89: YY_RULE_SETUP #line 149 "flex_lexer.l" -TOKEN(FULL) +TOKEN(DESC) YY_BREAK case 90: YY_RULE_SETUP #line 150 "flex_lexer.l" -TOKEN(HASH) +TOKEN(DROP) YY_BREAK case 91: YY_RULE_SETUP #line 151 "flex_lexer.l" -TOKEN(HINT) +TOKEN(ELSE) YY_BREAK case 92: YY_RULE_SETUP #line 152 "flex_lexer.l" -TOKEN(INTO) +TOKEN(FILE) YY_BREAK case 93: YY_RULE_SETUP #line 153 "flex_lexer.l" -TOKEN(JOIN) +TOKEN(FROM) YY_BREAK case 94: YY_RULE_SETUP #line 154 "flex_lexer.l" -TOKEN(LEFT) +TOKEN(FULL) YY_BREAK case 95: YY_RULE_SETUP #line 155 "flex_lexer.l" -TOKEN(LIKE) +TOKEN(HASH) YY_BREAK case 96: YY_RULE_SETUP #line 156 "flex_lexer.l" -TOKEN(ILIKE) +TOKEN(HINT) YY_BREAK case 97: YY_RULE_SETUP #line 157 "flex_lexer.l" -TOKEN(LOAD) +TOKEN(INTO) YY_BREAK case 98: YY_RULE_SETUP #line 158 "flex_lexer.l" -TOKEN(LONG) +TOKEN(JOIN) YY_BREAK case 99: YY_RULE_SETUP #line 159 "flex_lexer.l" -TOKEN(NULL) +TOKEN(LEFT) YY_BREAK case 100: YY_RULE_SETUP #line 160 "flex_lexer.l" -TOKEN(PLAN) +TOKEN(LIKE) YY_BREAK case 101: YY_RULE_SETUP #line 161 "flex_lexer.l" -TOKEN(SHOW) +TOKEN(ILIKE) YY_BREAK case 102: YY_RULE_SETUP #line 162 "flex_lexer.l" -TOKEN(TEXT) +TOKEN(LOAD) YY_BREAK case 103: YY_RULE_SETUP #line 163 "flex_lexer.l" -TOKEN(THEN) +TOKEN(LONG) YY_BREAK case 104: YY_RULE_SETUP #line 164 "flex_lexer.l" -TOKEN(TIME) +TOKEN(NULL) YY_BREAK case 105: YY_RULE_SETUP #line 165 "flex_lexer.l" -TOKEN(VIEW) +TOKEN(PLAN) YY_BREAK case 106: YY_RULE_SETUP #line 166 "flex_lexer.l" -TOKEN(WHEN) +TOKEN(SHOW) YY_BREAK case 107: YY_RULE_SETUP #line 167 "flex_lexer.l" -TOKEN(WITH) +TOKEN(TEXT) YY_BREAK case 108: YY_RULE_SETUP #line 168 "flex_lexer.l" -TOKEN(ADD) +TOKEN(THEN) YY_BREAK case 109: YY_RULE_SETUP #line 169 "flex_lexer.l" -TOKEN(ALL) +TOKEN(TIME) YY_BREAK case 110: YY_RULE_SETUP #line 170 "flex_lexer.l" -TOKEN(AND) +TOKEN(VIEW) YY_BREAK case 111: YY_RULE_SETUP #line 171 "flex_lexer.l" -TOKEN(ASC) +TOKEN(WHEN) YY_BREAK case 112: YY_RULE_SETUP #line 172 "flex_lexer.l" -TOKEN(END) +TOKEN(WITH) YY_BREAK case 113: YY_RULE_SETUP #line 173 "flex_lexer.l" -TOKEN(FOR) +TOKEN(ADD) YY_BREAK case 114: YY_RULE_SETUP #line 174 "flex_lexer.l" -TOKEN(INT) +TOKEN(ALL) YY_BREAK case 115: YY_RULE_SETUP #line 175 "flex_lexer.l" -TOKEN(KEY) +TOKEN(AND) YY_BREAK case 116: YY_RULE_SETUP #line 176 "flex_lexer.l" -TOKEN(NOT) +TOKEN(ASC) YY_BREAK case 117: YY_RULE_SETUP #line 177 "flex_lexer.l" -TOKEN(OFF) +TOKEN(END) YY_BREAK case 118: YY_RULE_SETUP #line 178 "flex_lexer.l" -TOKEN(SET) +TOKEN(FOR) YY_BREAK case 119: YY_RULE_SETUP #line 179 "flex_lexer.l" -TOKEN(TOP) +TOKEN(INT) YY_BREAK case 120: YY_RULE_SETUP #line 180 "flex_lexer.l" -TOKEN(AS) +TOKEN(KEY) YY_BREAK case 121: YY_RULE_SETUP #line 181 "flex_lexer.l" -TOKEN(BY) +TOKEN(NOT) YY_BREAK case 122: YY_RULE_SETUP #line 182 "flex_lexer.l" -TOKEN(IF) +TOKEN(OFF) YY_BREAK case 123: YY_RULE_SETUP #line 183 "flex_lexer.l" -TOKEN(IN) +TOKEN(SET) YY_BREAK case 124: YY_RULE_SETUP #line 184 "flex_lexer.l" -TOKEN(IS) +TOKEN(TOP) YY_BREAK case 125: YY_RULE_SETUP #line 185 "flex_lexer.l" -TOKEN(OF) +TOKEN(AS) YY_BREAK case 126: YY_RULE_SETUP #line 186 "flex_lexer.l" -TOKEN(ON) +TOKEN(BY) YY_BREAK case 127: YY_RULE_SETUP #line 187 "flex_lexer.l" -TOKEN(OR) +TOKEN(IF) YY_BREAK case 128: YY_RULE_SETUP #line 188 "flex_lexer.l" -TOKEN(TO) +TOKEN(IN) YY_BREAK case 129: YY_RULE_SETUP #line 189 "flex_lexer.l" -TOKEN(SECOND) +TOKEN(IS) YY_BREAK case 130: YY_RULE_SETUP #line 190 "flex_lexer.l" -TOKEN(MINUTE) +TOKEN(OF) YY_BREAK case 131: YY_RULE_SETUP #line 191 "flex_lexer.l" -TOKEN(HOUR) +TOKEN(ON) YY_BREAK case 132: YY_RULE_SETUP #line 192 "flex_lexer.l" -TOKEN(DAY) +TOKEN(OR) YY_BREAK case 133: YY_RULE_SETUP #line 193 "flex_lexer.l" -TOKEN(MONTH) +TOKEN(TO) YY_BREAK case 134: YY_RULE_SETUP #line 194 "flex_lexer.l" -TOKEN(YEAR) +TOKEN(SECOND) YY_BREAK case 135: YY_RULE_SETUP #line 195 "flex_lexer.l" -TOKEN(SECONDS) +TOKEN(MINUTE) YY_BREAK case 136: YY_RULE_SETUP #line 196 "flex_lexer.l" -TOKEN(MINUTES) +TOKEN(HOUR) YY_BREAK case 137: YY_RULE_SETUP #line 197 "flex_lexer.l" -TOKEN(HOURS) +TOKEN(DAY) YY_BREAK case 138: YY_RULE_SETUP #line 198 "flex_lexer.l" -TOKEN(DAYS) +TOKEN(MONTH) YY_BREAK case 139: YY_RULE_SETUP #line 199 "flex_lexer.l" -TOKEN(MONTHS) +TOKEN(YEAR) YY_BREAK case 140: YY_RULE_SETUP #line 200 "flex_lexer.l" -TOKEN(YEARS) +TOKEN(SECONDS) YY_BREAK case 141: YY_RULE_SETUP #line 201 "flex_lexer.l" -TOKEN(TRUE) +TOKEN(MINUTES) YY_BREAK case 142: YY_RULE_SETUP #line 202 "flex_lexer.l" -TOKEN(FALSE) +TOKEN(HOURS) YY_BREAK case 143: YY_RULE_SETUP #line 203 "flex_lexer.l" -TOKEN(TRANSACTION) +TOKEN(DAYS) YY_BREAK case 144: YY_RULE_SETUP #line 204 "flex_lexer.l" -TOKEN(BEGIN) +TOKEN(MONTHS) YY_BREAK case 145: YY_RULE_SETUP #line 205 "flex_lexer.l" -TOKEN(ROLLBACK) +TOKEN(YEARS) YY_BREAK case 146: YY_RULE_SETUP #line 206 "flex_lexer.l" -TOKEN(COMMIT) +TOKEN(TRUE) YY_BREAK case 147: YY_RULE_SETUP #line 207 "flex_lexer.l" -TOKEN(INTERVAL) +TOKEN(FALSE) YY_BREAK -/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 148: YY_RULE_SETUP -#line 210 "flex_lexer.l" -TOKEN(EQUALS) +#line 208 "flex_lexer.l" +TOKEN(TRANSACTION) YY_BREAK case 149: YY_RULE_SETUP -#line 211 "flex_lexer.l" -TOKEN(NOTEQUALS) +#line 209 "flex_lexer.l" +TOKEN(BEGIN) YY_BREAK case 150: YY_RULE_SETUP -#line 212 "flex_lexer.l" -TOKEN(NOTEQUALS) +#line 210 "flex_lexer.l" +TOKEN(ROLLBACK) YY_BREAK case 151: YY_RULE_SETUP -#line 213 "flex_lexer.l" -TOKEN(LESSEQ) +#line 211 "flex_lexer.l" +TOKEN(COMMIT) YY_BREAK case 152: YY_RULE_SETUP -#line 214 "flex_lexer.l" -TOKEN(GREATEREQ) +#line 212 "flex_lexer.l" +TOKEN(INTERVAL) YY_BREAK +/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 153: YY_RULE_SETUP #line 215 "flex_lexer.l" -TOKEN(CONCAT) +TOKEN(EQUALS) YY_BREAK case 154: YY_RULE_SETUP -#line 217 "flex_lexer.l" -{ return yytext[0]; } +#line 216 "flex_lexer.l" +TOKEN(NOTEQUALS) YY_BREAK case 155: -#line 220 "flex_lexer.l" +YY_RULE_SETUP +#line 217 "flex_lexer.l" +TOKEN(NOTEQUALS) + YY_BREAK case 156: YY_RULE_SETUP +#line 218 "flex_lexer.l" +TOKEN(LESSEQ) + YY_BREAK +case 157: +YY_RULE_SETUP +#line 219 "flex_lexer.l" +TOKEN(GREATEREQ) + YY_BREAK +case 158: +YY_RULE_SETUP #line 220 "flex_lexer.l" +TOKEN(CONCAT) + YY_BREAK +case 159: +YY_RULE_SETUP +#line 222 "flex_lexer.l" +{ return yytext[0]; } + YY_BREAK +case 160: +#line 225 "flex_lexer.l" +case 161: +YY_RULE_SETUP +#line 225 "flex_lexer.l" { yylval->fval = atof(yytext); return SQL_FLOATVAL; @@ -3211,17 +3275,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 157: +case 162: YY_RULE_SETUP -#line 230 "flex_lexer.l" +#line 235 "flex_lexer.l" { yylval->ival = LLONG_MIN; return SQL_INTVAL; } YY_BREAK -case 158: +case 163: YY_RULE_SETUP -#line 235 "flex_lexer.l" +#line 240 "flex_lexer.l" { errno = 0; yylval->ival = strtoll(yytext, nullptr, 0); @@ -3232,59 +3296,59 @@ YY_RULE_SETUP return SQL_INTVAL; } YY_BREAK -case 159: +case 164: YY_RULE_SETUP -#line 245 "flex_lexer.l" +#line 250 "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 160: +case 165: YY_RULE_SETUP -#line 251 "flex_lexer.l" +#line 256 "flex_lexer.l" { yylval->sval = strdup(yytext); return SQL_IDENTIFIER; } YY_BREAK -case 161: +case 166: YY_RULE_SETUP -#line 256 "flex_lexer.l" +#line 261 "flex_lexer.l" { BEGIN singlequotedstring; strbuf.clear(); strbuf.str(""); } // Clear strbuf manually, see #170 YY_BREAK -case 162: +case 167: YY_RULE_SETUP -#line 257 "flex_lexer.l" +#line 262 "flex_lexer.l" { strbuf << '\''; } YY_BREAK -case 163: -/* rule 163 can match eol */ +case 168: +/* rule 168 can match eol */ YY_RULE_SETUP -#line 258 "flex_lexer.l" +#line 263 "flex_lexer.l" { strbuf << yytext; } YY_BREAK -case 164: +case 169: YY_RULE_SETUP -#line 259 "flex_lexer.l" +#line 264 "flex_lexer.l" { BEGIN 0; yylval->sval = strdup(strbuf.str().c_str()); return SQL_STRING; } YY_BREAK case YY_STATE_EOF(singlequotedstring): -#line 260 "flex_lexer.l" +#line 265 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unterminated string\n"); return 0; } YY_BREAK -case 165: +case 170: YY_RULE_SETUP -#line 262 "flex_lexer.l" +#line 267 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); return 0; } YY_BREAK -case 166: +case 171: YY_RULE_SETUP -#line 265 "flex_lexer.l" +#line 270 "flex_lexer.l" ECHO; YY_BREAK -#line 3288 "flex_lexer.cpp" +#line 3351 "flex_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): yyterminate(); @@ -3585,7 +3649,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 >= 1138 ) + if ( yy_current_state >= 1170 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -3614,11 +3678,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 >= 1138 ) + if ( yy_current_state >= 1170 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1137); + yy_is_jam = (yy_current_state == 1169); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -4441,7 +4505,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 265 "flex_lexer.l" +#line 270 "flex_lexer.l" /*************************** ** Section 3: User code diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index 386c1d8f..2b05d13f 100644 --- a/src/parser/flex_lexer.h +++ b/src/parser/flex_lexer.h @@ -2,9 +2,9 @@ #define hsql_HEADER_H 1 #define hsql_IN_HEADER 1 -#line 6 "flex_lexer.h" +#line 5 "flex_lexer.h" -#line 8 "flex_lexer.h" +#line 7 "flex_lexer.h" #define YY_INT_ALIGNED short int @@ -730,9 +730,9 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 265 "flex_lexer.l" +#line 270 "flex_lexer.l" -#line 737 "flex_lexer.h" +#line 736 "flex_lexer.h" #undef hsql_IN_HEADER #endif /* hsql_HEADER_H */ diff --git a/src/parser/flex_lexer.l b/src/parser/flex_lexer.l index 6776969e..df79153e 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -56,165 +56,170 @@ static thread_local std::stringstream strbuf; ***************************/ %% --- BEGIN(COMMENT); -[^\n]* /* skipping comment content until a end of line is read */; -\n BEGIN(INITIAL); +-- BEGIN(COMMENT); +[^\n]* /* skipping comment content until a end of line is read */; +\n BEGIN(INITIAL); -[ \t\n]+ /* skip whitespace */; +[ \t\n]+ /* skip whitespace */; -DEALLOCATE TOKEN(DEALLOCATE) -PARAMETERS TOKEN(PARAMETERS) -INTERSECT TOKEN(INTERSECT) -TEMPORARY TOKEN(TEMPORARY) -TIMESTAMP TOKEN(TIMESTAMP) -DESCRIBE TOKEN(DESCRIBE) -DISTINCT TOKEN(DISTINCT) -NVARCHAR TOKEN(NVARCHAR) -RESTRICT TOKEN(RESTRICT) -TRUNCATE TOKEN(TRUNCATE) -ANALYZE TOKEN(ANALYZE) -BETWEEN TOKEN(BETWEEN) -CASCADE TOKEN(CASCADE) -COLUMNS TOKEN(COLUMNS) -CONTROL TOKEN(CONTROL) -DEFAULT TOKEN(DEFAULT) -EXECUTE TOKEN(EXECUTE) -EXPLAIN TOKEN(EXPLAIN) -INTEGER TOKEN(INTEGER) -NATURAL TOKEN(NATURAL) -PREPARE TOKEN(PREPARE) -PRIMARY TOKEN(PRIMARY) -SCHEMAS TOKEN(SCHEMAS) -SPATIAL TOKEN(SPATIAL) -VARCHAR TOKEN(VARCHAR) -VIRTUAL TOKEN(VIRTUAL) -BEFORE TOKEN(BEFORE) -COLUMN TOKEN(COLUMN) -CREATE TOKEN(CREATE) -DELETE TOKEN(DELETE) -DIRECT TOKEN(DIRECT) -DOUBLE TOKEN(DOUBLE) -ESCAPE TOKEN(ESCAPE) -EXCEPT TOKEN(EXCEPT) -EXISTS TOKEN(EXISTS) -EXTRACT TOKEN(EXTRACT) -CAST TOKEN(CAST) -FORMAT TOKEN(FORMAT) -GLOBAL TOKEN(GLOBAL) -HAVING TOKEN(HAVING) -IMPORT TOKEN(IMPORT) -INSERT TOKEN(INSERT) -ISNULL TOKEN(ISNULL) -OFFSET TOKEN(OFFSET) -RENAME TOKEN(RENAME) -SCHEMA TOKEN(SCHEMA) -SELECT TOKEN(SELECT) -SORTED TOKEN(SORTED) -TABLES TOKEN(TABLES) -UNIQUE TOKEN(UNIQUE) -UNLOAD TOKEN(UNLOAD) -UPDATE TOKEN(UPDATE) -VALUES TOKEN(VALUES) -AFTER TOKEN(AFTER) -ALTER TOKEN(ALTER) -ARRAY TOKEN(ARRAY) -CROSS TOKEN(CROSS) -DELTA TOKEN(DELTA) -FLOAT TOKEN(FLOAT) -GROUP TOKEN(GROUP) -INDEX TOKEN(INDEX) -INNER TOKEN(INNER) -LIMIT TOKEN(LIMIT) -LOCAL TOKEN(LOCAL) -MERGE TOKEN(MERGE) -MINUS TOKEN(MINUS) -ORDER TOKEN(ORDER) -OUTER TOKEN(OUTER) -RIGHT TOKEN(RIGHT) -TABLE TOKEN(TABLE) -UNION TOKEN(UNION) -USING TOKEN(USING) -WHERE TOKEN(WHERE) -CALL TOKEN(CALL) -CASE TOKEN(CASE) -CHAR TOKEN(CHAR) -COPY TOKEN(COPY) -DATE TOKEN(DATE) -DATETIME TOKEN(DATETIME) -DESC TOKEN(DESC) -DROP TOKEN(DROP) -ELSE TOKEN(ELSE) -FILE TOKEN(FILE) -FROM TOKEN(FROM) -FULL TOKEN(FULL) -HASH TOKEN(HASH) -HINT TOKEN(HINT) -INTO TOKEN(INTO) -JOIN TOKEN(JOIN) -LEFT TOKEN(LEFT) -LIKE TOKEN(LIKE) -ILIKE TOKEN(ILIKE) -LOAD TOKEN(LOAD) -LONG TOKEN(LONG) -NULL TOKEN(NULL) -PLAN TOKEN(PLAN) -SHOW TOKEN(SHOW) -TEXT TOKEN(TEXT) -THEN TOKEN(THEN) -TIME TOKEN(TIME) -VIEW TOKEN(VIEW) -WHEN TOKEN(WHEN) -WITH TOKEN(WITH) -ADD TOKEN(ADD) -ALL TOKEN(ALL) -AND TOKEN(AND) -ASC TOKEN(ASC) -END TOKEN(END) -FOR TOKEN(FOR) -INT TOKEN(INT) -KEY TOKEN(KEY) -NOT TOKEN(NOT) -OFF TOKEN(OFF) -SET TOKEN(SET) -TOP TOKEN(TOP) -AS TOKEN(AS) -BY TOKEN(BY) -IF TOKEN(IF) -IN TOKEN(IN) -IS TOKEN(IS) -OF TOKEN(OF) -ON TOKEN(ON) -OR TOKEN(OR) -TO TOKEN(TO) -SECOND TOKEN(SECOND) -MINUTE TOKEN(MINUTE) -HOUR TOKEN(HOUR) -DAY TOKEN(DAY) -MONTH TOKEN(MONTH) -YEAR TOKEN(YEAR) -SECONDS TOKEN(SECONDS) -MINUTES TOKEN(MINUTES) -HOURS TOKEN(HOURS) -DAYS TOKEN(DAYS) -MONTHS TOKEN(MONTHS) -YEARS TOKEN(YEARS) -TRUE TOKEN(TRUE) -FALSE TOKEN(FALSE) +DEALLOCATE TOKEN(DEALLOCATE) +PARAMETERS TOKEN(PARAMETERS) +INTERSECT TOKEN(INTERSECT) +TEMPORARY TOKEN(TEMPORARY) +TIMESTAMP TOKEN(TIMESTAMP) +DESCRIBE TOKEN(DESCRIBE) +DISTINCT TOKEN(DISTINCT) +NVARCHAR TOKEN(NVARCHAR) +RESTRICT TOKEN(RESTRICT) +TRUNCATE TOKEN(TRUNCATE) +ANALYZE TOKEN(ANALYZE) +BETWEEN TOKEN(BETWEEN) +CASCADE TOKEN(CASCADE) +COLUMNS TOKEN(COLUMNS) +CONTROL TOKEN(CONTROL) +DEFAULT TOKEN(DEFAULT) +EXECUTE TOKEN(EXECUTE) +EXPLAIN TOKEN(EXPLAIN) +INTEGER TOKEN(INTEGER) +NATURAL TOKEN(NATURAL) +PREPARE TOKEN(PREPARE) +PRIMARY TOKEN(PRIMARY) +SCHEMAS TOKEN(SCHEMAS) +SPATIAL TOKEN(SPATIAL) +VARCHAR TOKEN(VARCHAR) +CHARACTER TOKEN(CHARACTER) +VARYING TOKEN(VARYING) +TIME TOKEN(TIME) +DECIMAL TOKEN(DECIMAL) +REAL TOKEN(REAL) +VIRTUAL TOKEN(VIRTUAL) +BEFORE TOKEN(BEFORE) +COLUMN TOKEN(COLUMN) +CREATE TOKEN(CREATE) +DELETE TOKEN(DELETE) +DIRECT TOKEN(DIRECT) +DOUBLE TOKEN(DOUBLE) +ESCAPE TOKEN(ESCAPE) +EXCEPT TOKEN(EXCEPT) +EXISTS TOKEN(EXISTS) +EXTRACT TOKEN(EXTRACT) +CAST TOKEN(CAST) +FORMAT TOKEN(FORMAT) +GLOBAL TOKEN(GLOBAL) +HAVING TOKEN(HAVING) +IMPORT TOKEN(IMPORT) +INSERT TOKEN(INSERT) +ISNULL TOKEN(ISNULL) +OFFSET TOKEN(OFFSET) +RENAME TOKEN(RENAME) +SCHEMA TOKEN(SCHEMA) +SELECT TOKEN(SELECT) +SORTED TOKEN(SORTED) +TABLES TOKEN(TABLES) +UNIQUE TOKEN(UNIQUE) +UNLOAD TOKEN(UNLOAD) +UPDATE TOKEN(UPDATE) +VALUES TOKEN(VALUES) +AFTER TOKEN(AFTER) +ALTER TOKEN(ALTER) +ARRAY TOKEN(ARRAY) +CROSS TOKEN(CROSS) +DELTA TOKEN(DELTA) +FLOAT TOKEN(FLOAT) +GROUP TOKEN(GROUP) +INDEX TOKEN(INDEX) +INNER TOKEN(INNER) +LIMIT TOKEN(LIMIT) +LOCAL TOKEN(LOCAL) +MERGE TOKEN(MERGE) +MINUS TOKEN(MINUS) +ORDER TOKEN(ORDER) +OUTER TOKEN(OUTER) +RIGHT TOKEN(RIGHT) +TABLE TOKEN(TABLE) +UNION TOKEN(UNION) +USING TOKEN(USING) +WHERE TOKEN(WHERE) +CALL TOKEN(CALL) +CASE TOKEN(CASE) +CHAR TOKEN(CHAR) +COPY TOKEN(COPY) +DATE TOKEN(DATE) +DATETIME TOKEN(DATETIME) +DESC TOKEN(DESC) +DROP TOKEN(DROP) +ELSE TOKEN(ELSE) +FILE TOKEN(FILE) +FROM TOKEN(FROM) +FULL TOKEN(FULL) +HASH TOKEN(HASH) +HINT TOKEN(HINT) +INTO TOKEN(INTO) +JOIN TOKEN(JOIN) +LEFT TOKEN(LEFT) +LIKE TOKEN(LIKE) +ILIKE TOKEN(ILIKE) +LOAD TOKEN(LOAD) +LONG TOKEN(LONG) +NULL TOKEN(NULL) +PLAN TOKEN(PLAN) +SHOW TOKEN(SHOW) +TEXT TOKEN(TEXT) +THEN TOKEN(THEN) +TIME TOKEN(TIME) +VIEW TOKEN(VIEW) +WHEN TOKEN(WHEN) +WITH TOKEN(WITH) +ADD TOKEN(ADD) +ALL TOKEN(ALL) +AND TOKEN(AND) +ASC TOKEN(ASC) +END TOKEN(END) +FOR TOKEN(FOR) +INT TOKEN(INT) +KEY TOKEN(KEY) +NOT TOKEN(NOT) +OFF TOKEN(OFF) +SET TOKEN(SET) +TOP TOKEN(TOP) +AS TOKEN(AS) +BY TOKEN(BY) +IF TOKEN(IF) +IN TOKEN(IN) +IS TOKEN(IS) +OF TOKEN(OF) +ON TOKEN(ON) +OR TOKEN(OR) +TO TOKEN(TO) +SECOND TOKEN(SECOND) +MINUTE TOKEN(MINUTE) +HOUR TOKEN(HOUR) +DAY TOKEN(DAY) +MONTH TOKEN(MONTH) +YEAR TOKEN(YEAR) +SECONDS TOKEN(SECONDS) +MINUTES TOKEN(MINUTES) +HOURS TOKEN(HOURS) +DAYS TOKEN(DAYS) +MONTHS TOKEN(MONTHS) +YEARS TOKEN(YEARS) +TRUE TOKEN(TRUE) +FALSE TOKEN(FALSE) TRANSACTION TOKEN(TRANSACTION) -BEGIN TOKEN(BEGIN) -ROLLBACK TOKEN(ROLLBACK) -COMMIT TOKEN(COMMIT) -INTERVAL TOKEN(INTERVAL) +BEGIN TOKEN(BEGIN) +ROLLBACK TOKEN(ROLLBACK) +COMMIT TOKEN(COMMIT) +INTERVAL TOKEN(INTERVAL) - /* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ -"==" TOKEN(EQUALS) -"!=" TOKEN(NOTEQUALS) -"<>" TOKEN(NOTEQUALS) -"<=" TOKEN(LESSEQ) -">=" TOKEN(GREATEREQ) -"||" TOKEN(CONCAT) + /* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ +"==" TOKEN(EQUALS) +"!=" TOKEN(NOTEQUALS) +"<>" TOKEN(NOTEQUALS) +"<=" TOKEN(LESSEQ) +">=" TOKEN(GREATEREQ) +"||" TOKEN(CONCAT) -[-+*/(){},.;<>=^%:?[\]|] { return yytext[0]; } +[-+*/(){},.;<>=^%:?[\]|] { return yytext[0]; } [0-9]+"."[0-9]* | "."[0-9]* { diff --git a/src/sql/AlterStatement.h b/src/sql/AlterStatement.h new file mode 100755 index 00000000..82a57801 --- /dev/null +++ b/src/sql/AlterStatement.h @@ -0,0 +1,41 @@ +#ifndef SQLPARSER_ALTER_STATEMENT_H +#define SQLPARSER_ALTER_STATEMENT_H + +#include "SQLStatement.h" + +// Note: Implementations of constructors and destructors can be found in statements.cpp. +namespace hsql { + + enum ActionType { + DropColumn, + }; + + struct AlterAction { + AlterAction(ActionType type); + ActionType type; + virtual ~AlterAction(); + }; + + struct DropColumnAction : AlterAction { + DropColumnAction(char* column_name); + char* columnName; + bool ifExists; + + ~DropColumnAction() override; + }; + + // Represents SQL Alter Table statements. + // Example "ALTER TABLE students DROP COLUMN name;" + struct AlterStatement : SQLStatement { + + AlterStatement(char* name, AlterAction* action); + ~AlterStatement() override; + + char* schema; + bool ifTableExists; + char* name; + AlterAction* action; + }; +} // namespace hsql + +#endif diff --git a/src/sql/ColumnType.h b/src/sql/ColumnType.h index e5e10ec9..2800b8ac 100755 --- a/src/sql/ColumnType.h +++ b/src/sql/ColumnType.h @@ -10,19 +10,35 @@ namespace hsql { LONG, FLOAT, DOUBLE, + DECIMAL, + REAL, CHAR, VARCHAR, TEXT, DATETIME, - DATE + DATE, + TIME, + SMALLINT, }; + struct ColumnSpecification { + ColumnSpecification() = default; + ColumnSpecification(int64_t precision, int64_t scale); + ColumnSpecification(int64_t precision); + int64_t precision; + int64_t scale; + }; + + + // Represents the type of a column, e.g., FLOAT or VARCHAR(10) struct ColumnType { ColumnType() = default; - ColumnType(DataType data_type, int64_t length = 0); + ColumnType(DataType data_type, int64_t length = 0, + ColumnSpecification column_specification = ColumnSpecification{}); DataType data_type; int64_t length; // Used for, e.g., VARCHAR(10) + ColumnSpecification columnSpecification; // used for, e.g. DECIMAL (6, 4) or TIME (5) }; bool operator==(const ColumnType& lhs, const ColumnType& rhs); diff --git a/src/sql/CreateStatement.h b/src/sql/CreateStatement.h index e88324f0..0086da57 100755 --- a/src/sql/CreateStatement.h +++ b/src/sql/CreateStatement.h @@ -10,11 +10,49 @@ namespace hsql { struct SelectStatement; + enum struct ConstraintType { + None, + NotNull, + Null, + PrimaryKey, + Unique + }; + + // Superclass for both TableConstraint and Column Definition + struct TableElement { + virtual ~TableElement(){} + }; + + // Represents definition of a table constraint + struct TableConstraint : TableElement { + TableConstraint(ConstraintType keyType, std::vector* columnNames); + + ~TableConstraint() override; + + ConstraintType type; + std::vector* columnNames; + }; + // Represents definition of a table column - struct ColumnDefinition { - ColumnDefinition(char* name, ColumnType type, bool nullable); - virtual~ColumnDefinition(); + struct ColumnDefinition: TableElement { + ColumnDefinition(char* name, ColumnType type, std::vector* column_constraints); + + ~ColumnDefinition() override; + + void setNullableExplicit() { + nullable = false; + for(unsigned long constraint_index = 0; constraint_index < column_constraints->size(); constraint_index++) { + if(column_constraints->at(constraint_index) == ConstraintType::Null) { + nullable = true; + column_constraints->erase(column_constraints->cbegin() + constraint_index); + } else if(column_constraints->at(constraint_index) == ConstraintType::NotNull) { + column_constraints->erase(column_constraints->cbegin() + constraint_index); + } + } + } + + std::vector* column_constraints; char* name; ColumnType type; bool nullable; @@ -23,7 +61,8 @@ namespace hsql { enum CreateType { kCreateTable, kCreateTableFromTbl, // Hyrise file format - kCreateView + kCreateView, + kCreateIndex }; // Represents SQL Create statements. @@ -32,12 +71,28 @@ namespace hsql { CreateStatement(CreateType type); ~CreateStatement() override; + void setColumnDefsAndConstraints(std::vector* tableElements) { + columns = new std::vector(); + tableConstraints = new std::vector(); + + for(auto tableElem: *tableElements) { + if(auto *colDef = dynamic_cast(tableElem)) { + columns->emplace_back(colDef); + } else if(auto *tableConstraint = dynamic_cast(tableElem)) { + tableConstraints->emplace_back(tableConstraint); + } + } + } + CreateType type; bool ifNotExists; // default: false char* filePath; // default: nullptr char* schema; // default: nullptr char* tableName; // default: nullptr + char* indexName; // default: nullptr + std::vector* indexColumns; // default: nullptr std::vector* columns; // default: nullptr + std::vector* tableConstraints; // default: nullptr std::vector* viewColumns; SelectStatement* select; }; diff --git a/src/sql/DropStatement.h b/src/sql/DropStatement.h index dace494a..36db7621 100755 --- a/src/sql/DropStatement.h +++ b/src/sql/DropStatement.h @@ -25,6 +25,7 @@ namespace hsql { bool ifExists; char* schema; char* name; + char* indexName; }; } // namespace hsql diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index 6b422c37..c7b0c284 100755 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -1,20 +1,42 @@ #include "statements.h" +#include "AlterStatement.h" namespace hsql { + // KeyConstraints + TableConstraint::TableConstraint(ConstraintType type, std::vector* columnNames) : + type(type), + columnNames(columnNames) {}; + + TableConstraint::~TableConstraint() { + for (char* def : *columnNames) { + free(def); + } + delete columnNames; + } + // ColumnDefinition - ColumnDefinition::ColumnDefinition(char* name, ColumnType type, bool nullable) : + ColumnDefinition::ColumnDefinition(char* name, ColumnType type, std::vector* column_constraints) : + column_constraints(column_constraints), name(name), type(type), - nullable(nullable) {}; + nullable(false) {}; ColumnDefinition::~ColumnDefinition() { free(name); + delete column_constraints; } - ColumnType::ColumnType(DataType data_type, int64_t length) : + ColumnType::ColumnType(DataType data_type, int64_t length, ColumnSpecification column_specification) : data_type(data_type), - length(length) {}; + length(length), columnSpecification(column_specification) {}; + + ColumnSpecification::ColumnSpecification(int64_t precision, int64_t scale) : + precision(precision), + scale(scale) {}; + + ColumnSpecification::ColumnSpecification(int64_t precision) : + precision(precision), scale(0) {}; bool operator==(const ColumnType& lhs, const ColumnType& rhs) { if (lhs.data_type != rhs.data_type) return false; @@ -45,12 +67,18 @@ namespace hsql { case DataType::DOUBLE: stream << "DOUBLE"; break; + case DataType::REAL: + stream << "REAL"; + break; case DataType::CHAR: stream << "CHAR(" << column_type.length << ")"; break; case DataType::VARCHAR: stream << "VARCHAR(" << column_type.length << ")"; break; + case DataType::DECIMAL: + stream << "DECIMAL"; + break; case DataType::TEXT: stream << "TEXT"; break; @@ -60,6 +88,12 @@ namespace hsql { case DataType::DATE: stream << "DATE"; break; + case DataType::TIME: + stream << "TIME"; + break; + case DataType::SMALLINT: + stream << "SMALLINT"; + break; } return stream; } @@ -73,7 +107,10 @@ namespace hsql { filePath(nullptr), schema(nullptr), tableName(nullptr), + indexName(nullptr), + indexColumns(nullptr), columns(nullptr), + tableConstraints(nullptr), viewColumns(nullptr), select(nullptr) {}; @@ -81,6 +118,7 @@ namespace hsql { free(filePath); free(schema); free(tableName); + free(indexName); delete select; if (columns != nullptr) { @@ -90,6 +128,20 @@ namespace hsql { delete columns; } + if (tableConstraints != nullptr) { + for (TableConstraint* def : *tableConstraints) { + delete def; + } + delete tableConstraints; + } + + if (indexColumns != nullptr) { + for (char* column : *indexColumns) { + free(column); + } + delete indexColumns; + } + if (viewColumns != nullptr) { for (char* column : *viewColumns) { free(column); @@ -116,13 +168,44 @@ namespace hsql { SQLStatement(kStmtDrop), type(type), schema(nullptr), - name(nullptr) {} + name(nullptr), + indexName(nullptr) {} DropStatement::~DropStatement() { free(schema); free(name); + free(indexName); } + // AlterStatement and supportive classes + + AlterAction::AlterAction(ActionType type) : type(type){} + + AlterAction::~AlterAction() = default; + + DropColumnAction::DropColumnAction(char* column_name) : + AlterAction(ActionType::DropColumn), + columnName(column_name), + ifExists(false) + {}; + + DropColumnAction::~DropColumnAction() { + free(columnName); + } + + AlterStatement::AlterStatement(char* name, AlterAction* action) : + SQLStatement(kStmtAlter), + schema(nullptr), + ifTableExists(false), + name(name), + action(action){} + + AlterStatement::~AlterStatement() { + free(schema); + free(name); + delete action; +} + // TransactionStatement TransactionStatement::TransactionStatement(TransactionCommand command) : SQLStatement(kStmtTransaction), diff --git a/src/sql/statements.h b/src/sql/statements.h index f5edf21b..8cee5816 100644 --- a/src/sql/statements.h +++ b/src/sql/statements.h @@ -13,5 +13,6 @@ #include "ShowStatement.h" #include "ExportStatement.h" #include "TransactionStatement.h" +#include "AlterStatement.h" #endif // SQLPARSER_STATEMENTS_H diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index e82fed27..4dc53aee 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -38,3 +38,6 @@ !SELECT * FROM t WHERE a = DATE '2000-01-01' + x DAYS; !SELECT * FROM t WHERE a = DATE '2000-01-01' + INTERVAL 'x' DAY; !SELECT * FROM t WHERE a = DATE '2000-01-01' + INTERVAL '3.3 DAYS'; +# ON is not supported by postgres. We follow postgres here since the sql-92 standard does not specify index +# implementation details. +!DROP INDEX myindex ON mytable; diff --git a/test/queries/queries-good.sql b/test/queries/queries-good.sql index dda9161d..85674d13 100755 --- a/test/queries/queries-good.sql +++ b/test/queries/queries-good.sql @@ -26,7 +26,9 @@ SELECT a, SUM(b) FROM t2 GROUP BY a HAVING SUM(b) > 100; CREATE TABLE "table" FROM TBL FILE 'students.tbl' CREATE TABLE IF NOT EXISTS "table" FROM TBL FILE 'students.tbl' CREATE TABLE students (name TEXT, student_number INTEGER, city TEXT, grade DOUBLE) +CREATE TABLE students (name TEXT, student_number INTEGER NOT NULL, city TEXT, grade DOUBLE PRIMARY KEY UNIQUE) CREATE TABLE teachers (name VARCHAR(30), student_number LONG, city CHAR(10), grade FLOAT) +CREATE TABLE teachers (name VARCHAR(30), student_number LONG, PRIMARY KEY (name, student_number), city CHAR(10), grade FLOAT) CREATE TABLE students_2 AS SELECT * FROM students CREATE TABLE students_3 AS SELECT city, grade FROM students WHERE grade > 3.0 # Multiple statements @@ -45,10 +47,15 @@ UPDATE students SET grade = 1.3 WHERE name = 'Max Mustermann'; UPDATE students SET grade = 1.3, name='Felix Fürstenberg' WHERE name = 'Max Mustermann'; UPDATE students SET grade = 1.0; UPDATE some_schema.students SET grade = 1.0; +# ALTER +ALTER TABLE mytable DROP COLUMN IF EXISTS mycolumn; +ALTER TABLE IF EXISTS mytable DROP COLUMN IF EXISTS mycolumn; # DROP DROP TABLE students; DROP TABLE IF EXISTS students; DROP VIEW IF EXISTS students; +DROP INDEX myindex; +DROP INDEX IF EXISTS myindex; # PREPARE PREPARE prep_inst FROM 'INSERT INTO test VALUES (?, ?, ?)'; PREPARE prep2 FROM 'INSERT INTO test VALUES (?, 0, 0); INSERT INTO test VALUES (0, ?, 0); INSERT INTO test VALUES (0, 0, ?);'; diff --git a/test/sql_tests.cpp b/test/sql_tests.cpp index 0ba173ef..e2ab353f 100644 --- a/test/sql_tests.cpp +++ b/test/sql_tests.cpp @@ -30,7 +30,7 @@ TEST(DeleteStatementTest) { TEST(CreateStatementTest) { SQLParserResult result; - SQLParser::parse("CREATE TABLE students (name VARCHAR(50), student_number INT, city INTEGER NULL, grade DOUBLE NOT NULL, comment TEXT)", &result); + SQLParser::parse("CREATE TABLE students (name VARCHAR(50), student_number INT, city INTEGER NULL, PRIMARY KEY(name, student_number), grade DOUBLE NOT NULL, comment TEXT UNIQUE PRIMARY KEY NOT NULL)", &result); ASSERT(result.isValid()); ASSERT_EQ(result.size(), 1); @@ -56,6 +56,9 @@ TEST(CreateStatementTest) { ASSERT_EQ(stmt->columns->at(2)->nullable, true); ASSERT_EQ(stmt->columns->at(3)->nullable, false); ASSERT_EQ(stmt->columns->at(4)->nullable, false); + ASSERT_EQ(stmt->columns->at(4)->column_constraints->size(), 2); + ASSERT_STREQ(stmt->tableConstraints->at(0)->columnNames->at(0), "name"); + ASSERT_STREQ(stmt->tableConstraints->at(0)->columnNames->at(1), "student_number"); } TEST(CreateAsSelectStatementTest) { @@ -117,6 +120,77 @@ TEST(InsertStatementTest) { // TODO } +TEST(AlterStatementDropActionTest) { + SQLParserResult result; + SQLParser::parse("ALTER TABLE mytable DROP COLUMN IF EXISTS mycolumn", &result); + + ASSERT(result.isValid()); + ASSERT_EQ(result.size(), 1); + + const AlterStatement* stmt = (const AlterStatement*) result.getStatement(0); + ASSERT_STREQ(stmt->name, "mytable"); + ASSERT_EQ(stmt->ifTableExists, false); + + auto dropAction = (const DropColumnAction*) stmt->action; + + ASSERT_EQ(dropAction->type, hsql::ActionType::DropColumn); + ASSERT_STREQ(dropAction->columnName, "mycolumn"); +} + +TEST(CreateIndexStatementTest) { + SQLParserResult result; + SQLParser::parse("CREATE INDEX myindex ON myTable (col1);", &result); + + ASSERT(result.isValid()); + ASSERT_EQ(result.size(), 1); + + const CreateStatement* stmt = (const CreateStatement*) result.getStatement(0); + ASSERT_STREQ(stmt->indexName, "myindex"); + ASSERT_STREQ(stmt->tableName, "myTable"); + ASSERT_EQ(stmt->type, kCreateIndex); + ASSERT_EQ(stmt->ifNotExists, false); + ASSERT_EQ(stmt->indexColumns->size(), 1); +} + +TEST(CreateIndexStatementIfNotExistsTest) { + SQLParserResult result; + SQLParser::parse("CREATE INDEX IF NOT EXISTS myindex ON myTable (col1, col2);", &result); + + ASSERT(result.isValid()); + ASSERT_EQ(result.size(), 1); + + const CreateStatement* stmt = (const CreateStatement*) result.getStatement(0); + ASSERT_STREQ(stmt->indexName, "myindex"); + ASSERT_STREQ(stmt->tableName, "myTable"); + ASSERT_EQ(stmt->type, kCreateIndex); + ASSERT_EQ(stmt->ifNotExists, true); + ASSERT_EQ(stmt->indexColumns->size(), 2); +} + +TEST(DropIndexTest) { + SQLParserResult result; + SQLParser::parse("DROP INDEX myindex", &result); + + ASSERT(result.isValid()); + ASSERT_EQ(result.size(), 1); + + const DropStatement* stmt = (const DropStatement*) result.getStatement(0); + ASSERT_STREQ(stmt->indexName, "myindex"); + ASSERT_EQ(stmt->ifExists, false); +} + +TEST(DropIndexIfExistsTest) { + SQLParserResult result; + SQLParser::parse("DROP INDEX IF EXISTS myindex", &result); + + ASSERT(result.isValid()); + ASSERT_EQ(result.size(), 1); + + const DropStatement* stmt = (const DropStatement*) result.getStatement(0); + ASSERT_STREQ(stmt->indexName, "myindex"); + ASSERT_EQ(stmt->ifExists, true); +} + TEST(DropTableStatementTest) { TEST_PARSE_SINGLE_SQL( "DROP TABLE students",